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

<channel>
	<title>Just Flex &#187; Flex</title>
	<atom:link href="http://olehfilipchuk.com/category/flash-platform/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://olehfilipchuk.com</link>
	<description>another technology blog</description>
	<lastBuildDate>Sun, 25 Jul 2010 20:52:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>unload you module</title>
		<link>http://olehfilipchuk.com/2009/07/24/unload-you-module/</link>
		<comments>http://olehfilipchuk.com/2009/07/24/unload-you-module/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 09:23:34 +0000</pubDate>
		<dc:creator>justversus</dc:creator>
				<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Garbage Collector]]></category>

		<guid isPermaLink="false">http://olegfilipchuk.com/?p=46</guid>
		<description><![CDATA[If you are using modules in your application sooner or later you will get some nice memory leaks, 100% guarantee. It's "simples", not much effort required, just add TextInput to your module. The FocusManager keeps references to all focusable components in private focusableCandidates property (SDK 3.4.0). When you are trying to unload your module, the [...]]]></description>
			<content:encoded><![CDATA[<p>If you are using modules in your application sooner or later you will get some nice memory leaks, 100% guarantee. It's <a href="http://comparethemeerkat.com/my-movies" target="_blank">"simples"</a>, not much effort required, just add TextInput to your module. The FocusManager keeps references to all focusable components in private focusableCandidates property (SDK 3.4.0). When you are trying to unload your module, the FocusManager doesn't revalidate the list of focusable candidates leaving references to one or more components owned by the module. Unless you explicitly set focus to any other TextInput outside the module before actually invoking unload procedure, the module will never get garbage collected introducing some nice source of memory leaks.</p>
<p><a href="https://bugs.adobe.com/jira/browse/SDK-22381"> The issue has already been reported to Adobe Jira</a> by my colleague from the previous project. The bug exists in Flex SDK 3.4.0 and 4.0.0 as well.</p>
<p>I assume you vote to prioritize this issue as it is very serious bug stopping any developer from utilizing modular infrastructure in flex applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://olehfilipchuk.com/2009/07/24/unload-you-module/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>name and shame</title>
		<link>http://olehfilipchuk.com/2009/05/18/name-and-shame/</link>
		<comments>http://olehfilipchuk.com/2009/05/18/name-and-shame/#comments</comments>
		<pubDate>Mon, 18 May 2009 14:40:01 +0000</pubDate>
		<dc:creator>justversus</dc:creator>
				<category><![CDATA[Bitter by Adobe]]></category>
		<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://olegfilipchuk.com/?p=35</guid>
		<description><![CDATA[Here we go, Flex Builder has died. The mistake has been made, we’ve done a step back in RIA wars, 1 point to Microsoft and Silverlight with their consistent tool naming and development concept. Adobe – well done, let’s scare off all the guys from Java, .NET, Ruby and PHP world who had/will have some [...]]]></description>
			<content:encoded><![CDATA[<p>Here we go, Flex Builder has died.</p>
<p>The mistake has been made, we’ve done a step back in RIA wars, 1 point to Microsoft and Silverlight with their consistent tool naming and development concept. Adobe – well done, let’s scare off all the guys from Java, .NET, Ruby and  PHP world who had/will have some interest in developing with Flex/ActionScript, with that new ‘ueber-kool’ Flash Builder nonsense.</p>
<p>Big caliber Flash guys like <a href="http://www.webkitchen.be/2009/05/16/next-version-of-flex-builder-will-be-named-flash-builder-4/" target="_blank">Serge Jespers</a>, <a href="http://theflashblog.com/?p=993" target="_blank">Lee Brimelow</a>, <a href="http://technoracle.blogspot.com/2009/05/next-flex-builder-product-renamed-to.html" target="_blank">Duane Nickull</a>, <a href="http://www.flashmobileblog.com/2009/05/16/announcing-flash-builder-4/">Mark Doherty</a>, <a href="http://www.buntel.com/blog/index.cfm/2009/5/16/Gumbo-will-be-Flash-Builder-4--but-you-already-know-that" target="_blank">Tim Buntel</a> or <a href="http://blog.digitalbackcountry.com/2009/05/flex-builder-gumbo-is-being-renamed-flash-builder/" target="_blank">Ryan Stewart</a> sing odes to the coolness of new name, but they are all missing one important point – it’s not about developers with flash background anymore. There are too few of us, but millions of Java and .NET developers, and they actually matter. And those developers need to be converted and persuaded to use Flex not vice versa. They could be potentially interested in this new thingy called Flex but that ridiculous new name will just scare them off.</p>
<p>Guys, especially Adobe Evangelists, stop repeating the same old mantra about Flash Platform and Flex SDK and actually name the tools properly from the beginning.</p>
<p>The actual comments that I’ve heard today in the office:</p>
<p>What tool will I need to use if I want to create Flex/ActionScript application? Will it be Flash or Flash Professional, or Flash Catalyst or maybe Flash Builder and why is the word flash everywhere?</p>
<p>Flash is highly associated with animation and stupid banners so for most of new developers (read Java, C# and .NET in general) it sounds as the tool for annoying banners or skip intro productions. And do not tell me that they have no clue about what flash platform actually is and they have to attend ”what is flash” seminars (say hello to <a href="http://tom.krcha.com/" target="_blank">Tom Krcha</a>) – this is Adobe's responsibility to name its tools properly and market it reasonably.</p>
<p>The word Flash has really bad historical luggage of being stupid banner/skip intro production tool and just can not be seriously considered in financial/enterprise world. Adobe has to get rid of Flash Player's name and change it to something more serious,  e.g. Flash Runtime.</p>
<p>It’s not a big deal after all - it's just a name. But on the other side it’s a huge waste of resources on marketing, rebranding, promoting etc. Those resources could be used to develop IDE that works like Visual Studio or IntelliJ IDEA.</p>
<p>But never mind, maybe in next life there will be some decent quality Flex/ActionScript IDE properly named.</p>
<p>Update: Very interesting post on this topic by <a href="http://riapriority.com/en/blogs/index.php/constantiner/flex-builder-is-now-flash-builder" target="_blank">Konstantin Kovalev</a></p>
]]></content:encoded>
			<wfw:commentRss>http://olehfilipchuk.com/2009/05/18/name-and-shame/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>clean up your garbage</title>
		<link>http://olehfilipchuk.com/2009/03/15/clean-up-your-garbage/</link>
		<comments>http://olehfilipchuk.com/2009/03/15/clean-up-your-garbage/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 21:35:35 +0000</pubDate>
		<dc:creator>justversus</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Garbage Collector]]></category>
		<category><![CDATA[IDisposable]]></category>

		<guid isPermaLink="false">http://olegfilipchuk.com/?p=19</guid>
		<description><![CDATA[We don't live in an ideal world where flash player's garbage collector understands our brilliant ideas and our incredibly genius way of coding flex applications. As you may already know, using weak event listeners with modules and pop-ups often results in memory leaks. It's really painful to fully remove modules from memory if in-line styles, [...]]]></description>
			<content:encoded><![CDATA[<p>We don't live in an ideal world where flash player's garbage collector understands our brilliant ideas and our incredibly genius way of coding flex applications.<br />
As you may already know, using weak event listeners with modules and pop-ups often results in memory leaks. It's really painful to fully remove modules from memory if in-line styles, effects or focus enabled controls are present in the module.<br />
Unfortunately, it's all up to the individual developer. Here in Lab49 we use IDisposable interface that every disposable domain object, presentation model or view should implement.</p>
<pre class="actionscript">&nbsp;
package com.<span style="color: #006600;">lab49</span>.<span style="color: #006600;">core</span>
<span style="color: #66cc66;">&#123;</span>
   <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">interface</span> IDisposable
   <span style="color: #66cc66;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">function</span> dispose<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">void</span>;
   <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>The main concept is very simple - every parent cleans up itself, its presentation model and calls 'dispose' method on its children if it's applicable.</p>
<pre class="actionscript">&nbsp;
&lt;myComp
   <span style="color: #0066CC;">implements</span>=<span style="color: #ff0000;">&quot;com.lab49.core.IDisposable&quot;</span>
   layout=<span style="color: #ff0000;">&quot;absolute&quot;</span>
   <span style="color: #0066CC;">close</span>=<span style="color: #ff0000;">&quot;dispose()&quot;</span>&gt;;
   &lt;!<span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span>
	      <span style="color: #0066CC;">import</span> com.<span style="color: #006600;">lab49</span>.<span style="color: #006600;">core</span>.<span style="color: #006600;">IDisposable</span>;
	      <span style="color: #0066CC;">import</span> com.<span style="color: #006600;">lab49</span>.<span style="color: #006600;">example</span>.<span style="color: #006600;">model</span>.<span style="color: #006600;">BasePresentationModel</span>;
&nbsp;
	      <span style="color: #66cc66;">&#91;</span>Bindable<span style="color: #66cc66;">&#93;</span>
	      <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> model : BasePresentationModel;
&nbsp;
	      <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> dispose<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> : <span style="color: #0066CC;">void</span>
	      <span style="color: #66cc66;">&#123;</span>
	         <span style="color: #808080; font-style: italic;">//remove all event listeners here, stop all effects, clean up model</span>
	         <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> model <span style="color: #66cc66;">&#41;</span>
	         <span style="color: #66cc66;">&#123;</span>
	            model.<span style="color: #006600;">dispose</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	         <span style="color: #66cc66;">&#125;</span>
	         <span style="color: #808080; font-style: italic;">//Clean up children</span>
	         <span style="color: #000000; font-weight: bold;">var</span> children : <span style="color: #0066CC;">Array</span> = getChildren<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	         <span style="color: #b1b100;">for</span> each<span style="color: #66cc66;">&#40;</span> <span style="color: #000000; font-weight: bold;">var</span> child : DisplayObject <span style="color: #b1b100;">in</span> children <span style="color: #66cc66;">&#41;</span>
	         <span style="color: #66cc66;">&#123;</span>
	            <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span> child is IDisposable <span style="color: #66cc66;">&#41;</span>
	               IDisposable<span style="color: #66cc66;">&#40;</span> child <span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">dispose</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
	         <span style="color: #66cc66;">&#125;</span>
	      <span style="color: #66cc66;">&#125;</span>
   <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span>&gt;
&lt;/script&gt;
&nbsp;</pre>
]]></content:encoded>
			<wfw:commentRss>http://olehfilipchuk.com/2009/03/15/clean-up-your-garbage/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
