<?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; flex</title>
	<atom:link href="http://i-php.net/category/flex/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>How to Use Flash with PHP</title>
		<link>http://i-php.net/2009/12/how-to-use-flash-with-php/</link>
		<comments>http://i-php.net/2009/12/how-to-use-flash-with-php/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 10:36:43 +0000</pubDate>
		<dc:creator>ngocbd</dc:creator>
				<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=570</guid>
		<description><![CDATA[Đây là bài viết chuẩn bị cho topic cùng tên trong PHPDAY .
Có rất nhiều cách giúp Flash client và PHP có thể giao tiếp được với nhau .
Về nguyên tắc flash client có thể sử dụng giao thức TCP/IP  ( và mới đây là Peer-to-Peer )  . Tuy nhiên thông dụng nhất vẫn là [...]]]></description>
			<content:encoded><![CDATA[<p><em>Đây là bài viết chuẩn bị cho topic cùng tên trong PHPDAY .</em></p>
<p>Có rất nhiều cách giúp Flash client và PHP có thể giao tiếp được với nhau .</p>
<p>Về nguyên tắc flash client có thể sử dụng giao thức TCP/IP  ( và mới đây là Peer-to-Peer )  . Tuy nhiên thông dụng nhất vẫn là qua HTTP . Như vậy mọi mọi kết nối HTTP đều có thể dùng flash để giao tiếp ngon lành <img src='http://i-php.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  .</p>
<p>1. Dùng plain text</p>
<p>Tôi sẽ cố gắng load nội dung một file text trên i-php.net ( url của file : http://i-php.net/phpday/example.txt)</p>
<p>Ở đây  tôi minh họa bằng action script 3</p>
<blockquote><p>var request:URLRequest = new URLRequest(&#8220;http://i-php.net/phpday/example.txt&#8221;);<br />
var loader:URLLoader = new URLLoader(request);</p>
<p>// Handler when Loader complete<br />
loader.addEventListener(Event.COMPLETE, completeHandler);</p>
<p>function completeHandler(event:Event):void<br />
{<br />
var loader:URLLoader = URLLoader(event.target);<br />
trace(&#8220;loaded content: &#8221; + loader.data);<br />
}</p></blockquote>
<p>// output  loaded content: Hello Flash client</p>
<p>Tất nhiên là flash client chẳng quan tâm đến file plain text ( ở đây là http://i-php.net/phpday/example.txt) là file tĩnh hay output của một server side process &#8211; server side script cả . Bạn có thể thay thế bằng việc gọi tới một file php script bằng cách thay URL .</p>
<blockquote><p>var request:URLRequest = new URLRequest(&#8220;http://i-php.net/about/&#8221;);</p></blockquote>
<p>Như vậy đối với flash việc đọc một file trên http server là dễ dàng . Từ việc đọc được một text file ta có thể dùng nhiều cách để giao tiếp với server ( load variable , Json, XML-RPC, SOAP , REST , &#8230;)</p>
<p>2. Dùng load variable</p>
<p>Dùng kỹ thuật này đề load các dữ liệu có định dạng name=value .</p>
<p>Ở actionscript 2 thì chỉ cần gọi hàm <span style="color: navy;">loadVariables</span><br />
Ở actionscript 3 ta sửa đoạn code trên .<br />
<code>var request:URLRequest = new URLRequest("http://i-php.net/phpday/loadme.php");<br />
var loader:URLLoader = new URLLoader(request);<br />
// format result as VARIABLES<br />
loader.dataFormat = URLLoaderDataFormat.VARIABLES</code></p>
<p>// Handler when Loader complete<br />
loader.addEventListener(Event.COMPLETE, completeHandler);</p>
<p>function completeHandler(event:Event):void<br />
{<br />
var loader:URLLoader = URLLoader(event.target);</p>
<p>if(loader.data is URLVariables)<br />
{<br />
trace(loader.data.user+&#8221;:&#8221;+loader.data.message);</p>
<p>}<br />
}</p>
<p>File loadme.php chỉ đơn giản là echo ra nội dung :<br />
<code><br />
echo 'message=Hello&amp;user=system';<br />
?&gt;<br />
</code><br />
Như vậy loadvar thực chất là định dạng nội dung theo định dang name=value pairs .</p>
<p>Với những dữ liệu đơn giản thì chỉ cần các cách 1 và 2 là đủ . Tuy nhiên với các dạng dữ liệu phức tạp như Object hay Array thì cần những phương pháp serialization . Vậy serialization là gì và tại sao phải serialization  ?</p>
<p>Trong các ứng dụng client-server ta muốn send các object qua mạng , mà bản thân các giao thức mạng ( tầng thấp ) đều không hiểu object là gì hết nó chỉ hiểu các bit ( 1001100111 &#8230; ) hoặc cao cấp cỡ HTTP cũng chỉ hiểu text và text . Nên chúng ta cần đưa các object về các dạng nhị phân hoặc text , truyền chúng qua mạng rồi về đến client sẽ dựng lại thành các object . Công việc như vậy gọi là serialization  và deserialization  .</p>
<p>Như vậy mỗi phương pháp serialization &#8211; deserialization  khác nhau sẽ tạo ra một giao thức khác nhau SOAP,XML-RPC dùng XML , Json,Yaml dùng các nested text block ,&#8230;</p>
<p>Các Text based serialization như SOAP,XML-RPC , Json,Yaml tôi sẽ không đi sâu trong bài viết này .<br />
Mà chỉ chỉ ra nhược điểm lớn nhất của chúng là vấn đề tốc độ truyền tải sẽ rất chậm .<br />
Chậm vì các xml tag của SOAP,XML-RPC vừa thừa,  vừa tốn thời gian serialization &#8211; deserialization.</p>
<p>Chính vì nhu cầu cần có giao thức có tốc độ truyền và serialization &#8211; deserialization nhanh hơn , và tốt hơn cả là binary thay vì text base nên với mỗi ngôn ngữ &#8211; công nghệ có các giải pháp khác nhau .<br />
Như Java có RMI<br />
Như .Net có .Net remoting<br />
Python có RPyC<br />
Flash có AMF</p>
<p>Vậy  AMF là công nghệ RPC giúp client là Flash/AIR player giao tiếp với server .<br />
Server của AMF có thể là  :</p>
<p>Java &#8211; BlazeDS, RED 5, Cinnamon, OpenAMF, Pimento, Granite<br />
.NET &#8211; WebORB, FluorineFx, AMF.NET<br />
PHP &#8211; AMFPHP, SabreAMF, WebORB<br />
Python &#8211; PyAMF, Flashticle, amfast, Plasma<br />
Perl &#8211; AMF::Perl<br />
Ruby &#8211; RubyAMF, WebORB</p>
<p>Nếu kết hợp với các framework phía server thì có các thư viện</p>
<p>Ruby on Rails &#8211; RubyAMF<br />
Zend Framework &#8211; Zend_AMF<br />
OSGi Framework &#8211; AMF3 for OSGi<br />
Django &#8211; Django AMF<br />
CakePHP &#8211; CakeAMFPHP</p>
<p>3. PHPAMF .<br />
Như vậy PHPAMF chẳng qua chỉ là một thư viện giúp flash client có thể gửi và nhận dữ liệu với server side là php .<br />
PHPAMF có một số đặc điểm<br />
&#8230;. ( lười list)<br />
Cụ thể các công việc mà PHPAMF sẽ làm khi nhận được flash client yêu cầu :</p>
<p>    *  Deserializes the request<br />
    * Finds the corresponding remote class<br />
    * Instantiates the class<br />
    * Performs security checks<br />
    * Calls the remote method using the specified arguments<br />
    * Serializes the returned data<br />
( Lười dịch -> cần sơ đồ )</p>
<p>4. Cài đặt và Demo .<br />
Only demo , nothing here <img src='http://i-php.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/12/how-to-use-flash-with-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Note Config Apache</title>
		<link>http://i-php.net/2009/08/note-config-apache/</link>
		<comments>http://i-php.net/2009/08/note-config-apache/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 03:43:36 +0000</pubDate>
		<dc:creator>chaubl</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[web server]]></category>
		<category><![CDATA[apache]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=498</guid>
		<description><![CDATA[Cấu hình cho Apache hiển thị file Gzip .
- Cài module mod_defalte.so vào thư mục &#8230;/apache2.2/modules
- Sửa file &#8230;/apache2/conf/httpd.conf enable mod_deflate.so
LoadModule deflate_module modules/mod_deflate.so
- Add MultiViews to Options:
Options Indexes FollowSymLinks MultiViews
- Uncomment AddEncoding:
AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
- Comment AddType:
#AddType application/x-compress .Z
#AddType application/x-gzip .gz .tgz
- Để hiển thị file Gzip dưới dạng xml thêm dòng :
AddType [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Cấu hình cho Apache hiển thị file Gzip .</strong></p>
<p>- Cài module mod_defalte.so vào thư mục &#8230;/apache2.2/modules</p>
<p>- Sửa file &#8230;/apache2/conf/httpd.conf enable mod_deflate.so<br />
LoadModule deflate_module modules/mod_deflate.so</p>
<p>- Add MultiViews to Options:<br />
Options Indexes FollowSymLinks MultiViews</p>
<p>- Uncomment AddEncoding:<br />
AddEncoding x-compress .Z<br />
AddEncoding x-gzip .gz .tgz<br />
- Comment AddType:<br />
#AddType application/x-compress .Z<br />
#AddType application/x-gzip .gz .tgz</p>
<p>- Để hiển thị file Gzip dưới dạng xml thêm dòng :<br />
AddType text/xml .gz .tgz</p>
<p>- Khởi động lại Apache:<br />
&#8230;/httpd restart</p>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/08/note-config-apache/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>Socket with java server</title>
		<link>http://i-php.net/2009/01/socket-with-java-server/</link>
		<comments>http://i-php.net/2009/01/socket-with-java-server/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 13:31:45 +0000</pubDate>
		<dc:creator>vannt</dc:creator>
				<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=356</guid>
		<description><![CDATA[một ví dụ về socket:
flash chỉ có thể là client. Cần dùng một ngôn ngữ khác để tạo server socket:
java server socket:
server đợi request từ client tới, nếu có request, sẽ tạo socket với client. Sau khi tạo socket, trả về client chuỗi &#8220;hello client&#8221;.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server
{
/**
* @param args
*/
public static [...]]]></description>
			<content:encoded><![CDATA[<p>một ví dụ về socket:</p>
<p>flash chỉ có thể là client. Cần dùng một ngôn ngữ khác để tạo server socket:</p>
<p>java server socket:</p>
<p>server đợi request từ client tới, nếu có request, sẽ tạo socket với client. Sau khi tạo socket, trả về client chuỗi &#8220;hello client&#8221;.</p>
<blockquote><p>import java.io.BufferedReader;<br />
import java.io.InputStreamReader;<br />
import java.io.OutputStreamWriter;<br />
import java.net.ServerSocket;<br />
import java.net.Socket;</p>
<p>public class Server<br />
{</p>
<p>/**<br />
* @param args<br />
*/<br />
public static void main(String[] args)<br />
{<br />
try<br />
{<br />
//tao ServerSocket<br />
ServerSocket server = new ServerSocket(2000);</p>
<p>//create socket connect to client<br />
Socket socket = server.accept();//wait client request<br />
System.out.println(&#8220;da tao socket&#8221;);</p>
<p>//create stream to write to client<br />
OutputStreamWriter out = new     OutputStreamWriter(socket.getOutputStream());<br />
//write from server<br />
out.write(&#8220;hello client&#8221;);<br />
out.flush();</p>
<p>//create stream to read from client<br />
BufferedReader read = new BufferedReader(new InputStreamReader(socket.getInputStream()));<br />
//read from client<br />
String str;<br />
while(true)<br />
{<br />
str = read.readLine();<br />
if(str==null) break;<br />
System.out.println(str);<br />
}</p>
<p>} catch (Exception e)<br />
{<br />
e.printStackTrace();<br />
}</p>
<p>}</p></blockquote>
<p>Phía client: ta dùng actionscript để tạo socket kết nối với server:  tạo application trong flex:</p>
<blockquote><p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; layout=&#8221;absolute&#8221; creationComplete=&#8221;init()&#8221;&gt;<br />
&lt;mx:Script&gt;<br />
&lt;![CDATA[<br />
private var server:String = "localhost";<br />
private var port:Number = 2000;<br />
private var socket:Socket;<br />
private function init():void {<br />
socket = new Socket();<br />
socket.addEventListener(Event.CONNECT, onConnect);<br />
socket.addEventListener(Event.CLOSE, onClose);<br />
socket.addEventListener(ErrorEvent.ERROR, onError);<br />
socket.addEventListener(IOErrorEvent.IO_ERROR, onIOError);<br />
socket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse);<br />
Security.allowDomain(server);<br />
Security.loadPolicyFile("http://"+server+"/crossdomain.xml");<br />
try {<br />
socket.connect(server, port);<br />
outMessage("Trying to connect to "+server+":"+port);<br />
} catch (error:Error) {<br />
socket.close();<br />
outMessage(error.message);<br />
}</p>
<p>}<br />
public function send(string:String):void {<br />
socket.writeUTFBytes(string);<br />
socket.flush();<br />
}<br />
private function onConnect(event:Event):void {<br />
outMessage("Connected to "+server+":"+port);<br />
socket.writeUTFBytes("hello server 1\n");<br />
// send("respond");<br />
}<br />
private function onClose(event:Event):void {<br />
outMessage("Connection closed");<br />
}<br />
private function onError(event:IOErrorEvent):void {<br />
outMessage("Connection error");<br />
}<br />
private function onIOError(event:IOErrorEvent):void {<br />
outMessage("I/O error");<br />
}<br />
private function onResponse(event:ProgressEvent):void {<br />
var string:String = socket.readUTFBytes(socket.bytesAvailable);<br />
outMessage(string);<br />
socket.writeUTFBytes("hello server 2\n");</p>
<p>}<br />
public function outMessage(msg:String):void {<br />
log.htmlText += '&lt;font color="#000099"&gt;'+msg+'&lt;br&gt;&lt;/font&gt;';<br />
}<br />
]]&gt;<br />
&lt;/mx:Script&gt;<br />
&lt;mx:TextArea id=&#8221;log&#8221; width=&#8221;400&#8243; height=&#8221;200&#8243; x=&#8221;10&#8243; y=&#8221;10&#8243; selectable=&#8221;false&#8221;/&gt;<br />
&lt;/mx:Application&gt;</p></blockquote>
<p>Mọi giao tiếp giữa client và server cần được viết trong hàm onResponse(event:ProgressEvent).</p>
<blockquote></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/01/socket-with-java-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cakephp 1.2 &#8211; một số hàm hepler thường dùng (Phần 2)</title>
		<link>http://i-php.net/2009/01/cakephp-12-m%e1%bb%99t-s%e1%bb%91-ham-hepler-th%c6%b0%e1%bb%9dng-dung-ph%e1%ba%a7n-2/</link>
		<comments>http://i-php.net/2009/01/cakephp-12-m%e1%bb%99t-s%e1%bb%91-ham-hepler-th%c6%b0%e1%bb%9dng-dung-ph%e1%ba%a7n-2/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 20:00:05 +0000</pubDate>
		<dc:creator>hoanbn</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[helper]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=321</guid>
		<description><![CDATA[Sau đây sẽ là một số hàm hepler thường dùng trong form:
8. form-&#62;input: Tạo ra thẻ html input
 Cú pháp:
$form-&#62;input(string $fieldName, array $options = array()) ;
Thẻ input trong cakephp là thẻ được sử dụng nhiều nhất, hiệu quả nhất và phức tạp nhất trong hepler form của cakephp. Trước tiên ta hãy tìm hiểu cách [...]]]></description>
			<content:encoded><![CDATA[<p>Sau đây sẽ là một số hàm hepler thường dùng trong form:</p>
<h6>8. form-&gt;input: Tạo ra thẻ html input</h6>
<p><strong> Cú pháp:</strong><br />
<span style="color: #0000ff;"><strong>$form-&gt;input(string $fieldName, array $options = array()) ;</strong></span></p>
<p>Thẻ input trong cakephp là thẻ được sử dụng nhiều nhất, hiệu quả nhất và phức tạp nhất trong hepler form của cakephp. Trước tiên ta hãy tìm hiểu cách sinh ra các phương thức tự động trong Formhepler.<br />
<strong> a.  Quy cách sinh tự động các thẻ HTML.</strong><br />
Thẻ input sẽ dựa vào loại dữ liệu (type) của model để tự động sinh ra các thẻ html tương ứng. Sau đây là một bảng liệt kê các thẻ html trả về tương ứng với loại dữ liệu:</p>
<table style="height: 145px;" border="0" width="536">
<tbody>
<tr>
<th><span style="font-size: small;">Kiểu dữ liệu</span></th>
<th><span style="font-size: small;">Thẻ form trả về</span></th>
</tr>
<tr>
<td>string (char, varchar, etc.)</td>
<td>text</td>
</tr>
<tr>
<td>boolean, tinyint(1)</td>
<td>checkbox</td>
</tr>
<tr>
<td>text</td>
<td>textarea</td>
</tr>
<tr>
<td>text, with name of password, passwd, or psword</td>
<td>password</td>
</tr>
<tr>
<td>date</td>
<td>day, month, and year selects</td>
</tr>
<tr>
<td>datetime, timestamp</td>
<td>day, month, year, hour, minute, and meridian selects</td>
</tr>
<tr>
<td>time</td>
<td>hour, minute, and meridian selects</td>
</tr>
</tbody>
</table>
<p>Cho ví dụ, giả sử model User bao gồm các trường là username(varchar), password(varchar), approved(datetime) và quote(text). Chúng ta có thể chỉ sử dụng một phương thức input trong FormHepler là có thể tạo ra được tất cả các thẻ html khác nhau.<br />
<strong> Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;create(); ?&gt;

&lt;?php
echo $form-&gt;input('username');   //text
echo $form-&gt;input('password');   //password
echo $form-&gt;input('approved');   //day, month, year, hour, minute, meridian
echo $form-&gt;input('quote');      //textarea
?&gt;

&lt;?php echo $form-&gt;end('Add'); ?&gt;</pre>
<p>Ta cũng có thể mở rộng một vài thuộc tính trong thẻ input như sau:</p>
<pre class="php" name="code">echo $form-&gt;input('birth_dt', array( 'label' =&gt; 'Date of birth' , 'dateFormat' =&gt; 'DMY' , 'minYear' =&gt; date('Y') - 70, 'maxYear' =&gt; date('Y') - 18 ));</pre>
<p><strong> b. Quy ước tên trường trong phương thức input</strong><br />
Form hepler rất thông minh, khi bạn xác định tên một trường với phương thức của form helper, cakephp sẽ tự động sử dụng tên model hiện đại để dịnh dạng theo cấu trúc dưới đây.<br />
<strong> &lt;input type=&#8221;text&#8221; id=&#8221;ModelnameFieldname&#8221; name=&#8221;data[Modelname][fieldname]&#8220;&gt;</strong></p>
<p><strong></strong><br />
Bạn cũng có thể chỉ ra tên model bằng truyển tên model như tham số đầu tiên (Modelname.fieldname).<br />
&lt;?php echo $form-&gt;input(&#8216;Modelname.fieldname&#8217;); ?&gt;<br />
Trong trường hợp bạn muốn sử dụng nhiều tên trường giống nhau, chúng ta có thể tạo ra một mảng array và lưu chúng vào CSDL bằng phương thức saveAll() theo quy ước như ví dụ sau:</p>
<pre class="php" name="code">&lt;?php
echo $form-&gt;input('Modelname.0.fieldname');
echo $form-&gt;input('Modelname.1.fieldname');
?&gt;
//Dữ liệu trả về HTML
&lt;input type="text" id="Modelname0Fieldname" name="data[Modelname][0][fieldname]"&gt;
&lt;input type="text" id="Modelname1Fieldname" name="data[Modelname][1][fieldname]"&gt;</pre>
<p><strong>c. Các options trong thẻ input ($options)</strong><br />
<strong> c.1. $options['type']</strong><br />
Bạn có thể chỉ định loại của thẻ input tạo ra giống như trong html. Type sẽ được gán hợp lệ như sau: file, password, text, textarea &#8230;.</p>
<p><strong> Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;input('field', array('type' =&gt; 'file')); ?&gt;
//Dữ liệu trả về HTML
&lt;div class="input"&gt;
&lt;label for="UserField"&gt;Field&lt;/label&gt;
&lt;input type="file" name="data[User][field]" value="" id="UserField" /&gt;
&lt;/div&gt;</pre>
<p><strong>c.2. $options['options']</strong><br />
Từ khóa này sẽ tạo ra cho bạn một thẻ select input hoặc một thẻ radio group. Nếu muốn sử dụng với thẻ radio, bạn phải dùng thêm $option['type']. Mặc định sẽ tạo ra một thẻ select input. (Lưu ý: từ khóa options sẽ luôn được gán với một mảng array)<br />
<strong>Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;input('field', array('options' =&gt; array(1,2,3,4,5))); ?&gt;
//Dữ liệu trả về HTML
&lt;div class="input"&gt;
&lt;label for="UserField"&gt;Field&lt;/label&gt;
&lt;select name="data[User][field]" id="UserField"&gt;
&lt;option value="0"&gt;1&lt;/option&gt;
&lt;option value="1"&gt;2&lt;/option&gt;
&lt;option value="2"&gt;3&lt;/option&gt;
&lt;option value="3"&gt;4&lt;/option&gt;
&lt;option value="4"&gt;5&lt;/option&gt;
&lt;/select&gt;
&lt;/div&gt;</pre>
<p>Bạn cũng có thể sử dụng cặp key-value như sau:</p>
<pre class="php" name="code">&lt;?php echo $form-&gt;input('field', array('options' =&gt; array(
'Value 1'=&gt;'Label 1',
'Value 2'=&gt;'Label 2',
'Value 3'=&gt;'Label 3'
))); ?&gt;
//Dữ liệu trả về HTML
&lt;div class="input"&gt;
&lt;label for="UserField"&gt;Field&lt;/label&gt;
&lt;select name="data[User][field]" id="UserField"&gt;
&lt;option value="Value 1"&gt;Label 1&lt;/option&gt;
&lt;option value="Value 2"&gt;Label 2&lt;/option&gt;
&lt;option value="Value 3"&gt;Label 3&lt;/option&gt;
&lt;/select&gt;
&lt;/div&gt;</pre>
<p><strong>c.3. $options['multiple']</strong><br />
Nếu &#8216;mutiple&#8217; được gán là true cho một thẻ input mà đầu ra là thẻ select input, thì bạn sẽ có thể lựa chọn nhiều tùy chọn selection cùng một lúc.<br />
<strong>Ví dụ:</strong></p>
<pre class="php" name="code">$form-&gt;input('Model.field', array( 'type' =&gt; 'select', 'multiple' =&gt; true ));</pre>
<p><strong> c.4. $options['maxLenght']</strong><br />
Xác định số ký tự cho phép nhập vào trong một thẻ text input.</p>
<p><strong> c.5. $options['label']</strong><br />
Gán nhãn cho một thẻ input khi thẻ đó được hiển thị<br />
<strong>Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;input( 'User.name', array( 'label' =&gt; 'The User Alias' ) );?&gt;
//Dữ liệu trả về dạng HTML
&lt;div class="input"&gt;
&lt;label for="UserName"&gt;The User Alias&lt;/label&gt;
&lt;input name="data[User][name]" type="text" value="" id="UserName" /&gt;
&lt;/div&gt;</pre>
<p>Chúng ta cũng có thể gán key label là false nếu không muốn hiển thị nhãn label trong thẻ<br />
<strong>Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;input( 'User.name', array( 'label' =&gt; false ) ); ?&gt;
//Dữ liệu trả về dạng HTML
&lt;div class="input"&gt;
&lt;input name="data[User][name]" type="text" value="" id="UserName" /&gt;
&lt;/div&gt;</pre>
<p><strong> c.6. $options['id']</strong><br />
Gán giá trị DOM id của một thẻ input.</p>
<p><strong>c.7. $options['default']</strong><br />
Sử dụng kết hợp với thẻ select input. Gán một giá trị là defaul trong tập hợp các tùy chọn đó khi hiển thị .<br />
<strong> Ví dụ;</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;input('country', array('options'=&gt;$countries, 'default'=&gt;'US')); ?&gt;</pre>
<p><strong> c.8. $options['empty']</strong><br />
Khi sử dụng với thẻ select list, một thẻ option với giá trị rỗng trong list chọn của thẻ input. Nếu muốn có một giá trị rỗng trong option, ta chỉ việc truyển giá trị rỗng.<br />
<strong>Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;input('field', array('options' =&gt; array(1,2,3,4,5), 'empty' =&gt; '(choose one)')); ?&gt;
//Dữ liệu trả về dạng HTML
&lt;div class="input"&gt;
&lt;label for="UserField"&gt;Field&lt;/label&gt;
&lt;select name="data[User][field]" id="UserField"&gt;
&lt;option value=""&gt;(choose one)&lt;/option&gt;
&lt;option value="0"&gt;1&lt;/option&gt;
&lt;option value="1"&gt;2&lt;/option&gt;
&lt;option value="2"&gt;3&lt;/option&gt;
&lt;option value="3"&gt;4&lt;/option&gt;
&lt;option value="4"&gt;5&lt;/option&gt;
&lt;/select&gt;
&lt;/div&gt;</pre>
<h5>9. form-&gt;hidden: Tạo ra một thẻ input hidden</h5>
<p><strong>Cú pháp</strong><br />
<span style="color: #0000ff;"><strong> $form-&gt;hidden(string $fieldName, array $options)</strong></span><br />
<strong>Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;hidden('field', array('id' =&gt; 'field')); ?&gt;
//Dữ liệu trả về HTML
&lt;input type="hidden" name="data[ModelName][field]" id="field" /&gt;</pre>
<h5>10. form-&gt;password: Tạo ra một thẻ input dạng password</h5>
<p><strong>Cú pháp:</strong><br />
<span style="color: #0000ff;"><strong> $form-&gt;password(string $fieldName, array $options);</strong></span><br />
<strong>Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;password('pass', array('id' =&gt; 'pass')); ?&gt;
//Dữ liệu trả về HTML
&lt;input type="password" name="data[ModelName][pass]" id="pass" /&gt;</pre>
<h5>11. form-&gt;text: Tạo ra một thẻ input text</h5>
<p><strong>Cú pháp:</strong><br />
<span style="color: #0000ff;"><strong> $form-&gt;text(string $fieldName, array $options);</strong></span><br />
<strong>Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;text('field', array('id' =&gt; 'field')); ?&gt;
//Dữ liệu trả về HTML
&lt;input type="text" name="data[ModelName][field]" id="field" /&gt;</pre>
<h5>12. form-&gt;textarea: Tạo ra một thể input textarea</h5>
<p><strong>Cú pháp:</strong><br />
<strong><span style="color: #0000ff;">$form-&gt;textarea(string $fieldName, array $options)</span></strong><br />
<strong> Ví dụ</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;textarea('field', array('id' =&gt; 'field')); ?&gt;
//Dữ liệu trả về HTML
&lt;textarea name="data[ModelName][field]" id="field" /&gt;</pre>
<h5>13. form-&gt;submit: Tạo ra một nút submit</h5>
<p><strong>Cú pháp:</strong><br />
<span style="color: #0000ff;"><strong> $form-&gt;submit(string $caption, array $options)</strong></span><br />
Tạo ra một nút button submit với nhãn là $captió. Nếu $caption là một URL của một image, thì nút submit sẽ hiện thị như một images.<br />
<strong> Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;submit('save', array('id' =&gt; 'field')); ?&gt;
//Dữ liệu trả về HTML
&lt;button type="submit" name="data[ModelName][save]" id="field" /&gt;</pre>
<h5>14. form-&gt;checkbox: Tạo ra một thẻ checkbox</h5>
<p><strong>Cú pháp:</strong><br />
<span style="color: #0000ff;"><strong> $form-&gt;checkbox(string $fieldName, array $options)</strong></span><br />
Tạo ra một thẻ checkbox. Phương thức này cũng sẽ tạo ra một thẻ input hidden ẩn để phục vụ gửi dữ liệu lên.<br />
<strong>Ví dụ</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;checkbox('done'); ?&gt;
//Dữ liệu trả về dạng HTML
&lt;input type="hidden" name="data[ModelName][done]" value="0" id="UserDone_" /&gt;
&lt;input type="checkbox" name="data[ModelName][done]" value="1" id="UserDone" /&gt;</pre>
<h5>15. form-&gt;radio: tạo ra một thẻ radio button.</h5>
<p><strong>Cú pháp:</strong><br />
<span style="color: #0000ff;"><strong> $form-&gt;radio(string $fieldName, array $options, array $attributes)</strong></span><br />
Tạo ra một thẻ radio button input. $attributes['value'] để gán giá trị được set mặc định. Thuộc tính radio sẽ tạo ra một label và fieldset với giá trị mặc định, nếu muốn thay đổi thì gán $attributes['legend'] là false.<br />
<strong>Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;radio('User.sex', array(0 =&gt; 'male', 1 =&gt; 'female'), array('value' =&gt; '1')); ?&gt;
//Dữ liệu trả về dạng html
&lt;fieldset&gt;
&lt;legend&gt;Sex&lt;/legend&gt;
&lt;input type="radio" name="data[User][sex]" id="UserSex0" value="0"  /&gt;
&lt;label for="UserSex0"&gt;male&lt;/label&gt;&lt;input type="radio" name="data[User][sex]" id="UserSex1" value="1" checked="checked"  /&gt;
&lt;label for="UserSex1"&gt;female&lt;/label&gt;
&lt;/fieldset&gt;</pre>
<h5>16. form-&gt;select: tạo ra  một thẻ select</h5>
<p><strong>Cú pháp:</strong><br />
<span style="color: #0000ff;"><strong>$form-&gt;select(string $fieldName, array $options, mixed $selected, array $attributes, boolean $showEmpty)</strong></span></p>
<p><span style="color: #0000ff;"><strong></strong></span><br />
Tạo ra một thẻ input select, với các item nằm trong $options, với tùy chọn $selected ta có thẻ chọn một item mặc định được chọn. Với giá trị $showEmpty gán là false, nếu muốn hiện ra một lựa chọn với giá trị trống làm mặc định.<br />
<strong> Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;select('age', array(0 =&gt; 'male', 1 =&gt; 'female'), '1'); ?&gt;
//Dữ liệu trả về HTML
&lt;select name="data[age]" id="age"&gt;
&lt;option value=""&gt;&lt;/option&gt;
&lt;option value="0"&gt;male&lt;/option&gt;
&lt;option value="1" selected="selected"&gt;female&lt;/option&gt;
&lt;/select&gt;</pre>
<h5>17. form-&gt;file: Tạo ra một thẻ input file</h5>
<p><strong>Cú pháp:</strong><br />
<span style="color: #0000ff;"><strong> $form-&gt;file(string $fieldName, array $options)</strong></span><br />
<strong>Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;file('fileName', array('id' =&gt; 'fileName')); ?&gt;
//Dữ liệu trả về dạng HTML
&lt;input type="file" name="data[fileName]" id="fileName" value="" /&gt;</pre>
<h5>18. form-&gt;submitImage: Tạo ra một nút button submit ảnh</h5>
<p><strong>Cú pháp:</strong><br />
<span style="color: #0000ff;"><strong> $form-&gt;submitImage(string $path, array $options);</strong></span><br />
Tạo ra một nút button submit ảnh theo đường chỉ định URL trong $path<br />
<strong> </strong></p>
<p><strong>Ví dụ:</strong></p>
<pre class="php" name="code">&lt;?php echo $form-&gt;submit('anh.jpg', array('id' =&gt; 'anh1')); ?&gt;
//Dữ liệu trả về dạng HTML
&lt;div class="submit"&gt;&lt;input type="image" src="/projectName/img/anh.jpg" id="anh1" /&gt;&lt;/div&gt;
</pre>
<p><strong><em>(Chú ý: Tất cả các phương thức được giới thiệu từ phần 9 trở đi đều có thể dùng phương thức input ở phần 8 thay thế được)</em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/01/cakephp-12-m%e1%bb%99t-s%e1%bb%91-ham-hepler-th%c6%b0%e1%bb%9dng-dung-ph%e1%ba%a7n-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PopUp Window</title>
		<link>http://i-php.net/2009/01/popup-window/</link>
		<comments>http://i-php.net/2009/01/popup-window/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 12:57:22 +0000</pubDate>
		<dc:creator>vannt</dc:creator>
				<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=286</guid>
		<description><![CDATA[Có nhiều cách để tạo một cửa sổ window, dưới đây là một mẫu code ngắn, có thể chế biến lại phù hợp với yêu cầu:
-Tạo lớp để có một window resizable, có nút close (các chức năng khác bạn tự thêm vào): file  ResizablePanel.as
package
{
import flash.events.MouseEvent;
import mx.containers.TitleWindow;
import mx.controls.Button;
import mx.events.CloseEvent;
import mx.managers.PopUpManager;
public class ResizablePanel extends TitleWindow
{
private [...]]]></description>
			<content:encoded><![CDATA[<p>Có nhiều cách để tạo một cửa sổ window, dưới đây là một mẫu code ngắn, có thể chế biến lại phù hợp với yêu cầu:</p>
<p>-Tạo lớp để có một window resizable, có nút close (các chức năng khác bạn tự thêm vào): file  ResizablePanel.as</p>
<blockquote><p>package<br />
{<br />
import flash.events.MouseEvent;</p>
<p>import mx.containers.TitleWindow;<br />
import mx.controls.Button;<br />
import mx.events.CloseEvent;<br />
import mx.managers.PopUpManager;</p>
<p>public class ResizablePanel extends TitleWindow<br />
{<br />
private var resizer:Button = new Button();</p>
<p>public function ResizablePanel()<br />
{<br />
super();<br />
resizer.addEventListener(MouseEvent.MOUSE_DOWN, resizeDown);<br />
this.showCloseButton=&#8221;true&#8221;;</p>
<p>this.addEventListener(CloseEvent.CLOSE, closeDialog);<br />
}<br />
override protected function createChildren():void{<br />
resizer.height=10;<br />
resizer.width = 10;<br />
super.createChildren();<br />
rawChildren.addChild(resizer);<br />
}<br />
override protected function updateDisplayList(w:Number, h:Number):void{<br />
super.updateDisplayList(w,h);<br />
resizer.y = h &#8211; resizer.height;<br />
resizer.x = w &#8211; resizer.width;<br />
}<br />
private function resizeDown(e:MouseEvent):void{<br />
stage.addEventListener(MouseEvent.MOUSE_MOVE, scalePanel);<br />
stage.addEventListener(MouseEvent.MOUSE_UP, stopScale);<br />
}<br />
private function scalePanel(e:MouseEvent):void{<br />
if((stage.mouseX &#8211; x)&gt;50)<br />
width = (stage.mouseX-x);<br />
if((stage.mouseY-y)&gt;50)<br />
height = (stage.mouseY-y);<br />
}<br />
private function stopScale(e:MouseEvent):void{<br />
stage.removeEventListener(MouseEvent.MOUSE_MOVE, scalePanel);<br />
stage.removeEventListener(MouseEvent.MOUSE_UP, stopScale);<br />
}<br />
//function close window<br />
private function closeDialog(event:CloseEvent) : void {<br />
this.parent.removeChild(this);<br />
}<br />
}<br />
}</p></blockquote>
<p>lớp trên chỉ tạo một window trống. Để có nội dung như ý mình (VD: có form đăng nhập, có &#8230;.) bạn tạo một component mxml mở rộng lớp trên ra. Ở đây, để đơn giản, chỉ hiển thị window trống này thôi:</p>
<p>Hiển thị window:</p>
<blockquote><p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;utf-8&#8243;?&gt;<br />
&lt;mx:Application xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; creationComplete=&#8221;createPopUpWindow()&#8221; layout=&#8221;absolute&#8221; xmlns:local=&#8221;*&#8221;&gt;<br />
&lt;mx:Script&gt;<br />
&lt;![CDATA[<br />
import mx.managers.PopUpManager;<br />
function createPopUpWindow():void<br />
{<br />
var popupWindow:Register = new Register();<br />
PopUpManager.addPopUp(popupWindow, this);<br />
}<br />
]]&gt;<br />
&lt;/mx:Script&gt;<br />
&lt;/mx:Application&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2009/01/popup-window/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hướng dẫn cài đặt flex sdk trong Ubuntu</title>
		<link>http://i-php.net/2008/12/h%c6%b0%e1%bb%9bng-d%e1%ba%abn-cai-d%e1%ba%b7t-flex-sdk-trong-ubuntu/</link>
		<comments>http://i-php.net/2008/12/h%c6%b0%e1%bb%9bng-d%e1%ba%abn-cai-d%e1%ba%b7t-flex-sdk-trong-ubuntu/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 07:28:16 +0000</pubDate>
		<dc:creator>hoanbn</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[m]]></category>
		<category><![CDATA[sdk]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=218</guid>
		<description><![CDATA[Để có thể làm việc được với Flex, về cơ bản chúng ta sẽ cần cài đặt 2 chương trình sau:
- Flex SDK: là một chương trình  biên dịch và gỡ lỗi command line. Đây là một chương trình miễn phí của Adobe. Bạn có thể download miễn phí tại đây.
- Flash Flayer 10: [...]]]></description>
			<content:encoded><![CDATA[<p>Để có thể làm việc được với Flex, về cơ bản chúng ta sẽ cần cài đặt 2 chương trình sau:<br />
- Flex SDK: là một chương trình  biên dịch và gỡ lỗi command line. Đây là một chương trình miễn phí của Adobe. Bạn có thể download miễn phí tại <a title="Flex SDK" href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK;jsessionid=7CA8D00AF955F1AA2360B2F8DB4AAC8B" target="_blank">đây</a>.</p>
<p>- Flash Flayer 10: là một chương trình để chạy các flex đã được biên dịch (hay đúng hơn là thực thi các mã script). Đây cũng là một chương trình miễn phí của Adobe. Bạn có thể download tại <a title="Flash player 10" href="http://get.adobe.com/flashplayer/">đây</a>.</p>
<p>Cài đặt Flex SDK:</p>
<p>- Sau khi download về tôi được một file zip sau: flex_sdk_3.zip. Giải nén file zip ta có được folder flex_sdk_3, ta sẽ chuyển thư mục này vào một thư mục nào đó. Tôi sẽ chuyển thư mục này theo đường dẫn: &#8220;/home/tendangnhap/flex_sdk_3&#8243;. Vậy là ta đã cài đặt xong.</p>
<p>- Để chạy flex sdk, chúng ta sẽ vào thư mục &#8220;flex_sdk-3/bin&#8221;. Trong thư mục này sẽ chứa các file chạy, với windown thì file chạy sdk sẽ là mxmlc.exe. Còn trong linux thì file chạy chỉ là mxmlc. Bây giờ ta test bằng cách chạy một đoạn flex helloword nhé.</p>
<p>+ Đầu tiên ta sẽ tạo ra một file có tên là helloworld.mxml ngay trong thư mục flex_sdk_3/bin có nội dung như sau:</p>
<p>helloword.mxml</p>
<pre class="flex">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"&gt;
&lt;mx:Panel title="Hello World" width="200" height="100"&gt;
&lt;mx:Label text="Wellcome to Flex" fontSize="20" color="blue"
mouseDownEffect="WipeRight" /&gt;
&lt;/mx:Panel&gt;
&lt;/mx:Application&gt;</pre>
<p>+Tiếp đến ta sẽ dúng sdk để dịch, ta vào chương trình Terminal, gọi đến đường dẫ chứa chương trình flex_sdk_3. Ở đây đường dẫ của tôi sẽ là: &#8220;/home/hoantocxoan/flex_sdk_3/bin/&#8221; ta sẽ gõ như sau:</p>
<pre class="ubuntu">sudo cd /home/hoantocxoan/flex_sdk_3/bin

sudo mxmlc helloworld.mxml</pre>
<p>+ Sau 2 câu lệnh trên thì chương trình sẽ dịch ra file helloworld.swf. Như vậy là bạn đã cài đặt và biên dịch thành công flex_sdk.</p>
<p>- Công việc tiếp theo là ta sẽ thiết lập lại biến môi trường để ta có thể gọi chương được ở bất cứ nơi đâu thay vì cứ phải vào trong /home/hoantocxoan/flex_sdk_3/bin. Ta sẽ xét lại biến môi trường như sau:</p>
<pre class="ubuntu">sudo gedit ~/.bashrc</pre>
<p>+ Ta sẽ mở được file bashrc bằng chương trình gedit trong ubuntu ra. Ta chỉ việc thêm vào 2 dòng sau:</p>
<pre class="ubuntu">export PATH=$PATH:/home/hoantocxoan/flex_sdk_3/bin</pre>
<p>vào trước dòng &#8220;export HISTCONTROL=ignoreboth&#8221; là được.</p>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2008/12/h%c6%b0%e1%bb%9bng-d%e1%ba%abn-cai-d%e1%ba%b7t-flex-sdk-trong-ubuntu/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>BIT FLV player 1.1</title>
		<link>http://i-php.net/2008/11/bit-flv-player-11/</link>
		<comments>http://i-php.net/2008/11/bit-flv-player-11/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 11:53:02 +0000</pubDate>
		<dc:creator>ngocbd</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=132</guid>
		<description><![CDATA[BIT FLV player 1.1
7/11/08 : Bit Flv player chính thức ra mắt .
Là một phần mềm chạy file flv (flash video) ,file này thường chạy khi download trên các trang chia sẻ video trực tuyến như Youtube.com về xem offline trên máy .
được viết trên nền tảng Adobe AIR có các tính năng :

Chạy nhiều [...]]]></description>
			<content:encoded><![CDATA[<p><strong>BIT FLV player 1.1</strong></p>
<p>7/11/08 : Bit Flv player chính thức ra mắt .</p>
<p>Là một phần mềm chạy file flv (flash video) ,file này thường chạy khi download trên các trang chia sẻ video trực tuyến như Youtube.com về xem offline trên máy .</p>
<p>được viết trên nền tảng Adobe AIR có các tính năng :</p>
<ol>
<li>Chạy nhiều file flv cùng lúc</li>
<li>Hỗ trợ kéo thả file Flv vào chương trình</li>
<li>Seek trực tiếp vào file đang chạy</li>
</ol>
<p>link download</p>
<p>Bản không kèm Adobe AIR (bạn phải cài Adobe AIR trước)</p>
<p><a href="http://bitjsc.com/flvplayer/BitFLVPlayerV1.1.zip">http://bitjsc.com/flvplayer/BitFLVPlayerV1.1.zip</a></p>
<p>có thể down Adobe AIR tại đây .</p>
<p><a href="http://airdownload.adobe.com/air/win/download/latest/AdobeAIRInstaller.exe">http://airdownload.adobe.com/air/win/download/latest/AdobeAIRInstaller.exe</a></p>
<p>Bản kèm Adobe AIR</p>
<p><a href="http://bitjsc.com/flvplayer/BitFLVPlayerV1.1AIR.Include.zip">http://bitjsc.com/flvplayer/BitFLVPlayerV1.1AIR.Include.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2008/11/bit-flv-player-11/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Demo kéo thả trong Flex</title>
		<link>http://i-php.net/2008/10/demo-keo-th-trong-flex/</link>
		<comments>http://i-php.net/2008/10/demo-keo-th-trong-flex/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 05:06:31 +0000</pubDate>
		<dc:creator>habogay</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[drag-drop]]></category>
		<category><![CDATA[keo tha]]></category>

		<guid isPermaLink="false">http://i-php.net/?p=82</guid>
		<description><![CDATA[http://i-php.net/flex/Survey.swf
]]></description>
			<content:encoded><![CDATA[<p><a title="demo drag drop flex" href="http://i-php.net/flex/Survey.swf" target="_blank">http://i-php.net/flex/Survey.swf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://i-php.net/2008/10/demo-keo-th-trong-flex/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
