<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Mihai CORLAN</title>
	
	<link>http://corlan.org</link>
	<description>Flex, AIR and Rock&amp;Roll</description>
	<pubDate>Thu, 20 Nov 2008 16:36:36 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/corlan" type="application/rss+xml" /><item>
		<title>Farewell 2008 MAX San Francisco</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/459739789/</link>
		<comments>http://corlan.org/2008/11/20/farewell-2008-max-san-francisco/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 16:36:36 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/20/farewell-2008-max-san-francisco/</guid>
		<description><![CDATA[Today I&#8217;m heading back to home. Tomorrow evening I will be in my bed  It were three days of intense presentations, talks; a great show. I am looking forward for the next year event, in Los Angeles. In the meantime, next week I start to prepare for the MAX Milan. 
The king is dead, [...]]]></description>
			<content:encoded><![CDATA[<p>Today I&#8217;m heading back to home. Tomorrow evening I will be in my bed <img src='http://corlan.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> It were three days of intense presentations, talks; a great show. I am looking forward for the next year event, in Los Angeles. In the meantime, next week I start to prepare for the <a href="http://max.adobe.com/eu/" onclick="javascript:pageTracker._trackPageview('a/http://max.adobe.com/eu/');" target="_blank">MAX Milan</a>. </p>
<p>The king is dead, long live to the king!</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/459739789" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/20/farewell-2008-max-san-francisco/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/20/farewell-2008-max-san-francisco/</feedburner:origLink></item>
		<item>
		<title>2008 MAX Day 2 Keynote in pictures</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/457854797/</link>
		<comments>http://corlan.org/2008/11/19/2008-max-day-2-keynote-in-pictures/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 01:55:40 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/19/2008-max-day-2-keynote-in-pictures/</guid>
		<description><![CDATA[So, I was a good boy and I received tickets in the front rows. The boys are getting ready for live blogging (Andrew, Serge; a little bit of Ted Patrick on the left)
 
Nice music, great animations. AIR is the leading man or lady. People are getting in the mood.
 
The great chief (Kevin Lynch) [...]]]></description>
			<content:encoded><![CDATA[<p>So, I was a good boy and I received tickets in the front rows. The boys are getting ready for live blogging (<a href="http://www.ashorten.com/" onclick="javascript:pageTracker._trackPageview('a/http://www.ashorten.com/');" target="_blank">Andrew</a>, <a href="http://www.webkitchen.be/" onclick="javascript:pageTracker._trackPageview('a/http://www.webkitchen.be/');" target="_blank">Serge</a>; a little bit of Ted Patrick on the left)</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/18112008004.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="18112008004" src="http://corlan.org/wp-content/uploads/2008/11/18112008004-thumb.jpg" width="240" border="0"></a> </p>
<p>Nice music, great animations. AIR is the leading man or lady. People are getting in the mood.</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/18112008007.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="18112008007" src="http://corlan.org/wp-content/uploads/2008/11/18112008007-thumb.jpg" width="240" border="0"></a> </p>
<p>The great chief (Kevin Lynch) gives a special mission to agent B (Tim Buntel). The theme of the keynote was Bond. James Bond.</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/18112008008.jpg" >&nbsp;<img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="18112008008" src="http://corlan.org/wp-content/uploads/2008/11/18112008008-thumb.jpg" width="240" border="0"></a></p>
<p>Agent F is coming the rescue the day (Ben Forta).</p>
<p>&nbsp;<a href="http://corlan.org/wp-content/uploads/2008/11/18112008009.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="18112008009" src="http://corlan.org/wp-content/uploads/2008/11/18112008009-thumb.jpg" width="240" border="0"></a></p>
<p>Agent F and B are inspecting the troops. I mean the agents. First one, Photoshop.</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/18112008011.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="18112008011" src="http://corlan.org/wp-content/uploads/2008/11/18112008011-thumb.jpg" width="240" border="0"></a> </p>
<p>Then Flash Catalyst shows the power.</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/18112008012.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="18112008012" src="http://corlan.org/wp-content/uploads/2008/11/18112008012-thumb.jpg" width="240" border="0"></a> </p>
<p>Then the Alchemy secret project.</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/18112008013.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="18112008013" src="http://corlan.org/wp-content/uploads/2008/11/18112008013-thumb.jpg" width="240" border="0"></a> </p>
<p>Agent F and agent B talking about the greatness of Gumbo (next Flex Builder version) and of course, about the power of ColdFusion. Neat stuff for working with data.</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/18112008014.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="18112008014" src="http://corlan.org/wp-content/uploads/2008/11/18112008014-thumb.jpg" width="240" border="0"></a> </p>
<p>Dreamweaver and how it can take down bare hands JavaScript, HTML, and CSS.</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/18112008015.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="18112008015" src="http://corlan.org/wp-content/uploads/2008/11/18112008015-thumb.jpg" width="240" border="0"></a> </p>
<p>Flash and search engine indexing.</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/18112008016.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="18112008016" src="http://corlan.org/wp-content/uploads/2008/11/18112008016-thumb.jpg" width="240" border="0"></a> </p>
<p>Ted Patrick is counting his army (+420 Adobe User Groups).</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/18112008018.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="18112008018" src="http://corlan.org/wp-content/uploads/2008/11/18112008018-thumb.jpg" width="240" border="0"></a></p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/457854797" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/19/2008-max-day-2-keynote-in-pictures/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/19/2008-max-day-2-keynote-in-pictures/</feedburner:origLink></item>
		<item>
		<title>Serge and Andrew: live blogging the MAX keynotes</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/456735097/</link>
		<comments>http://corlan.org/2008/11/18/serge-and-andrew-live-blogging-the-max-keynotes/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 03:55:45 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/18/serge-and-andrew-live-blogging-the-max-keynotes/</guid>
		<description><![CDATA[My fellow evangelists Serge and Andrew blogged live from the keynote event. It seems they did such a good job, that people from the event were following them.  This is the link for the Day 1 keynote. Tomorrow they will do it again. I encourage you to watch them, especially if you are not [...]]]></description>
			<content:encoded><![CDATA[<p>My fellow evangelists <a href="http://www.webkitchen.be/2008/11/18/max-san-francisco-keynote-day-2-liveblog/" onclick="javascript:pageTracker._trackPageview('a/http://www.webkitchen.be/2008/11/18/max-san-francisco-keynote-day-2-liveblog/');" target="_blank">Serge </a>and <a href="http://www.ashorten.com/2008/11/18/live-blogging-from-day-2-max-keynote-coming-up-later/" onclick="javascript:pageTracker._trackPageview('a/http://www.ashorten.com/2008/11/18/live-blogging-from-day-2-max-keynote-coming-up-later/');" target="_blank">Andrew </a>blogged live from the keynote event. It seems they did such a good job, that people from the event were following them. <img src='http://corlan.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <a href="http://www.coveritlive.com/index.php?option=com_altcaster&amp;task=siteviewaltcast&amp;altcast_code=49310f0d85&amp;height=450&amp;width=640" onclick="javascript:pageTracker._trackPageview('a/http://www.coveritlive.com/index.php?option=com_altcaster&amp;task=siteviewaltcast&amp;altcast_code=49310f0d85&amp;height=450&amp;width=640');" target="_blank">This</a> is the link for the Day 1 keynote. Tomorrow they will do it again. I encourage you to watch them, especially if you are not attending the event. Day 2 keynote live blogging <a href="http://www.coveritlive.com/index.php?option=com_altcaster&amp;task=siteviewaltcast&amp;altcast_code=78a7e0e16f&amp;height=450&amp;width=640" onclick="javascript:pageTracker._trackPageview('a/http://www.coveritlive.com/index.php?option=com_altcaster&amp;task=siteviewaltcast&amp;altcast_code=78a7e0e16f&amp;height=450&amp;width=640');" target="_blank">here</a>.</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/liveblogging.png" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://corlan.org/wp-content/uploads/2008/11/liveblogging-thumb.png" border="0" alt="liveblogging" width="240" height="175" /></a></p>
<p>PS. The only problem one might have is with Andrew&#8217;s shirt (he really enjoys some floral-strange-looking shirts). He could use some advice from Serge. Don&#8217;t be mad Andrew :X</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/456735097" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/18/serge-and-andrew-live-blogging-the-max-keynotes/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/18/serge-and-andrew-live-blogging-the-max-keynotes/</feedburner:origLink></item>
		<item>
		<title>Go to MAX Milan and get a 10% discount for CS4!</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/456281512/</link>
		<comments>http://corlan.org/2008/11/17/go-to-max-milan-and-get-a-10-discount-for-cs4/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 18:41:37 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/17/go-to-max-milan-and-get-a-10-discount-for-cs4/</guid>
		<description><![CDATA[If you attend MAX Milan, December 1st, you&#8217;ll get a 10% discount for any Adobe product you buy. See you there!
]]></description>
			<content:encoded><![CDATA[<p>If you attend <a href="http://max.adobe.com/eu" onclick="javascript:pageTracker._trackPageview('a/http://max.adobe.com/eu');" target="_blank">MAX Milan</a>, December 1st, you&#8217;ll get a 10% discount for any Adobe product you buy. See you there!</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/456281512" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/17/go-to-max-milan-and-get-a-10-discount-for-cs4/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/17/go-to-max-milan-and-get-a-10-discount-for-cs4/</feedburner:origLink></item>
		<item>
		<title>Live MAX San Francisco - Day 1</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/456280829/</link>
		<comments>http://corlan.org/2008/11/17/live-max-san-francisco-day-1/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 18:07:28 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/17/live-max-san-francisco-day-1/</guid>
		<description><![CDATA[Just a photo from the event, Monday morning, people having breakfast right before the keynote:

]]></description>
			<content:encoded><![CDATA[<p>Just a photo from the event, Monday morning, people having breakfast right before the keynote:</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/17112008.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="180" alt="17112008" src="http://corlan.org/wp-content/uploads/2008/11/17112008-thumb1.jpg" width="240" border="0"></a></p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/456280829" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/17/live-max-san-francisco-day-1/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/17/live-max-san-francisco-day-1/</feedburner:origLink></item>
		<item>
		<title>Tour de Flex - a new tool for Flex/AIR developers</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/456222230/</link>
		<comments>http://corlan.org/2008/11/17/tour-de-flex-a-new-tool-for-flexair-developers/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 17:39:12 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[AIR]]></category>

		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/17/tour-de-flex-a-new-tool-for-flexair-developers/</guid>
		<description><![CDATA[A new tool for Flex developer was launched last night: Tour de Flex. It is an AIR application, and an Eclipse plugin that gives you:

a good overview of what is possible in Flex in a “look and see” environment
an illustrated reference tool
a place to showcase your work

&#8220;Tour de Flex includes over 200 runnable samples, each [...]]]></description>
			<content:encoded><![CDATA[<p>A new tool for Flex developer was launched last night: <a href="http://flex.org/tour" onclick="javascript:pageTracker._trackPageview('a/http://flex.org/tour');" target="_blank">Tour de Flex</a>. It is an AIR application, and an Eclipse plugin that gives you:</p>
<ul>
<li>a good overview of what is possible in Flex in a “look and see” environment</li>
<li>an illustrated reference tool</li>
<li>a place to showcase your work</li>
</ul>
<p><em>&#8220;Tour de Flex includes over 200 runnable samples, each with source code, links to documentation, and other details. Topics include the Flex Core Components, Flex Data Access, AIR Desktop Capabilities, Cloud APIs, Data Visualization, Mapping, and a growing collection of custom components, effects, skins, etc.&#8221;</em></p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/screenshot-0.png" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://corlan.org/wp-content/uploads/2008/11/screenshot-0-thumb.png" border="0" alt="Screenshot_0" width="240" height="186" /></a></p>
<p>PS. If you are attending the MAX event and you want get the Tour de Flex on a memory stick, just look for a Platform Evangelist and ask us.</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/456222230" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/17/tour-de-flex-a-new-tool-for-flexair-developers/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/17/tour-de-flex-a-new-tool-for-flexair-developers/</feedburner:origLink></item>
		<item>
		<title>AIR 1.5 is out!</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/455630950/</link>
		<comments>http://corlan.org/2008/11/17/air-15-is-out/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 05:56:09 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[AIR]]></category>

		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/17/air-15-is-out/</guid>
		<description><![CDATA[AIR 1.5 is out, just go to http://get.adobe.com/air/. You can read more about it here, and here.
PS. I am proudly and shamelessly brag about my articles on the Update Framework for AIR, which now works with AIR apps created in Flash too: Using the Adobe AIR update framework, and the article about the BlackBookSafe - [...]]]></description>
			<content:encoded><![CDATA[<p>AIR 1.5 is out, just go to <a title="http://get.adobe.com/air/" href="http://get.adobe.com/air/" onclick="javascript:pageTracker._trackPageview('a/http://get.adobe.com/air/');">http://get.adobe.com/air/</a>. You can read more about it <a href="http://www.adobe.com/devnet/logged_in/rchristensen_lpolanco_air_1.5.html" onclick="javascript:pageTracker._trackPageview('a/http://www.adobe.com/devnet/logged_in/rchristensen_lpolanco_air_1.5.html');" target="_blank">here</a>, and <a href="http://www.adobe.com/products/air/" onclick="javascript:pageTracker._trackPageview('a/http://www.adobe.com/products/air/');" target="_blank">here</a>.</p>
<p>PS. I am proudly and shamelessly brag about my articles on the Update Framework for AIR, which now works with AIR apps created in Flash too: <a href="http://www.adobe.com/devnet/air/articles/air_update_framework.html" onclick="javascript:pageTracker._trackPageview('a/http://www.adobe.com/devnet/air/articles/air_update_framework.html');" target="_blank">Using the Adobe AIR update framework</a>, and the article about the <a href="http://www.adobe.com/devnet/air/ajax/articles/blackbooksafe_anatomy.html" onclick="javascript:pageTracker._trackPageview('a/http://www.adobe.com/devnet/air/ajax/articles/blackbooksafe_anatomy.html');" target="_blank">BlackBookSafe </a>- an AIR app created entirely with HTML/JavaScript that uses Pixel Bender, 3D transformations and encrypted local database. Enjoy them!</p>
<p>Later Update: Almost forgot! AIR1.5 means also JavaScript debugging support. More to come.</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/455630950" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/17/air-15-is-out/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/17/air-15-is-out/</feedburner:origLink></item>
		<item>
		<title>Couple of days ’til MAX</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/453763836/</link>
		<comments>http://corlan.org/2008/11/15/couple-of-days-till-max/#comments</comments>
		<pubDate>Sat, 15 Nov 2008 07:18:15 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/15/couple-of-days-till-max/</guid>
		<description><![CDATA[Tomorrow morning I&#8217;ll leave for San Francisco. Working for Adobe has some advantages, because I know for a fact we will announce so many new and cool things at MAX. On the other hand, it is so hard to wait for the actual announce, when I can talk about and share with you&#8230;
Juuuust a little [...]]]></description>
			<content:encoded><![CDATA[<p>Tomorrow morning I&#8217;ll leave for San Francisco. Working for Adobe has some advantages, because I know for a fact we will announce so many new and cool things at MAX. On the other hand, it is so hard to wait for the actual announce, when I can talk about and share with you&#8230;</p>
<p>Juuuust a little more patience, my friends!</p>
<p>PS. While I am used to be like Indiana Jones when I travel in Europe (do you remember <a href="http://corlan.org/2008/07/15/my-ukrainian-adventure/"  target="_blank">my Ukrainian advendures</a>?),  in the States I didn&#8217;t have any trouble. I hope it will stay this way&#8230;</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/453763836" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/15/couple-of-days-till-max/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/15/couple-of-days-till-max/</feedburner:origLink></item>
		<item>
		<title>Flex and financial institutions at MAX Milan</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/452915920/</link>
		<comments>http://corlan.org/2008/11/14/flex-and-financial-institutions-at-max-milan/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 13:14:03 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/14/flex-and-financial-institutions-at-max-milan/</guid>
		<description><![CDATA[We will have an interesting session at MAX Milan about how Raiffeisen Bank uses Flex. The description of this topic is:
Discover how Raiffeisen Bank benefited from a Flex-based online solution. We will share the experience and unveil guidelines for how to implement visionary projects in financial institutions. Learn why usability, security, and other factors drove [...]]]></description>
			<content:encoded><![CDATA[<p>We will have an interesting session at <a href="http://max.adobe.com/eu/experience/#?s=0&amp;p=0" onclick="javascript:pageTracker._trackPageview('a/http://max.adobe.com/eu/experience/#?s=0&amp;p=0');" target="_blank">MAX Milan</a> about how Raiffeisen Bank uses Flex. The description of this topic is:</p>
<p><em>Discover how Raiffeisen Bank benefited from a Flex-based online solution. We will share the experience and unveil guidelines for how to implement visionary projects in financial institutions. Learn why usability, security, and other factors drove the decision to use Flex. </em></p>
<p>The speaker is Mariusz Gliński from Raiffeisen Poland.</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/452915920" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/14/flex-and-financial-institutions-at-max-milan/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/14/flex-and-financial-institutions-at-max-milan/</feedburner:origLink></item>
		<item>
		<title>Flex and PHP: remoting with Zend AMF</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/451911087/</link>
		<comments>http://corlan.org/2008/11/13/flex-and-php-remoting-with-zend-amf/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 15:56:23 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/13/flex-and-php-remoting-with-zend-amf/</guid>
		<description><![CDATA[The latest PHP library to add support for AMF and remoting is Zend Framework. The preview prelease version 1.7 offers a new component Zend_AMF that lets you create Flex applications that talk to PHP backends using remoting. Since I am a big fan of remoting as a way to get data to your Flex/AIR clients, [...]]]></description>
			<content:encoded><![CDATA[<p>The latest PHP library to add support for AMF and remoting is Zend Framework. The <a href="http://devzone.zend.com/article/3962-Zend-Framework-1.7-Preview-Release-now-available" onclick="javascript:pageTracker._trackPageview('a/http://devzone.zend.com/article/3962-Zend-Framework-1.7-Preview-Release-now-available');" target="_blank">preview prelease version 1.7</a> offers a new component Zend_AMF that lets you create Flex applications that talk to PHP backends using remoting. Since I am a big fan of remoting as a way to get data to your Flex/AIR clients, I wanted to add a short post explaining how to use it. <a href="http://corlan.org/2008/10/10/flex-and-php-remoting-with-amfphp/"  target="_blank">Here</a> is another post I wrote on remoting with AMFPHP. Actually this post is a part of a larger <a href="http://www.adobe.com/devnet/flex/articles/flex_php.html" onclick="javascript:pageTracker._trackPageview('a/http://www.adobe.com/devnet/flex/articles/flex_php.html');" target="_blank">article</a> I did for Adobe Developer Connection. I want to keep it more focused, so I wrote this one.</p>
<p>You can download a Flex Builder project that contains the code I explain in this article from <a href="http://corlan.org/downloads/flex_php.zip "  target="_blank">here</a>. Inside of the archive you will find a readme.txt file explaining what to do with it.</p>
<h3>Installing the Zend Framework</h3>
<p>After <a href="http://framework.zend.com/download/latest" onclick="javascript:pageTracker._trackPageview('a/http://framework.zend.com/download/latest');" target="_blank">downloading</a> the Zend Framework 1.7 archive, extract the files. Next, you have to add the library folder to your PHP include path. Open the php.ini file and add the path to the library folder to the include_path; on my machine looks like:<br />
include_path = &#8220;c:\htdocs\zend_framework\library&#8221;</p>
<p>Next, save the file and restart your web server. You can read more about installing Zend Framework <a href="http://framework.zend.com/manual/en/introduction.installation.html" onclick="javascript:pageTracker._trackPageview('a/http://framework.zend.com/manual/en/introduction.installation.html');" target="_blank">here</a>. With this, you&#8217;ve completed the &#8220;installation&#8221; of Zend Framework.</p>
<h3>What is AMF and remoting and why should you use it?</h3>
<p>If you already know these answers, you may want to skip to the next section. Let’s start by understanding remote procedure calls. Remote procedure calls let Flex applications  make direct calls on the methods of your server side classes. Using BlazeDS or LiveCycle Data Services you can expose your Java and ColdFusion classes to the Flex application. However, if you use PHP you need a third party library on the server to expose PHP classes directly. Existing solutions include Zend AMF, WebORB, and AMFPHP. This article focuses on remoting with Zend AMF. AMF is a binary protocol for serializing the messages. Because it is binary, it is more efficient in terms of bandwidth and server processing load than JSON or XML methods. If you want to see for yourself how much more efficient it is, James Ward has put together a nice <a href="http://www.jamesward.com/census/" onclick="javascript:pageTracker._trackPageview('a/http://www.jamesward.com/census/');" target="_blank">benchmark</a>.</p>
<p>Zend AMF is a PHP library that knows how to serialize and deserialize the AMF protocol (it is part of the Zend Framework starting with version 1.7), and thus lets you expose PHP classes to Flex applications. Another compelling reason for using remoting is code reuse. Because you can call methods on PHP classes and these methods can return PHP objects, you don’t have to modify your existing code to output JSON or XML.</p>
<p>As I noted earlier, Zend AMF remoting uses AMF to serialize messages between the server and Flex client. It also offers the ability to map an ActionScript class to a PHP class. For example, suppose you want to display in Flex the information from a table with the following structure:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">contacts
-------------------------------
id      primary key <span style="color: #0000ff;">int</span>
name    varchar(255)
email   varchar(255)</pre>
</div>
<p>When using remoting, you create an ActionScript class to model this data in the client and a PHP class to model the same data on the server. When you create the PHP class that you want to call from Flex, you add a method that, for example, retrieves all the contacts from the table. This method will return an array of PHP VO classes, and in Flex you will get an array of ActionScript objects. All the conversions from PHP objects to AMF to ActionScript objects are done automatically for you by  Flex and Zend AMF.</p>
<p>When you use XML or JSON for remoting, you&#8217;ll tipically need extra steps in Flex to process the data in order to display or store it.</p>
<p>Let’s look at a working example.</p>
<h3>Create the Flex PHP project</h3>
<p>Usually, when I work with Flex and PHP projects, I prefer to use Flex Builder and Zend Studio <a href="http://www.adobe.com/devnet/flex/articles/flex_php_02.html" onclick="javascript:pageTracker._trackPageview('a/http://www.adobe.com/devnet/flex/articles/flex_php_02.html');" target="_blank">installed</a> together. It is possible, however, to work with Flex Builder and a PHP plugin to help you with the PHP code. Either way, you should create a Flex project that uses PHP on the server side (if you plan to use Zend Studio and Flex Builder, first create a Zend PHP Project, then use the Add Flex Nature wizard to add Flex PHP nature on the project). This way you streamline the deployment of the SWF file (the compiled result of the Flex project) to the PHP server. I chose to create a new project called &#8220;flex_php&#8221;.</p>
<p>Next, create a folder inside the PHP server root named &#8220;zendamf_remote&#8221;, and add this folder to the project. Choose New &gt; Folder, and then click on the Advanced button. If you want to have the source files for the Zend Framework available to your project, and you use Zend Studio too, then open the properties page for the project, go to the PHP Include Path &gt; Libraries tab, and add an External Folder pointing to the place where the Zend Framework is installed.</p>
<h3>Create the PHP code</h3>
<p>In the &#8220;zendamf_remote&#8221; folder, create three PHP files: MyService.php, VOAuthor.php, and index.php. Open the MyService.php page and paste the following code (you need to update the connection information for your specific database setup; to do this, look for the four constants at the top of the class):</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; height: 351px; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">&lt;?php
require_once(<span style="color: #006080;">'VOAuthor.php'</span>);
<span style="color: #008000;">//connection info</span>
define(<span style="color: #006080;">"DATABASE_SERVER"</span>, <span style="color: #006080;">"localhost"</span>);
define(<span style="color: #006080;">"DATABASE_USERNAME"</span>, <span style="color: #006080;">"mihai"</span>);
define(<span style="color: #006080;">"DATABASE_PASSWORD"</span>, <span style="color: #006080;">"mihai"</span>);
define(<span style="color: #006080;">"DATABASE_NAME"</span>, <span style="color: #006080;">"flex360"</span>);

<span style="color: #0000ff;">class</span> MyService {
<span style="color: #008000;">/**</span>
<span style="color: #008000;">* Retrieve all the records from the table</span>
<span style="color: #008000;">* @return an array of VOAuthor</span>
<span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> getData() {
     <span style="color: #008000;">//connect to the database.</span>
     <span style="color: #008000;">//we could have used an abstracting layer for connecting to the database.</span>
     <span style="color: #008000;">//for the sake of simplicity, I choose not to.</span>
     $mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);
     mysql_select_db(DATABASE_NAME);
     <span style="color: #008000;">//retrieve all rows</span>
     $query = <span style="color: #006080;">"SELECT id_aut, fname_aut, lname_aut FROM authors_aut ORDER BY fname_aut"</span>;
     $result = mysql_query($query);

     $ret = array();
     <span style="color: #0000ff;">while</span> ($row = mysql_fetch_object($result)) {
     $tmp = <span style="color: #0000ff;">new</span> VOAuthor();
     $tmp-&gt;id_aut = $row-&gt;id_aut;
     $tmp-&gt;fname_aut = $row-&gt;fname_aut;
     $tmp-&gt;lname_aut = $row-&gt;lname_aut;
     $ret[] = $tmp;
     }
     mysql_free_result($result);
     <span style="color: #0000ff;">return</span> $ret;
}
<span style="color: #008000;">/**</span>
<span style="color: #008000;">* Update one item in the table</span>
<span style="color: #008000;">* @param VOAuthor to be updated </span>
<span style="color: #008000;">* @return NULL</span>
<span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> saveData($author) {
<span style="color: #0000ff;">if</span> ($author == NULL)
     <span style="color: #0000ff;">return</span> NULL;
     <span style="color: #008000;">//connect to the database.</span>
     $mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);
     mysql_select_db(DATABASE_NAME);
     <span style="color: #008000;">//save changes</span>
     $query = <span style="color: #006080;">"UPDATE authors_aut SET fname_aut='"</span>.$author-&gt;fname_aut.<span style="color: #006080;">"', lname_aut='"</span>.$author-&gt;lname_aut.<span style="color: #006080;">"' WHERE id_aut="</span>.  $author-&gt;id_aut;
     $result = mysql_query($query);
     <span style="color: #0000ff;">return</span> NULL;
}
}
?&gt;</pre>
</div>
<p>This is the class you will call from Flex. It has two methods: one to get all the records from the table, and another to update the values for one record.</p>
<p>Let&#8217;s create the code for the Value Object, the data model. This is used by the MyService class to wrap one row from the table. Thus, the method <em>getData()</em> returns an array of VOAuthor, and the method <em>saveData() </em>receives one argument: the VOAuthor of the row that was changed. Open the file VOAuthor.php and add this code:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">&lt;?php
<span style="color: #0000ff;">class</span> VOAuthor {
     <span style="color: #0000ff;">public</span> $id_aut;
     <span style="color: #0000ff;">public</span> $fname_aut;
     <span style="color: #0000ff;">public</span> $lname_aut;
}
?&gt;</pre>
</div>
<p>As you can see, this class is very simple; it just provides the same members as the fields from the table. Finally let&#8217;s create the code for index.php file. This is the plumbing code that expose the MyService class to Flex clients with the help of the Zend AMF. Add the following code:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">&lt;?php
require_once(<span style="color: #006080;">'Zend/Amf/Server.php'</span>);
require_once(<span style="color: #006080;">'MyService.php'</span>);

$server = <span style="color: #0000ff;">new</span> Zend_Amf_Server();
<span style="color: #008000;">//adding our class to Zend AMF Server</span>
$server-&gt;setClass(<span style="color: #006080;">"MyService"</span>);
<span style="color: #008000;">//Mapping the ActionScript VO to the PHP VO</span>
<span style="color: #008000;">//you don't have to add the package name</span>
$server-&gt;setClassMap(<span style="color: #006080;">"VOAuthor"</span>, <span style="color: #006080;">"VOAuthor"</span>);
echo($server -&gt; handle());
?&gt;</pre>
</div>
<p>I use an instance of Zend AMF server to create a PHP end point that can be called from Flex. Then I register the MyService class to the server, thus I can call this class from Flex. And finally I map the ActionScript data model (VOAuthor) to the PHP VOAuthor data model.</p>
<p>When you use remoting, you get the casting of the data to the right type for free. For example, <em>MyService.getData()</em> method returns an array of VOAuthor PHP objects. However, as you will see later, in Flex the result is an array of VOAuthor ActionScript objects.</p>
<h3>Creating the Flex application</h3>
<p>Now that you have the PHP code in place, you are ready to create the Flex code that will call the PHP class. I want the Flex application to have a button that gets the data from the server, uses a data grid to display the data, and enables the user to edit any cell (except ids) within the data grid. Whenever a cell is edited, the update is sent automatically to the server and saved to the database as well.</p>
<p>First, be sure to select the Flex perspective from the top right icons of Eclipse.</p>
<p>The next thing you need to do is to create a configuration file that Flex can use to reach the PHP service. Create the file services-config.xml in the root of the project. Open the file and add this code:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">&lt;?xml version=<span style="color: #006080;">"1.0"</span> encoding=<span style="color: #006080;">"UTF-8"</span>?&gt;
&lt;services-config&gt;
    &lt;services&gt;
        &lt;service id=<span style="color: #006080;">"amfphp-flashremoting-service"</span> <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"flex.messaging.services.RemotingService"</span> messageTypes=<span style="color: #006080;">"flex.messaging.messages.RemotingMessage"</span>&gt;
            &lt;destination id=<span style="color: #006080;">"zend"</span>&gt;
                &lt;channels&gt;
                    &lt;channel <span style="color: #0000ff;">ref</span>=<span style="color: #006080;">"my-zend"</span>/&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=<span style="color: #006080;">"my-zend"</span> <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"mx.messaging.channels.AMFChannel"</span>&gt;
            &lt;endpoint uri=<span style="color: #006080;">"http://localhost/zendamf_remote/"</span> <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"flex.messaging.endpoints.AMFEndpoint"</span>/&gt;
        &lt;/channel-definition&gt;
    &lt;/channels&gt;
&lt;/services-config&gt;</pre>
</div>
<p>Be sure to check the endpoint node (at the bottom of the file); your URL to the zendamf_remote folder might be different. Set the value appropriately for your setup.</p>
<p>Now you need to tell Flex Builder to use this file when compiling the project. Right click on the project name in the Project Explorer and choose Properties. Select Flex Compiler and add the following to Additional compiler arguments field: -services &#8220;absolute_path_to_the_file/services_config.xml&#8221;:</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/zend-amf-1.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://corlan.org/wp-content/uploads/2008/11/zend-amf-1-thumb.jpg" border="0" alt="Adding services_config to compile arguments" width="240" height="160" /></a></p>
<p>You will use a <em>RemoteObject </em>to communicate with the server, so add a <em>mx:RemoteObject</em> tag. You need to set the source attribute to MyService (this is the PHP class name) and the destination to zend – this is the destination created in the services-config.xml file. Also give a name to this object by adding an id attribute and set it to myRemote. Set the attribute <em>showBusyCursor</em> to true (whenever a call is made this will render the mouse icon as a watch, until a response from the server is received). The code should look like this:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">&lt;mx:RemoteObject id=<span style="color: #006080;">"myRemote"</span> destination=<span style="color: #006080;">"zend"</span> source=<span style="color: #006080;">"MyService"</span> showBusyCursor=<span style="color: #006080;">"true"</span>&gt;
&lt;/mx:RemoteObject&gt;</pre>
</div>
<p>Now you need to declare the methods you want to call on the PHP class, and add the listeners for fault and result events. The code is:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">&lt;mx:RemoteObject id=<span style="color: #006080;">"myRemote"</span> destination=<span style="color: #006080;">"zend"</span> source=<span style="color: #006080;">"MyService"</span> showBusyCursor=<span style="color: #006080;">"true"</span> fault=<span style="color: #006080;">"faultListener(event)"</span>&gt;
     &lt;mx:method name=<span style="color: #006080;">"getData"</span> result=<span style="color: #006080;">"getDataListener(event)"</span>/&gt;
     &lt;mx:method name=<span style="color: #006080;">"saveData"</span> result=<span style="color: #006080;">"saveDataListener(event)"</span>/&gt;
&lt;/mx:RemoteObject&gt;</pre>
</div>
<p>Next you need a UI to make the call to the server and display/edit the data. A button and a data grid will do. Add this code above the <em>RemoteObject</em> code:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">&lt;mx:VBox top=<span style="color: #006080;">"30"</span> left=<span style="color: #006080;">"100"</span>&gt;
           &lt;mx:Button label=<span style="color: #006080;">"Get data"</span> click=<span style="color: #006080;">"{myRemote.getData()}"</span> /&gt;
           &lt;mx:DataGrid id=<span style="color: #006080;">"myGrid"</span> editable=<span style="color: #006080;">"true"</span> itemEditEnd=<span style="color: #006080;">"save(event)"</span>/&gt;
&lt;/mx:VBox&gt;</pre>
</div>
<p>As you can see, the button calls the <em>getData()</em> method on the remoteObject. The data grid has an event listener registered for the <em>itemEditEnd </em>event.</p>
<p>The last step is to create the listeners you declared. For this, add an <em>mx:Scrip</em>t tag to your MXML application and define four functions in it:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; height: 416px; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">&lt;mx:Script&gt;
     &lt;![CDATA[
           import mx.controls.dataGridClasses.DataGridColumn;
           import mx.events.DataGridEvent;
           import org.corlan.VOAuthor;
           import mx.controls.Alert;
           import mx.rpc.events.FaultEvent;
           import mx.rpc.events.ResultEvent;
           import mx.collections.ArrayCollection;
           <span style="color: #008000;">/**</span>
<span style="color: #008000;">            * listener for the data grid's itemEditEnd event</span>
<span style="color: #008000;">            */</span>
           privatefunction save(<span style="color: #0000ff;">event</span>:DataGridEvent):<span style="color: #0000ff;">void</span> {
                <span style="color: #008000;">//we don't want to update the id of the item</span>
                <span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">event</span>.dataField == <span style="color: #006080;">"id_aut"</span>) {
                     <span style="color: #0000ff;">event</span>.preventDefault();
                     <span style="color: #0000ff;">return</span>;
                }
                <span style="color: #008000;">//retrieve the new value from the item editor instance</span>
                <span style="color: #0000ff;">var</span> dataGrid:DataGrid = <span style="color: #0000ff;">event</span>.target <span style="color: #0000ff;">as</span> DataGrid;
                <span style="color: #0000ff;">var</span> col:DataGridColumn = dataGrid.columns[<span style="color: #0000ff;">event</span>.columnIndex];
                <span style="color: #0000ff;">var</span> newValue:String = dataGrid.itemEditorInstance[col.editorDataField];
                <span style="color: #008000;">//retrieve the data model that was edited</span>
                <span style="color: #0000ff;">var</span> author:VOAuthor = <span style="color: #0000ff;">event</span>.itemRenderer.data <span style="color: #0000ff;">as</span> VOAuthor;
                <span style="color: #008000;">// if the value wasn't change, exit</span>
                <span style="color: #0000ff;">if</span> (newValue == author[<span style="color: #0000ff;">event</span>.dataField])
                     <span style="color: #0000ff;">return</span>;
                <span style="color: #008000;">//update the model with the new values     </span>
                author[<span style="color: #0000ff;">event</span>.dataField] = newValue;
                <span style="color: #008000;">//call the remote method passing the data we want to be saved</span>
                myRemote.saveData(author);
           }
           <span style="color: #008000;">/**</span>
<span style="color: #008000;">            * Result listener for get data operation</span>
<span style="color: #008000;">            */</span>
           privatefunction getDataListener(<span style="color: #0000ff;">event</span>:ResultEvent):<span style="color: #0000ff;">void</span> {
                <span style="color: #008000;">//set the result array as data provider for the data grid         </span>
myGrid.dataProvider = <span style="color: #0000ff;">event</span>.result <span style="color: #0000ff;">as</span> Array;
           }
           <span style="color: #008000;">/**</span>
<span style="color: #008000;">            * Result listener for save data operation</span>
<span style="color: #008000;">            */</span>
           privatefunction saveDataListener(<span style="color: #0000ff;">event</span>:ResultEvent):<span style="color: #0000ff;">void</span> {
                Alert.show(<span style="color: #006080;">"The data was saved!"</span>);
           }
           <span style="color: #008000;">/**</span>
<span style="color: #008000;">            * Fault listener for RemoteObject</span>
<span style="color: #008000;">            */</span>
           privatefunction faultListener(<span style="color: #0000ff;">event</span>:FaultEvent):<span style="color: #0000ff;">void</span> {
                Alert.show(<span style="color: #0000ff;">event</span>.fault.message, <span style="color: #006080;">"Error"</span>);
           }
]]&gt;
&lt;/mx:Script&gt;</pre>
</div>
<p>Finally, you need to create the ActionScript Value Object that will act as a data model for the data sent from PHP. Right-click on the src folder from Flex Navigator, and choose New &gt; ActionScript class. For the package type <strong>org.corlan</strong>, and for the name type <strong>VOAuthor</strong>. Click OK. Now it is time to add the members and some meta-data:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">package org.corlan {
     [RemoteClass(alias=<span style="color: #006080;">"VOAuthor"</span>)]
     [Bindable]
     publicclass VOAuthor {
           publicvar id_aut:<span style="color: #0000ff;">int</span>;
           publicvar fname_aut:String;
           publicvar lname_aut:String;
     }
}</pre>
</div>
<p>The RemoteClass meta-data is very important. This tells to the ActionScript that the remote class (the one from PHP) that it maps to is called VOAuthor. If you forget this or you misconfigure it, you will get generic objects in ActionScript instead of VOAuthor, and associative arrays in PHP instead of VOAuthor.</p>
<p>You are done. There shouldn&#8217;t be any errors.</p>
<p>Now you are ready to test the code. Start the Flex application by clicking Run in the toolbar. When the application opens in your default browser, click the Get data button. You should see the data grid populated with some data:</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/zend-amf-2.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://corlan.org/wp-content/uploads/2008/11/zend-amf-2-thumb.jpg" border="0" alt="Testing the application" width="226" height="240" /></a></p>
<p>To edit the items, just double click on any name and change something. When you finish editing, click outside the data grid. The changes will be sent to the server. If you don&#8217;t believe me, just go to the database and view the records.</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/11/zend-amf-3.jpg" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://corlan.org/wp-content/uploads/2008/11/zend-amf-3-thumb.jpg" border="0" alt="Editing a cell" width="226" height="240" /></a></p>
<p>That&#8217;s it people!</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/451911087" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/13/flex-and-php-remoting-with-zend-amf/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/13/flex-and-php-remoting-with-zend-amf/</feedburner:origLink></item>
		<item>
		<title>Dojo Extensions for Adobe AIR</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/451618438/</link>
		<comments>http://corlan.org/2008/11/13/dojo-extensions-for-adobe-air/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 09:11:37 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/13/dojo-extensions-for-adobe-air/</guid>
		<description><![CDATA[SitePen has released a library called &#8220;Dojo Extensions for Adobe AIR&#8220;. What you can do with? Well, if you develop AIR applications using AJAX, then this library is for you. It plays nice with Dojo Toolkit, and offers features like playback video, managers for windows&#8230;
This is joined effort between SitePen and Adobe. More here, and [...]]]></description>
			<content:encoded><![CDATA[<p>SitePen has released a library called &#8220;<a href="http://sitepen.com/labs/dair/" onclick="javascript:pageTracker._trackPageview('a/http://sitepen.com/labs/dair/');" target="_blank">Dojo Extensions for Adobe AIR</a>&#8220;. What you can do with? Well, if you develop AIR applications using AJAX, then this library is for you. It plays nice with Dojo Toolkit, and offers features like playback video, managers for windows&#8230;</p>
<p>This is joined effort between SitePen and Adobe. More <a href="http://blogs.adobe.com/air/2008/11/sitepen_announces_dojo_extensi.html" onclick="javascript:pageTracker._trackPageview('a/http://blogs.adobe.com/air/2008/11/sitepen_announces_dojo_extensi.html');" target="_blank">here</a>, and <a href="http://www.sitepen.com/blog/2008/11/12/announcing-dojo-extensions-for-adobe-air/" onclick="javascript:pageTracker._trackPageview('a/http://www.sitepen.com/blog/2008/11/12/announcing-dojo-extensions-for-adobe-air/');" target="_blank">here</a>, and a screencast <a href="http://sitepen.com/labs/dair/dairDemo.mov" onclick="javascript:pageTracker._trackPageview('a/http://sitepen.com/labs/dair/dairDemo.mov');" target="_blank">here</a>.</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/451618438" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/13/dojo-extensions-for-adobe-air/feed/</wfw:commentRss>
<enclosure url="http://sitepen.com/labs/dair/dairDemo.mov" length="13308716" type="video/quicktime" />
		<feedburner:origLink>http://corlan.org/2008/11/13/dojo-extensions-for-adobe-air/</feedburner:origLink></item>
		<item>
		<title>Do you like beer?</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/451606137/</link>
		<comments>http://corlan.org/2008/11/13/do-you-like-beer/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 08:52:23 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/13/do-you-like-beer/</guid>
		<description><![CDATA[You can see a cool RIA application dedicated to all of us that have a special feeling for beer: http://destinationbeer.com/beer_hunter/. It seems to be created in Flex with remoting using AMF Ruby.
Enjoy, and have a beer!
]]></description>
			<content:encoded><![CDATA[<p>You can see a cool RIA application dedicated to all of us that have a special feeling for beer: <a href="http://destinationbeer.com/beer_hunter/" onclick="javascript:pageTracker._trackPageview('a/http://destinationbeer.com/beer_hunter/');">http://destinationbeer.com/beer_hunter/</a>. It seems to be created in Flex with remoting using AMF Ruby.</p>
<p>Enjoy, and have a beer!</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/451606137" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/13/do-you-like-beer/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/13/do-you-like-beer/</feedburner:origLink></item>
		<item>
		<title>MAX 2008 Award Finalists</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450769846/</link>
		<comments>http://corlan.org/2008/11/12/max-2008-award-finalists/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 15:03:40 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/12/max-2008-award-finalists/</guid>
		<description><![CDATA[The MAX Awards Finalist Gallery is now live, and you can start to vote! Go here and start voting for your favorites. The vote will close on November 18th at 12:00 noon PST.
If you attend the MAX, then you can see the finalists displaying their submissions Monday evening, starting at 6:30 PM in the Community [...]]]></description>
			<content:encoded><![CDATA[<p>The MAX Awards Finalist Gallery is now live, and you can start to vote! Go <a href="http://adobemax08.com/na/experience/#?s=5&amp;p=3" onclick="javascript:pageTracker._trackPageview('a/http://adobemax08.com/na/experience/#?s=5&amp;p=3');" target="_blank">here</a> and start voting for your favorites. The vote will close on November 18th at 12:00 noon PST.</p>
<p>If you attend the MAX, then you can see the finalists displaying their submissions Monday evening, starting at 6:30 PM in the Community Pavilion, Nosecone West Level 1.</p>
<p>The winner will be announced in November 18th.</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450769846" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/12/max-2008-award-finalists/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/12/max-2008-award-finalists/</feedburner:origLink></item>
		<item>
		<title>Do you want to get your hands on Thermo?</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520517/</link>
		<comments>http://corlan.org/2008/11/11/do-you-want-to-get-your-hands-on-thermo/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 14:16:45 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/11/do-you-want-to-get-your-hands-on-thermo/</guid>
		<description><![CDATA[If you want to get your hands on the Thermo bits before anyone else, then the only way is to attend MAX USA, or MAX Milan, and get a place in one of the two Intro to Thermo sessions.
Later on we will have a release on Labs too. Good luck people!
]]></description>
			<content:encoded><![CDATA[<p>If you want to get your hands on the Thermo bits before anyone else, then the only way is to attend <a href="http://max.adobe.com/na/experience/" onclick="javascript:pageTracker._trackPageview('a/http://max.adobe.com/na/experience/');" target="_blank">MAX USA</a>, or <a href="http://max.adobe.com/eu/experience/" onclick="javascript:pageTracker._trackPageview('a/http://max.adobe.com/eu/experience/');" target="_blank">MAX Milan</a>, and get a place in one of the two <a href="http://max.adobe.com/na/sessions/browser/#600" onclick="javascript:pageTracker._trackPageview('a/http://max.adobe.com/na/sessions/browser/#600');">Intro to Thermo</a> sessions.</p>
<p>Later on we will have a release on <a href="http://labs.adobe.com" onclick="javascript:pageTracker._trackPageview('a/http://labs.adobe.com');" target="_blank">Labs</a> too. Good luck people!</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520517" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/11/do-you-want-to-get-your-hands-on-thermo/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/11/do-you-want-to-get-your-hands-on-thermo/</feedburner:origLink></item>
		<item>
		<title>Adobe MAX Milan is coming</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520519/</link>
		<comments>http://corlan.org/2008/11/10/adobe-max-milan-is-coming/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 13:01:42 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/10/adobe-max-milan-is-coming/</guid>
		<description><![CDATA[There are only 20 days until MAX Milan starts. I&#8217;ll be presenting two sessions there: one is &#8220;Maintaining security with Adobe AIR&#8221;, and the second one is &#8220;Building High-Performance Applications for Adobe AIR&#8221;. Also it will be the perfect time to meet you :). Be sure you don&#8217;t miss the MAX Community Lounge - this [...]]]></description>
			<content:encoded><![CDATA[<p>There are only 20 days until <a href="http://max.adobe.com/eu/experience/#?s=0&amp;p=0" onclick="javascript:pageTracker._trackPageview('a/http://max.adobe.com/eu/experience/#?s=0&amp;p=0');" target="_blank">MAX Milan</a> starts. I&#8217;ll be presenting two sessions there: one is &#8220;Maintaining security with Adobe AIR&#8221;, and the second one is &#8220;Building High-Performance Applications for Adobe AIR&#8221;. Also it will be the perfect time to meet you :). Be sure you don&#8217;t miss the MAX Community Lounge - this is a space where some of us (Adobe evangelists) will be available for chatting to anyone.</p>
<p>Here is a short movie with <a href="http://technoracle.blogspot.com/" onclick="javascript:pageTracker._trackPageview('a/http://technoracle.blogspot.com/');" target="_blank">Duane</a> and <a href="http://www.riaspace.net/" onclick="javascript:pageTracker._trackPageview('a/http://www.riaspace.net/');" target="_blank">Piotr</a>, my fellow evangelists:</p>
<p><a title="http://technoracle.blogspot.com/2008/11/piotr-and-duane-come-to-max-in-milan.html" href="http://technoracle.blogspot.com/2008/11/piotr-and-duane-come-to-max-in-milan.html" onclick="javascript:pageTracker._trackPageview('a/http://technoracle.blogspot.com/2008/11/piotr-and-duane-come-to-max-in-milan.html');">http://technoracle.blogspot.com/2008/11/piotr-and-duane-come-to-max-in-milan.html</a></p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520519" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/10/adobe-max-milan-is-coming/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/10/adobe-max-milan-is-coming/</feedburner:origLink></item>
		<item>
		<title>Adobe AIR Team has a blog</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520520/</link>
		<comments>http://corlan.org/2008/11/06/adobe-air-team-has-a-blog/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 14:39:29 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/06/adobe-air-team-has-a-blog/</guid>
		<description><![CDATA[Adobe AIR Team launched this week their blog: http://blogs.adobe.com/air/. I encourage you to take a look from time to time to this blog. Interesting things you might find!
]]></description>
			<content:encoded><![CDATA[<p>Adobe AIR Team launched this week their blog: <a href="http://blogs.adobe.com/air/" onclick="javascript:pageTracker._trackPageview('a/http://blogs.adobe.com/air/');">http://blogs.adobe.com/air/</a>. I encourage you to take a look from time to time to this blog. Interesting things you might find!</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520520" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/06/adobe-air-team-has-a-blog/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/06/adobe-air-team-has-a-blog/</feedburner:origLink></item>
		<item>
		<title>Adobe MAX 2008 Europe – Take the chance and register by November 14th to save EUR€240!</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520521/</link>
		<comments>http://corlan.org/2008/11/04/adobe-max-2008-europe-take-the-chance-and-register-until-november-14th-and-save-eur240/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 10:42:57 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/11/04/adobe-max-2008-europe-take-the-chance-and-register-until-november-14th-and-save-eur240/</guid>
		<description><![CDATA[If you are planning to come to MAX Europe this year, you can use this registration code EEB856 when registering (additional restrictions apply*). Register now for MAX Europe http://max.adobe.com/eu/register
This year’s MAX offers you more opportunities to connect with forward-thinking developers and industry leaders than ever before. Be part of the future of development. Join us [...]]]></description>
			<content:encoded><![CDATA[<p>If you are planning to come to MAX Europe this year, you can use this registration code EEB856 when <a href="http://max.adobe.com/eu/register" onclick="javascript:pageTracker._trackPageview('a/http://max.adobe.com/eu/register');" target="_blank">registering</a> (additional restrictions apply*). Register now for MAX Europe <a href="http://max.adobe.com/eu/register" onclick="javascript:pageTracker._trackPageview('a/http://max.adobe.com/eu/register');">http://max.adobe.com/eu/register</a></p>
<p>This year’s MAX offers you more opportunities to connect with forward-thinking developers and industry leaders than ever before. Be part of the future of development. Join us — and as a reader of my personal blog, you’ll save EUR€240 when you register before November 14, 2008!</p>
<p>* Offer good for new Adobe MAX 2008 registrations only. Offer good for Adobe MAX Europe full event pass registration only. The offer applies to an Adobe MAX full event pass only (EUR€840). Offer cannot be combined with any other offer, package or registration code. Offer expires 11:59 pm PDT November 14, 2008. Terms and conditions for Adobe MAX registrations will also apply. Void where prohibited.</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520521" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/11/04/adobe-max-2008-europe-take-the-chance-and-register-until-november-14th-and-save-eur240/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/11/04/adobe-max-2008-europe-take-the-chance-and-register-until-november-14th-and-save-eur240/</feedburner:origLink></item>
		<item>
		<title>Do you know live Flex/AIR applications with PHP backend?</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520522/</link>
		<comments>http://corlan.org/2008/10/31/do-you-know-live-flexair-applications-with-php-backend/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 15:35:43 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/10/31/do-you-know-live-flexair-applications-with-php-backend/</guid>
		<description><![CDATA[I want to create and maintain a list of Flex and AIR applications that use PHP on the server, and are live so any one can see them.&#160; Thus, if you build such applications or you know some, please drop a comment on this post.
I really need your help people! Many thanks  
]]></description>
			<content:encoded><![CDATA[<p>I want to create and maintain a list of Flex and AIR applications that use PHP on the server, and are live so any one can see them.&nbsp; Thus, if you build such applications or you know some, please drop a comment on this post.</p>
<p>I really need your help people! Many thanks <img src='http://corlan.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520522" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/10/31/do-you-know-live-flexair-applications-with-php-backend/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/10/31/do-you-know-live-flexair-applications-with-php-backend/</feedburner:origLink></item>
		<item>
		<title>FlexCamp at Adobe MAX Europe</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520524/</link>
		<comments>http://corlan.org/2008/10/31/flexcamp-at-adobe-max-europe/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 07:47:52 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/10/31/flexcamp-at-adobe-max-europe/</guid>
		<description><![CDATA[Here another reason to come to Adobe MAX Milan: we are adding a free FlexCamp to the MAX schedule. The event will be hosted by Giorgio Natili and Adobe User Groups from northern Italy. See you there guys  
]]></description>
			<content:encoded><![CDATA[<p>Here another reason to come to <a href="http://max.adobe.com/eu/" onclick="javascript:pageTracker._trackPageview('a/http://max.adobe.com/eu/');" target="_blank">Adobe MAX Milan</a>: we are adding a free <a href="http://www.flexcamp.it/2008/10/30/flex-camp-join-the-max-milan/" onclick="javascript:pageTracker._trackPageview('a/http://www.flexcamp.it/2008/10/30/flex-camp-join-the-max-milan/');" target="_blank">FlexCamp</a> to the MAX schedule. The event will be hosted by <a href="http://www.adobe.com/communities/experts/members/giorgio_natili.html" onclick="javascript:pageTracker._trackPageview('a/http://www.adobe.com/communities/experts/members/giorgio_natili.html');" target="_blank">Giorgio Natili</a> and Adobe User Groups from northern Italy. See you there guys <img src='http://corlan.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520524" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/10/31/flexcamp-at-adobe-max-europe/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/10/31/flexcamp-at-adobe-max-europe/</feedburner:origLink></item>
		<item>
		<title>Adobe MAX San Francisco breaks 4000 registrations</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520526/</link>
		<comments>http://corlan.org/2008/10/31/aodbe-max-san-francisco-breaks-4000-registers/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 07:43:14 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/10/31/aodbe-max-san-francisco-breaks-4000-registers/</guid>
		<description><![CDATA[With still 17 days to MAX San Francisco, we broke the 4000 mark yesterday morning. Last year we had 4300 people. With the current trends, about 90 registrations per day, we can establish a new record.

]]></description>
			<content:encoded><![CDATA[<p>With still 17 days to <a href="http://max.adobe.com/na/experience/" onclick="javascript:pageTracker._trackPageview('a/http://max.adobe.com/na/experience/');" target="_blank">MAX San Francisco</a>, we broke the 4000 mark yesterday morning. Last year we had 4300 people. With the current trends, about 90 registrations per day, we can establish a new record.</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/10/maxna2008-0.png" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" src="http://corlan.org/wp-content/uploads/2008/10/maxna2008-0-thumb.png" border="0" alt="MAX San Francisco" width="199" height="240" /></a></p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520526" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/10/31/aodbe-max-san-francisco-breaks-4000-registers/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/10/31/aodbe-max-san-francisco-breaks-4000-registers/</feedburner:origLink></item>
		<item>
		<title>Flash Player 10 and FileReference</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520528/</link>
		<comments>http://corlan.org/2008/10/29/flash-player-10-and-filereference/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 07:40:53 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[AIR]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/10/29/flash-player-10-and-filereference/</guid>
		<description><![CDATA[Flash Player 10 introduced some user-initiated action requirements (for example, in order to call the method for browse for a file, the user has to initiate this action with a mouse or key press). These were introduced to enhance the security of Flash Player.
If you want to learn more about, here are two great resources: [...]]]></description>
			<content:encoded><![CDATA[<p>Flash Player 10 introduced some user-initiated action requirements (for example, in order to call the method for browse for a file, the user has to initiate this action with a mouse or key press). These were introduced to enhance the security of Flash Player.</p>
<p>If you want to learn more about, here are two great resources: <a title="http://www.adobe.com/devnet/flashplayer/articles/fplayer10_uia_requirements.html?devcon=f2" href="http://www.adobe.com/devnet/flashplayer/articles/fplayer10_uia_requirements.html?devcon=f2" onclick="javascript:pageTracker._trackPageview('a/http://www.adobe.com/devnet/flashplayer/articles/fplayer10_uia_requirements.html?devcon=f2');">http://www.adobe.com/devnet/flashplayer/articles/fplayer10_uia_requirements.html?devcon=f2</a> and <a title="http://theflashblog.com/?p=463" href="http://theflashblog.com/?p=463" onclick="javascript:pageTracker._trackPageview('a/http://theflashblog.com/?p=463');">http://theflashblog.com/?p=463</a>.</p>
<p>Enjoy!</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520528" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/10/29/flash-player-10-and-filereference/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/10/29/flash-player-10-and-filereference/</feedburner:origLink></item>
		<item>
		<title>Adobe MAX San Francisco and Mobile Technologies</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520529/</link>
		<comments>http://corlan.org/2008/10/27/adobe-max-san-francisco-and-mobiles/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 09:18:35 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/10/27/adobe-max-san-francisco-and-mobiles/</guid>
		<description><![CDATA[This year&#8217;s MAX event presents you some good opportunities to learn more about the interesting things we are doing in the mobile realm.
First, you have the &#8220;Mobile Summit&#8221; – November 16, 2008 at the Marriott from 1pm - 6pm. Join Adobe and our partners — Nokia, Qualcomm®, Verizon, Sony Ericsson, GetJar, Thumbplay®, and Zed — [...]]]></description>
			<content:encoded><![CDATA[<p>This year&#8217;s <a href="http://max.adobe.com/na/experience/" onclick="javascript:pageTracker._trackPageview('a/http://max.adobe.com/na/experience/');" target="_blank">MAX</a> event presents you some good opportunities to learn more about the interesting things we are doing in the mobile realm.</p>
<p>First, you have the <strong>&#8220;Mobile Summit&#8221;</strong> – November 16, 2008 at the Marriott from 1pm - 6pm. Join Adobe and our partners — Nokia, Qualcomm®, Verizon, Sony Ericsson, GetJar, Thumbplay®, and Zed — to learn about new opportunities for mobile developers this year. Hear from Adobe partners and key industry players as they present the newest mobile solutions, technologies, and distribution opportunities for mobile developers.  See more here: <a href="http://www.eventsadobe.com/mobilesummitmax08/invite.html" onclick="javascript:pageTracker._trackPageview('a/http://www.eventsadobe.com/mobilesummitmax08/invite.html');">http://www.eventsadobe.com/mobilesummitmax08/invite.html</a></p>
<p>Second, you have <strong>&#8220;Mobile Networking Party&#8221;</strong> – November 19, 2008 at the Thirsty Bear from 6:15pm-9:30pm. Adobe is hosting a special Mobile Networking Party to allow developers to showcase their mobile applications using our Adobe® Flash® mobile technologies. If you already have a web-based application and are thinking of going mobile, you can also present your idea and get feedback from our industry leaders. More here: <a href="http://www.eventsadobe.com/mobilenetworkingparty/invite.html" onclick="javascript:pageTracker._trackPageview('a/http://www.eventsadobe.com/mobilenetworkingparty/invite.html');">http://www.eventsadobe.com/mobilenetworkingparty/invite.html</a></p>
<p>Finally here are MAX sessions related to mobile solutions and technology:</p>
<ul>
<li>Open Screen Project: Delivering Rich Internet Experiences Across Devices</li>
<li>Creating Mobile Applications: A Real-World Example</li>
<li>Mobile Workflows with Creative Suite® 4 and Adobe Device Central CS4</li>
<li>Flash Lite 3: Learn How to Package and Distribute Mobile Content</li>
<li>Spotlight on Finetune and Teknision™: Building a Multiscreen Application</li>
<li>Create Unique Browsing Experiences on Nokia Phones</li>
<li>How to Build a Mobile Business</li>
<li>Developing the Ultimate Flash Cast™ Channels</li>
<li>Project Capuchin – Bridging Adobe Flash Lite and Java ME™</li>
</ul>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520529" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/10/27/adobe-max-san-francisco-and-mobiles/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/10/27/adobe-max-san-francisco-and-mobiles/</feedburner:origLink></item>
		<item>
		<title>MAX Milan is coming fast</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520531/</link>
		<comments>http://corlan.org/2008/10/24/max-milan-is-coming-fast/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 08:55:18 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/10/24/max-milan-is-coming-fast/</guid>
		<description><![CDATA[Hi there, especially to my European friends! Why? Because I assume most of my friends from U.S., will not be coming to Italy, Milan this December for MAX  Are you ready to go to MAX? I am looking forward talking with you and maybe drink a beer, or two  
By the way, I [...]]]></description>
			<content:encoded><![CDATA[<p>Hi there, especially to my European friends! Why? Because I assume most of my friends from U.S., will not be coming to <a href="http://max.adobe.com/eu/experience/#?s=0&amp;p=0" onclick="javascript:pageTracker._trackPageview('a/http://max.adobe.com/eu/experience/#?s=0&amp;p=0');" target="_blank">Italy, Milan this December for MAX</a> <img src='http://corlan.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> Are you ready to go to MAX? I am looking forward talking with you and maybe drink a beer, or two <img src='http://corlan.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>By the way, I will have two sessions on AIR: Maintaining security with Adobe AIR and Building high performance applications for Adobe AIR.</p>
<p>See you in Milan!</p>
<p>PS. Although I don&#8217;t have a session at MAX San Francisco, I will be there. So let&#8217;s have a beer or two my friends from the other side of the Atlantic <img src='http://corlan.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520531" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/10/24/max-milan-is-coming-fast/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/10/24/max-milan-is-coming-fast/</feedburner:origLink></item>
		<item>
		<title>Just a teaser for AIR 1.5</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520532/</link>
		<comments>http://corlan.org/2008/10/23/just-a-teaser-for-air-15/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 08:48:04 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[AIR]]></category>

		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/10/23/just-a-teaser-for-air-15/</guid>
		<description><![CDATA[My friends from the AIR team created an interesting AIR application that illustrates the coolest features from AIR 1.5. We will present this application at MAX San Francisco; you have to wait a little bit. We will give the source code of the application too, so you can see how was made it. In the [...]]]></description>
			<content:encoded><![CDATA[<p>My friends from the AIR team created an interesting AIR application that illustrates the coolest features from AIR 1.5. We will present this application at MAX San Francisco; you have to wait a little bit. We will give the source code of the application too, so you can see how was made it. In the same spirit, I will post an article explaining the bits.</p>
<p>Can&#8217;t wait!</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520532" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/10/23/just-a-teaser-for-air-15/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/10/23/just-a-teaser-for-air-15/</feedburner:origLink></item>
		<item>
		<title>Flash Security talk in Portugal, this November</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520534/</link>
		<comments>http://corlan.org/2008/10/16/flash-security-talk-in-portugal-this-november/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 07:52:10 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/10/16/flash-security-talk-in-portugal-this-november/</guid>
		<description><![CDATA[If you are serious about Flash security, and you want to find out more from a person who knows what he&#8217;s talking about (Peleus Uhley, Senior Security Researcher, Adobe), then you should attend these two sessions:

Flash Player Security
Auditing Flash Applications

]]></description>
			<content:encoded><![CDATA[<p>If you are serious about Flash security, and you want to find out more from a person who knows what he&#8217;s talking about (Peleus Uhley, Senior Security Researcher, Adobe), then you should attend these two sessions:</p>
<ul>
<li><a href="http://www.owasp.org/index.php/OWASP_EU_Summit_2008_Training#Flash_Player_Security" onclick="javascript:pageTracker._trackPageview('a/http://www.owasp.org/index.php/OWASP_EU_Summit_2008_Training#Flash_Player_Security');" target="_blank">Flash Player Security</a></li>
<li><a href="http://www.owasp.org/index.php/OWASP_EU_Summit_2008_Training#Auditing_Flash_Applications" onclick="javascript:pageTracker._trackPageview('a/http://www.owasp.org/index.php/OWASP_EU_Summit_2008_Training#Auditing_Flash_Applications');" target="_blank">Auditing Flash Applications</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520534" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/10/16/flash-security-talk-in-portugal-this-november/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/10/16/flash-security-talk-in-portugal-this-november/</feedburner:origLink></item>
		<item>
		<title>Are you a freelancer, or consultant, or agency who has deep knowledge in Flash, Flex, AIR, FMS?</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520536/</link>
		<comments>http://corlan.org/2008/10/15/are-you-a-freelancer-or-consultant-or-agency-who-has-deep-knowledge-in-flash-flex-air-fms/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 13:48:22 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/10/15/are-you-a-freelancer-or-consultant-or-agency-who-has-deep-knowledge-in-flash-flex-air-fms/</guid>
		<description><![CDATA[We (I mean the Adobe Evangelists based in Europe) are extremely interested in creating a list with:

Consultants
Certified Trainers
Certified Professionals
Agencies/Companies

that have good knowledge in one or many:

Flex
AIR
Flash
LCDS/BlazeDS or other technologies designed to work with Flex
FMS

and are located in Central or Eastern Europe. 
If you are qualifying to this criteria and you want for free to grow [...]]]></description>
			<content:encoded><![CDATA[<p>We (I mean the Adobe Evangelists based in Europe) are extremely interested in creating a list with:</p>
<ul>
<li>Consultants</li>
<li>Certified Trainers</li>
<li>Certified Professionals</li>
<li>Agencies/Companies</li>
</ul>
<p>that have good knowledge in one or many:</p>
<ul>
<li>Flex</li>
<li>AIR</li>
<li>Flash</li>
<li>LCDS/BlazeDS or other technologies designed to work with Flex</li>
<li>FMS</li>
</ul>
<p>and are located in <strong>Central </strong>or<strong> Eastern Europe. </strong></p>
<p>If you are qualifying to this criteria and you want for free to grow your awareness and probably your business, please contact me either by email (mihai.corlan at adobe dot com or mihai at corlan dot org) or by placing a comment to this post.</p>
<p>LATER UPDATE</p>
<p>Some reader asked some interesting questions:</p>
<ul>
<li>there is Adobe Developer Connect that offers a way for registering</li>
<li>what privacy policy it is applied</li>
<li>how we will share this list, spam</li>
</ul>
<p>I definetely encourage each and every one of you to go to Adobe Developer Connect and register there. But, if you are from Eastern Europe, and you are a company or person who has the skills I&#8217;ve asked, then I think definetely worth to send me some basic contact info at least.</p>
<p>Regarding the privacy policy and how we intend to share this. I want to talk with each person who will sign up to this program. After we talk and understand exactly what are their skills, I will ask for their permission to recommend them to other persons who are interested in finding people with their skills. I mean, I talk and I meet many people. And sometime I get this question if I know a good Romanian, or Bulgarian,&#8230; to recommend for a project involving Video Streaming, or Java and LCDS or something else. So if you don&#8217;t want to be recommend it by me or by my colleagues, there is no problem. Don&#8217;t send me any contact info.</p>
<p>I hope this clarification helped.</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520536" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/10/15/are-you-a-freelancer-or-consultant-or-agency-who-has-deep-knowledge-in-flash-flex-air-fms/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/10/15/are-you-a-freelancer-or-consultant-or-agency-who-has-deep-knowledge-in-flash-flex-air-fms/</feedburner:origLink></item>
		<item>
		<title>Flash Player 10, Creative Suite 4 and InContext Editing are out</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520537/</link>
		<comments>http://corlan.org/2008/10/15/flash-player-10-creative-suite-4-and-inecontext-editing-are-out/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 13:36:18 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/10/15/flash-player-10-creative-suite-4-and-inlinecontext-editing-are-out/</guid>
		<description><![CDATA[Finally we can play with the release version of Flash Player 10 (this is a major release as it introduces a bunch of new capabilities: new text engine, pixel bender, 3D transformations, GPU acceleration for graphics and sound, and many more), you can buy Creative Suite 4 and you can try InContext Editing for the [...]]]></description>
			<content:encoded><![CDATA[<p>Finally we can play with the release version of <a href="http://www.adobe.com/products/flashplayer/" onclick="javascript:pageTracker._trackPageview('a/http://www.adobe.com/products/flashplayer/');" target="_blank">Flash Player 10</a> (this is a major release as it introduces a bunch of new capabilities: new text engine, pixel bender, 3D transformations, GPU acceleration for graphics and sound, and many more), you can buy <a href="http://www.adobe.com" onclick="javascript:pageTracker._trackPageview('a/http://www.adobe.com');" target="_blank">Creative Suite 4</a> and you can try InContext Editing for the first time for free.</p>
<p>I want to talk just a little bit about <a href="http://incontextediting.adobe.com/" onclick="javascript:pageTracker._trackPageview('a/http://incontextediting.adobe.com/');" target="_blank">InContext Editing</a>, because it is a new product and I know many of the people behind this project. Also, I think it is really, really cool. Did I mention about that its user interface uses Flex?</p>
<p>So what is InContext Editing?</p>
<p>Basically, it is a way for normal people to be able to edit their sites. The workflow to get a site that can be edited directly in the browser is:</p>
<ol>
<li>Developer/Designer creates a site using Dreamweaver CS4, and establishes the regions that can be edited</li>
<li>The site is deployed on the production server</li>
<li>Developer/Designer registers the site with the InContext Editing service. Site owners can then make changes to the site themselves.</li>
</ol>
<p>There are some advantages to this approach compared to the classic workflow for changing an existent static site or to complex CMS used for a simple website:</p>
<ol>
<li>The owner of the site doesn&#8217;t need to call its web designer each time she wants to update the business phone number</li>
<li>The designer doesn&#8217;t need to pause his current work just to change a basic information. Even a simple change can take an hour (searching for the client website, search for FTP credentials, make the change and so on), and the owner of the site will not believe that he is charged for one hour of work.</li>
<li>Finally, for many simple websites a complete CMS (such as Drupal) is to complex to administer for this kind of user.</li>
</ol>
<p>For the coming months this service is free, so you can try it wherever you are <img src='http://corlan.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> If you want to read more about this new service, go <a href="http://incontextediting.adobe.com/" onclick="javascript:pageTracker._trackPageview('a/http://incontextediting.adobe.com/');" target="_blank">here</a>. I will write a dedicated article on this topic in the coming days.</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520537" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/10/15/flash-player-10-creative-suite-4-and-inecontext-editing-are-out/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/10/15/flash-player-10-creative-suite-4-and-inecontext-editing-are-out/</feedburner:origLink></item>
		<item>
		<title>My nightmare Monday, thanks to Godaddy</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520539/</link>
		<comments>http://corlan.org/2008/10/13/my-nightmare-monday-thanks-to-godaddy/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 15:02:44 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/10/13/my-nightmare-monday-thanks-to-godaddy/</guid>
		<description><![CDATA[LATER UPDATE: With the help of Adam Fendelman, I came to an agreement with Godaddy: I manage to retrieve all the data, they refund me the money. As regarding the hosting, I continue with them. While I am not happy with what happen, I am happy that we could understand each others in the end. [...]]]></description>
			<content:encoded><![CDATA[<p>LATER UPDATE: With the help of Adam Fendelman, I came to an agreement with Godaddy: I manage to retrieve all the data, they refund me the money. As regarding the hosting, I continue with them. While I am not happy with what happen, I am happy that we could understand each others in the end. Thanks to all for their support, and special ones goes to Adam.</p>
<p>Monday morning is probably not a happy time for most people. Maybe you partied all weekend, or you stayed up late to read your favorite novel for the third time . But I highly doubt Monday is a nightmare either. At least for 99.9999% of the people. Well, this Monday, I am one of the 0,0001% of the people thanks to godaddy.com.</p>
<p>My blog has been hosted there from the first day &#8212; and so are <a href="http://miti.pricope.com" onclick="javascript:pageTracker._trackPageview('a/http://miti.pricope.com');" target="_blank">Miti’s blog</a> and <a href="http://www.cornelcreanga.com" onclick="javascript:pageTracker._trackPageview('a/http://www.cornelcreanga.com');" target="_blank">Cornel’s blog</a>. Everything was fine until three or four weeks ago, when I received an email that I exceeded my disk quota. Since I have 150 GB of storage and use the account only for three blogs this was a surprise for me. I used FTP to looking at the folders. It seems one of the WordPress modules (the one for backup) was trying to do backups each day. So I deleted the files, and from that moment on I started to look every day or so for new files, just in case. That worked fine until ten days ago when I received an email from godaddy.com, stating:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">Dear Mihai Corlan,
Customer Number: xxxxxxxxxxxx

According to the terms of our agreement(s), we tried to bill your MasterCard card ending <span style="color: #0000ff;">in</span> the last two digits XX <span style="color: #0000ff;">in</span> the amount of $ 7062.01 <span style="color: #0000ff;">for</span> the item(s) below, but our billing attempt failed. This could be <span style="color: #0000ff;">for</span> a variety of reasons, including an invalid or expired credit card on file.

Product Name    Next Billing Date     Qty        Price
Hosting Fee - Additional 100 MB - Renewal    10/22/2008    874     $    5934.46
    Bandwidth/Diskspace <span style="color: #0000ff;">for</span> 10/02/2008. corlan.org</pre>
</div>
<p>You can imagine my heart was suddenly beating faster! How in the world could I owe more than $7000  to godaddy.com? I had paid for the deluxe plan for one year, so why? I tried to find out why they thought I owed them this money. I receive a response asking for the last four numbers of my credit card (but no explanation  of why they want to take this money).</p>
<p>This weekend they decided to block the account without any notice, phone call, or explanation. I called them, and they said to me that I have to pay this money because I exceeded the HDD quota.</p>
<p>Funny enough they have an account option called Unlimited (which cost $14 as opposed to my $7) that doesn’t have this limit of 150GB of HDD. So I spent a lot of time asking why they didn’t send me an alert the first time I exceeded the quota, instead of waiting for time to pass and accrue penalties of $7000. Also, I asked which files or folders were so big (“Sorry sir, but the account is blocked and I cannot tell you about the files”). I asked why they don’t send alerts when you first exceed the quota and all the common sense questions. They were polite, but basically they told me that because they have millions of clients they cannot send each one an email. As if in 2008 you have to have a person to check and write an email! Come on, you can hire a Perl programmer who will write you a script and add it as a cron job to check and send alerts wherever you want.</p>
<p>Eventually it became clear to me, that the problem would not be resolved. I told them there is no way to pay $7000 for something that I consider not my fault. I used to be a freelancer for many years; I worked with many hosting sites and never had this problem. Their system seems to be designed that way, just to make some extra money.</p>
<p>After more talking and calls, they offered me this deal: pay $800 for your data, and buy the next hosting plan and we&#8217;ll forget about the $7000, even if technically you owe us this money.</p>
<p>So that’s my story,. I still do not believe what happened to me. I spent all day trying to recover the data from Google cache and some old backups. Miti and Cornel are still working to get their blogs up and running.</p>
<p>Sorry for the lost comments, guys!</p>
<p>PS It seems this happened before to other people as well: <a title="http://www.huffingtonpost.com/adam-fendelman/why-i-dont-owe-godaddy-65_b_129276.html" href="http://www.huffingtonpost.com/adam-fendelman/why-i-dont-owe-godaddy-65_b_129276.html" onclick="javascript:pageTracker._trackPageview('a/http://www.huffingtonpost.com/adam-fendelman/why-i-dont-owe-godaddy-65_b_129276.html');" target="_blank">http://www.huffingtonpost.com/adam-fendelman/why-i-dont-owe-godaddy-65_b_129276.html</a></p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520539" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/10/13/my-nightmare-monday-thanks-to-godaddy/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/10/13/my-nightmare-monday-thanks-to-godaddy/</feedburner:origLink></item>
		<item>
		<title>Flex and PHP: remoting with AMFPHP</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520540/</link>
		<comments>http://corlan.org/2008/10/10/flex-and-php-remoting-with-amfphp/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 13:23:24 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/10/10/flex-and-php-remoting-with-amfphp/</guid>
		<description><![CDATA[Since I recently received some requests for a simple example on getting up to speed with Flex, PHP, and AMF, I decided to write a tutorial on this topic. I will show you how to do remote procedure calls from Flex to PHP classes using AMFPHP. Soon I will post an article on how to [...]]]></description>
			<content:encoded><![CDATA[<p>Since I recently received some requests for a simple example on getting up to speed with Flex, PHP, and AMF, I decided to write a tutorial on this topic. I will show you how to do remote procedure calls from Flex to PHP classes using AMFPHP. Soon I will post an article on how to do RPC using the Zend Framework and ZendAMF.</p>
<h3>What is AMFPHP and why should you use remoting?</h3>
<p>If you already know these answers, you may want to skip to the next section.<br />
Let’s start by understanding of remote procedure calls. Remote procedure calls let Flex applications  make direct calls on the methods of your server side classes. Using BlazeDS or LCDS you can expose your Java and ColdFusion classes to the Flex application. However, if you use PHP you need a third party library on the server to expose PHP classes directly. Existing solutions include ZendAMF, WebOrb, and AMFPHP. This article focuses on remoting with AMFPHP, which uses a binary protocol (AMF) to serialize the messages. Because it is binary, it is more efficient in terms of bandwidth and server processing load than JSON or XML methods. If you want to see for yourself, James Ward has put together a nice <a href="http://www.jamesward.com/census/" onclick="javascript:pageTracker._trackPageview('a/http://www.jamesward.com/census/');" target="_blank">benchmark</a>.</p>
<p>AMFPHP is a PHP open source library that knows how to serialize and deserialize the AMF protocol, and thus lets you expose PHP classes to Flex applications. Another compelling reason for using remoting is code reuse. Because you can call methods on PHP classes and these methods can return PHP objects, you don’t have to modify your existing code to output JSON or XML.</p>
<p>As I said earlier, AMFPHP remoting uses AMF for serializing messages between the server and Flex client. And it offers a nice feature to map an ActionScript class to a PHP class. For example, suppose you want to display in Flex the information from a table with the following structure:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">contacts
-------------------------------
id      primary key <span style="color: #0000ff;">int</span>
name    varchar(255)
email   varchar(255)</pre>
</div>
<p>When using remoting, you create an ActionScript class to model this data in the client and a PHP class to model the same data on the server. When you create the PHP class that you want to call from Flex, you add a method that, for example, retrieves all the contacts from the table. This method will return an array of PHP model classes. This is what you need to do. And in Flex you will get an array of ActionScript objects. All the conversions from PHP to AMF format and from AMF format to ActionScript objects are done automatically for you by  Flex and AMFPHP.</p>
<p>When you use XML or JSON for remoting, usually you need extra steps in Flex to process the data in order to display or store it.</p>
<p>Let’s look at a working example.</p>
<h3>Step 1: Install the AMFPHP and understand its structure</h3>
<p>While it is not hard to create a Flex application that makes RPCs using AMFPHP, I found some possible glitches when you do it for the first time. If you missed something, you will end up with errors such as:</p>
<ul>
<li>the array you retrieve in Flex is not of your type, but a generic object</li>
<li>in PHP you don’t get a PHP VO class as an argument when you call a method, but an associative array</li>
</ul>
<p>It is my intention to explain all the small things you need to take care of, so you can get it right.<br />
First grab the AMFPHP library archive, unzip it somewhere on your machine and then copy the amfphp folder on your PHP webserver. From now on, I will refer to this folder as the installation folder. On my machine this folder is c:/htdocs/amfphp and the URL is http://localhost/amfphp.</p>
<p>If you open this folder you will notice a folder named “browser”. When you open this folder in your browser  (on my machine http://localhost/amfphp/browser) you will get a Flex application that lets you test all the exposed PHP classes:</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/10/amfphp-1.png" ><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://corlan.org/wp-content/uploads/2008/10/amfphp-1-thumb.png" border="0" alt="AMFPHP: Browser service" width="240" height="188" /></a></p>
<p>Beside this folder, there is “services” folder. This is very important. In the “services” folder you need to place all the PHP classes you want to expose to Flex code. Also, all the PHP Value Object classes you want to use for modeling the data must be inside the folder “services/vo/” + &lt;the package name as folders&gt; For example if you have the ActionScript class org.corlan.VOAuthor and you want to map to a PHP class with the same name, then the PHP class should be in “services/vo/org/corlan/VOAuthor.php”.</p>
<p>These are the default configurations for AMFPHP. If you don’t like them you can open the globals.php file from inside of the installation folder and make changes.</p>
<h3>Step 2: Create the PHP code</h3>
<p>Let’s create a small PHP class that does two things:</p>
<ol>
<li>Reads and returns all the records from a table</li>
<li>Offers a method to update one record</li>
</ol>
<p>I use MySQL, and the table creation SQL is as follows:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">CREATE TABLE `authors_aut` (
  `id_aut` <span style="color: #0000ff;">int</span>(11) NOT NULL auto_increment,
  `fname_aut` varchar(255) NOT NULL,
  `lname_aut` varchar(255) <span style="color: #0000ff;">default</span> NULL,
  PRIMARY KEY  (`id_aut`),
  UNIQUE KEY `fname_aut` (`fname_aut`,`lname_aut`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Dumping data <span style="color: #0000ff;">for</span> table `authors_aut`
-- 

INSERT INTO `authors_aut` VALUES (1, <span style="color: #006080;">'Dantes'</span>, <span style="color: #006080;">'Alighierie'</span>);
INSERT INTO `authors_aut` VALUES (4, <span style="color: #006080;">'Niccolo'</span>, <span style="color: #006080;">'Machiavelli'</span>);
INSERT INTO `authors_aut` VALUES (3, <span style="color: #006080;">'Umberto'</span>, <span style="color: #006080;">'Eco'</span>);
INSERT INTO `authors_aut` VALUES (2, <span style="color: #006080;">'William'</span>, <span style="color: #006080;">'Shakespeare'</span>);</pre>
</div>
<p>So I create a PHP file inside the amf/service/ folder called MyService.php. Inside of this file I create a PHP class with two methods: getData() and saveData(). The complete code is here:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; height: 249px; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">&lt;?php
require_once (<span style="color: #006080;">'./vo/org/corlan/VOAuthor.php'</span>);

<span style="color: #008000;">//conection info</span>
define( <span style="color: #006080;">"DATABASE_SERVER"</span>, <span style="color: #006080;">"localhost"</span>);
define( <span style="color: #006080;">"DATABASE_USERNAME"</span>, <span style="color: #006080;">"mihai"</span>);
define( <span style="color: #006080;">"DATABASE_PASSWORD"</span>, <span style="color: #006080;">"mihai"</span>);
define( <span style="color: #006080;">"DATABASE_NAME"</span>, <span style="color: #006080;">"flex360"</span>);

<span style="color: #0000ff;">class</span> MyService {

    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> getData() {
        <span style="color: #008000;">//connect to the database.</span>
        $mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);
        mysql_select_db(DATABASE_NAME);
        <span style="color: #008000;">//retrieve all rows</span>
        $query = <span style="color: #006080;">"SELECT id_aut, fname_aut, lname_aut FROM authors_aut ORDER BY fname_aut"</span>;
        $result = mysql_query($query);

        $ret = array();
        <span style="color: #0000ff;">while</span> ($row = mysql_fetch_object($result)) {
            $tmp = <span style="color: #0000ff;">new</span> VOAuthor();
            $tmp-&gt;id_aut = $row-&gt;id_aut;
            $tmp-&gt;fname_aut = $row-&gt;fname_aut;
            $tmp-&gt;lname_aut = $row-&gt;lname_aut;
            $ret[] = $tmp;
        }
        mysql_free_result($result);
        <span style="color: #0000ff;">return</span> $ret;
    }

    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> saveData($author) {
        <span style="color: #0000ff;">if</span> ($author == NULL)
            <span style="color: #0000ff;">return</span> NULL;
        <span style="color: #008000;">//connect to the database.</span>
        $mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);
        mysql_select_db(DATABASE_NAME);
        <span style="color: #008000;">//save changes</span>
        $query = <span style="color: #006080;">"UPDATE authors_aut SET fname_aut='"</span>.$author-&gt;fname_aut.<span style="color: #006080;">"', lname_aut='"</span>.$author-&gt;lname_aut.<span style="color: #006080;">"' WHERE id_aut="</span>.  $author-&gt;id_aut;
        $result = mysql_query($query);
        <span style="color: #0000ff;">return</span> NULL;
    }
}
?&gt;</pre>
</div>
<p>The code is pretty simple. No abstract database layer, just the simplest PHP code to make something useful.</p>
<p>As you can see in the above code, I used the VOAuthor PHP class. So, now it’s time to create this class (this class models one row from the table). Basically this class will have one field for each row of the table (I will keep the name of the fields similar to the table fields) and an extra field that tells AMFPHP how to serialize the class when sending back the message. Let’s see the code and then I will explain a little more about this field:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">&lt;?php
<span style="color: #0000ff;">class</span> VOAuthor {

    <span style="color: #0000ff;">public</span> $id_aut;
    <span style="color: #0000ff;">public</span> $fname_aut;
    <span style="color: #0000ff;">public</span> $lname_aut;

    <span style="color: #008000;">// explicit actionscript class</span>
    <span style="color: #0000ff;">var</span> $_explicitType = <span style="color: #006080;">"org.corlan.VOAuthor"</span>;
}
?&gt;</pre>
</div>
<p>The extra field is $_explicitType, and its value is the fully qualified ActionScript Value Object I intend to use in the Flex application to model the data. If you don’t configure this field correctly, then in the Flex app you will not get your strongly typed ActionScript class, but a dynamic object.</p>
<p><strong>Important!</strong> Make sure you do not add empty spaces or other chars after the PHP closing tag. If you leave extra chars, the output buffer will be flushed and the message that AMFPHP sends to the Flex client will not be correctly formatted.</p>
<p>If you go back to the browser service of AMFPHP, you can try the code &#8212; select the getData method and click the Call button. You should get an array of objects.</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/10/amfphp-2.png" ><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://corlan.org/wp-content/uploads/2008/10/amfphp-2-thumb.png" border="0" alt="Testing the service" width="240" height="225" /></a></p>
<h3>Step 3: Create the Flex project</h3>
<p>We have all the PHP code in place, it is time to create the Flex application. First step is to create a Flex project using the PHP server type (you can read <a href="http://www.adobe.com/devnet/flex/articles/flex_php.html?devcon=f1" onclick="javascript:pageTracker._trackPageview('a/http://www.adobe.com/devnet/flex/articles/flex_php.html?devcon=f1');" target="_blank">here</a> an article I wrote on how to create Flex and PHP projects if you want to find more tips and tricks). This is the first page of the wizard:</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/10/amfphp-3.png" ><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://corlan.org/wp-content/uploads/2008/10/amfphp-3-thumb.png" border="0" alt="Creating the Flex project" width="230" height="240" /></a></p>
<p>Click &#8220;Next&#8221; and then &#8220;Finish&#8221;.</p>
<h3>Step 4: Create the ActionScript code</h3>
<p>Now let’s create the ActionScript value object class, VOAuthor. Right click on the “src” folder and choose New &gt; ActionScript class (make sure you enter the package name):</p>
<p><a href="http://corlan.org/wp-content/uploads/2008/10/amfphp-4.png" ><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://corlan.org/wp-content/uploads/2008/10/amfphp-4-thumb.png" border="0" alt="amfphp_4" width="206" height="240" /></a></p>
<p>The code for this class is:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">package org.corlan {

    [RemoteClass(alias=<span style="color: #006080;">"org.corlan.VOAuthor"</span>)]
    [Bindable]
    <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span> VOAuthor {

        <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">var</span> id_aut:<span style="color: #0000ff;">int</span>;
        <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">var</span> fname_aut:String;
        <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">var</span> lname_aut:String;
    }
}</pre>
</div>
<p>How does Flex know to serialize the ActionScript VOAuthor class to the PHP VOAuthor? Because of the tag RemoteClass. Here you enter the name of the PHP class you want to use and the path from the “amfphp/vo/” to the class as the package name. Thus I end up with “org.corlan.VOAuthor”.</p>
<p>It is time to put all these together and create the ActionScript code that makes the call to the PHP class and displays the info. For this, open the php_amf.mxlm file if it isn’t already open and add this code:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; height: 382px; background-color: #f4f4f4; max-height: 200px;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">&lt;?xml version=<span style="color: #006080;">"1.0"</span> encoding=<span style="color: #006080;">"utf-8"</span>?&gt;
&lt;mx:Application xmlns:mx=<span style="color: #006080;">"http://www.adobe.com/2006/mxml"</span> layout=<span style="color: #006080;">"absolute"</span>&gt;
    &lt;mx:Script&gt;
        &lt;![CDATA[
            import mx.controls.dataGridClasses.DataGridColumn;
            import mx.events.DataGridEvent;
            import org.corlan.VOAuthor;
            import mx.controls.Alert;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            import mx.collections.ArrayCollection;

            <span style="color: #008000;">/**</span>
<span style="color: #008000;">             * This function is called when an item was edited in the data grid.</span>
<span style="color: #008000;">             * Calls the saveData() method on the PHP server </span>
<span style="color: #008000;">             */</span>
            <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">function</span> save(<span style="color: #0000ff;">event</span>:DataGridEvent):<span style="color: #0000ff;">void</span> {
                <span style="color: #0000ff;">var</span> dataGrid:DataGrid = <span style="color: #0000ff;">event</span>.target <span style="color: #0000ff;">as</span> DataGrid;
                <span style="color: #0000ff;">var</span> dsColumnIndex:Number = <span style="color: #0000ff;">event</span>.columnIndex;
                <span style="color: #0000ff;">var</span> col:DataGridColumn = dataGrid.columns[dsColumnIndex];
                <span style="color: #0000ff;">var</span> newValue:String = dataGrid.itemEditorInstance[col.editorDataField];
                <span style="color: #0000ff;">var</span> dsFieldName:String = <span style="color: #0000ff;">event</span>.dataField;
                <span style="color: #0000ff;">var</span> author:VOAuthor = <span style="color: #0000ff;">event</span>.itemRenderer.data <span style="color: #0000ff;">as</span> VOAuthor;
                <span style="color: #0000ff;">if</span> (newValue == author[dsFieldName])
                    <span style="color: #0000ff;">return</span>;
                <span style="color: #008000;">//get the new value for the first name or last name</span>
                author[dsFieldName] = newValue;
                myRemote.saveData(author);
            }
        ]]&gt;
    &lt;/mx:Script&gt;
    &lt;!-- <span style="color: #0000ff;">this</span> <span style="color: #0000ff;">is</span> the RemoteObject  used to make the RPC calls --&gt;
    &lt;mx:RemoteObject id=<span style="color: #006080;">"myRemote"</span> destination=<span style="color: #006080;">"MyService"</span> source=<span style="color: #006080;">"MyService"</span>
            endpoint=<span style="color: #006080;">"http://localhost/amfphp/gateway.php"</span> showBusyCursor=<span style="color: #006080;">"true"</span>/&gt;

    &lt;mx:VBox top=<span style="color: #006080;">"30"</span> left=<span style="color: #006080;">"100"</span>&gt;
        &lt;mx:Button label=<span style="color: #006080;">"Get data"</span> click=<span style="color: #006080;">"{myRemote.getData()}"</span> /&gt;
        &lt;mx:DataGrid id=<span style="color: #006080;">"myGrid"</span> dataProvider=<span style="color: #006080;">"{myRemote.getData.lastResult}"</span> editable=<span style="color: #006080;">"true"</span> itemEditEnd=<span style="color: #006080;">"save(event)"</span>&gt;
            &lt;mx:columns&gt;
                &lt;mx:DataGridColumn dataField=<span style="color: #006080;">"id_aut"</span> editable=<span style="color: #006080;">"false"</span>/&gt;
                &lt;mx:DataGridColumn dataField=<span style="color: #006080;">"fname_aut"</span>/&gt;
                &lt;mx:DataGridColumn dataField=<span style="color: #006080;">"lname_aut"</span>/&gt;
            &lt;/mx:columns&gt;
        &lt;/mx:DataGrid&gt;
    &lt;/mx:VBox&gt;
&lt;/mx:Application&gt;</pre>
</div>
<p>For remoting, Flex uses RemoteObject. As you can see in my code, I create one instance of this object. Then I configure the endpoint to work with AMFPHP and the PHP class (MyService). For this I add the URL to the gateway.php file as the value of the attribute endpoint, and I set MyService as the value of the destination and source attributes.</p>
<p>The UI of the application is very simple: a button to call the getData() method from the server and a data grid for displaying and editing the data. The binding between the data retrieved from the server and the data grid is done directly on the data grid using the property lastResult: dataProvider=”{myRemote.getData.lastResult}”.</p>
<p>There is an event listener registered on the data grid for the event of ending the editing of a cell. Inside this event listener, I call the saveData() method using the instance of the currently edited Value Object.</p>
<h3>Final words</h3>
<p>That&#8217;s it folks! If you are too lazy to set up the project and copy and the code, you can download the project from <a href="http://corlan.org/downloads/php_amf.zip" onclick="javascript:pageTracker._trackPageview('a/downloads/php_amf.zip');" target="_blank">here</a>. Read the readme.txt after you import the project in Flex Builder using the Import wizard &gt; Flex Builder. I will post another article on ZendAMF soon. See you!</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520540" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/10/10/flex-and-php-remoting-with-amfphp/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/10/10/flex-and-php-remoting-with-amfphp/</feedburner:origLink></item>
		<item>
		<title>Webstock Romania</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520541/</link>
		<comments>http://corlan.org/2008/10/06/webstock-romania/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 13:26:56 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/10/06/webstock-romania/</guid>
		<description><![CDATA[Last Friday I gave a talk to Webstock Romania event. I was one of the four guests to talk in something like an open discussion with the audience about Web 2.0, and specifically about Web 2.0 in Romania. My fellow Andrew gave a nice session about AIR and &#8220;10 AIR apps you can&#8217;t leave without&#8221;.
There [...]]]></description>
			<content:encoded><![CDATA[<p>Last Friday I gave a talk to <a href="http://www.webstock.ro/" onclick="javascript:pageTracker._trackPageview('a/http://www.webstock.ro/');" target="_blank">Webstock</a> Romania event. I was one of the four guests to talk in something like an open discussion with the audience about Web 2.0, and specifically about Web 2.0 in Romania. My fellow <a href="http://www.ashorten.com/" onclick="javascript:pageTracker._trackPageview('a/http://www.ashorten.com/');" target="_blank">Andrew</a> gave a nice session about AIR and &#8220;10 AIR apps you can&#8217;t leave without&#8221;.</p>
<p>There were about 250-300 people and it seems there were a mix of developers, entrepreneurs, and marketing people. Still many of them heard about AIR and they loved the AIR apps demoed. Because of this mix, of course the discussions were not for hardcore developers, but more &#8220;philosophical&#8221;. Of course many people use Tweeter and some of them they posted right from the event.</p>
<p>All in all, it was a pleasure to be there and I am really curious how it will be the next year.</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520541" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/10/06/webstock-romania/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/10/06/webstock-romania/</feedburner:origLink></item>
		<item>
		<title>Flex, AMF, PHP and Zend Framework</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520543/</link>
		<comments>http://corlan.org/2008/09/24/flex-amf-php-and-zend-framework/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 16:49:57 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/09/24/flex-amf-php-and-zend-framework/</guid>
		<description><![CDATA[If you missed the last week announcements coming from Adobe and Zend, then you might want to read this post. 
Basically, the two companies announced a join effort to make easier the developing of PHP applications with Flex frontends.The two companies will deliver technologies, content and services to make it easy for enterprise developers to [...]]]></description>
			<content:encoded><![CDATA[<p>If you missed the last week announcements coming from Adobe and Zend, then you might want to read this post. </p>
<p>Basically, the two companies announced a join effort to make easier the developing of PHP applications with Flex frontends.The two companies will deliver technologies, content and services to make it easy for enterprise developers to build rich Internet applications (RIAs) using Flex on the client and PHP on the server.</p>
<p>Part of this joined effort, are the support for AMF in the Zend Framework, a better experience for developers when working with Flex Builder and Zend Studio (both these IDEs are build on top of Eclipse).</p>
<p>My recent article from Adobe Developer Connection, <a href="http://www.adobe.com/devnet/flex/articles/flex_php.html?devcon=f1" onclick="javascript:pageTracker._trackPageview('a/http://www.adobe.com/devnet/flex/articles/flex_php.html?devcon=f1');" target="_blank">Working with Flex and PHP in Eclipse</a>, shows the things and some workarounds you can do today. I expect a much better experience in the near future and I plan to write back and to record some videos on this subject. <a href="http://www.zend.com/en/company/news/press/zend-to-collaborate-with-adobe" onclick="javascript:pageTracker._trackPageview('a/http://www.zend.com/en/company/news/press/zend-to-collaborate-with-adobe');" target="_blank">Here</a> is a link to the original announcement.</p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520543" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/09/24/flex-amf-php-and-zend-framework/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/09/24/flex-amf-php-and-zend-framework/</feedburner:origLink></item>
		<item>
		<title>A chance to win a trip to Adobe MAX San Francisco 2008</title>
		<link>http://feeds.feedburner.com/~r/corlan/~3/450520545/</link>
		<comments>http://corlan.org/2008/09/23/a-chance-to-win-a-trip-to-adobe-max-san-francisco-2008/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 10:24:32 +0000</pubDate>
		<dc:creator>Mihai Corlan</dc:creator>
		
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://corlan.org/2008/09/23/a-chance-to-win-a-trip-to-adobe-max-san-francisco-2008/</guid>
		<description><![CDATA[If you want to go to MAX San Francisco and you don&#8217;t have a ticket, maybe you can win one. Here is the press release from ZIO Pro:
&#8220;&#8221;NEW YORK, New York – September 11th, 2008. Adobe Systems, the leading creative software company, and ZIO Pro, the new media network for creative professionals, are offering an [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to go to MAX San Francisco and you don&#8217;t have a ticket, maybe you can win one. Here is the press release from ZIO Pro:</p>
<p>&#8220;&#8221;NEW YORK, New York – September 11th, 2008. Adobe Systems, the leading creative software company, and ZIO Pro, the new media network for creative professionals, are offering an exclusive opportunity to send a Creative or IT Director to Adobe’s MAX 2008 conference in San Francisco.
<p>Registrants will be entered for a chance to win a trip to Adobe MAX 2008 in San Francisco.&nbsp; The winner will receive a free all access pass to the even as well as free air travel to San Francisco and free hotel stay.&nbsp; No obligation and no credit card information necessary.
<p>In addition, every registrant for the contest will get access to a 30 Day 10 Seat software training license for their team - absolutely free – including full length training courses on Dreamweaver CS3, Flash CS3, and Photoshop CS3. Every qualified registrant will also receive a free e-Book – ‘Adobe Air with Ajax’ or ‘Presentation Zen’.&#8221;
<p>To register for this limited time offer:<br />IT Directors/Managers can go <a href="http://www.zoom-in.com/promo/30daytrial-usergroups.html?utm_source=press_release&amp;utm_medium=IT&amp;utm_campaign=adobe" onclick="javascript:pageTracker._trackPageview('a/http://www.zoom-in.com/promo/30daytrial-usergroups.html?utm_source=press_release&amp;utm_medium=IT&amp;utm_campaign=adobe');" target="_blank">here</a>. <br />Creative Directors/Managers can go <a href="http://www.zoom-in.com/promo/30daytrial-creative.html?utm_source=press_release&amp;utm_medium=creative&amp;utm_campaign=adobe" onclick="javascript:pageTracker._trackPageview('a/http://www.zoom-in.com/promo/30daytrial-creative.html?utm_source=press_release&amp;utm_medium=creative&amp;utm_campaign=adobe');" target="_blank">here</a>.
<p>Good luck <img src='http://corlan.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
<img src="http://feeds.feedburner.com/~r/corlan/~4/450520545" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://corlan.org/2008/09/23/a-chance-to-win-a-trip-to-adobe-max-san-francisco-2008/feed/</wfw:commentRss>
		<feedburner:origLink>http://corlan.org/2008/09/23/a-chance-to-win-a-trip-to-adobe-max-san-francisco-2008/</feedburner:origLink></item>
		<item>
		<title>Z