<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>$i-&#62;php(); &#187; Khái niệm</title>
	<atom:link href="http://i-php.net/category/kha%cc%81i-nie%cc%a3m/feed/" rel="self" type="application/rss+xml" />
	<link>http://i-php.net</link>
	<description>Hãy tiết kiệm điện và sử dụng opensource để bảo vệ môi trường</description>
	<lastBuildDate>Fri, 26 Feb 2010 07:29:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Triển khai Latex</title>
		<link>http://i-php.net/2009/07/deploy-latex/</link>
		<comments>http://i-php.net/2009/07/deploy-latex/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 04:09:14 +0000</pubDate>
		<dc:creator>hoangnd</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Khái niệm]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web server]]></category>
		<category><![CDATA[equotion]]></category>
		<category><![CDATA[latex]]></category>
		<category><![CDATA[math]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=454</guid>
		<description><![CDATA[Sử dụng Latex sẽ đá bay những vấn đề khó khăn gặp phải khi cần hiển thị những công thức toán học như căn bậc n, hàm số, tích phân&#8230; trên website.

Với những yêu cầu hiển thị thông thường trên website, blog, wiki thì định dạng text đã thỏa mãn được gần hết, khó khăn [...]]]></description>
			<content:encoded><![CDATA[<p>Sử dụng Latex sẽ đá bay những vấn đề khó khăn gặp phải khi cần hiển thị những công thức toán học như căn bậc n, hàm số, tích phân&#8230; trên website.</p>
<p><img class="aligncenter" title="math" src="http://ts1.images.live.com/images/thumbnail.aspx?q=863022493012&amp;id=6a02e85a84ce8b5062c72db0024388d5&amp;url=http%3a%2f%2fwww.kaitaia.com%2ffunny%2fg2%2fd%2f8172-2%2fbizarre_math.jpg" alt="" width="145" height="160" /></p>
<p>Với những yêu cầu hiển thị thông thường trên website, blog, wiki thì định dạng text đã thỏa mãn được gần hết, khó khăn ở chỗ những bài viết chuyên ngành toán, lý&#8230; cần thể hiện những công thức tính toán phức tạp thì text hay thậm chí là ảnh cũng pó tay, hhuh? Vậy phải lèm seo?</p>
<p>Đồng thanh hô nèo</p>
<h1 style="text-align: center;"><strong>LaTeX</strong></h1>
<p><span style="text-decoration: underline;"><strong>là gì?</strong></span> không phải word processor, mà là &#8221; <a class="mw-redirect" title="Document markup language" href="http://en.wikipedia.org/wiki/Document_markup_language">document markup language</a> and <a title="Word processor" href="http://en.wikipedia.org/wiki/Word_processor">document preparation system</a> for the <a title="TeX" href="http://en.wikipedia.org/wiki/TeX">TeX</a> <a title="Typesetting" href="http://en.wikipedia.org/wiki/Typesetting">typesetting</a> program. Within the typesetting system, its name is styled as <span class="image"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/9/92/LaTeX_logo.svg/48px-LaTeX_logo.svg.png" alt="\LaTeX" width="48" height="20" /></span>&#8221; (-wikipedia).</p>
<p>chào hàng thế thôi, thông tin đầy đủ có ở <a href="http://www.latex-project.org/intro.html" target="_blank">đây</a> và ở <a title="http://en.wikipedia.org/wiki/LaTeX" href="http://en.wikipedia.org/wiki/LaTeX" target="_blank">đây</a> <img src='http://i-php.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><span style="text-decoration: underline;"><strong>để làm gì?</strong></span> tất nhiên là để hỗ trợ gõ &#8211; chuyển đổi &#8211; hiển thị công thức toán học trên website.</p>
<ul>
<li>gõ tức là phải &#8230; tự gõ, cũng có nghĩa là có cú pháp &amp; định dạng riêng, cũng có nghĩa là miễn gõ tùm lum, như vậy là phải học gõ ke ke.</li>
<li>chuyển đổi nôm na như là dịch, dịch đống ký tự mình gõ sang đống gì đó mà máy nó hiểu, mà phải làm cho máy nó hiểu thì nó mới chạy được.</li>
<li>hiển thị đơn giản là show hàng, hàng là cái cục (thường là ảnh) mà máy nó trả về sau khi nó &#8216;chạy&#8217;, nhớ là nó &#8216;chạy&#8217; được thì nó phải hiểu, để nó hiểu thì mình phải ra lệnh, ra lệnh xong phải có thằng nó dịch lệnh mình cho máy <img src='http://i-php.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) <img src='http://i-php.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</li>
</ul>
<p>ví dụ cái,</p>
<ol>
<li>gõ như này đây [code][tex]a^2 + b^2[/tex][/code]</li>
<li>dịch dịch dịch dịch dịch &#8230;. bịch bịch bịch &#8230;</li>
<li>hiển thị cái này <img class="alignnone" title="can bac 2" src="http://www.khuvuc.com/pictures/91dcd1eb2fc092f982e5e87b8685d280_1247109898.png" alt="" width="50" height="15" /></li>
</ol>
<p>eh, ai thèm xài cái này? thì thầy cô giáo, chuyên gia, guru viết bài giảng, blog kỹ thuật hay sinh viên thảo luận trên diễn đàn &#8230; nghe pro^` vãi <img src='http://i-php.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) <img src='http://i-php.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p><span style="text-decoration: underline;"><strong>xài ra làm sao?</strong></span> có mới xài được chứ =)). Hiển nhiên là muốn có thì phải lao động <img src='http://i-php.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>bỏ qua các dịch vụ sẵn có, mình đi mua đồ về tự nấu cho nó chủ động &amp; ngon lành. bếp = server, đồ ăn = các gói cài đặt và đầu bếp = ai đang đọc <img src='http://i-php.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) <img src='http://i-php.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p><strong>thực hiện nấu nướng</strong></p>
<p>đi chợ nhớ mua các gói sau</p>
<p><strong>ubuntu server</strong></p>
<blockquote><p>[code]sudo apt-get install texlive texmaker[code]</p></blockquote>
<p><strong>centOS 5.x</strong></p>
<blockquote><p>[code]yum install tetex tetex-fonts tetex-dvips tetex-latex ghostscript</p>
<p>yum install ImageMagick[code]<br />
(cài imageMagick nếu chưa có)</p></blockquote>
<p>dung lượng kiếm về khoảng 60 - 200M, chế biến cài đặt xong khoảng 200M <img src='http://i-php.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) <img src='http://i-php.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) vãi hàng, nấu cho cả xóm ăn.</p>
<p>xong rùi thì chiến thôi, kiếm thêm gia vị &amp; bày bàn. giả sử tại VPS này có thư mục tên latex trong /var/www/html. trong đó có 2 thư mục pictures &amp; tmp, quan trọng nữa là 2 file php class.latexrender.php và latex.php. Như vậy là ngon rồi, viết them file demo.php nữa để test thôi, nhớ là phải refer đến 2 file trên.</p>
<p>[bonus]</p>
<p>trên đây là bộ latex render viết bằng code php, tác giả là Benzamin Mayer (http://www.mayer.dial.pipex.com/tex.htm), xài ngon, được làng xóm đánh giá cao. khi sử dụng chỉ cần để ý đến các tham số cơ bản sau trong file latex.php</p>
<ul>
<li>$latexrender_path = "đường dẫn chứa bộ latex render (gồm file class.latexrender.php)";</li>
<li>$latexrender_path_http = "đường dẫn hiển thị website" - phải chính xác để có thể show ảnh công thức được render.</li>
<li>$imageformat = "định dạng ảnh - png hoặc gif" - có nghĩa là phải có thư viện render ảnh trên server, đang xài ImageMagick.</li>
</ul>
<p>[/bonus]</p>
<p><strong>tóm tắt hoạt động </strong></p>
<p>để hình thành công thức, người dùng phải gõ nội dung theo quy tắc định trước của latex. khi dữ liệu gửi đi, regular expression sẽ được gọi để bóc tách các phần chính trong nội dung nhận được để render ra dưới dạng ảnh, lưu vào một vị trí trên server &amp; đặt đường dẫn hiển thị trên website.</p>
<p><strong>tham khảo thêm</strong></p>
<ul>
<li>trang chủ dự án latex: http://www.latex-project.org/guides/</li>
<li>trên wiki: http://en.wikipedia.org/wiki/LaTeX</li>
<li>thư viện của mayer: http://www.mayer.dial.pipex.com/tex.htm</li>
<li>một bài hướng dẫn hay: http://www.linuxjournal.com/article/7870</li>
<li>demo: http://khuvuc.com/demo.php (/var/www/html/latex)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/07/deploy-latex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Liên kết dữ liệu trong CakePHP</title>
		<link>http://i-php.net/2009/07/lien-k%e1%ba%bft-d%e1%bb%af-li%e1%bb%87u-trong-cakephp/</link>
		<comments>http://i-php.net/2009/07/lien-k%e1%ba%bft-d%e1%bb%af-li%e1%bb%87u-trong-cakephp/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 20:31:50 +0000</pubDate>
		<dc:creator>tungnd</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Khái niệm]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=446</guid>
		<description><![CDATA[hello ngày mới&#8230;
hôm nay tôi xin giới thiếu cho những bạn đang và sắp học CakePHP về chức năng liên kết dữ liệu của Cake.
Chắc hẳn các bạn cũng đã biết việc liên kết dữ liệu gồm có 3 loại liên kết : Một &#8211; Một, Một &#8211; Nhiều,  Nhiều &#8211; Nhiều.
Công việc liên kết [...]]]></description>
			<content:encoded><![CDATA[<p>hello ngày mới&#8230;</p>
<p>hôm nay tôi xin giới thiếu cho những bạn đang và sắp học CakePHP về chức năng liên kết dữ liệu của Cake.</p>
<p>Chắc hẳn các bạn cũng đã biết việc liên kết dữ liệu gồm có 3 loại liên kết :<span style="color: #ff0000;"> Một &#8211; Một, Một &#8211; Nhiều,  Nhiều &#8211; Nhiều</span>.</p>
<p>Công việc liên kết này khá phức tạp, làm theo cách thủ công thì ta phải liên kết các bảng dữ liệu với nhau trong cơ sở dữ liệu,điều này thì không khó lắm. Nhưng đâu đầu là ở chỗ sau đó ta phải viết hàng loạt các câu query để join các dữ liệu với nhau, nào là<span style="color: #ff0000;"> Join, Inner Join, Left Join, Right Join</span>&#8230;. Riêng việc nhớ mấy câu lệnh này đã đủ tung thủ rồi chứ đừng nói đến việc nghĩ sao join cho dúng.</p>
<p>Nhưng giờ đây, bạn dùng Cake thì sẽ không phải ghi nhớ những câu lệnh chết tiết ấy, Cake đã làm thay cho bạn công việc đó.</p>
<p>Công việc của bạn bây giờ chỉ là khai báo cho Cake biết bạn định liên kết dữ liệu của bảng nào với bảng nào thôi.</p>
<p>Điều đó được thực hiện trong Models,cụ thể như sau :</p>
<h2><span style="color: #ff0000;"><strong>Liên kết Một &#8211; Một (1-1) :</strong></span></h2>
<p><span style="color: #ff0000;"><span style="color: #000000;">đầu tiên, ta tạo 2 bảng CSDL liên kết với nhau trong MySQL.</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">sau đó bạn tạo Model User với nội dung như sau :</span></span></p>
<pre class="code" style="display: block;">&lt;?php
class User extends AppModel {
    var $name = 'User';
    var $hasOne = 'Profile';
}
?&gt;</pre>
<p>*Chú ý : tất cả thì chắc bạn đã rõ rồi, chỉ có <span style="color: #800000;"><strong>var $hasOne = &#8216;Profile&#8217;;</strong></span> dòng chắc vẫn mù mờ, tôi giải thích như sau :</p>
<p>-<span style="color: #800000;">$hasOne</span> : câu lệnh liên kết 1-1.</p>
<p>-<span style="color: #800000;">&#8216;Profile&#8217;</span> : tên models chứa bảng liên kết đến.</p>
<p>Tiếp đến, trong Users_controller ta sử dụng câu lệnh :</p>
<pre>&lt;?php
class UsersController extends AppController {
    var $name = 'Users';
    function index()
    {</pre>
<pre>        $this-&gt;set('user',$this-&gt;User-&gt;find());
    }
?&gt;</pre>
<p>Như vậy là khi<span style="color: #800000;"> <strong>debug($user)</strong></span> ta sẽ thấy cấu trúc dữ liệu được gọi như sau :</p>
<pre class="plain">Array
(
    [User] =&gt; Array
        (
            [id] =&gt; 121
            [name] =&gt; hello
            [created] =&gt; 2007-05-01 10:31:01
        )
    [Profile] =&gt; Array
        (
            [id] =&gt; 12
            [user_id] =&gt; 121
            [skill] =&gt; Baking Cakes
            [created] =&gt; 2007-05-01 10:31:01
        )
)</pre>
<h2><span style="color: #ff0000;">Liên kết Một &#8211; Nhiều (1-m) :</span></h2>
<p>Việc đầu tiên cũng vẫn là tạo bảng cơ sở dữ liệu trong MySQL.</p>
<p>Liên kết 1-m có vẻ đặc biệt hơn 2 liên kết còn lại. Ví dụ bạn có 2 bảng CSDL là News và Categories.</p>
<p>Theo logic liên kết thì, 1 category sẽ có nhiều bản ghi new, và 1 bản ghi new chỉ thuộc 1 category. Do đó liên kết sẽ là categories là 1 và news là nhiều.</p>
<p>Trong trường hợp bạn chọn bảng Categories để liên kết thì ta sẽ sử dụng câu lệnh 1-m : <span style="color: #800000;">hasMany.</span></p>
<p><span style="color: #800000;"><span style="color: #000000;">trong Model Category thêm câu lệnh : <strong><span style="color: #800000;">var $hasMany = &#8216;New&#8217;;</span></strong></span></span></p>
<p><span style="color: #800000;"><br />
</span></p>
<pre><span style="color: #800000;"><span style="color: #000000;">&lt;?php
 class Category extends AppModel
 {
 	var $name="Category";
        var $hasMany = 'New';</span></span><span style="color: #800000;">
 <span style="color: #000000;">}
?&gt;
</span></span></pre>
<p><span style="color: #800000;"><span style="color: #000000;">Ngược lại, bạn chon bảng News để liên kết thì sẽ là m-1 : </span></span><span style="color: #800000;">belongsTo.</span></p>
<p><span style="color: #800000;"><span style="color: #000000;">trong Model New thêm câu lệnh : <strong><span style="color: #800000;">var $hasMany = &#8216;Category&#8217;;</span></strong></span></span></p>
<pre><span style="color: #800000;"><span style="color: #000000;">
&lt;?php
 class News extends AppModel
 {
 	var $name="New";
        var $hasMany = 'Category';
 }
?&gt;</span></span></pre>
<p><span style="color: #800000;"><span style="color: #000000;">giải thích về câu lệnh thì cũng như trên, tôi không cần phải nói lại nhé.</span></span></p>
<p><span style="color: #800000;"><span style="color: #000000;">Như vậy, thì bạn sử dụng câu lệnh<br />
</span></span></p>
<pre>$this-&gt;set('category',$this-&gt;Category-&gt;find());</pre>
<p>trong Categories_controller, khi<span style="color: #800000;"> debug($category)</span> bạn sẽ thấy mảng dữ liệu như sau :</p>
<pre class="cake-debug">Array
(
    [Category] =&gt; Array
        (
            [id] =&gt; 11
            [name] =&gt; gia dinh &amp; be
        )

    [News] =&gt; Array
        (
            [0] =&gt; Array
                (
                    [id] =&gt; 54
                    [category_id] =&gt; 11
                    [title] =&gt; bi hai chuyen o vien nhi
                    [pic] =&gt;
                    [content] =&gt; bi hai chuyen o vien nhi
                )

            [1] =&gt; Array
                (
                    [id] =&gt; 53
                    [category_id] =&gt; 11
                    [title] =&gt; khi nao ko nen cho be bu
                    [pic] =&gt;
                    [content] =&gt; khi nao ko nen cho be bu
                )

        )</pre>
<p>)</p>
<p>còn khi bạn sử dụng câu lệnh tương tự trong News_controller thì sẽ có kết quả như sau :</p>
<pre class="cake-debug">Array
(
    [News] =&gt; Array
        (
            [id] =&gt; 61
            [category_id] =&gt; 15
            [title] =&gt; nam hoc moi
            [pic] =&gt; 7b0b5e66db4e6e4e17162cb8eb7248cdimg_hello.jpg
            [content] =&gt;

    * bcbcb
    * truong mam non ban cong huong duong ung dung tin hoc trong giang day

            [lang] =&gt; 0
        )

    [Category] =&gt; Array
        (
            [id] =&gt; 15
            [name] =&gt; thong tin tuyen sinh
            [lang] =&gt; 0
        )

)</pre>
<p>bạn có thể để ý câu lẹnh của Cake hiện ra ở dưới cùng, qua đó bạn có thể thấy, để có được kết quả này Cake đã phải thực hiện bao nhiêu câu query. Thử xem không sử dụng Cake thì bạn sẽ phải vật lộn với 1 mớ <span style="color: #800000;">Select </span>như thế nào ??</p>
<h2><span style="color: #ff0000;">Liên kết Nhiều &#8211; Nhiều (n-m) :</span></h2>
<p><span style="color: #ff0000;"><span style="color: #000000;">Liên kết n-m nếu không có Cake thì ôi thôi, quá phức tạp. Bạn chỉ có thể liên kết n-m với nhau thông qua 1 bảng trung gian. Lấy ví dụ : tôi muốn liên kết bảng Users và bảng Groups với nhau thông qua bảng Groups_Users.</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">Trong bản Group_Users sẽ có Group_id và User_id.</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">Khi này, trong Model ta sẽ phải khai báo thêm câu lệnh để liên kết :<span style="color: #800000;"> <strong>hasAndBelongsToMany.</strong></span></span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #800000;"><span style="color: #000000;">ở models Group :</span></span></span></span></p>
<pre class="cake-debug">&lt;?php
	class Group extends AppModel {
	    var $name = 'Group';
	    var $useTable = 'groups';
	    );
	    var $hasAndBelongsToMany = array(
	            'User' =&gt; array('className' =&gt; 'User',
	                        'joinTable' =&gt; 'groups_users',
	                        'foreignKey' =&gt; 'group_id',
	                        'associationForeignKey' =&gt; 'user_id',
	                        'unique' =&gt; true
	            )
	    );
	}</pre>
<p>?&gt;</p>
<p>tại models User :</p>
<pre>&lt;?php
    class User extends AppModel {
        var $name = 'User';</pre>
<pre>        var $hasAndBelongsToMany = array(
                'Group' =&gt; array('className' =&gt; 'Group',
                            'joinTable' =&gt; 'groups_users',
                            'foreignKey' =&gt; 'user_id',
                            'associationForeignKey' =&gt; 'group_id',
                            'unique' =&gt; true
                )
        );
?&gt;</pre>
<p class="cake-debug">không hề phải quá loằng ngoằng phức tạp tý nào, chỉ với vài dòng code trên 2 bảng Groups và Users đã liên kết n-m với nhau thông qua bảng Groups_users. Việc tiếp theo thì quá đơn giản, bạn lại find() và debug để xem kết quả liên kết thôi :</p>
<p class="cake-debug">-Tại Groups_controller :  <em>$this-&gt;set(&#8216;group&#8217;,$this-&gt;Group-&gt;find());</em></p>
<p class="cake-debug">-&gt; kết quả :</p>
<pre class="cake-debug">Array
(
    [Group] =&gt; Array
        (
            [id] =&gt; 1
            [name] =&gt; Toàn Quyền
        )

    [User] =&gt; Array
        (
            [0] =&gt; Array
                (
                    [id] =&gt; 12
                    [acc] =&gt; tungnd
                    [psword] =&gt; 81379f1d1e62c9a1291708e526f3b062591de0a4
                    [name] =&gt; fdsf
                    [email] =&gt; fds
                    [address] =&gt; ds
                    [active] =&gt; 1
                )

        )</pre>
<p>)</p>
<p>-tại Users_controller :<em> $this-&gt;set (&#8216;user&#8217;, $this-&gt;User-&gt;find());</em></p>
<pre class="cake-debug">Array
(
    [User] =&gt; Array
        (
            [id] =&gt; 12
            [acc] =&gt; tungnd
            [psword] =&gt; 81379f1d1e62c9a1291708e526f3b062591de0a4
            [name] =&gt; fdsf
            [email] =&gt; fds
            [address] =&gt; ds
            [active] =&gt; 1
        )

    [Group] =&gt; Array
        (
            [0] =&gt; Array
                (
                    [id] =&gt; 1
                    [name] =&gt; Toàn Quyền
                )
        )
)</pre>
<p class="cake-debug">Như vậy là tôi đã giới thiệu xong cho bạn 3 loại liên kết dữ liệu trong Cake, việc của bạn bầy giờ là hãy đọc lại, viết lại giống như tôi và biến đổi các câu lệnh find(), vận dụng linh hoạt theo ý mình.</p>
<p class="cake-debug"><span style="color: #ff0000;">Chúc bạn thành công</span><span style="color: #ff0000;">&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</span></p>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/07/lien-k%e1%ba%bft-d%e1%bb%af-li%e1%bb%87u-trong-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Element, Component trong CakePHP</title>
		<link>http://i-php.net/2009/07/element-component/</link>
		<comments>http://i-php.net/2009/07/element-component/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 21:28:13 +0000</pubDate>
		<dc:creator>tungnd</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Khái niệm]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=438</guid>
		<description><![CDATA[Element :
trong CakePHP, Element được sử dụng khá giống với &#8220;include&#8221;. Nó dùng để lưu trữ 1 đoạn code được dùng đi dùng lại nhiều lần, thay vì ta phải copy/paste  đoạn code đó qua các trang thì ta chỉ việc viết 1 câu lệnh ngắn gọn :
&#60;?php echo $this-&#62;renderElement('&#60;elementName&#62;');?&#62;
chỉ như cần 1 đoạn code [...]]]></description>
			<content:encoded><![CDATA[<h2><span style="color: #ff0000;"><strong>Element :</strong></span></h2>
<p>trong CakePHP, Element được sử dụng khá giống với &#8220;include&#8221;. Nó dùng để lưu trữ 1 đoạn code được dùng đi dùng lại nhiều lần, thay vì ta phải copy/paste  đoạn code đó qua các trang thì ta chỉ việc viết 1 câu lệnh ngắn gọn :</p>
<pre>&lt;?php echo $this-&gt;renderElement('&lt;elementName&gt;');?&gt;</pre>
<p>chỉ như cần 1 đoạn code như vậy ta có thể thay thế việc vất vả copy rồi paste liên tục, mất thời gian lại khiến code của bạn nhìn rất tối, khó chỉnh sửa sau này !</p>
<p>VD cụ thể như sau :</p>
<p>trong controller của bạn, bạn thực hiện thêm công việc kiểm tra xem element có được gọi hay ko :</p>
<pre>function index() {
            $posts = $this-&gt;Session-&gt;setFlash('hello world');
            if (isset($this-&gt;params['requested']))
            {
                return $posts;
            }
        }</pre>
<p>Nếu Element được gọi, giá trị giả về sẽ là dòng text &#8216;hello world&#8217;. (bạn cũng có thể thay thế bằng những câu lệnh theo ý của bạn như :  find(), read() &#8230;..)</p>
<p>tiếp theo, trong app\views\element\ chúng ta tạo 1 file php, tên tùy ý bạn đặt. Ở ví dụ này tôi đặt tên là test.php :</p>
<pre>&lt;?php
$posts = $this-&gt;requestAction('posts/index');
echo $posts;</pre>
<p>?&gt;</p>
<p>Trong file này, câu lệnh  <span style="color: #ff0000;">$this-&gt;requestAction(&#8216;posts/index&#8217;)</span> là bắt buộc phải có,đây là câu lệnh lấy giá trị được trả về từ controler trên.</p>
<p>Cuối cùng là công việc cho hiển thị element ta vừa tạo được ra trang index, đó là câu lệnh thay thế việc copy/paste mà tôi đã nói ở trên :</p>
<pre>&lt;?php echo $this-&gt;renderElement('posts');?&gt;</pre>
<p>Nếu bạn vẫn cảm thấy khó hiểu và không biết làm thế nào để hiển thị các bản ghi trong CSDL của mình ra thay cho đoạn text &#8216;hello world&#8217; thì bạn có thể tham khảo thêm bài viết của hoanbn : <a href="http://i-php.net/2008/11/s%E1%BB%AD-d%E1%BB%A5ng-element-trong-cakephp/">http://i-php.net/2008/11/s%E1%BB%AD-d%E1%BB%A5ng-element-trong-cakephp/<br />
</a></p>
<p><span style="color: #ff0000;"><strong>Component :</strong></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">Component là nơi thực hiện các công việc phức tạp như upload&#8230;, nó cũng được dùng đi dung lại nhiều lần ! thay vì việc copy/paste lại công việc thực thi đó ta chỉ cần truyền dữ vào cho Component từ controller. Sau đó dữ liệu sẽ được đưa đến Component xử lý .</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">VD :</span></span></p>
<p>trong app\views\posts\ ta tạo file index.ctp (cakephp 1.2) hay index.thtml (cakePHP 1.1)</p>
<pre>&lt;h1&gt;hello&lt;/h1&gt;
&lt;?php
    echo $form -&gt; create('Post',array('action'=&gt;'index'));
    echo $form -&gt; input('text');
    echo $form -&gt; end('save');
?&gt;</pre>
<p><span style="color: #ff0000;"><span style="color: #000000;">trong app\controller\components\ ta tạo 1 file php tên j` j` đó chẳng hạn như : test.php</span></span></p>
<pre>&lt;?php
class TestComponent extends Object	{

	function startup(&amp;$controller)	{
		// This method takes a reference to the controller which is loading it.
        // Perform controller initialization here.

	}
	function hello($text)	{
		return $text;
	}
}
?&gt;</pre>
<p><span style="color: #ff0000;"><span style="color: #000000;">cuối cung, trong post controller ta chỉ việc truyền dữ liệu text vào để component xử lý :</span></span></p>
<pre><span style="color: #ff0000;"><span style="color: #000000;">function index() {
            if (!empty($this-&gt;data))
            {
                if($this-&gt;<span style="color: #ff0000;">test</span>-&gt;<span style="color: #800000;">hello</span>($this-&gt;data['Post']['text']))
                {
                    $this-&gt;Session-&gt;setFlash($this-&gt;test-&gt;hello($this-&gt;data['Post']['text']));
                    $this-&gt;redirect (array('action' =&gt; 'index'));
                }

            }
        }
</span></span></pre>
<p>chú ý : test là tên file component bạn tạo ở trên, hello là tên function thực thi mệnh lệnh, còn</p>
<p><span style="color: #ff0000;"><span style="color: #000000;">$this-&gt;data['Post']['text'] là dữ liệu bạn nhập vào ! </span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">bây giờ bạn có thể xem kết quả mình vừa tạo ra&#8230;.!</span></span></p>
<p><span style="color: #ff0000;"><span style="color: #000000;">hi vọng là chạy được <img src='http://i-php.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
</span></span></p>
<p><strong></strong></p>
<input id="gwProxy" type="hidden" />
<p><!--Session data--></p>
<input id="jsProxy" onclick="jsCall();" type="hidden" />
<input id="gwProxy" type="hidden" />
<p><!--Session data--></p>
<input id="jsProxy" onclick="jsCall();" type="hidden" />
<input id="gwProxy" type="hidden" />
<p><!--Session data--></p>
<input id="jsProxy" onclick="jsCall();" type="hidden" />
<input id="gwProxy" type="hidden" /><!--Session data--><br />
<input id="jsProxy" onclick="jsCall();" type="hidden" />
<input id="gwProxy" type="hidden"><!--Session data--></input>
<input id="jsProxy" onclick="jsCall();" type="hidden" />
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/07/element-component/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sự tàn lụi của PHP</title>
		<link>http://i-php.net/2009/04/php-down/</link>
		<comments>http://i-php.net/2009/04/php-down/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 09:41:47 +0000</pubDate>
		<dc:creator>hoangnd</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Khái niệm]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[web server]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[down]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=404</guid>
		<description><![CDATA[Mặc định rằng các bạn đang đọc bài này là những người làm trong ngành nên tôi sẽ không giải thích hay ghi chú những khái niệm phổ thông. Mặt khác, lý lẽ trong bài viết này chỉ phản ánh quan điểm của cá nhân tôi, không đại diện cho ai hay tổ chức nào [...]]]></description>
			<content:encoded><![CDATA[<p>Mặc định rằng các bạn đang đọc bài này là những người làm trong ngành nên tôi sẽ không giải thích hay ghi chú những khái niệm phổ thông. Mặt khác, lý lẽ trong bài viết này chỉ phản ánh quan điểm của cá nhân tôi, không đại diện cho ai hay tổ chức nào khác.</p>
<p>&#8212;</p>
<p>Lịch sử ngành công nghiệp máy tính &amp; mạng đã chứng minh PHP là một trong số những ngôn ngữ mạnh &amp; linh động nhất trên nền Web và cũng không quá khó để thành thục ở mức phổ thông. Được phát triển và biết đến từ những năm cuối của thập kỷ trước, PHP đã đạt được sự tăng trưởng đáng kinh ngạc so với các ngôn ngữ lập trình khác.</p>
<p> </p>
<div class="wp-caption aligncenter" style="width: 443px"><a href="http://hoang188.net/"><img class=" " title="PHP timeline" src="http://hoang188.net/files/php-timeline.png" alt="PHP Timeline" width="433" height="231" /></a><p class="wp-caption-text">PHP Timeline</p></div>
<p> </p>
<p> </p>
<p>Nhìn biểu đồ trên, ta thấy con đường đi lên của PHP là theo hướng phát triển truyền thống, tức là <strong>Thiết kế -&gt; sử dụng -&gt; chỉnh sửa -&gt; lớn mạnh -&gt; phát triển</strong>. Điều thú vị là cho đến nay, rất nhiều các sản phẩm được phổ biến rộng rãi cũng đi theo con đường trên như các nền tảng .NET, Java hay Linux.</p>
<p>Ta lần lượt điểm qua một số điểm mẫu chốt sau</p>
<p><strong>Vòng đời</strong></p>
<p>Một lần nữa, nhắc lại thế mạnh của PHP trên nền web chính là tốc độ (phát triển &amp; thực thi), nhẹ &amp; dễ học. Bên cạnh đó, do đặc tính mã nguồn mở (theo <a href="http://en.wikipedia.org/wiki/PHP_License">giấy phép PHP</a>) cũng như sự đổi mới về phong cách khi ra đời, PHP sở hữu rất nhiều thứ quý giá</p>
<p> </p>
<ul>
<li>Cộng đồng lớn. Khoản này vô đối. Luôn có những guru sẵn sàng chia sẻ kinh nghiệm &amp; kiến thức, hướng dẫn những người mới và giải đáp thắc mắc.</li>
<li>Thư viện, cả nội tại và mở rộng của PHP, có chứa số lượng function cực lớn được đóng góp bởi những người tình nguyện. Con số vào khoảng 700 buit-in functions và uncountable external functions (hoangnd tính toán).</li>
<li>Framework đa dạng về số lượng cũng như chất lượng, thậm chí đa dạng cả về <span style="text-decoration: underline;">mô hình</span> và <span style="text-decoration: underline;">mục đích sử dụng.</span></li>
</ul>
<p> </p>
<p><strong>Sự mở rộng và phát triển</strong></p>
<p> </p>
<ul>
<li>Khái niệm về namespace. .NET đã có từ lâu, Java cũng có khái niệm package gần tương đương, và bây giờ chúng ta chứng kiến PHP. Đành rằng namespace ra đời với mục đích cơ bản là giúp lập trình viên dễ tổ chức và quản lý code hơn, nhưng với PHP thì tôi cho rằng là một sự ôm đồm. Mặc dù có rất nhiều những giải thích về cách gõ namespace trong PHP, nhưng thực sự là rất khó chấp nhận ký tự &#8220;\&#8221; để phân cách.  <span style="text-decoration: underline;">Thứ nhất</span>  là hơi va chạm với tư tưởng chạy đa nền của PHP vì ký tự &#8220;\&#8221; được dùng phổ biến trong windows để phân tách đường dẫn. <span style="text-decoration: underline;">Thứ hai</span> là có vẻ như PHP đã sử dụng cạn kiệt tài nguyên bàn phím. </li>
<li>PHP cho đến nay đã quá rộng lớn và các lập trình viên dễ dàng tìm được nhiều giải pháp khác nhau cho cùng một bài toán. Điều này thể hiện rất rõ ràng tư tưởng &#8220;open and share&#8221; mà nhờ nó, nhân loại mới có được kho tri thức khổng lồ (không chỉ trong ngành khoa học máy tính mà còn ở tất cả các lĩnh vực khác). Tuy nhiên, hãy nhìn Python làm, bạn có rất ít những cách để xử lý một vấn đề và thường thì những cách đó luôn là cách tốt nhất và dễ dàng nhất cho bạn, đến nỗi bạn chả buồn nghĩ tới hướng khác <img src='http://i-php.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . Ở phía đối diện, .NET độc quyền gắn chặt với hệ điều hành Window$ của Micro$oft nhưng có sự thống nhất, rõ ràng và ổn định cực tốt (nếu bạn chọn phát triển trên nền tảng này).</li>
</ul>
<p> </p>
<p><strong>Yahoo và facebook xài PHP</strong></p>
<p>Quá đúng, bỏ qua phần backend thì chính những đoạn mã  PHP đã dựng lên bộ mặt yahoo &amp; facebook như bây giờ. Và nó đã chứng minh giá trị của mình khi cả Yahoo &amp; facebook đều đã hoặc đang trở thành những đế chế internet với danh tiếng, lợi nhuận &amp; lượng người dùng cực lớn, chưa kể đến số lượng các dịch vụ kèm theo.</p>
<p>Thế nhưng, trong các đăng báo tuyển dụng, họ luôn muốn <span style="text-decoration: underline;">ưu tiên những ứng viên biết thêm Perl hoặc Python</span> bên cạnh thành thạo PHP (bỏ qua các yêu cầu khác). Câu hỏi đặt ra là, họ (yahoo &amp; facebook) định cho những ứng viên này làm cả ở nền tảng trên &amp; dưới của hệ thống web application? hay họ muốn những ứng viên đó có được <span style="text-decoration: underline;">tư duy ngôn ngữ </span>của perl, python? hay nữa là họ muốn dự phòng và sẵn sàng chuyển đổi sang perl, python? (lol)</p>
<p><strong>Đặc điểm</strong></p>
<p>Một chút hình dung</p>
<p><a href="http://hoang188.net"></a><a href="http://hoang188.net"><img class="alignleft" title="PHP-Python-Flex" src="http://hoang188.net/files/open.png" alt="" width="273" height="296" /></a><br />
<img class="aligncenter" title=".NET" src="http://hoang188.net/files/net-bo.png" alt="" width="292" height="308" /></p>
<p>Có nghĩa lý gì? Ai cũng biết .NET là một nền tảng còn PHP là một ngôn ngữ lập trình, tất nhiên sẽ là không hợp lý nếu so sánh chúng với nhau. Cái tôi muốn đề cập là, với .NET chúng ta có thể sử dụng để lập trình web, windows application, mobile, embedded, cloud &#8230; với sự tách biệt không quá lớn dành cho lập trình viên (tất nhiên môi trường triển khai thì không nói). Còn PHP không thể đứng một mình, nó sẽ kết hợp với các công nghệ khác tạo thành những nền tảng thực thi bài toán, mà chất lượng kết quả bài toán đó phụ thuộc rất nhiều vào kinh nghiệm &amp; kiến thức của kiến trúc sư trưởng dự án. Sợi dây liên kết này tôi cho rằng là kém vững trãi hơn so với .NET</p>
<p>Ngoài ra, mô hình trên còn thể hiện một nội dung khác. Nếu coi mỗi ngôn ngữ là một tập thông tin thì chúng liên kết với nhau qua giao của những tập đó. Có nghĩa là PHP sẽ đứng chung với python, perl, ruby &#8230; Và cũng có nghĩa là tôi sẽ chọn python thay vì PHP để kết hợp với flex. Tức là PHP đã mất đi một người dùng là tôi, ít nhất là trong dự án nào đó.</p>
<p><span style="text-decoration: line-through;">Buồn ngủ quá nên đoạn này viết hơi sơ sài và lung tung, sẽ cập nhật lại sớm thôi</span></p>
<p><span style="font-weight: bold;">Tuy nhiên</span></p>
<p>Các lập trình viên PHP đừng quá buồn và suy nghĩ nhiều làm gì, PHP đã, đang và sẽ luôn làm rất tốt trong phân khúc thị trường của nó. Và trong 1, 2, 3 năm nữa có thể ta có PHP phiên bản 6.0, 6.1, 6.2 &#8230; nhưng rồi nó sẽ phát triển tiếp thành cái gì? Cộng đồng không có nhiều người biết, tôi cá là bạn không biết, còn <span style="color: #800000;">tất nhiên là tôi không biết</span> roài. <img src='http://i-php.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>(just my cent at 3 a.m)</p>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/04/php-down/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Ten recommendations for developers</title>
		<link>http://i-php.net/2009/01/ten-recommendations-for-developers/</link>
		<comments>http://i-php.net/2009/01/ten-recommendations-for-developers/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 21:40:54 +0000</pubDate>
		<dc:creator>hoangnd</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Khái niệm]]></category>
		<category><![CDATA[personalize]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=346</guid>
		<description><![CDATA[1. Add comments to your code.
2. Do not complicate things.
3. Keep in Mind &#8211; “Less is more” is not always better.
4. No hard coding please.
5. Do not invent your own frameworks.
6. Say no to Print lines and String Concatenations.
7. Pay attention to the GUI.
8. Always Prepare Document Requirements.
9. Unit-test. Unit-test. Unit-test.
10. Remember &#8211; quality, not [...]]]></description>
			<content:encoded><![CDATA[<p>1. Add <strong>comments</strong> to your code.<br />
2. Do not complicate things.<br />
3. Keep in Mind &#8211; “Less is more” is not always better.<br />
4. No <strong>hard coding</strong> please.<br />
5. Do not invent your own frameworks.<br />
6. Say no to Print lines and String Concatenations.<br />
7. Pay attention to the <strong>GUI.</strong><br />
8. Always Prepare Document Requirements.<br />
9. Unit-test. Unit-test. Unit-<strong>test.</strong><br />
10. Remember &#8211; <strong>quality</strong>, not quantity.</p>
<p>for more details, feel free to drop email to contact@hoangnd.com  or come and speak to me, i&#8217;m available in meeting room, guys!</p>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/01/ten-recommendations-for-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Phân quyền trong CakePHP</title>
		<link>http://i-php.net/2009/01/phan-quy%e1%bb%81n-trong-cakephp/</link>
		<comments>http://i-php.net/2009/01/phan-quy%e1%bb%81n-trong-cakephp/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 10:50:42 +0000</pubDate>
		<dc:creator>xuanhung</dc:creator>
				<category><![CDATA[Khái niệm]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=264</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/01/phan-quy%e1%bb%81n-trong-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>enterprise PHP nè</title>
		<link>http://i-php.net/2008/12/enterprise-php-ne/</link>
		<comments>http://i-php.net/2008/12/enterprise-php-ne/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 06:46:13 +0000</pubDate>
		<dc:creator>hoangnd</dc:creator>
				<category><![CDATA[Khái niệm]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[web server]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[referrence]]></category>
		<category><![CDATA[slide]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=215</guid>
		<description><![CDATA[thấy cái slide này hay hay, vác về blog xem anh em học hỏi
Enterprise PHP (php&#124;works 2008)
View SlideShare presentation or Upload your own. (tags: php phpworks)

]]></description>
			<content:encoded><![CDATA[<p>thấy cái slide này hay hay, vác về blog xem anh em học hỏi</p>
<div style="width:425px;text-align:left" id="__ss_786111"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/ijansch/enterprise-php-phpworks-2008-presentation?type=powerpoint" title="Enterprise PHP (php|works 2008)">Enterprise PHP (php|works 2008)</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=phpworks-enterprise-php-1227605806710884-9&#038;rel=0&#038;stripped_title=enterprise-php-phpworks-2008-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=phpworks-enterprise-php-1227605806710884-9&#038;rel=0&#038;stripped_title=enterprise-php-phpworks-2008-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View SlideShare <a style="text-decoration:underline;" href="http://www.slideshare.net/ijansch/enterprise-php-phpworks-2008-presentation?type=powerpoint" title="View Enterprise PHP (php|works 2008) on SlideShare">presentation</a> or <a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint">Upload</a> your own. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/php">php</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/phpworks">phpworks</a>)</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2008/12/enterprise-php-ne/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>chơi với RIA</title>
		<link>http://i-php.net/2008/12/ch%c6%a1i-v%e1%bb%9bi-ria/</link>
		<comments>http://i-php.net/2008/12/ch%c6%a1i-v%e1%bb%9bi-ria/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 16:35:31 +0000</pubDate>
		<dc:creator>hoangnd</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Khái niệm]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=210</guid>
		<description><![CDATA[RIA là gì?
RIA &#8211; Rich Internet Application là một dạng ứng dụng web (web application) cố gắng thể hiện những chức năng truyền thống của phần mềm chạy trên desktop. Ở mức nào đó, RIA xóa nhòa lý thuyết phi trạng thái của giao thức HTTP.
RIA có đặc điểm gì?

ứng dụng RIA chạy hoàn toàn [...]]]></description>
			<content:encoded><![CDATA[<p><strong>RIA là gì?</strong></p>
<p>RIA &#8211; Rich Internet Application là một dạng ứng dụng web (<a href="http://en.wikipedia.org/wiki/Web_application" target="_blank">web application</a>) cố gắng thể hiện những chức năng truyền thống của phần mềm chạy trên desktop. Ở mức nào đó, RIA xóa nhòa lý thuyết phi trạng thái của <a href="http://www.w3.org/Protocols/" target="_blank">giao thức HTTP</a>.</p>
<p><strong>RIA có đặc điểm gì?</strong></p>
<ul>
<li>ứng dụng RIA chạy hoàn toàn trên trình duyệt (web browser) hỗ trợ flash mà không cần cài đặt ứng dụng.</li>
<li>quan hệ khá gần với javascript
<ul>
<li>sử dụng javascript để hoạt động trên các nền tảng khác nhau (nếu tắt javascript thì sẽ không hoạt động)</li>
<li>tốc độ thực thi phụ thuộc khá nhiều vào bộ máy thông dịch mã javascript (xem thêm <a href="http://en.wikipedia.org/wiki/V8_JavaScript_engine" target="_blank">máy dịch javascript V8 mã nguồn mở của google chrome</a>)</li>
</ul>
</li>
<li>dung lượng tải về khá lớn nên phụ thuộc vào đường truyền mạng</li>
<li>không thân thiện với các máy tìm kiếm</li>
<li>nguy cơ bảo mật là có thật, dù flash &amp; javascript bị rất hạn chế trong việc can thiệp vào hoạt động của máy tính.</li>
</ul>
<p><strong>Vậy lợi ích của RIA?</strong></p>
<ul>
<li>không cần cài đặt hay triển khai, đơn giản như là chạy ứng dụng flash.</li>
<li>cung cấp cho người dùng những chức năng vô cùng đa dạng, nâng cao lên rất nhiều khả năng tương tác so với mã HTML/DHTML/javascript truyền thống.</li>
<li>giao diện sử dụng rất ấn tượng với nhiều hiệu ứng hấp dẫn.</li>
<li>tương tác không đồng bộ (<em>Asynchronous communication)</em> với server, làm giảm tài nguyên mạng sử dụng cũng như tiết kiệm hoạt động của server. Bên cạnh đó lại dễ dàng dịch chuyển dữ liệu giữa client/server mà không cần người dùng phải thao tác nhiều và liên tục.</li>
</ul>
<p><strong>Xây dựng ứng dụng RIA?</strong></p>
<p>bạn có thể sử dụng DHTML/css/javascript kết hợp với kỹ thuật ajax theo kiểu truyền thống hoặc sử dụng 2 dạng tiếp cận mới hơn là <a href="http://www.adobe.com/products/flex/" target="_blank">Flex </a>&amp; <a href="http://silverlight.net/" target="_blank">Silverlight</a>.</p>
<p>cách đơn giản và dễ dàng nhất, bạn hãy <a href="http://bookilook.com/" target="_blank">tìm và download những cuốn sách</a> về chủ đề &amp; công cụ này để tìm hiểu thêm.</p>
<p>nếu bạn tự hỏi giữa flex &amp; silverlight thì bạn nên học cái nào? thế này nhé, trong câu chuyện với một người bạn cách đây ít hôm, chúng tôi nói đến việc flash được cài trên hầu hết (<a href="http://riastats.com/#" target="_blank">&gt;90%</a>) trình duyệt web hiện nay, trong khi silverlight chỉ được cài trên ~ 6.3% số lượng. Điều đó có nghĩa là bạn học flex sẽ có tương lai hơn, bạn nghĩ vậy phải không? thế nhưng hôm đó bạn tôi đặt lại một vấn đề, nếu như <a href="http://microsoft.com/" target="_blank">Microsoft</a> cài đặt mặc định silverlight vào tất cả các bản IE trong các phiên bản Windows sắp tới, thị phần trình duyệt cài silverlight sẽ tăng đến mức nào? có lẽ vào khoảng &gt; 80% như thị phần của IE hiện nay.</p>
<p>ngoài ra, có một bài so sánh khá thú vị giữa flex vs silverlight của  <a href="http://www.haiphucnguyen.net/blog/?p=65" target="_blank">ở đây</a></p>
<p>happy coding!</p>
<p><em>tham khảo: http://en.wikipedia.org/wiki/Rich_Internet_application, </em></p>
<p>(nguồn: http://www.hoang188.net/?p=91)</p>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2008/12/ch%c6%a1i-v%e1%bb%9bi-ria/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>PHP&#039;s world &#8211; những khái niệm đầu tiên</title>
		<link>http://i-php.net/2008/10/phps-world-nh%c6%b0%cc%83ng-kha%cc%81i-nie%cc%a3m-da%cc%80u-tien/</link>
		<comments>http://i-php.net/2008/10/phps-world-nh%c6%b0%cc%83ng-kha%cc%81i-nie%cc%a3m-da%cc%80u-tien/#comments</comments>
		<pubDate>Sun, 12 Oct 2008 08:26:56 +0000</pubDate>
		<dc:creator>hoangnd</dc:creator>
				<category><![CDATA[Khái niệm]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[glossary]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=11</guid>
		<description><![CDATA[Sử dụng thành thục PHP hay một ngôn ngữ lập trình nào đó, bước đầu tiên bạn nên ghi nhớ và phân biệt được các thuật ngữ/khái niệm căn bản nhất thường được sử dụng liên quan tới bản thân ngôn ngữ hay nền tảng thực thi của ngôn ngữ đó. PHP cũng có một [...]]]></description>
			<content:encoded><![CDATA[<p>Sử dụng thành thục PHP hay một ngôn ngữ lập trình nào đó, bước đầu tiên bạn nên ghi nhớ và phân biệt được các thuật ngữ/khái niệm căn bản nhất thường được sử dụng liên quan tới bản thân ngôn ngữ hay nền tảng thực thi của ngôn ngữ đó. PHP cũng có một danh sách các thuật ngữ (đơn giản nhưng dễ bỏ qua như):</p>
<p><strong>PHP: </strong>PHP Hypertext Preprocessor hoặc Personal Home Page. Cả hai khái niệm này đều đúng và đều liên tưởng tới một script-programming language thân thiện &amp; mạnh mẽ. <a href="http://php.net" target="_blank">đọc thêm</a></p>
<p><strong>LAMP:</strong> là sự kết hợp của <strong>L</strong>inux, <strong>A</strong>pache, <strong>M</strong>ySQL, <strong>P</strong>HP. Đây được cho là nền tảng phổ biến &amp; hiệu quả nhất để thực thi các chương trình viết bằng PHP. Với hệ điêu hành nhân Linux (Ubuntu, redhad, CentOS&#8230;), webserver Apache, cơ sở dữ liệu MySQL và PHP (tất nhiên). <img src='http://i-php.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  <a href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)" target="_blank">tìm hiểu thêm</a></p>
<p><strong>PhpMyAdmin:</strong> là một chương trình mã nguồn mở dùng để quản lý &amp; thực thi cơ sở dữ liệu MySQL, chạy trên nền web (trình duyệt), gọn nhẹ, nhanh. <a href="http://www.phpmyadmin.net/" target="_blank">tìm hiểu thêm</a></p>
<p><strong>MySQL</strong>: cơ sở dữ liệu quan hệ mã nguồn mở. Cực kỳ mạnh mẽ và linh hoạt, được ứng dụng trong hầu hết các dự án viết bằng PHP và hiện diện ở hầu hết các ngành kinh tế như một tủ chứa dữ liệu an toàn. <a href="http://www.mysql.com/" target="_blank">tìm hiểu thêm.</a></p>
<p><strong>IDE:</strong> Intergrated Development Environment, môi trường phát triển. Hầu hết chúng ta đều sử dụng ít nhất một IDE nào đó để viết mã chương trình. Các IDE nổi tiếng gồm có <a href="http://eclipse.org">Eclipse</a>, Visual studio, Netbeans, Zend studio,</p>
<p><strong>PDT &amp; Eclipse:</strong> PDT là một plugin hỗ trợ viết mã PHP được tích hợp thẳng vào eclipse. Miễn phí và mã mở, đây được cho là lựa chọn phổ biến và hợp lý nhất cho các lập trình viên PHP (trừ nhân viên của Zend <img src='http://i-php.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> )</p>
<p>(<em>còn tiếp)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2008/10/phps-world-nh%c6%b0%cc%83ng-kha%cc%81i-nie%cc%a3m-da%cc%80u-tien/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
