<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>AIR Flex ActionScript Guide Blog</title>
	<atom:link href="http://thaiflexdev.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://thaiflexdev.wordpress.com</link>
	<description>Adobe, AIR, Flex, ActionScript, Swiz, RobotLegs, Parsley,  Zend Amf, MySQL, PostgreSQL, SQLite, TCPDF, PHPExcel and other interested are Objective-C, iOS, Android, Yii, WordPress, Drupal.</description>
	<lastBuildDate>Sun, 29 Jan 2012 19:24:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='thaiflexdev.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>AIR Flex ActionScript Guide Blog</title>
		<link>http://thaiflexdev.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://thaiflexdev.wordpress.com/osd.xml" title="AIR Flex ActionScript Guide Blog" />
	<atom:link rel='hub' href='http://thaiflexdev.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Google Map หยุดพัฒนา ActionScript API</title>
		<link>http://thaiflexdev.wordpress.com/2011/09/07/google-map-%e0%b8%ab%e0%b8%a2%e0%b8%b8%e0%b8%94%e0%b8%9e%e0%b8%b1%e0%b8%92%e0%b8%99%e0%b8%b2-actionscrip-api/</link>
		<comments>http://thaiflexdev.wordpress.com/2011/09/07/google-map-%e0%b8%ab%e0%b8%a2%e0%b8%b8%e0%b8%94%e0%b8%9e%e0%b8%b1%e0%b8%92%e0%b8%99%e0%b8%b2-actionscrip-api/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 11:41:50 +0000</pubDate>
		<dc:creator>knopsod</dc:creator>
				<category><![CDATA[AIR, Flex, ActionScript]]></category>

		<guid isPermaLink="false">http://thaiflexdev.wordpress.com/?p=830</guid>
		<description><![CDATA[นักพัฒนาจากทาง Google ได้ประกาศออกมาแล้วว่าจะไม่มีการพัฒนา ActionScript API แล้ว ซึ่งทางบทความนี้ได้เผยแพร่ในบล็อก เมื่อวันที่ 2 ก.ย. ที่ผ่านมา http://googlegeodevelopers.blogspot.com/2011/09/maps-api-for-flash-deprecation.html นั่นหมายความว่าฟีเจอร์หรือความสามารถใหม่ๆ ที่มีอยู่หรือที่จะออกมาในอนาคต จะไม่สามารถเรียกใช้งานได้จากแอพลิเคชั่นที่สร้างจาก Flash Plateform ได้อีกต่อไป แต่ทาง Google ก็ได้เสนอทางเลือกใหม่ๆ ให้ใช้ JavaScript Map API v3 แทน โดยเหตุผลว่าทราฟฟิคที่เรียกใช้งานจาก Flash Plateform Application น้อยในขณะที่การใช้งานโดย JavaScript Map Application มีมากขึ้นเรื่อยๆ ซึ่งคงจะดีกว่าหากมุ่งเน้นพัฒนาให้รองรับกับความต้องการตรงนี้ อย่างไรก็ตามยังมีนักพัฒนาบางท่านได้สอบถาม Google ว่าถ้าไม่พัฒนาก็อยากให้ Open Source Flash API เสียเลย อาจจะเป็นประโยชน์ต่อนักพัฒนาที่อยากนำไปต่อยอด แต่ทาง Google ก็ยังไม่มีข้อสรุปว่าจะทำหรือไม่ รายละเอียดเพิ่มเติม http://code.google.com/apis/maps/documentation/flash/<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=830&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>นักพัฒนาจากทาง Google ได้ประกาศออกมาแล้วว่าจะไม่มีการพัฒนา ActionScript API แล้ว ซึ่งทางบทความนี้ได้เผยแพร่ในบล็อก เมื่อวันที่ 2 ก.ย. ที่ผ่านมา</p>
<p><a href="http://googlegeodevelopers.blogspot.com/2011/09/maps-api-for-flash-deprecation.html" target="_blank">http://googlegeodevelopers.blogspot.com/2011/09/maps-api-for-flash-deprecation.html</a></p>
<p>นั่นหมายความว่าฟีเจอร์หรือความสามารถใหม่ๆ ที่มีอยู่หรือที่จะออกมาในอนาคต จะไม่สามารถเรียกใช้งานได้จากแอพลิเคชั่นที่สร้างจาก Flash Plateform ได้อีกต่อไป แต่ทาง Google ก็ได้เสนอทางเลือกใหม่ๆ ให้ใช้ JavaScript Map API v3 แทน โดยเหตุผลว่าทราฟฟิคที่เรียกใช้งานจาก Flash Plateform Application น้อยในขณะที่การใช้งานโดย JavaScript Map Application มีมากขึ้นเรื่อยๆ ซึ่งคงจะดีกว่าหากมุ่งเน้นพัฒนาให้รองรับกับความต้องการตรงนี้</p>
<p>อย่างไรก็ตามยังมีนักพัฒนาบางท่านได้สอบถาม Google ว่าถ้าไม่พัฒนาก็อยากให้ Open Source Flash API เสียเลย อาจจะเป็นประโยชน์ต่อนักพัฒนาที่อยากนำไปต่อยอด แต่ทาง Google ก็ยังไม่มีข้อสรุปว่าจะทำหรือไม่</p>
<p>รายละเอียดเพิ่มเติม <a href="http://code.google.com/apis/maps/documentation/flash/" target="_blank">http://code.google.com/apis/maps/documentation/flash/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thaiflexdev.wordpress.com/830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thaiflexdev.wordpress.com/830/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thaiflexdev.wordpress.com/830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thaiflexdev.wordpress.com/830/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thaiflexdev.wordpress.com/830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thaiflexdev.wordpress.com/830/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thaiflexdev.wordpress.com/830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thaiflexdev.wordpress.com/830/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thaiflexdev.wordpress.com/830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thaiflexdev.wordpress.com/830/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thaiflexdev.wordpress.com/830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thaiflexdev.wordpress.com/830/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thaiflexdev.wordpress.com/830/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thaiflexdev.wordpress.com/830/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=830&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thaiflexdev.wordpress.com/2011/09/07/google-map-%e0%b8%ab%e0%b8%a2%e0%b8%b8%e0%b8%94%e0%b8%9e%e0%b8%b1%e0%b8%92%e0%b8%99%e0%b8%b2-actionscrip-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1862954f9f58df5d8e5db03467ab5a95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">knopsod</media:title>
		</media:content>
	</item>
		<item>
		<title>การพิจารณาเลือก ActionScript Framework เพื่อพัฒนา Flex App</title>
		<link>http://thaiflexdev.wordpress.com/2011/08/30/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%9e%e0%b8%b4%e0%b8%88%e0%b8%b2%e0%b8%a3%e0%b8%93%e0%b8%b2%e0%b9%80%e0%b8%a5%e0%b8%b7%e0%b8%ad%e0%b8%81-actionscript-framework/</link>
		<comments>http://thaiflexdev.wordpress.com/2011/08/30/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%9e%e0%b8%b4%e0%b8%88%e0%b8%b2%e0%b8%a3%e0%b8%93%e0%b8%b2%e0%b9%80%e0%b8%a5%e0%b8%b7%e0%b8%ad%e0%b8%81-actionscript-framework/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 08:23:35 +0000</pubDate>
		<dc:creator>knopsod</dc:creator>
				<category><![CDATA[AIR, Flex, ActionScript]]></category>

		<guid isPermaLink="false">http://thaiflexdev.wordpress.com/?p=824</guid>
		<description><![CDATA[ขอยาวหน่อย ผมเคยใช้ MVC คือ Cairngorm แล้วก็มาใช้ IoC คือ Parsley แล้วก็ RobotLegs (ตอนนี้ใช้ตัวนี้ ยังไม่ได้ศึกษาตัวอื่นเพิ่ม) ทั้ง MVC และ IoC เป็น framework ที่เข้ามาช่วยในการพัฒนางานให้เป็นระบบ เคยหาอ่านตามเว็บฝรั่งเพื่อหาเหตุผลว่าทำไมต้องใช้ และประกอบการพิจารณาว่า framework แต่ละอันจะใช้กับงานอะไร พอสรุปได้คร่าวๆ ว่า ข้อดี -ทุกอันมีดีของตัวเอง เพียงแต่ทางทีมได้ทำความเข้าใจการพัฒนาระบบที่ตรงกัน -สมาชิกในทีมสามารถทำงานแทนกันได้ -สะดวกในการกลับมาปรับปรุงในภายหลัง -แยกโค้ดกับดีไซน์ออกจากกัน -สนับสนุนความเป็นอิสระต่อกันระหว่างระบบย่อยต่างๆ -เหมาะกับระบบใหญ่ที่ต้องใช้ทีมงานหลายคน เช่น พวก enterprise software -ส่วนใหญ่จะเทคะแนนไปทาง IoC ซึ่งไม่แน่ใจว่าเพราะมันถูกจริตกับผมหรือเปล่า เลยเชียร์ ข้อเสีย -มันเหมาะกับงานระบบ ซึ่ง flex เองอาจสู้ภาษาอื่นไม่ได้ตรงนี้ แต่ก็ใช่ว่าจะทำไม่ได้ ซึ่งก็เอาจุดเด่นเรื่องอื่น เช่น ความสวยงาม การแสดงผลเอฟเฟล็ค ฯลฯ มาแทน ซึ่งงานน่าจะไปในทางดีไซน์ -ต้องใช้เวลา [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=824&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ขอยาวหน่อย<br />
ผมเคยใช้ MVC คือ Cairngorm<br />
แล้วก็มาใช้ IoC คือ Parsley แล้วก็ RobotLegs (ตอนนี้ใช้ตัวนี้ ยังไม่ได้ศึกษาตัวอื่นเพิ่ม)<br />
ทั้ง MVC และ IoC เป็น framework ที่เข้ามาช่วยในการพัฒนางานให้เป็นระบบ เคยหาอ่านตามเว็บฝรั่งเพื่อหาเหตุผลว่าทำไมต้องใช้ และประกอบการพิจารณาว่า framework แต่ละอันจะใช้กับงานอะไร พอสรุปได้คร่าวๆ ว่า</p>
<p>ข้อดี<br />
-ทุกอันมีดีของตัวเอง เพียงแต่ทางทีมได้ทำความเข้าใจการพัฒนาระบบที่ตรงกัน<br />
-สมาชิกในทีมสามารถทำงานแทนกันได้<br />
-สะดวกในการกลับมาปรับปรุงในภายหลัง<br />
-แยกโค้ดกับดีไซน์ออกจากกัน<br />
-สนับสนุนความเป็นอิสระต่อกันระหว่างระบบย่อยต่างๆ<br />
-เหมาะกับระบบใหญ่ที่ต้องใช้ทีมงานหลายคน เช่น พวก enterprise software<br />
-ส่วนใหญ่จะเทคะแนนไปทาง IoC ซึ่งไม่แน่ใจว่าเพราะมันถูกจริตกับผมหรือเปล่า เลยเชียร์ <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>ข้อเสีย<br />
-มันเหมาะกับงานระบบ ซึ่ง flex เองอาจสู้ภาษาอื่นไม่ได้ตรงนี้ แต่ก็ใช่ว่าจะทำไม่ได้ ซึ่งก็เอาจุดเด่นเรื่องอื่น เช่น ความสวยงาม การแสดงผลเอฟเฟล็ค ฯลฯ มาแทน ซึ่งงานน่าจะไปในทางดีไซน์<br />
-ต้องใช้เวลา ซึ่งบางทีเราทำคนเดียวหรือทีมงานขนาดเล็กอาจกระทบกับงานที่ทำอยู่<br />
-การยึดตามรูปแบบของ framework บางทีอาจจำกัดอิสระในการสร้างสรรค์ความแปลกใหม่<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
การพิจารณาเลือก เขาบอกว่า no matter to choose ประมาณว่า ไม่มีสาระที่จะตัดสินว่าอะไรดีกว่ากัน เอามาพูดกันไม่จบหรอกว่าจะเลือกอะไร ขอให้เลือกเพื่อเป็นตัวบังคับกลายๆ ว่าพัฒนาไปในแนวทางเดียวกัน ดูเป็นระบบ ช่วยปรับปรุงแก้ไขง่าย ฯลฯ ตัวอย่างการถกเถียงก็อย่างเช่นว่า</p>
<p>บางตัวพัฒนาเวอร์ชั่นใหม่ๆ สนับสนุนการทำงานด้านต่างๆ หลากหลาย ซึ่งบางคนอาจกังวลว่าต้องใช้เวลาการเรียนรู้อยู่เรื่อยๆ อาจกระทบกับงานที่ทำอยู่ framework ไม่นิ่ง</p>
<p>บางตัวได้หยุดพัฒนาไปอาจด้อยในเรื่องความทันสมัย แต่ก็ดีในเรื่องความแน่นอนของเวอร์ชั่นที่มีการเปลี่ยนแปลงน้อย ทำให้เรียนรู้ครั้งเดียวอาจทำได้หลายงานมากกว่า ซึ่งทำให้มีเวลาไปศึกษาระบบงานที่จะเอามาสร้างซอฟต์แวร์ของเรา<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
แต่ในใจโปรแกรมเมอร์เองก็คงอยากเลือกตัวที่มีความนิยม เพราะนั่นหมายถึงความสะดวกในการหาข้อมูลในระหว่างพัฒนาหรือปรับปรุงในภายหลัง ซึ่งผมเองก็เลือกไม่ใช่เพราะพิจารณาว่าอันไหนดี หาข้อมูลมาช่วงหนึ่งรู้สึกว่ามันไม่ได้บทสรุปว่าอันไหนเหมาะกับงานอะไร จึงเลือกเอาตัวที่มีผู้ใช้มาก ข้อมูลเยอะ เว็บหางานฟรีแลนซ์ของฝรั่งเขาพูดถึงอะไรบ่อย แบบนี้มากกว่าครับ ตอนนี้กำลังมอง Swiz อยู่รู้สึกว่าคนก็ใช้เยอะเป็นอันดับต้นๆ เหมือนกัน อันที่ใช้อยู่ก็ดีอยู่แล้วครับ ตอบโจทย์ได้เยอะในระดับหนึ่ง พยายามมองทางเลือกใหม่ๆ ตามความเหมาะสมครับ</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thaiflexdev.wordpress.com/824/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thaiflexdev.wordpress.com/824/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thaiflexdev.wordpress.com/824/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thaiflexdev.wordpress.com/824/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thaiflexdev.wordpress.com/824/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thaiflexdev.wordpress.com/824/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thaiflexdev.wordpress.com/824/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thaiflexdev.wordpress.com/824/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thaiflexdev.wordpress.com/824/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thaiflexdev.wordpress.com/824/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thaiflexdev.wordpress.com/824/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thaiflexdev.wordpress.com/824/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thaiflexdev.wordpress.com/824/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thaiflexdev.wordpress.com/824/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=824&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thaiflexdev.wordpress.com/2011/08/30/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%9e%e0%b8%b4%e0%b8%88%e0%b8%b2%e0%b8%a3%e0%b8%93%e0%b8%b2%e0%b9%80%e0%b8%a5%e0%b8%b7%e0%b8%ad%e0%b8%81-actionscript-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1862954f9f58df5d8e5db03467ab5a95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">knopsod</media:title>
		</media:content>
	</item>
		<item>
		<title>Mini project : Send SMS with Flex App and Google Calendar</title>
		<link>http://thaiflexdev.wordpress.com/2011/06/22/mini-project-flex-sms-google-calendar/</link>
		<comments>http://thaiflexdev.wordpress.com/2011/06/22/mini-project-flex-sms-google-calendar/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 07:41:29 +0000</pubDate>
		<dc:creator>knopsod</dc:creator>
				<category><![CDATA[AIR, Flex, ActionScript]]></category>
		<category><![CDATA[PHP, Zend Framwork]]></category>

		<guid isPermaLink="false">http://thaiflexdev.wordpress.com/?p=758</guid>
		<description><![CDATA[หัวข้อนี้เราจะมาลองทำ Mini project โดยประยุกต์ใช้ Flex ร่วมกับเทคโนโลยีอื่น ซึ่งในที่นี้เราจะใช้ feature ของ Google calendar ที่สามารถส่ง SMS แจ้งเตือนกิจกรรมที่เราบันทึกไว้ได้ มาใช้ประโยชน์ โดยใช้ Library ใน Zend Frameworks ช่วยในการส่งข้อมูลจาก Flex app ไปยัง Google calendar อีกที (ซึ่งจริงๆ ผมได้รับอนิสงฆ์จากคนที่มาเรียนแล้วเอาความรู้และการใช้งานของเทคโนโลยีตัวนี้มาให้ผมช่วยดูเพื่อเอาไปประยุกต์ใช้ ต้องขอขอบคุณมากๆ ครับ การถ่ายทอดอะไรให้กับคนอื่นก็สามารถทำให้เราได้รับความรู้ได้เช่นกัน) ขั้นตอนหลักๆ มีดังนี้ 1. Google calendar setting 2. Create PHP client access file 3. Create Flex web app &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 1. Google calendar setting ก่อนอื่นเราต้องมี [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=758&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>หัวข้อนี้เราจะมาลองทำ Mini project โดยประยุกต์ใช้ Flex ร่วมกับเทคโนโลยีอื่น ซึ่งในที่นี้เราจะใช้ feature ของ Google calendar ที่สามารถส่ง SMS แจ้งเตือนกิจกรรมที่เราบันทึกไว้ได้ มาใช้ประโยชน์ โดยใช้ Library ใน Zend Frameworks ช่วยในการส่งข้อมูลจาก Flex app ไปยัง Google calendar อีกที</p>
<p>(ซึ่งจริงๆ ผมได้รับอนิสงฆ์จากคนที่มาเรียนแล้วเอาความรู้และการใช้งานของเทคโนโลยีตัวนี้มาให้ผมช่วยดูเพื่อเอาไปประยุกต์ใช้ ต้องขอขอบคุณมากๆ ครับ การถ่ายทอดอะไรให้กับคนอื่นก็สามารถทำให้เราได้รับความรู้ได้เช่นกัน)</p>
<p>ขั้นตอนหลักๆ มีดังนี้</p>
<p>1. Google calendar setting</p>
<p>2. Create PHP client access file</p>
<p>3. Create Flex web app</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p><strong>1. Google calendar setting</strong></p>
<p>ก่อนอื่นเราต้องมี gmail account ก่อน จากนั้นให้เข้าไปที่ Your_Gmail_Account &gt; Account Settings ดังภาพ</p>
<p><a href="http://thaiflexdev.wordpress.com/2011/06/22/mini-project-flex-sms-google-calendar/screen-shot-2011-06-22-at-1-34-13-pm/" rel="attachment wp-att-760"><img title="Screen shot 2011-06-22 at 1.34.13 PM" src="http://thaiflexdev.files.wordpress.com/2011/06/screen-shot-2011-06-22-at-1-34-13-pm1.png?w=406&#038;h=286" alt="" width="406" height="286" /></a></p>
<p>จากนั้นเลือก My product &gt; Calendar &#8211; Settings ดังภาพ</p>
<p><a href="http://thaiflexdev.wordpress.com/2011/06/22/mini-project-flex-sms-google-calendar/screen-shot-2011-06-22-at-1-53-37-pm/" rel="attachment wp-att-763"><img class="alignnone size-full wp-image-763" title="Screen shot 2011-06-22 at 1.53.37 PM" src="http://thaiflexdev.files.wordpress.com/2011/06/screen-shot-2011-06-22-at-1-53-37-pm.png?w=630" alt=""   /></a></p>
<p>จะมาที่หน้า Calendar Settings ให้เลือก Mobile Setting จากนั้นตั้งค่าต่างๆ ดังนี้</p>
<p>Country : Thailand</p>
<p>Phone number : ใส่เบอร์โทรโดยใส่ระหัสประเทศนำหน้า เช่น เบอร์โทร 0879999999 ให้ใส่เป็น +66879999999</p>
<p>จากนั้นกดปุ่ม Send Verification Code ทาง Google ก็จะส่ง SMS เป็นหมายเลขสำหรับ Verify เพื่อรับข้อมูลการแจ้งเตือนจาก Google calendar</p>
<p><a href="http://thaiflexdev.wordpress.com/2011/06/22/mini-project-flex-sms-google-calendar/screen-shot-2011-06-22-at-1-59-16-pm/" rel="attachment wp-att-764"><img title="Screen shot 2011-06-22 at 1.59.16 PM" src="http://thaiflexdev.files.wordpress.com/2011/06/screen-shot-2011-06-22-at-1-59-16-pm.png?w=630&#038;h=408" alt="" width="630" height="408" /></a></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p><strong>2. Create PHP client access file</strong></p>
<p>การติดต่อกับ Google Calendar เราจะใช้ Library ใน Zend Frameworks โดยสามารถ ​Download ได้ที่ http://framework.zend.com/download/latest</p>
<p>เมื่อเรา Download มาแล้ว Unzip แล้วนำ Zend Frameworks ไปวางไว้ที่</p>
<p>LocalServerApp<br />
|-frameworks<br />
|    |-Zend<br />
|    |-&#8230;<br />
|-your_web_root_directory_such_as_www_or_htdocs_or_public_html_etc</p>
<p>ตัวอย่างในรูป</p>
<p><a href="http://thaiflexdev.wordpress.com/2011/06/22/mini-project-flex-sms-google-calendar/screen-shot-2011-06-22-at-2-23-34-pm/" rel="attachment wp-att-765"><img class="alignnone size-full wp-image-765" title="Screen shot 2011-06-22 at 2.23.34 PM" src="http://thaiflexdev.files.wordpress.com/2011/06/screen-shot-2011-06-22-at-2-23-34-pm.png?w=630" alt=""   /></a></p>
<p>จากนั้นสร้างไฟล์ PHP client access file ดังนี้</p>
<p><pre class="brush: plain;">
&lt;?php

// Set up debug
error_reporting(E_ALL | E_STRICT);
ini_set(&quot;display_errors&quot;, &quot;on&quot;);

// Set up include path for Zend Framework, this path is assuming a frameworks
// folder contains the Zend package on the same level as your public_html or www folder.
//ini_set(&quot;include_path&quot;, ini_get(&quot;include_path&quot;) . &quot;:../frameworks&quot;);
//ini_set(&quot;include_path&quot;, ini_get(&quot;include_path&quot;) . PATH_SEPARATOR .&quot;../frameworks&quot;);
ini_set(&quot;include_path&quot;, ini_get(&quot;include_path&quot;) . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] . &quot;/../frameworks&quot;);

require_once 'Zend/Loader.php';

Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_HttpClient');
Zend_Loader::loadClass('Zend_Gdata_Calendar');

function createEvent($client, $title = 'Title', $desc='Description content', $where = 'Somewhere',
        $startDateTime = '2010-01-20T00:00+07:00', $endDateTime = '2010-01-20T00:00+07:00')
{
    $gdataCal = new Zend_Gdata_Calendar($client);
    $newEvent = $gdataCal-&gt;newEventEntry();

    $newEvent-&gt;title = $gdataCal-&gt;newTitle($title);
    $newEvent-&gt;where = array($gdataCal-&gt;newWhere($where));
    $newEvent-&gt;content = $gdataCal-&gt;newContent(&quot;$desc&quot;);

    $when = $gdataCal-&gt;newWhen();
    $when-&gt;startTime = &quot;{$startDateTime}&quot;;
    $when-&gt;endTime = &quot;{$endDateTime}&quot;;

    $reminder = $gdataCal-&gt;newReminder();
    $reminder-&gt;method = &quot;sms&quot;;
    $reminder-&gt;minutes = &quot;10&quot;;

    $when-&gt;reminders = array($reminder);

    $newEvent-&gt;when = array($when);

    // Upload the event to the calendar server
    // A copy of the event as it is recorded on the server is returned
    $createdEvent = $gdataCal-&gt;insertEvent($newEvent);

    return $createdEvent-&gt;id-&gt;text;
}

$user = $_REQUEST[&quot;user&quot;];
$pass = $_REQUEST[&quot;pass&quot;];
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; // predefined service name for calendar

$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);

$strStartDateTime = date(DATE_ATOM, mktime(date(&quot;H&quot;), date(&quot;i&quot;) + 14, date(&quot;s&quot;), date(&quot;m&quot;), date(&quot;d&quot;), date(&quot;Y&quot;)));
$strEndDateTime = date(DATE_ATOM, mktime(date(&quot;H&quot;), date(&quot;i&quot;) + 15, date(&quot;s&quot;), date(&quot;m&quot;), date(&quot;d&quot;), date(&quot;Y&quot;)));

createEvent($client, $_REQUEST[&quot;sms&quot;],
                'Title',
                'Detail',
                $strStartDateTime, $strEndDateTime);

echo $_REQUEST['sms'];</pre></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p><strong>3. Create Flex web app</strong></p>
<p><pre class="brush: plain;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
			   xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
			   xmlns:mx=&quot;library://ns.adobe.com/flex/mx&quot; xmlns:views=&quot;org.robotlegs.sawasdeesms.views.*&quot;&gt;
	&lt;s:layout&gt;
		&lt;s:VerticalLayout paddingLeft=&quot;4&quot; paddingRight=&quot;4&quot; paddingBottom=&quot;4&quot; paddingTop=&quot;4&quot;/&gt;
	&lt;/s:layout&gt;

	&lt;fx:Declarations&gt;
		&lt;!-- Place non-visual elements (e.g., services, value objects) here --&gt;
	&lt;/fx:Declarations&gt;

	&lt;views:MainView width=&quot;{this.width}&quot; height=&quot;{this.height}&quot;/&gt;

&lt;/s:Application&gt;
</pre></p>
<p>MainView.mxml</p>
<p><pre class="brush: plain;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:VGroup xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
		  xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
		  xmlns:mx=&quot;library://ns.adobe.com/flex/mx&quot;
		  horizontalAlign=&quot;center&quot;
		  preinitialize=&quot;mainViewInit()&quot;&gt;

	&lt;fx:Script&gt;
		&lt;![CDATA[
			import mx.collections.ArrayCollection;
			import mx.controls.Alert;
			import mx.core.FlexGlobals;
			import mx.events.CloseEvent;
			import mx.managers.PopUpManager;
			import mx.rpc.AsyncToken;
			import mx.rpc.events.ResultEvent;
			import mx.rpc.http.HTTPService;

			private var arr:Array = [
				{fullname:'John Doe', email:'johndoe@gmail.com', pwd:'mypassword', selected:true}
			];

			[Bindable] private var ac:ArrayCollection;

			private var mainViewPopUp:MainPopUp;

			private var hs:HTTPService;
			private var urlVar:URLVariables;

			private function mainViewInit():void{
				ac = new ArrayCollection( arr );

				hs = new HTTPService();
				hs.resultFormat = HTTPService.RESULT_FORMAT_TEXT;
				hs.url = '../php_service/sms.php';
				hs.addEventListener(ResultEvent.RESULT, httpServiceResult );

				urlVar = new URLVariables();

			}

			public function onSelect(obj:Object, selected:Boolean):void{
				obj.selected = selected;
				ac.setItemAt( obj, ac.getItemIndex( obj ) );

			}

			protected function btAdd_clickHandler(event:MouseEvent):void
			{
				mainViewPopUp = PopUpManager.createPopUp( FlexGlobals.topLevelApplication as Sprite, MainPopUp, true ) as MainPopUp;
				PopUpManager.centerPopUp( mainViewPopUp );
				mainViewPopUp.addEventListener( 'formSubmit', onFormSubmit );
			}

			private function onFormSubmit( event:Event ):void{
				if( mainViewPopUp.useForm == MainPopUp.FORM_ADD ){
					ac.addItem(
						{
							fullname:mainViewPopUp.txtInName.text,
							email:mainViewPopUp.txtInEmail.text,
							pwd:mainViewPopUp.txtInPwd.text,
							selected:true
						}
					);
				}else{
					ac.setItemAt(
						{
							fullname:mainViewPopUp.txtInName.text,
							email:mainViewPopUp.txtInEmail.text,
							pwd:mainViewPopUp.txtInPwd.text,
							selected:dg.selectedItem.selected
						},
						dg.selectedIndex
					);
				}

			}

			protected function btRemove_clickHandler(event:MouseEvent):void
			{
				Alert.show('ต้องการลบรายชื่อ ใช่หรือไม่?', 'คำเตือน', 3, this, onConfirmRemove );
			}

			private function onConfirmRemove( event:CloseEvent ):void{
				if( event.detail == Alert.YES ){
					ac.removeItemAt( dg.selectedIndex );
				}
			}

			protected function dg_doubleClickHandler(event:MouseEvent):void
			{
				mainViewPopUp = PopUpManager.createPopUp( FlexGlobals.topLevelApplication as Sprite, MainPopUp, true ) as MainPopUp;
				PopUpManager.centerPopUp( mainViewPopUp );
				mainViewPopUp.useForm = MainPopUp.FORM_EDIT;
				mainViewPopUp.txtInName.text = dg.selectedItem.fullname;
				mainViewPopUp.txtInEmail.text = dg.selectedItem.email;
				mainViewPopUp.txtInPwd.text = dg.selectedItem.pwd;
				mainViewPopUp.addEventListener( 'formSubmit', onFormSubmit );
			}

			protected function btSend_clickHandler(event:MouseEvent):void
			{
				urlVar.sms = txtAr.text;
				urlVar.user = ac.getItemAt( 0 ).email;
				urlVar.pass = ac.getItemAt( 0 ).pwd;
				var token:AsyncToken = hs.send(urlVar);
				token.index = 0;
			}

			protected function httpServiceResult( event:ResultEvent ):void{
				var token:AsyncToken;

				trace( event.token.index );
				trace( event.result );
				if( ( event.token.index + 1 ) &lt; ac.length ){
					urlVar.user = ac.getItemAt( event.token.index + 1 ).email;
					urlVar.pass = ac.getItemAt( event.token.index + 1 ).pwd;
					token = hs.send(urlVar);
					token.index = event.token.index + 1;
				}else{
					Alert.show('ส่ง SMS แล้วค่ะ', 'ขอบคุณที่ใช้บริการ');
				}
			}

		]]&gt;
	&lt;/fx:Script&gt;

	&lt;fx:Declarations&gt;
		&lt;!-- Place non-visual elements (e.g., services, value objects) here --&gt;
	&lt;/fx:Declarations&gt;

	&lt;s:VGroup&gt;
		&lt;s:HGroup width=&quot;100%&quot; height=&quot;100%&quot;&gt;
			&lt;mx:Spacer width=&quot;100%&quot;/&gt;
			&lt;mx:Button height=&quot;28&quot; id=&quot;btAdd&quot; icon=&quot;@Embed(source='assets/aesthetica-version-2/png/24x24/add.png')&quot;
					   click=&quot;btAdd_clickHandler(event)&quot;/&gt;
			&lt;mx:Button height=&quot;28&quot; id=&quot;btRemove&quot; icon=&quot;@Embed(source='assets/aesthetica-version-2/png/24x24/remove.png')&quot;
					   enabled=&quot;{dg.selectedIndex + 1}&quot;
					   click=&quot;btRemove_clickHandler(event)&quot;/&gt;
		&lt;/s:HGroup&gt;

		&lt;mx:DataGrid id=&quot;dg&quot; dataProvider=&quot;{ac}&quot;
					 doubleClickEnabled=&quot;true&quot; doubleClick=&quot;dg_doubleClickHandler(event)&quot;&gt;
			&lt;mx:columns&gt;
				&lt;mx:DataGridColumn width=&quot;200&quot; dataField=&quot;fullname&quot; headerText=&quot;ชื่อ - นามสกุล&quot;/&gt;
				&lt;mx:DataGridColumn width=&quot;200&quot; dataField=&quot;email&quot; headerText=&quot;อีเมล&quot;/&gt;
				&lt;!--
				&lt;mx:DataGridColumn dataField=&quot;selected&quot; headerText=&quot;ส่งข้อความ &quot;&gt;
					&lt;mx:itemRenderer&gt;
						&lt;fx:Component&gt;
							&lt;mx:Box horizontalAlign=&quot;center&quot;&gt;
								&lt;s:CheckBox id=&quot;cb&quot; selected=&quot;{data.selected}&quot;
											change=&quot;outerDocument.onSelect(data, cb.selected)&quot;/&gt;
							&lt;/mx:Box&gt;
						&lt;/fx:Component&gt;
					&lt;/mx:itemRenderer&gt;
				&lt;/mx:DataGridColumn&gt;
				--&gt;
			&lt;/mx:columns&gt;
		&lt;/mx:DataGrid&gt;

		&lt;s:HGroup width=&quot;100%&quot;&gt;
			&lt;mx:Spacer width=&quot;100%&quot;/&gt;
			&lt;s:Label text=&quot;*หมายเหตุ Double-click เพื่อแก้ไข&quot;/&gt;
		&lt;/s:HGroup&gt;

		&lt;mx:Spacer height=&quot;50&quot;/&gt;

	&lt;/s:VGroup&gt;

	&lt;s:VGroup&gt;
		&lt;s:TextArea id=&quot;txtAr&quot; width=&quot;400&quot;/&gt;

		&lt;s:HGroup width=&quot;100%&quot;&gt;
			&lt;mx:Spacer width=&quot;100%&quot;/&gt;
			&lt;mx:Button height=&quot;28&quot; id=&quot;btSend&quot; icon=&quot;@Embed(source='assets/aesthetica-version-2/png/24x24/next.png')&quot;
					   label=&quot;ส่ง SMS&quot;
					   click=&quot;btSend_clickHandler(event)&quot;/&gt;
		&lt;/s:HGroup&gt;
	&lt;/s:VGroup&gt;

&lt;/s:VGroup&gt;
</pre></p>
<p>MainPopUp.mxml</p>
<p><pre class="brush: plain;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:TitleWindow xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
			   xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
			   xmlns:mx=&quot;library://ns.adobe.com/flex/mx&quot; close=&quot;titlewindow1_closeHandler(event)&quot;&gt;

	&lt;fx:Metadata&gt;
		[Event(name=&quot;formSubmit&quot;, type=&quot;mx.events.Event&quot;)]
	&lt;/fx:Metadata&gt;

	&lt;s:layout&gt;
		&lt;s:VerticalLayout/&gt;
	&lt;/s:layout&gt;

	&lt;fx:Script&gt;
		&lt;![CDATA[
			import mx.events.CloseEvent;
			import mx.managers.PopUpManager;

			public static const FORM_ADD:String = 'formAdd';
			public static const FORM_EDIT:String = 'formEdit';

			public var useForm:String = FORM_ADD;

			protected function titlewindow1_closeHandler(event:CloseEvent):void
			{
				PopUpManager.removePopUp( this );
			}

			protected function btSubmit_clickHandler(event:MouseEvent):void
			{
				dispatchEvent( new Event( 'formSubmit' ) );
				PopUpManager.removePopUp( this );
			}

		]]&gt;
	&lt;/fx:Script&gt;
	&lt;fx:Declarations&gt;
		&lt;!-- Place non-visual elements (e.g., services, value objects) here --&gt;
	&lt;/fx:Declarations&gt;
	&lt;s:controlBarContent&gt;
		&lt;mx:Spacer width=&quot;100%&quot;/&gt;
		&lt;mx:Button height=&quot;28&quot; id=&quot;btSubmit&quot;
				    icon=&quot;@Embed(source='assets/aesthetica-version-2/png/24x24/accept.png')&quot;
					click=&quot;btSubmit_clickHandler(event)&quot;/&gt;
	&lt;/s:controlBarContent&gt;
	&lt;mx:Form&gt;
		&lt;mx:FormItem label=&quot;ชื่อ&quot;&gt;
			&lt;s:TextInput id=&quot;txtInName&quot; width=&quot;200&quot;/&gt;
		&lt;/mx:FormItem&gt;
		&lt;mx:FormItem label=&quot;อีเมล&quot;&gt;
			&lt;s:TextInput id=&quot;txtInEmail&quot; width=&quot;200&quot;/&gt;
		&lt;/mx:FormItem&gt;
		&lt;mx:FormItem label=&quot;รหัสผ่าน&quot;&gt;
			&lt;s:TextInput displayAsPassword=&quot;true&quot; id=&quot;txtInPwd&quot; width=&quot;200&quot;/&gt;
		&lt;/mx:FormItem&gt;
	&lt;/mx:Form&gt;

&lt;/s:TitleWindow&gt;
</pre></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p><a href="http://thaiflexdev.wordpress.com/2011/06/22/mini-project-flex-sms-google-calendar/screen-shot-2011-06-22-at-2-49-51-pm/" rel="attachment wp-att-776"><img class="alignnone size-full wp-image-776" title="Screen shot 2011-06-22 at 2.49.51 PM" src="http://thaiflexdev.files.wordpress.com/2011/06/screen-shot-2011-06-22-at-2-49-51-pm.png?w=630" alt=""   /></a></p>
<p>งานนี้จะเอาไปใช้อะไรได้บ้าง ก็อย่างเช่น เราไม่สามารถอยู่หน้าคอมฯ ได้ตลอด สมมติเราทำระบบสำหรับสั่งซื้อสินค้าเมื่อมีออเดอร์เข้ามาก็ส่ง SMS ให้แจ้งเตือนให้เรารู้ เพื่อจะได้บริการลูกค้าได้เร็วขึ้น หรือจะทำเป็นระบบแจ้งเตือนการนัดประชุมในองค์กรขนาดเล็ก ช่วยประหยัดค่าใช้จ่ายค่าบริการ SMS หรือจะทำเป็นแจ้งเตือนการนัดหมายกับลูกค้า ฯลฯ แล้วแต่จะเอาไปประยุกต์ แต่ก็นะของฟรี บางทีก็ missing text บ้างไรบ้าง แต่ก็ไม่หนักหนาอะไรเกินไป <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thaiflexdev.wordpress.com/758/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thaiflexdev.wordpress.com/758/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thaiflexdev.wordpress.com/758/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thaiflexdev.wordpress.com/758/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thaiflexdev.wordpress.com/758/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thaiflexdev.wordpress.com/758/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thaiflexdev.wordpress.com/758/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thaiflexdev.wordpress.com/758/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thaiflexdev.wordpress.com/758/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thaiflexdev.wordpress.com/758/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thaiflexdev.wordpress.com/758/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thaiflexdev.wordpress.com/758/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thaiflexdev.wordpress.com/758/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thaiflexdev.wordpress.com/758/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=758&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thaiflexdev.wordpress.com/2011/06/22/mini-project-flex-sms-google-calendar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1862954f9f58df5d8e5db03467ab5a95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">knopsod</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/06/screen-shot-2011-06-22-at-1-34-13-pm1.png" medium="image">
			<media:title type="html">Screen shot 2011-06-22 at 1.34.13 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/06/screen-shot-2011-06-22-at-1-53-37-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-06-22 at 1.53.37 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/06/screen-shot-2011-06-22-at-1-59-16-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-06-22 at 1.59.16 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/06/screen-shot-2011-06-22-at-2-23-34-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-06-22 at 2.23.34 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/06/screen-shot-2011-06-22-at-2-49-51-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-06-22 at 2.49.51 PM</media:title>
		</media:content>
	</item>
		<item>
		<title>Introduce to setTimeOut function and Timer class</title>
		<link>http://thaiflexdev.wordpress.com/2011/06/17/introduce-to-settimeout-and-timer/</link>
		<comments>http://thaiflexdev.wordpress.com/2011/06/17/introduce-to-settimeout-and-timer/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 05:16:54 +0000</pubDate>
		<dc:creator>knopsod</dc:creator>
				<category><![CDATA[AIR, Flex, ActionScript]]></category>

		<guid isPermaLink="false">http://thaiflexdev.wordpress.com/?p=746</guid>
		<description><![CDATA[แนะนำการจัดการเวลาโดยใช้ setTimeOut function และ Timer<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=746&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>แนะนำการจัดการเวลาโดยใช้ setTimeOut function และ Timer</p>
<p><pre class="brush: plain;">

&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
xmlns:mx=&quot;library://ns.adobe.com/flex/mx&quot; minWidth=&quot;955&quot; minHeight=&quot;600&quot;&gt;

&lt;s:layout&gt;
&lt;s:VerticalLayout/&gt;
&lt;/s:layout&gt;

&lt;fx:Script&gt;

&lt;![CDATA[

import flash.utils.setTimeout;
import mx.controls.Text;

private var timerOnce:Timer;
private var timerRepeat:Timer;

private function onBt1Click():void{

var i1:int = 1;
var i2:int = 2;
trace('BT1 :: i1=' + i1 + ', i2=' + i2 );

setTimeout(  function( i1:int, i2:int ):void{ trace('BT1 passed 1000 ms :: i1=' + i1 + ', i2=' + i2 ); }, 1000, i1, i2 );

i1 = 11;
i2 = 22;
trace('BT1 :: i1=' + i1 + ', i2=' + i2 );
}

private function onBt2Click():void{

var i1:int = 1;
var i2:int = 2;
trace('BT2 :: i1=' + i1 + ', i2=' + i2 );

setTimeout( onSetTimeOut, 1000, i1, i2 );

i1 = 11;
i2 = 22;
trace('BT2 :: i1=' + i1 + ', i2=' + i2 );
}

private function onSetTimeOut(i1:int, i2:int):void{
trace('BT2 passed 1000 ms :: i1=' + i1 + ', i2=' + i2 );
}

private function onTimerOnceClick():void{
if( timerOnce == null ){
timerOnce = new Timer( 1000, 1 ); // 1000 ms round
timerOnce.addEventListener(TimerEvent.TIMER, onTimerOnceRun);
timerOnce.start();
}
}

private function onTimerOnceRun(event:TimerEvent):void{
trace( 'timerOnce.currentCount=' + timerOnce.currentCount );
}

private function onTimerRepeatClick():void{
if( timerRepeat == null ){
timerRepeat = new Timer( 1000 ); // 1000 ms round
timerRepeat.addEventListener( TimerEvent.TIMER, onTimerRepeatRun);
timerRepeat.start();
}
}

private function onTimerRepeatRun(event:TimerEvent):void{
trace( 'timerRepeat.currentCount=' + timerRepeat.currentCount );
}

private function onTimerStartStop():void{
if( timerRepeat != null ){
if( timerRepeat.running ){
timerRepeat.stop();
}else{
timerRepeat.start();
}
}
}

]]&gt;

&lt;/fx:Script&gt;

&lt;fx:Declarations&gt;
&lt;!-- Place non-visual elements (e.g., services, value objects) here --&gt;
&lt;/fx:Declarations&gt;

&lt;s:Button label=&quot;set time out 1&quot; click=&quot;onBt1Click()&quot;/&gt;

&lt;s:Button label=&quot;set time out 2&quot; click=&quot;onBt2Click()&quot;/&gt;

&lt;s:Button label=&quot;timer once&quot; click=&quot;onTimerOnceClick()&quot;/&gt;

&lt;s:HGroup&gt;

&lt;s:Button label=&quot;timer repeat&quot; click=&quot;onTimerRepeatClick()&quot;/&gt;

&lt;s:Button label=&quot;Start or Stop&quot; click=&quot;onTimerStartStop()&quot;/&gt;

&lt;/s:HGroup&gt;

&lt;/s:Application&gt;

</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thaiflexdev.wordpress.com/746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thaiflexdev.wordpress.com/746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thaiflexdev.wordpress.com/746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thaiflexdev.wordpress.com/746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thaiflexdev.wordpress.com/746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thaiflexdev.wordpress.com/746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thaiflexdev.wordpress.com/746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thaiflexdev.wordpress.com/746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thaiflexdev.wordpress.com/746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thaiflexdev.wordpress.com/746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thaiflexdev.wordpress.com/746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thaiflexdev.wordpress.com/746/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thaiflexdev.wordpress.com/746/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thaiflexdev.wordpress.com/746/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=746&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thaiflexdev.wordpress.com/2011/06/17/introduce-to-settimeout-and-timer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1862954f9f58df5d8e5db03467ab5a95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">knopsod</media:title>
		</media:content>
	</item>
		<item>
		<title>Using AsyncToken class by RemoteObject or HTTPService</title>
		<link>http://thaiflexdev.wordpress.com/2011/05/18/using-asynctoken-class-by-remoteobject-or-httpservice/</link>
		<comments>http://thaiflexdev.wordpress.com/2011/05/18/using-asynctoken-class-by-remoteobject-or-httpservice/#comments</comments>
		<pubDate>Wed, 18 May 2011 03:29:54 +0000</pubDate>
		<dc:creator>knopsod</dc:creator>
				<category><![CDATA[AIR, Flex, ActionScript]]></category>
		<category><![CDATA[PHP, Zend Framwork]]></category>

		<guid isPermaLink="false">http://thaiflexdev.wordpress.com/?p=732</guid>
		<description><![CDATA[การใช้ RemoteObject หรือ HTTPService ติดต่อไปยัง Server เพื่อเอาข้อมูลมาใช้งาน ในบางครั้งเราอาจมีความจำเป็นบางอย่างที่ต้องการจำแนกแยกแยะว่าข้อมูลที่ได้มาด้วยเมธอด(method)หรือโอเปอเรชั่น(operation)นั้น เกิดขึ้นจากกรณีใด ในการแก้ปัญหานี้เราสามารถกำหนด Token ให้กับ RemoteObject เพื่อเป็นตัวช่วยในการตัดสินใจได้ (เคยเข้าใจผิดกับคำว่า Token กับ Totem ในหนังเรื่อง Inception ดีนะที่มีคนให้ความชัดเจนเรื่องนี้ไม่งั้นคงทำให้คนที่มาเรียนเข้าใจอะไรผิดๆ ไป) Example how to use AsyncToken by RemoteObject หัวข้อเกี่ยวกับการใช้ ​RemoteObject หรือ HTTPService http://thaiflexdev.wordpress.com/2009/10/04/introduction-to-zendamf/ http://thaiflexdev.wordpress.com/2009/07/11/amfphp-beginnign-level/ http://thaiflexdev.wordpress.com/2010/07/15/php-variable-value-when-send-by-httpservice-or-remoteobject-2/ http://thaiflexdev.wordpress.com/2010/07/15/send-array-to-flex-app/<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=732&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>การใช้ RemoteObject หรือ HTTPService ติดต่อไปยัง Server เพื่อเอาข้อมูลมาใช้งาน ในบางครั้งเราอาจมีความจำเป็นบางอย่างที่ต้องการจำแนกแยกแยะว่าข้อมูลที่ได้มาด้วยเมธอด(method)หรือโอเปอเรชั่น(operation)นั้น เกิดขึ้นจากกรณีใด ในการแก้ปัญหานี้เราสามารถกำหนด Token ให้กับ RemoteObject เพื่อเป็นตัวช่วยในการตัดสินใจได้</p>
<p>(เคยเข้าใจผิดกับคำว่า Token กับ Totem ในหนังเรื่อง Inception ดีนะที่มีคนให้ความชัดเจนเรื่องนี้ไม่งั้นคงทำให้คนที่มาเรียนเข้าใจอะไรผิดๆ ไป)</p>
<p>Example how to use AsyncToken by RemoteObject</p>
<p><pre class="brush: plain;">

&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;

&lt;!-- TokenExampleApp.mxml --&gt;

&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;

xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;

xmlns:mx=&quot;library://ns.adobe.com/flex/mx&quot;

applicationComplete=&quot;initApp()&quot;&gt;

&lt;s:layout&gt;

&lt;s:VerticalLayout/&gt;

&lt;/s:layout&gt;

&lt;fx:Script&gt;

&lt;![CDATA[

import mx.collections.ArrayCollection;

import mx.messaging.messages.RemotingMessage;

import mx.rpc.AsyncToken;

import mx.rpc.events.FaultEvent;

import mx.rpc.events.ResultEvent;

[Bindable] private var ac:ArrayCollection;

private function initApp():void{

ac = new ArrayCollection(

[

{datetime:&quot;-&quot;},

{datetime:&quot;-&quot;},

{datetime:&quot;-&quot;},

{datetime:&quot;-&quot;},

{datetime:&quot;-&quot;}

]

);

}

protected function bt_clickHandler(event:MouseEvent):void

{

var token:AsyncToken = ro.getOperation('getDateTime').send( dg.selectedItem );

token.selectedIndex = dg.selectedIndex; // Set token property and value here

}

protected function ro_faultHandler(event:FaultEvent):void

{

}

protected function ro_resultHandler(event:ResultEvent):void

{

var rMsg:RemotingMessage = event.token.message as RemotingMessage;

switch( rMsg.operation ){

case 'getDateTime':

ac.setItemAt( event.result, event.token.selectedIndex ); //Check token property value here

break;

}

}

]]&gt;

&lt;/fx:Script&gt;

&lt;fx:Declarations&gt;

&lt;!-- Place non-visual elements (e.g., services, value objects) here --&gt;

&lt;s:RemoteObject id=&quot;ro&quot; destination=&quot;zendamf&quot; source=&quot;TokenExService&quot;

fault=&quot;ro_faultHandler(event)&quot;

result=&quot;ro_resultHandler(event)&quot;/&gt;

&lt;/fx:Declarations&gt;

&lt;s:Button id=&quot;bt&quot; label=&quot;Send&quot; enabled=&quot;{dg.selectedIndex + 1}&quot; click=&quot;bt_clickHandler(event)&quot;/&gt;

&lt;mx:DataGrid id=&quot;dg&quot; dataProvider=&quot;{ac}&quot;&gt;

&lt;mx:columns&gt;

&lt;mx:DataGridColumn dataField=&quot;datetime&quot; width=&quot;200&quot;/&gt;

&lt;/mx:columns&gt;

&lt;/mx:DataGrid&gt;

&lt;/s:Application&gt;

</pre><br />
<pre class="brush: plain;">
&lt;?php

/**
 * Description of TokenExService
 *
 * @author noppadonsodram
 */

class TokenExService {
    //put your code here

    function getDateTime($vo){
        $vo-&gt;datetime = date(&quot;F j, Y, g:i:s a&quot;);
        return $vo;
    }

}
</pre></p>
<p><a href="http://thaiflexdev.wordpress.com/2011/05/18/using-asynctoken-class-by-remoteobject-or-httpservice/screen-shot-2011-05-18-at-10-34-38-am/" rel="attachment wp-att-735"><img class="alignnone size-full wp-image-735" title="Screen shot 2011-05-18 at 10.34.38 AM" src="http://thaiflexdev.files.wordpress.com/2011/05/screen-shot-2011-05-18-at-10-34-38-am.png?w=630" alt=""   /></a></p>
<p>หัวข้อเกี่ยวกับการใช้ ​RemoteObject หรือ HTTPService</p>
<p><a href="http://thaiflexdev.wordpress.com/2009/10/04/introduction-to-zendamf/">http://thaiflexdev.wordpress.com/2009/10/04/introduction-to-zendamf/</a></p>
<p><a href="http://thaiflexdev.wordpress.com/2009/07/11/amfphp-beginnign-level/">http://thaiflexdev.wordpress.com/2009/07/11/amfphp-beginnign-level/</a></p>
<p><a href="http://thaiflexdev.wordpress.com/2010/07/15/php-variable-value-when-send-by-httpservice-or-remoteobject-2/">http://thaiflexdev.wordpress.com/2010/07/15/php-variable-value-when-send-by-httpservice-or-remoteobject-2/</a></p>
<p><a href="http://thaiflexdev.wordpress.com/2010/07/15/send-array-to-flex-app/">http://thaiflexdev.wordpress.com/2010/07/15/send-array-to-flex-app/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thaiflexdev.wordpress.com/732/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thaiflexdev.wordpress.com/732/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thaiflexdev.wordpress.com/732/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thaiflexdev.wordpress.com/732/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thaiflexdev.wordpress.com/732/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thaiflexdev.wordpress.com/732/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thaiflexdev.wordpress.com/732/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thaiflexdev.wordpress.com/732/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thaiflexdev.wordpress.com/732/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thaiflexdev.wordpress.com/732/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thaiflexdev.wordpress.com/732/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thaiflexdev.wordpress.com/732/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thaiflexdev.wordpress.com/732/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thaiflexdev.wordpress.com/732/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=732&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thaiflexdev.wordpress.com/2011/05/18/using-asynctoken-class-by-remoteobject-or-httpservice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1862954f9f58df5d8e5db03467ab5a95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">knopsod</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/05/screen-shot-2011-05-18-at-10-34-38-am.png" medium="image">
			<media:title type="html">Screen shot 2011-05-18 at 10.34.38 AM</media:title>
		</media:content>
	</item>
		<item>
		<title>Repeaters require a halo container based parent</title>
		<link>http://thaiflexdev.wordpress.com/2011/02/11/repeaters-require-a-halo-container-based-parent/</link>
		<comments>http://thaiflexdev.wordpress.com/2011/02/11/repeaters-require-a-halo-container-based-parent/#comments</comments>
		<pubDate>Fri, 11 Feb 2011 09:06:51 +0000</pubDate>
		<dc:creator>knopsod</dc:creator>
				<category><![CDATA[AIR, Flex, ActionScript]]></category>

		<guid isPermaLink="false">http://thaiflexdev.wordpress.com/?p=669</guid>
		<description><![CDATA[ปัญหาการใช้งาน Repeater  ใน Flex 4 ที่แจ้งข้อผิดพลาดว่า Repeaters require a halo container based parent หมายความว่า Repeater จะต้อง Halo container เป็น Parent based หรือมี Parent tag ที่มี namespace ขึ้นต้นด้วย &#60;mx:/&#62; เท่านั้น ดังนั้นเราไม่สามารถใช้แบบนี้ได้ ต้องจัด Repeater ให้อยู่ใน &#60;mx:/&#62; ดังนี้<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=669&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ปัญหาการใช้งาน Repeater  ใน Flex 4 ที่แจ้งข้อผิดพลาดว่า Repeaters require a halo container based parent หมายความว่า Repeater จะต้อง Halo container เป็น Parent based หรือมี Parent tag ที่มี namespace ขึ้นต้นด้วย &lt;mx:/&gt; เท่านั้น</p>
<p>ดังนั้นเราไม่สามารถใช้แบบนี้ได้</p>
<p><pre class="brush: plain;">
&lt;s:VGroup&gt;
&lt;mx:Repeater id=&quot;repeatBt&quot; dataProvider=&quot;{ac}&quot;&gt;
&lt;s:Button width=&quot;100%&quot; height=&quot;40&quot;/&gt;
&lt;/mx:Repeater&gt;
&lt;/s:VGroup&gt;
</pre></p>
<p>ต้องจัด Repeater ให้อยู่ใน &lt;mx:/&gt; ดังนี้</p>
<p><pre class="brush: plain;">
&lt;mx:VBox id=&quot;vBx&quot; width=&quot;100%&quot;&gt;
&lt;mx:Repeater id=&quot;repeatBt&quot; dataProvider=&quot;{ac}&quot;&gt;
&lt;s:Button width=&quot;100%&quot; height=&quot;40&quot;/&gt;
&lt;/mx:Repeater&gt;
&lt;/mx:VBox&gt;
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thaiflexdev.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thaiflexdev.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thaiflexdev.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thaiflexdev.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thaiflexdev.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thaiflexdev.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thaiflexdev.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thaiflexdev.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thaiflexdev.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thaiflexdev.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thaiflexdev.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thaiflexdev.wordpress.com/669/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thaiflexdev.wordpress.com/669/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thaiflexdev.wordpress.com/669/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=669&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thaiflexdev.wordpress.com/2011/02/11/repeaters-require-a-halo-container-based-parent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1862954f9f58df5d8e5db03467ab5a95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">knopsod</media:title>
		</media:content>
	</item>
		<item>
		<title>Firebug &amp; AMF Explorer</title>
		<link>http://thaiflexdev.wordpress.com/2011/02/06/firebug-amf-explorer/</link>
		<comments>http://thaiflexdev.wordpress.com/2011/02/06/firebug-amf-explorer/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 08:01:46 +0000</pubDate>
		<dc:creator>knopsod</dc:creator>
				<category><![CDATA[AIR, Flex, ActionScript]]></category>

		<guid isPermaLink="false">http://thaiflexdev.wordpress.com/?p=661</guid>
		<description><![CDATA[ปกติเวลาดีบัก เราสามารถใช้ Flex/Flash Builder ร่วมกับกับ Flash Player Debugger และยังมืทางเลือกอื่นสำหรับใช้เป็น Monitor เพื่อดูค่าการรับส่งระหว่าง Flex Web App กับ Server ได้ โดยใช้เครื่องมื่อต่อไปนี้ http://getfirebug.com/ http://amfexplorer.riaforge.org/ https://addons.mozilla.org/en-US/firefox/addon/amf-explorer/<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=661&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ปกติเวลาดีบัก เราสามารถใช้ Flex/Flash Builder ร่วมกับกับ Flash Player Debugger และยังมืทางเลือกอื่นสำหรับใช้เป็น Monitor เพื่อดูค่าการรับส่งระหว่าง Flex Web App กับ Server ได้ โดยใช้เครื่องมื่อต่อไปนี้</p>
<p><a href="http://getfirebug.com/" target="_blank">http://getfirebug.com/</a></p>
<p><a href="http://amfexplorer.riaforge.org/" target="_blank">http://amfexplorer.riaforge.org/</a></p>
<p><a href="https://addons.mozilla.org/en-US/firefox/addon/amf-explorer/" target="_blank">https://addons.mozilla.org/en-US/firefox/addon/amf-explorer/</a></p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/02/screen-shot-2011-02-07-at-5-25-26-am.png"><img class="alignnone size-full wp-image-664" title="Screen shot 2011-02-07 at 5.25.26 AM" src="http://thaiflexdev.files.wordpress.com/2011/02/screen-shot-2011-02-07-at-5-25-26-am.png?w=630&#038;h=340" alt="" width="630" height="340" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thaiflexdev.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thaiflexdev.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thaiflexdev.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thaiflexdev.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thaiflexdev.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thaiflexdev.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thaiflexdev.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thaiflexdev.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thaiflexdev.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thaiflexdev.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thaiflexdev.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thaiflexdev.wordpress.com/661/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thaiflexdev.wordpress.com/661/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thaiflexdev.wordpress.com/661/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=661&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thaiflexdev.wordpress.com/2011/02/06/firebug-amf-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1862954f9f58df5d8e5db03467ab5a95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">knopsod</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/02/screen-shot-2011-02-07-at-5-25-26-am.png" medium="image">
			<media:title type="html">Screen shot 2011-02-07 at 5.25.26 AM</media:title>
		</media:content>
	</item>
		<item>
		<title>ZamfBrowser is Zend Amf Browser</title>
		<link>http://thaiflexdev.wordpress.com/2011/01/18/zamfbrowser-is-zend-amf-browser/</link>
		<comments>http://thaiflexdev.wordpress.com/2011/01/18/zamfbrowser-is-zend-amf-browser/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 13:59:05 +0000</pubDate>
		<dc:creator>knopsod</dc:creator>
				<category><![CDATA[AIR, Flex, ActionScript]]></category>
		<category><![CDATA[PHP, Zend Framwork]]></category>

		<guid isPermaLink="false">http://thaiflexdev.wordpress.com/?p=618</guid>
		<description><![CDATA[http://stackoverflow.com/questions/2628416/service-browser-for-zend-amf เอาไว้ดู คล้ายๆ กับใน amfphp/browser/ วิธีการติดตั้งและทดสอบ 1. สร้างโฟลเดอร์ frameworks ไว้ที่เดียวกับ Web root directory เช่น Applications/XAMPP/xamppfiles/frameworks ใน Mac OS X ที่ติดตั้ง Xampp หรือ C:\AppServ\frameworks ใน Windows ที่ติดตั้ง AppServ 2. ดาวน์โหลด Zend Frameworks จาก http://framework.zend.com/  จากนั้น Unzip  แล้ว Copy โฟลเดอร์ชื่อ Zend ซึ่งอยู่ที่ตำแหน่ง  ZendFrameworks-#.#.#/library/Zend ไปไว้ในโฟลเดอร์ frameworks ที่สร้างไว้ตามข้อ 1. ดังนี้ Applications/XAMPP/xamppfiles/frameworks/Zend หรือ C:\AppServ\frameworks\Zend 3. ดาวน์โหลดโปรแกรม ZamfBrowser จาก http://zamfbrowser.riaforge.org/index.cfm แล้ว Unzip จะได้โฟลเดอร์ ZamfBrowser_v.#.# เปลี่ยนชื่อเป็น [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=618&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://stackoverflow.com/questions/2628416/service-browser-for-zend-amf" target="_blank">http://stackoverflow.com/questions/2628416/service-browser-for-zend-amf</a></p>
<p>เอาไว้ดู คล้ายๆ กับใน amfphp/browser/</p>
<p><span style="text-decoration:underline;">วิธีการติดตั้งและทดสอบ</span></p>
<p>1. สร้างโฟลเดอร์ frameworks ไว้ที่เดียวกับ Web root directory เช่น Applications/XAMPP/xamppfiles/frameworks ใน Mac OS X ที่ติดตั้ง Xampp หรือ C:\AppServ\frameworks ใน Windows ที่ติดตั้ง AppServ</p>
<p>2. ดาวน์โหลด Zend Frameworks จาก http://framework.zend.com/  จากนั้น Unzip  แล้ว Copy โฟลเดอร์ชื่อ Zend ซึ่งอยู่ที่ตำแหน่ง  ZendFrameworks-#.#.#/library/Zend ไปไว้ในโฟลเดอร์ frameworks ที่สร้างไว้ตามข้อ 1. ดังนี้ Applications/XAMPP/xamppfiles/frameworks/Zend หรือ C:\AppServ\frameworks\Zend</p>
<p>3. ดาวน์โหลดโปรแกรม ZamfBrowser จาก <a href="http://zamfbrowser.riaforge.org/index.cfm" target="_blank">http://zamfbrowser.riaforge.org/index.cfm</a> แล้ว Unzip จะได้โฟลเดอร์ ZamfBrowser_v.#.# เปลี่ยนชื่อเป็น ZamfBrowser และนำไปไว้ที่ Applications/XAMPP/xamppfiles/htdocs/ZamfBrowser หรือ C:\AppServ\www\ZamfBrowser จากนั้นติดตั้งโปรแกรมโดยใช้ไฟล์ ZamfBrowser/ZamfBrowser.air แล้วเปิดโปรแกรม</p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-2-26-36-pm.png"><img class="alignnone size-full wp-image-631" title="Screen shot 2011-02-02 at 2.26.36 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-2-26-36-pm.png?w=630&#038;h=407" alt="" width="630" height="407" /></a></p>
<p>4. ตั้งค่า Services gateway คลิกที่ [Settings] จากนั้นคลิ๊ก [+]</p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-01-at-4-37-33-pm1.png"><img class="alignnone size-full wp-image-624" title="Screen shot 2011-02-01 at 4.37.33 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-01-at-4-37-33-pm1.png?w=630&#038;h=407" alt="" width="630" height="407" /></a></p>
<p>ใส่ข้อมูลสำหรับ Add ZendAMF Server</p>
<p>ZendAMF Server Name : ZamfBrowser</p>
<p>Services Gateway : http://127.0.0.1/ZamfBrowser/zendamf_gateway_example.php</p>
<p>คลิก [Add Server]</p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-01-at-4-39-34-pm.png"><img class="alignnone size-full wp-image-625" title="Screen shot 2011-02-01 at 4.39.34 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-01-at-4-39-34-pm.png?w=630&#038;h=407" alt="" width="630" height="407" /></a></p>
<p>ที่ Combo Box เลือก ZendAmfServiceBrowser และ getServices ตามลำดับ แล้วคลิก [Invoke Method] เพื่อทดสอบ</p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-6-00-03-pm.png"><img class="alignnone size-full wp-image-655" title="Screen shot 2011-02-02 at 6.00.03 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-6-00-03-pm.png?w=630" alt=""   /></a></p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-01-at-4-55-53-pm.png"><img class="alignnone size-full wp-image-628" title="Screen shot 2011-02-01 at 4.55.53 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-01-at-4-55-53-pm.png?w=630" alt=""   /></a></p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-01-at-4-56-01-pm.png"><img class="alignnone size-full wp-image-629" title="Screen shot 2011-02-01 at 4.56.01 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-01-at-4-56-01-pm.png?w=630" alt=""   /></a></p>
<p>5. สร้างตารางในฐานข้อมูลเพื่อทดสอบ</p>
<p><pre class="brush: plain;">
CREATE DATABASE zamfbrowser;
USE zamfbrowser;
DROP TABLE IF EXISTS `zamfbrowser_z`;
CREATE TABLE `zamfbrowser_z` (
`z_auto_id` int(11) NOT NULL AUTO_INCREMENT,
`z_data` varchar(255) NOT NULL,
`z_label` varchar(255) NOT NULL,
`z_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`z_auto_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
</pre></p>
<p>6. สร้างไฟล์ Service file ไว้ที่ [Web root directory]/ZamfBrowser/zendamf/</p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-3-15-26-pm.png"><img class="alignnone size-full wp-image-633" title="Screen shot 2011-02-02 at 3.15.26 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-3-15-26-pm.png?w=630" alt=""   /></a></p>
<p>DbMySQLConst.php</p>
<p><pre class="brush: plain;">&lt;?php
/* PHP GENERATOR VERSION : MySQL AMFPHP 1.2 Direct connect to DB */
/** 		 * DbMySQLConst class */
class DbMySQLConst {
//put your code here
const HOST = &quot;localhost&quot;;
const USERNAME = &quot;root&quot;;
const PASSWORD = &quot;&quot;;
const DB_NAME = &quot;zamfbrowser&quot;;
}</pre></p>
<p>ZamfbrowserVO.php</p>
<p><pre class="brush: plain;">&lt;?php
/*  * To change this template, choose Tools | Templates * and open the template in the editor. */
/** * Description of ZamfbrowserVO * * @author noppadonsodram */
class ZamfbrowserVO {
//put your code here
var $z_auto_id;
var $z_data;
var $z_label;
var $z_timestamp;
}</pre></p>
<p>ZamfbrowserService.php</p>
<p><pre class="brush: plain;">&lt;?php
/* * To change this template, choose Tools | Templates * and open the template in the editor. */
/** * Description of ZamfbrowserService * * @author noppadonsodram */require_once 'Zend/Db/Adapter/Pdo/Mysql.php';require_once 'DbMySQLConst.php';require_once 'ZamfbrowserVO.php';
class ZamfbrowserService {
 var $db;
var $table = &quot;zamfbrowser_z&quot;;
var $pk = &quot;z_auto_id&quot;;
 //put your code here
function __construct() {
$this-&gt;db = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' =&gt; DbMySQLConst::HOST,
'username' =&gt; DbMySQLConst::USERNAME,
'password' =&gt; DbMySQLConst::PASSWORD,
'dbname' =&gt; DbMySQLConst::DB_NAME
));
}
 function __destruct() {
$this-&gt;db-&gt;closeConnection();
}
 function insertRow($vo) {
$vo = get_object_vars($vo);
return $this-&gt;db-&gt;insert($this-&gt;table, $vo);
}
 function updateRow($vo) {
$vo = get_object_vars($vo);
return $this-&gt;db-&gt;update($this-&gt;table, $vo, $this-&gt;pk.&quot;='&quot;. $vo[$this-&gt;pk].&quot;'&quot;);
}
 function deleteRow($vo) {
$vo = get_object_vars($vo);
return $this-&gt;db-&gt;delete($this-&gt;table, $this-&gt;pk.&quot;='&quot;. $vo[$this-&gt;pk].&quot;'&quot;);
}
 function selectRow() {
$rows = $this-&gt;db-&gt;select()
-&gt;from($this-&gt;table)
-&gt;order($this-&gt;pk)
-&gt;query()-&gt;fetchAll();
$ary = array();
foreach ($rows as $row) {
$vo = new ZamfbrowserVO();
$vo-&gt;z_auto_id = $row['z_auto_id'];
$vo-&gt;z_data = $row['z_data'];
$vo-&gt;z_label = $row['z_label'];
$vo-&gt;z_timestamp = $row['z_timestamp'];
$ary[] = $vo;
}
 return $ary;
}
}</pre></p>
<p>7. ระบุ Service file ไว้ใน Gateway file</p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-4-10-07-pm.png"><img class="alignnone size-full wp-image-636" title="Screen shot 2011-02-02 at 4.10.07 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-4-10-07-pm.png?w=630" alt=""   /></a></p>
<p>zendamf_gateway_example.php</p>
<p><pre class="brush: plain;">&lt;?php
// Set up debug
error_reporting(E_ALL | E_STRICT);
ini_set(&quot;display_errors&quot;, &quot;on&quot;);

// Set up include path for Zend Framework, this path is assuming a frameworks
// folder contains the Zend package on the same level as your public_html or www folder.
//ini_set(&quot;include_path&quot;, ini_get(&quot;include_path&quot;) . &quot;:../frameworks&quot;);
//ini_set(&quot;include_path&quot;, ini_get(&quot;include_path&quot;) . PATH_SEPARATOR .&quot;../frameworks&quot;);
ini_set(&quot;include_path&quot;, ini_get(&quot;include_path&quot;) . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] .&quot;/../frameworks&quot;);

// Require Zend_Amf_Server
require_once( &quot;Zend/Amf/Server.php&quot; );

// *ZAMFBROWSER IMPLEMENTATION*
// Require the ZendAmfServiceBrowser class, required to retrieve the list of methods on the ZendAMF server.
require_once( &quot;browser/ZendAmfServiceBrowser.php&quot; );
require_once( &quot;zendamf/ZamfbrowserService.php&quot; );

// Start Server
$server = new Zend_Amf_Server();

// Register ZendAMF Service classes
//$server-&gt;setClass( &quot;YourServiceClass&quot; );
//$server-&gt;setClass( &quot;AnotherServiceClass&quot; );
// *ZAMFBROWSER IMPLEMENTATION*
// Add the ZendAmfServiceBrowser class to the list of available classes.
$server-&gt;setClass(&quot;ZendAmfServiceBrowser&quot;);
$server-&gt;setClass(&quot;ZamfbrowserService&quot;);

// *ZAMFBROWSER IMPLEMENTATION*
// Set this reference the class requires to the server object.
ZendAmfServiceBrowser::$ZEND_AMF_SERVER = $server;

// Handle the AMF request
echo($server-&gt;handle());</pre></p>
<p>8. ทดสอบ Service file ด้วย ZamfBrowser</p>
<p>Class : ZamfbrowserService</p>
<p>Method : insertRow</p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-50-05-pm.png"><img class="alignnone size-full wp-image-677" title="Screen shot 2011-02-13 at 6.50.05 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-50-05-pm.png?w=630&#038;h=317" alt="" width="630" height="317" /></a></p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-50-50-pm.png"><img class="alignnone size-full wp-image-678" title="Screen shot 2011-02-13 at 6.50.50 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-50-50-pm.png?w=630&#038;h=321" alt="" width="630" height="321" /></a></p>
<p>Class : ZamfbrowserService</p>
<p>Method : selectRow</p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-54-06-pm.png"><img class="alignnone size-full wp-image-679" title="Screen shot 2011-02-13 at 6.54.06 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-54-06-pm.png?w=630&#038;h=372" alt="" width="630" height="372" /></a></p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-54-31-pm.png"><img class="alignnone size-full wp-image-680" title="Screen shot 2011-02-13 at 6.54.31 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-54-31-pm.png?w=630&#038;h=368" alt="" width="630" height="368" /></a></p>
<p>9. สร้าง Flex Project</p>
<p>Project : ZamfApp</p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-5-12-01-pm.png"><img class="alignnone size-full wp-image-649" title="Screen shot 2011-02-02 at 5.12.01 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-5-12-01-pm.png?w=630" alt=""   /></a></p>
<p>คลิ๊กขวา ZamfApp-&gt;Properties-&gt;Flex Compiler</p>
<p>Edit ค่า Additional compiler arguments จาก -locale en_US เป็น locale en_US -services &#8220;services-config.xml&#8221;</p>
<p>คลิ๊ก [Apply]-&gt;[OK]</p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-5-44-30-pm.png"><img class="alignnone size-full wp-image-650" title="Screen shot 2011-02-02 at 5.44.30 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-5-44-30-pm.png?w=630" alt=""   /></a></p>
<p>ZamfApp.mxml</p>
<p><pre class="brush: plain;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
xmlns:mx=&quot;library://ns.adobe.com/flex/mx&quot;&gt;

&lt;s:layout&gt;
&lt;s:VerticalLayout/&gt;
&lt;/s:layout&gt;

&lt;fx:Script&gt;
&lt;![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.messaging.messages.RemotingMessage;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.utils.ArrayUtil;
import zendamf.ZamfbrowserVO;

[Bindable] public var ac:ArrayCollection;

protected function faultHandler(event:FaultEvent):void
{
Alert.show('fault');
}

protected function rmtObjZamfbrowser_resultHandler(event:ResultEvent):void
{
var rMsg:RemotingMessage = event.token.message as RemotingMessage;
switch( rMsg.operation ){
case 'insertRow':
break;
case 'selectRow':
ac = new ArrayCollection( ArrayUtil.toArray( event.result ) );
break;

case 'deleteRow':
break;
}
}

protected function btSubmit_clickHandler(event:MouseEvent):void
{
var zamfValObj:ZamfbrowserVO = new ZamfbrowserVO();

zamfValObj.z_auto_id = txtInID.text;
zamfValObj.z_data = txtInData.text;
zamfValObj.z_label = txtInLabel.text;
zamfValObj.z_timestamp = txtInTimestamp.text;

rmtObjZamfbrowserService.getOperation('insertRow').send(zamfValObj);
}

protected function btCall_clickHandler(event:MouseEvent):void
{
rmtObjZamfbrowserService.getOperation('selectRow').send();
}

]]&gt;

&lt;/fx:Script&gt;

&lt;fx:Declarations&gt;
&lt;s:RemoteObject id=&quot;rmtObjZamfbrowserService&quot;
showBusyCursor=&quot;true&quot;
source=&quot;ZamfbrowserService&quot;
destination=&quot;zend&quot;
fault=&quot;faultHandler(event)&quot;
result=&quot;rmtObjZamfbrowser_resultHandler(event)&quot;/&gt;

&lt;/fx:Declarations&gt;

&lt;mx:Form&gt;
&lt;mx:FormItem label=&quot;ID&quot;&gt;
&lt;s:TextInput id=&quot;txtInID&quot;/&gt;
&lt;/mx:FormItem&gt;

&lt;mx:FormItem label=&quot;Data&quot;&gt;
&lt;s:TextInput id=&quot;txtInData&quot;/&gt;
&lt;/mx:FormItem&gt;

&lt;mx:FormItem label=&quot;Label&quot;&gt;
&lt;s:TextInput id=&quot;txtInLabel&quot;/&gt;
&lt;/mx:FormItem&gt;
&lt;mx:FormItem label=&quot;Time&quot;&gt;
&lt;s:TextInput id=&quot;txtInTimestamp&quot;/&gt;
&lt;/mx:FormItem&gt;

&lt;s:Button id=&quot;btSubmit&quot;
click=&quot;btSubmit_clickHandler(event)&quot; label=&quot;Submit&quot;/&gt;
&lt;/mx:Form&gt;

&lt;s:Button id=&quot;btCall&quot;
click=&quot;btCall_clickHandler(event)&quot; label=&quot;Call&quot;/&gt;

&lt;mx:AdvancedDataGrid id=&quot;avd&quot; dataProvider=&quot;{ac}&quot;/&gt;

&lt;/s:Application&gt;

</pre></p>
<p>ZamfbrowserVO.as</p>
<p><pre class="brush: plain;">
package zendamf
{
[RemoteClass(alias=&quot;zendamf.ZamfbrowserVO&quot;)]
[Bindable]
public class ZamfbrowserVO
{
public var z_auto_id:String;
public var z_data:String;
public var z_label:String;
public var z_timestamp:String;
}
}

</pre></p>
<p>services-config.xml</p>
<p><pre class="brush: plain;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;services-config&gt;
&lt;services&gt;
&lt;service id=&quot;amfphp-flashremoting-service&quot; messageTypes=&quot;flex.messaging.messages.RemotingMessage&quot;&gt;
&lt;destination id=&quot;zend&quot;&gt;
&lt;channels&gt;
&lt;channel ref=&quot;my-zend&quot;/&gt;
&lt;/channels&gt;
&lt;properties&gt;
&lt;source&gt;*&lt;/source&gt;
&lt;/properties&gt;
&lt;/destination&gt;
&lt;/service&gt;
&lt;/services&gt;
&lt;channels&gt;
&lt;channel-definition id=&quot;my-zend&quot;&gt;
&lt;endpoint uri=&quot;../zendamf_gateway_example.php&quot;/&gt;
&lt;/channel-definition&gt;
&lt;/channels&gt;
&lt;/services-config&gt;
</pre></p>
<p>10. Run Flex with Zend Amf</p>
<p><a href="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-37-16-pm.png"><img class="alignnone size-full wp-image-674" title="Screen shot 2011-02-13 at 6.37.16 PM" src="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-37-16-pm.png?w=630&#038;h=487" alt="" width="630" height="487" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thaiflexdev.wordpress.com/618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thaiflexdev.wordpress.com/618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thaiflexdev.wordpress.com/618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thaiflexdev.wordpress.com/618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thaiflexdev.wordpress.com/618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thaiflexdev.wordpress.com/618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thaiflexdev.wordpress.com/618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thaiflexdev.wordpress.com/618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thaiflexdev.wordpress.com/618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thaiflexdev.wordpress.com/618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thaiflexdev.wordpress.com/618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thaiflexdev.wordpress.com/618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thaiflexdev.wordpress.com/618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thaiflexdev.wordpress.com/618/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=618&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thaiflexdev.wordpress.com/2011/01/18/zamfbrowser-is-zend-amf-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1862954f9f58df5d8e5db03467ab5a95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">knopsod</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-2-26-36-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-02 at 2.26.36 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-01-at-4-37-33-pm1.png" medium="image">
			<media:title type="html">Screen shot 2011-02-01 at 4.37.33 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-01-at-4-39-34-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-01 at 4.39.34 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-6-00-03-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-02 at 6.00.03 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-01-at-4-55-53-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-01 at 4.55.53 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-01-at-4-56-01-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-01 at 4.56.01 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-3-15-26-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-02 at 3.15.26 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-4-10-07-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-02 at 4.10.07 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-50-05-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-13 at 6.50.05 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-50-50-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-13 at 6.50.50 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-54-06-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-13 at 6.54.06 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-54-31-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-13 at 6.54.31 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-5-12-01-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-02 at 5.12.01 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-02-at-5-44-30-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-02 at 5.44.30 PM</media:title>
		</media:content>

		<media:content url="http://thaiflexdev.files.wordpress.com/2011/01/screen-shot-2011-02-13-at-6-37-16-pm.png" medium="image">
			<media:title type="html">Screen shot 2011-02-13 at 6.37.16 PM</media:title>
		</media:content>
	</item>
		<item>
		<title>Birdeye : Information Visualization and Visual Analytics Library</title>
		<link>http://thaiflexdev.wordpress.com/2010/10/27/birdeye-information/</link>
		<comments>http://thaiflexdev.wordpress.com/2010/10/27/birdeye-information/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 08:16:04 +0000</pubDate>
		<dc:creator>knopsod</dc:creator>
				<category><![CDATA[AIR, Flex, ActionScript]]></category>

		<guid isPermaLink="false">http://thaiflexdev.wordpress.com/?p=609</guid>
		<description><![CDATA[Wow! http://code.google.com/p/birdeye/<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=609&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Wow!</p>
<p><a href="http://code.google.com/p/birdeye/" target="_blank">http://code.google.com/p/birdeye/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thaiflexdev.wordpress.com/609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thaiflexdev.wordpress.com/609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thaiflexdev.wordpress.com/609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thaiflexdev.wordpress.com/609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thaiflexdev.wordpress.com/609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thaiflexdev.wordpress.com/609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thaiflexdev.wordpress.com/609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thaiflexdev.wordpress.com/609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thaiflexdev.wordpress.com/609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thaiflexdev.wordpress.com/609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thaiflexdev.wordpress.com/609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thaiflexdev.wordpress.com/609/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thaiflexdev.wordpress.com/609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thaiflexdev.wordpress.com/609/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=609&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thaiflexdev.wordpress.com/2010/10/27/birdeye-information/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1862954f9f58df5d8e5db03467ab5a95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">knopsod</media:title>
		</media:content>
	</item>
		<item>
		<title>QR Code component</title>
		<link>http://thaiflexdev.wordpress.com/2010/09/29/qr-code-component/</link>
		<comments>http://thaiflexdev.wordpress.com/2010/09/29/qr-code-component/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 07:32:33 +0000</pubDate>
		<dc:creator>knopsod</dc:creator>
				<category><![CDATA[AIR, Flex, ActionScript]]></category>

		<guid isPermaLink="false">http://thaiflexdev.wordpress.com/?p=600</guid>
		<description><![CDATA[http://ntt.cc/2010/05/01/read-qr-code-with-qrcodereader-open-source-as3-library.html http://workflowflash.com/5865/qr-code-reader-as3.php http://jbpin.wordpress.com/2010/08/07/as3-qr-code-encoder-library/ http://jbpin.herobo.com/index.html#app=4da5&#38;92cb-selectedIndex=0<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=600&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://ntt.cc/2010/05/01/read-qr-code-with-qrcodereader-open-source-as3-library.html" target="_blank">http://ntt.cc/2010/05/01/read-qr-code-with-qrcodereader-open-source-as3-library.html</a></p>
<p><a href="http://workflowflash.com/5865/qr-code-reader-as3.php" target="_blank">http://workflowflash.com/5865/qr-code-reader-as3.php</a></p>
<p><a href="http://jbpin.wordpress.com/2010/08/07/as3-qr-code-encoder-library/" target="_blank">http://jbpin.wordpress.com/2010/08/07/as3-qr-code-encoder-library/</a></p>
<p><a href="http://jbpin.herobo.com/index.html#app=4da5&amp;92cb-selectedIndex=0" target="_blank">http://jbpin.herobo.com/index.html#app=4da5&amp;92cb-selectedIndex=0</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/thaiflexdev.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/thaiflexdev.wordpress.com/600/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/thaiflexdev.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/thaiflexdev.wordpress.com/600/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/thaiflexdev.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/thaiflexdev.wordpress.com/600/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/thaiflexdev.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/thaiflexdev.wordpress.com/600/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/thaiflexdev.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/thaiflexdev.wordpress.com/600/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/thaiflexdev.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/thaiflexdev.wordpress.com/600/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/thaiflexdev.wordpress.com/600/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/thaiflexdev.wordpress.com/600/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=thaiflexdev.wordpress.com&amp;blog=8959851&amp;post=600&amp;subd=thaiflexdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://thaiflexdev.wordpress.com/2010/09/29/qr-code-component/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1862954f9f58df5d8e5db03467ab5a95?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">knopsod</media:title>
		</media:content>
	</item>
	</channel>
</rss>
