<?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>Dragos Dascalita</title>
	<atom:link href="http://www.flexthinker.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.flexthinker.com</link>
	<description>Architecting Flex and AIR Applications</description>
	<lastBuildDate>Sun, 18 Sep 2011 19:00:52 +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>How to build a Flex Mobile App with Maven</title>
		<link>http://www.flexthinker.com/2011/07/how-to-build-a-flex-mobile-app-with-maven/</link>
		<comments>http://www.flexthinker.com/2011/07/how-to-build-a-flex-mobile-app-with-maven/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 15:05:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Building and CI]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.flexthinker.com/?p=492</guid>
		<description><![CDATA[Building applications that run on mobile is today&#8217;s trend. Everybody is thinking mobile and social and cloud. To build a Flex application for Mobile is very easy, provided you use Flash Builder. When it comes to automating that build, things are not as easy. Because recently I&#8217;ve managed to overcome the obstacles that were preventing [...]]]></description>
			<content:encoded><![CDATA[<p>Building applications that run on mobile is today&#8217;s trend. Everybody is thinking mobile and social and cloud.</p>
<p>To build a Flex application for Mobile is very easy, provided you use Flash Builder. When it comes to automating that build, things are not as easy. Because recently I&#8217;ve managed to overcome the obstacles that were preventing me to build a running Flex 4.5 app for mobile, I want to <a href="http://www.flexthinker.com/wp-content/uploads/2011/07/mobile.zip">share the build</a>.</p>
<p>I&#8217;ve taken the initial build from this <a href="http://groups.google.com/group/flex-mojos/browse_thread/thread/2908639791bfa43b/21a931e739465a89?lnk=gst&amp;q=esign-air#21a931e739465a89">thread</a>. Marvin Froeder ( a.k.a VELO ) has been doing some hard work recently, creating the Enterprise version of Flex Mojos. This version seems pretty promising. I&#8217;m looking forward for its release. When you&#8217;re testing the build, make sure you register during the build, following the instructions. The process is fairly easy, but &#8230; rewarding. The maven build creates the final apk/air/exe/dmg&#8230;, which you can use to install the app on your device. It&#8217;s worth trying it.</p>
<p>To build the app, you need to execute</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">mvn3 clean install package</pre></div></div>

<p>Prior to the build, you need to make sure you have Maven 3 installed, with the following environment variable:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">MAVEN_OPTS=&quot;-Xmx1024m -Xms128m -XX:+DisableAttachMechanism&quot;</pre></div></div>

<p>Also, you need to have the mobile theme installed in a repository. As of today, the flex mojos repository doesn&#8217;t contain this theme, so you need to install it manually.</p>
<p>When the build ends, connect your device to the computer and execute:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">adb install -r ./target/mobile-1.0-SNAPSHOT.apk</pre></div></div>

<p>Then, go to your device and open &#8220;main&#8221; application.</p>
<p>If you see the following screen, it means that the application got compiled successfully.</p>
<div id="attachment_497" class="wp-caption aligncenter" style="width: 190px"><a href="http://www.flexthinker.com/wp-content/uploads/2011/07/maven-mobile-app.png"><img class="size-medium wp-image-497" style="border: 1px solid black;" title="maven-mobile-app" src="http://www.flexthinker.com/wp-content/uploads/2011/07/maven-mobile-app-180x300.png" alt="Maven Mobile Screenshot" width="180" height="300" /></a><p class="wp-caption-text">Screenshot showing the app built with Maven</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.flexthinker.com/2011/07/how-to-build-a-flex-mobile-app-with-maven/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Jenkins (ex-Hudson) plugin to capture Flash Logs during build</title>
		<link>http://www.flexthinker.com/2011/01/jenkins-plugin-to-capture-flash-logs-during-build/</link>
		<comments>http://www.flexthinker.com/2011/01/jenkins-plugin-to-capture-flash-logs-during-build/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 10:48:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Building and CI]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[flashlog]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[jenkins]]></category>

		<guid isPermaLink="false">http://www.flexthinker.com/?p=486</guid>
		<description><![CDATA[Lately I&#8217;ve been working on a plugin for Hudson / Jenkins that captures Adobe Flash Player logs during a build, making them available as build artifacts. This plugin is useful when you want to debug Unit Test or Automated Tests which are failing in the CI machine. For me information you can check http://wiki.hudson-ci.org/display/HUDSON/FlashLog+Plugin]]></description>
			<content:encoded><![CDATA[<p>Lately I&#8217;ve been working on a plugin for Hudson / Jenkins  that captures Adobe Flash Player logs during a build, making them available as build artifacts.</p>
<p>This plugin is useful when you want to debug Unit Test or Automated Tests which are failing in the CI machine.</p>
<p>For me information you can check 	<a href="http://wiki.hudson-ci.org/display/HUDSON/FlashLog+Plugin">http://wiki.hudson-ci.org/display/HUDSON/FlashLog+Plugin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexthinker.com/2011/01/jenkins-plugin-to-capture-flash-logs-during-build/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solving “file already exists” Maven/SVN Problem</title>
		<link>http://www.flexthinker.com/2011/01/solving-%e2%80%9cfile-already-exists%e2%80%9d-mavensvn-problem/</link>
		<comments>http://www.flexthinker.com/2011/01/solving-%e2%80%9cfile-already-exists%e2%80%9d-mavensvn-problem/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 12:48:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Building and CI]]></category>

		<guid isPermaLink="false">http://www.flexthinker.com/?p=473</guid>
		<description><![CDATA[Problem Today I&#8217;ve been trying to perform a maven release on a project hosted on google-code and I&#8217;ve hit a major roadblock. The build was failing due to a SVN error occurring when maven was committing into SVN, into the tags folder, the current version of the project: [INFO] Unable to tag SCM Provider message: The svn [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Problem</strong><br />
Today I&#8217;ve been trying to perform a maven release on a project hosted on google-code and I&#8217;ve hit a major roadblock.</p>
<p>The build was failing due to a SVN error occurring when maven was committing into SVN, into the tags folder, the current version of the project:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">[INFO] Unable to tag SCM
Provider message:
The svn tag command failed.
Command output:
svn: Commit failed (details follow):
svn: File '/svn/path/to/my/file/myclass.java' already exists</pre></div></div>

<p><strong>Solution</strong><br />
The solution is rather a workaround, than a solution: <em>force a svn update before committing the code into SVN repository</em>.<br />
Searching to see if other people have had a similar problem I discovered <a href="http://jira.codehaus.org/browse/SCM-406?focusedCommentId=146938&amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_146938">this bug</a>, and in one of the comments of the bug I saw the workaround:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;"># mvn release:prepare
== fails ==
# svn up -r head
# mvn release:prepare -Dresume</pre></div></div>

<p>As you can see, you are being suggested to do a svn update after the build fails and resume the release process from that point.</p>
<p>I tested this workaround, and luckily for me, it worked. Going further, I thought that&#8217;s great, but how can I deal with these extra steps on my continuous integration machine ? I didn&#8217;t want to create a special job just to do the release of my library, so I started to see if I can integrate this workaround into a single maven command line.</p>
<p>Looking into the <code>Maven Release Plugin</code>, I discovered the <a href="http://maven.apache.org/plugins/maven-release-plugin/prepare-http://maven.apache.org/plugins/maven-release-plugin/prepare-mojo.html#preparationGoals">preparationGoals</a> property. As the documentation specifies, it defines which <em>&#8220;goals to run as part of the preparation step, after transformation <strong>but before committing.</strong>&#8220;</em>.</p>
<p>Into these preparation goals I executed a shell command, using <code><a href="http://mojo.codehaus.org/exec-maven-plugin/index.html">Maven Exec Plugin</a></code>.</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">mvn -e release:clean release:prepare release:perform \
  -DpreparationGoals=&quot;clean install exec:exec&quot; \
  -Darguments=&quot;-Dexec.executable=svn -Dexec.args=up&quot;</pre></div></div>

<p>This single command did in the end the same thing. Forced a svn update before committing the code into SVN.</p>
<p>Apparently this bug occurs only for SVN versions up to 1.6.4. In SVN version 1.6.5 this shouldn&#8217;t be a problem anymore. Too bad that Google Code uses older versions of SVN.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexthinker.com/2011/01/solving-%e2%80%9cfile-already-exists%e2%80%9d-mavensvn-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Success Story: Integrated customer service delivery</title>
		<link>http://www.flexthinker.com/2010/11/adobe-success-story-integrated-customer-service-delivery/</link>
		<comments>http://www.flexthinker.com/2010/11/adobe-success-story-integrated-customer-service-delivery/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 09:26:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[DataServices]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[Hendrix]]></category>

		<guid isPermaLink="false">http://www.flexthinker.com/?p=462</guid>
		<description><![CDATA[I can finally speak publicly about what I&#8217;ve been working on lately at Adobe, as part of the TXI team: Hendrix. Adobe@Adobe: Integrated customer service delivery Adobe transforms customer service and sales using the Adobe Flash Platform and Adobe LiveCycle ES2 for more responsive, integrated service delivery. Adobe is always looking for the best solution [...]]]></description>
			<content:encoded><![CDATA[<p>I can finally speak publicly about what I&#8217;ve been working on lately at Adobe, as part of the <a href="http://blogs.adobe.com/swebster/">TXI</a> team: Hendrix.<br />
<strong><a href="http://www.adobe.com/cfusion/showcase/index.cfm?event=casestudydetail&amp;casestudyid=1097918&amp;loc=en_us">Adobe@Adobe: Integrated customer service delivery</a></strong><br />
Adobe transforms customer service and sales using the Adobe Flash Platform and Adobe LiveCycle ES2 for more responsive, integrated service delivery.<br />
<a href="http://www.adobe.com/cfusion/showcase/index.cfm?event=casestudydetail&amp;casestudyid=1097918&amp;loc=en_us"><img class="aligncenter" title="Hendrix Case Manager" src="http://www.adobe.com/showcase/casestudies/adobeicsd/screenshot2.jpg" alt="" width="482" height="307" /></a></p>
<p>Adobe is always looking for the best solution to meet any business challenge. Recently, we set out to empower call center agents with faster, smarter access to information—giving them instant access to the information they need to answer customer questions. By leveraging the Adobe Flash Platform, we created a dynamic and sophisticated RIA that gives call center agents an intuitive, rich interface for accessing data in complex enterprise systems. Almost instantly, service agents can identify customers’ primary concerns, quickly locate the appropriate information, and address customer requests faster than ever.  The RIA is helping us exceed our customers’ service expectations—and improve agent training and reduce costs as byproducts. To read more about the world-class customer service RIA, check out the story on the <a href="http://www.adobe.com/cfusion/showcase/index.cfm?event=casestudydetail&amp;casestudyid=1097918&amp;loc=en_us">Adobe Customer Showcase</a>.</p>
<p>To view a demo, you can also watch the 14 mins <a href="http://tv.adobe.com/watch/max-2010-keynotes/adobe-max-2010-keynote-day-2-user-experience-the-next-generation-pimp-my-app/">MAX keynote &#8211; &#8220;Pimp my App&#8221;</a>.</p>
<p>Technology stack used to develop this product:</p>
<ul>
<li>Adobe LiveCycle Data Services ES2</li>
<li>Adobe Flex SDK.</li>
<li>Adobe Flash Builder</li>
<li>Adobe Flash Catalyst</li>
<li>Adobe Illustrator CS5</li>
<li>Adobe Photoshop CS5</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.flexthinker.com/2010/11/adobe-success-story-integrated-customer-service-delivery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to automatically test swf modules with maven</title>
		<link>http://www.flexthinker.com/2010/10/how-to-automatically-test-swf-modules-with-maven/</link>
		<comments>http://www.flexthinker.com/2010/10/how-to-automatically-test-swf-modules-with-maven/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 11:35:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Building and CI]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.flexthinker.com/?p=463</guid>
		<description><![CDATA[Problem Running unit tests with maven, that require runtime resources such as runtime CSS, runtime resource bundles, or other resources throws error because the resources have not been marked as trusted. To be more detailed, maven has a file within the #Security folder of Flash Player, in which it stores a list with trusted swfs. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Problem</strong></p>
<p>Running unit tests with maven, that require runtime resources such as runtime CSS, runtime resource bundles, or other resources throws error because the resources have not been marked as trusted.</p>
<p>To be more detailed, maven has a file within the <code>#Security</code> folder of Flash Player, in which it stores a list with trusted swfs. For example, when maven runs the unit tests, it automatically adds the FlexUnit.swf to be trusted by Flash Player. This file, named maven.cfg is stored into <code>~/Library/Preferences/Macromedia/Flash\ Player/#Security/FlashPlayerTrust/</code> folder on a Mac. Other operating systems have a different path, as described in this <a href="http://en.wikipedia.org/wiki/Local_Shared_Object">link</a> .</p>
<p>In my case, the problem was that I was writing some unit-tests that would load modules placed under <code>/src/test/resources</code> folder within my maven project.</p>
<p><strong>Solution</strong></p>
<p><a href="http://repository.sonatype.org/content/sites/flexmojos-site/4.0-alpha-3/trust-mojo.html">flexmojos:trust</a></p>
<p>In other words, I had to add this little script to the maven build in order to fix my problem:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;build<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.sonatype.flexmojos<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>flexmojos-maven-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>trust<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filesToTrust<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;file<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>target/test-classes/test/LoginModule.swf<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/file<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;file<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>target/test-classes/test/LoginModuleSkin.swf<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/file<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filesToTrust<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/build<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>After updating the pom.xml and running <code>"mvn test"</code> command, I could notice that my files were added to the maven.cfg file.</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">[INFO] Updating Flash Player Trust directory .../target/test-classes/test/LoginModule.swf
[INFO] Updating Flash Player Trust directory .../target/test-classes/test/LoginModuleSkin.swf</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.flexthinker.com/2010/10/how-to-automatically-test-swf-modules-with-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Minimize CPU usage in Flash and Flex</title>
		<link>http://www.flexthinker.com/2010/09/minimize-cpu-usage-in-flash-and-flex/</link>
		<comments>http://www.flexthinker.com/2010/09/minimize-cpu-usage-in-flash-and-flex/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 14:33:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Best practices]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[flash optimization]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[optimize CPU]]></category>

		<guid isPermaLink="false">http://www.flexthinker.com/?p=437</guid>
		<description><![CDATA[This article highlights a few interesting points to consider, when you want to minimize the resources that a flash/flex application consumes at runtime. The benefit of that is not only the improved user experience, but also the extra power you can use, and not waste. I&#8217;m going to summarize here the points, ordering them by [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://help.adobe.com/en_US/as3/mobile/WS4bebcd66a74275c36cfb8137124318eebc6-8000.html">This article</a> highlights a few interesting points to consider, when you want to minimize the resources that a flash/flex application consumes at runtime. The benefit of that is not only the improved user experience, but also the extra power you can use, and not waste.</p>
<p>I&#8217;m going to summarize here the points, ordering them by how often you would face during development, and I invite you to go through the entire article for a more in-depth picture.</p>
<ul>
<li><strong><a href="http://help.adobe.com/en_US/as3/mobile/WS4bebcd66a74275c36cfb8137124318eebc6-7ffc.html" target="_blank">Freezing and unfreezing objects</a>.</strong> The secret here is to to be very cautious with the objects that are not visible, or not needed anymore.  There is also a method in the Loader class,<code> <a title="unloadAndStop()" href="http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/display/Loader.html#unloadAndStop()" target="_blank">unloadAndStop()</a></code>. This method can enforce the Garbage Collector to run on the child SWF objects, if you call it with <code>unloadAndStop( true ).</code></li>
<li><strong><a href="http://help.adobe.com/en_US/as3/mobile/WS4bebcd66a74275c36cfb8137124318eebc6-7ffb.html" target="_blank">Timers versus ENTER_FRAME events</a></strong> What is important here is to avoid using <code>ENTER_FRAME</code> events, and minimize as much as possible the usages of <code>Timer</code> objects.</li>
<li><strong><a href="http://help.adobe.com/en_US/as3/mobile/WS948100b6829bd5a6-6752030e12905479288-8000.html" target="_blank">Activate and Deactivate Events</a></strong>. These are used to detect  background inactivity, and detect when Flash Player has lost the focus. When Flash content looses focus it&#8217;s worthy to decrease the frame-rate, and maybe cancel some background operations.</li>
<li><strong><a href="http://help.adobe.com/en_US/as3/mobile/WS948100b6829bd5a63821f6a2126681c5c57-8000.html" target="_blank">Mouse interactions</a></strong>. This can be CPU-intensive, especially when the object tree is rich. Flash Player enables you to disable some UI components to respond to mouse event, using <code>myUIComponent.mouseEnabled=false;</code></li>
<li><strong><a href="http://help.adobe.com/en_US/as3/mobile/WS4bebcd66a74275c36cfb8137124318eebc6-7ffa.html" target="_blank">Animations</a></strong>. Use them, but be aware that currently they are executed by the CPU, not the GPU. In the near future, this processing would move to GPU, easing the CPU, but until then, be careful with the rendering.</li>
<li><strong><a href="http://help.adobe.com/en_US/as3/mobile/WS4a4606c864353c0a-dcb49ee124a2e6df51-8000.html" target="_blank">Built-in Flash Player 10.1 enhancements</a></strong>. These are interesting and it&#8217;s good to be aware of.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.flexthinker.com/2010/09/minimize-cpu-usage-in-flash-and-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compile Flex App with License Number</title>
		<link>http://www.flexthinker.com/2010/08/compile-flex-app-with-license-number/</link>
		<comments>http://www.flexthinker.com/2010/08/compile-flex-app-with-license-number/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 07:14:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Building and CI]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.flexthinker.com/?p=438</guid>
		<description><![CDATA[These days I had to deal with an error when trying to execute some functional tests. Problem After 30 playbacks or recordings the automation agent within Flex SDK stopped with the error &#8220;License not present. With the trial verison only limited replays are allowed.&#8221; My Flex application was compiled with Flex SDK 4.1.0.16076 and with [...]]]></description>
			<content:encoded><![CDATA[<p>These days I had to deal with an error when trying to execute some functional tests.</p>
<p><strong>Problem</strong></p>
<p>After 30 playbacks or recordings the automation agent within Flex SDK stopped with the error &#8220;License not present. With the trial verison only limited replays are allowed.&#8221;</p>
<p>My Flex application was compiled with Flex SDK 4.1.0.16076 and with Maven. When compiled with a registered Flex Builder, the licensing information is automatically added into the flex app so you don&#8217;t have this problem anymore.</p>
<p>The problem is most likely to appear when building from a Continuous Integration machine and you need to use ant or maven, instead of Flash Builder.</p>
<p><strong>Solution</strong></p>
<p>In order to get rid of the error I had to compile the Flex application with a valid serial number of Flash Builder. To find out how to provide a license number, I looked at the <code>mxmlc</code> options:</p>
<pre>osx:bin dragos$ ./mxmlc -help details licenses
Adobe Flex Compiler (mxmlc)
Version 4.1.0 build 16076
Copyright (c) 2004-2009 Adobe Systems, Inc. All rights reserved.

-licenses.license
    alias -license
    specifies a product and a serial number.  (repeatable)</pre>
<p>Knowing my serial number, I asked myself what should I put as product name.<br />
Looking on the internet I found people using &#8220;flexbuilder3&#8243; in the following way:<br />
<code>-licenses.license flexbuilder3 xxxx-xxxx-xxxx-xxxx-xxxx-xxxx</code></p>
<p>What I didn&#8217;t find on the internet is that for Flash Builder 4, the product name has changed:<br />
<code>-licenses.license flashbuilder4 xxxx-xxxx-xxxx-xxxx-xxxx-xxxx</code></p>
<p>Since I was building with Maven on the continuous integration machine, I had to find a way to add the license information to flexmojos:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.sonatype.flexmojos<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>flexmojos-maven-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${flex-mojos.version}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;extensions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/extensions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.adobe.flex<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>compiler<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${flex.sdk.version}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;type<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>pom<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/type<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configurationReport<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configurationReport<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;licenses<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;flashbuilder4<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${fb.license}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/flashbuilder4<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/licenses<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.flexthinker.com/2010/08/compile-flex-app-with-license-number/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Designer and Developer workflow with Adobe Flash Catalyst</title>
		<link>http://www.flexthinker.com/2010/04/designer-and-developer-workflow-with-adobe-flash-catalyst/</link>
		<comments>http://www.flexthinker.com/2010/04/designer-and-developer-workflow-with-adobe-flash-catalyst/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 12:11:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Best practices]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Adobe Flash Catalyst]]></category>
		<category><![CDATA[Adobe Flex]]></category>

		<guid isPermaLink="false">http://www.flexthinker.com/?p=344</guid>
		<description><![CDATA[I&#8217;ve recently made a presentation during a Flash Camp, focused on Flash Catalyst, the new product in CS5. Flash Catalyst is, the way I see it, a nice tool intended to enable designers the access to Flex SDK in order to create Flex Applications without any specific knowledge of programming or ActionScript. Until know, only [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently made a presentation during a Flash Camp, focused on Flash Catalyst, the new product in CS5.<br />
Flash Catalyst is, the way I see it, a nice tool intended to enable designers the access to Flex SDK in order to create Flex Applications without any specific knowledge of programming or ActionScript.</p>
<p>Until know, only developers with Flex knowledge, speaking ActionScript language could shape a Flex Application, applying the look &amp; feel provided by a visual designer.  Unlike developers, designers don&#8217;t speak ActionScript. Instead, they speak Illustrator, Photoshop, Corel Draw, Flash, Fireworks, or the language of another tool out there. A designer would feel much more comfortable drawing a shape ressembling to a button rather than typing a code like</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> id=<span style="color: #ff0000;">&quot;submitButton&quot;</span> label=<span style="color: #ff0000;">&quot;Submit&quot;</span> bottom=<span style="color: #ff0000;">&quot;10&quot;</span> right=<span style="color: #ff0000;">&quot;10&quot;</span> <span style="color: #7400FF;">/&gt;</span></span></pre></div></div>

<p>In this presentation my intention was not to advertise Catalyst, but rather to focus on the productivity aspects and what is the best way to use this tool to create RIAs.</p>
<p><b>Problem</b><br />
Catalyst is a great tool to create prototypes of Flex Applications quite easy. Even though Catalyst is a powerful tool, sharing a project between Catalyst and Flash Builder, between a designer and a developer, is quite challenging. Once the prototype is signed off by the client and it needs to be implemented by developers, issues arise : </p>
<ul>
<li><strong>From a designer perspective</strong>, Catalyst feels great. Firstly, because Catalyst integrates well with Illustrator and Photoshop. If an effect is harder to create with Catalyst, a designer can always right click and choose to &#8220;Edit in Adobe Illustrator&#8221;. Besides that, the designer can easily add actions to objects and grasp a bit of the look&#038;feel of the application.<br />
<br/><br />
Problem is that, in a short while, designers will notice that there are few connections between their Catalyst project and the actual application, even though that application is built with the design they created in Catalyst. Before, all they had was Flash or Illustrator approach, creating only designs for how stuff looks.  Now, even thought they have control over where the stuff is positioned, how it behaves, transitions, they&#8217;ll realize that they&#8217;re still away from the actual application. They create prototypes, but they&#8217;re still waiting for developers to implement their modifications.<br />
<br/><br />
This feels better than before, but it&#8217;s not perfect.
</li>
<li><strong>From a developer perspective</strong>, things are not as great either. It&#8217;s hard to work with a machine generated code, thus it&#8217;s hard to work with the raw code generated by Catalyst. Sometimes, it&#8217;s hard even for humans to write code that humans can understand. Martin Fowler has a say: <i>Any fool can write code that a computer can understand.  Good programmers write code that humans can understand.</i><br />
<br/><br />
So don&#8217;t expect Catalyst to grab an Adobe Illustrator file and turn it into a perfect MXML. A programmer will not be able to easily use the raw code generated by Catalyst; copy-paste might be the only way to grab the Visual Design and place it into Code, by scanning through the read-only Code-view exposed by Catalyst and getting the pieces that make sense for a developer, and place those pieces into skin files.<br />
<br/><br />
Besides that, the FXP container, it&#8217;s a single file. As a programmer you want to keep you source files into a versioning file system, instead of a single file container.<br />
<br/><br />
So now it&#8217;s indeed easier to get the complex shapes and shades that the designer creates, because they&#8217;re now available in FXG format, which Flex 4 can read. But still, things are not perfect since developers sill need to filter all that raw code generated by Flash Catayst, and only get the modifications they&#8217;re interested in.
</li>
</ul>
<p><br/><br />
<b>Solution</b><br />
Long story short: fix the issues mentioned. In other words:</p>
<ul>
<li>For a designer:
<ul>
<li>Easily test the UI changes into the real application</li>
<li>And preview the real application straight from Catalyst</li>
</ul>
</li>
<li>For a developer:
<ul>
<li>Use straight what Catalyst provides.No extra copy-paste from Catalyst into Flash Builder. </li>
<li>No more headakes to match the pixel perfect visual design</li>
<li>More focus on functionality, less focus on design</li>
</ul>
</ul>
<p>You can achieve all these with this first release of Catalyst, event though it&#8217;s not that straight forward.<br />
I&#8217;m going to describe here a few things that helped me solve these issues for a current project. If you&#8217;re comfortable with Flash Catalyst, you can <a href="http://www.flexthinker.com/downloads/LightChannelSkinProject.fxp">download the Catalyst project now</a> to experience it, and then continue.</p>
<ul>
<li>First, I added these 2 buttons in the Flash Catalyst project, to enable the designer to easily switch from Visual Design to the real application<br />
<a href="http://www.flexthinker.com/wp-content/uploads/2010/04/Catalyst_toolbar.png"><img src="http://www.flexthinker.com/wp-content/uploads/2010/04/Catalyst_toolbar.png" alt="Catalyst toolbar" title="Catalyst toolbar" width="371" height="39" class="size-full wp-image-361" /></a>
</li>
<li>Then I placed these under a Catalyst layer, which I called it &#8220;Top Toolbar&#8221;.<br />
<a href="http://www.flexthinker.com/wp-content/uploads/2010/04/Catalyst_Top_Toolbar.png"><img src="http://www.flexthinker.com/wp-content/uploads/2010/04/Catalyst_Top_Toolbar-273x300.png" alt="Top Toolbar" title="Top Toolbar" width="273" height="300" class="size-medium wp-image-380" /></a>
</li>
<li>This next step represented the main challenge: how to manage both Flash Catalyst file and Flash Builder files.<br />
<br/><br />
Flash Catalyst had all the code bundled into a FXP file, while the real project had modules, each module had a separate project, so the configuration differed quite a lot. As you can see, in the next image, in the right side I have 4 Flex projects, while in the left side, I have only the Flash Catalyst project<br />
<a href="http://www.flexthinker.com/wp-content/uploads/2010/04/FC_FB_Challenge.png"><img src="http://www.flexthinker.com/wp-content/uploads/2010/04/FC_FB_Challenge-300x193.png" alt="" title="FC_FB_Challenge" width="300" height="193" class="alignnone size-medium wp-image-388" /></a><br />
The question is how to merge the two, in a way that is productive for both the developer and the designer.</p>
<ul>
<li>The first solution that came to my mind would have been to duplicate the code base out of the 4 projects, and place that code into the Catalyst project. This solution wasn&#8217;t so nice because it could have generated a lot of duplicated code to be maintained.</li>
<li>The next solution I liked it better. I thought to myself why not take advantage of the modular structure, and instead of maintaining a lot of source code files, maintain only 1 file for each module, which is the compiled SWF file. This way, with only a few files added to the Catalyst project, the designer can have the entire application at hand.<br />
<br/>To achieve this I had to go through several steps ( only developers are required to do this. The designer shouldn&#8217;t even care as long as the visual design remains the same):</p>
<ol>
<li>With Flash Builder: Split the application in functional areas and compile each area into a flex module. These are the modules to be loaded when running the Catalyst Project. This step is important because developers need to think well what is functionality, and what is skin and skin-behavior. The functionality would eventually stay in the modules, while the skin and its behavior would be exposed through a Main.css file to the Flash Catalyst.  </li>
<li>With Flash Builder: Make the main application only a shell-like application which only loads modules and also loads a main skin file compiled as SWF, at runtime. </li>
<li>With Flash Catalyst and Flash Builder: Isolate the skins and skins behavior into skin classes. Expose these skin classes through the CSS file.The Main.css file should be good enough to store all about how application looks and feels. <br/><br />
<br/></p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #a1a100;">@namespace s &quot;library://ns.adobe.com/flex/spark&quot;;</span>
<span style="color: #a1a100;">@namespace mx &quot;library://ns.adobe.com/flex/mx&quot;; </span>
&nbsp;
s|Application
<span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> <span style="color: #ff0000;">&quot;Myriad Pro&quot;</span><span style="color: #00AA00;">;</span>
	font-lookup<span style="color: #00AA00;">:</span>embeddedCFF<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #a1a100;">@font-face</span>
<span style="color: #00AA00;">&#123;</span>
	fontFamily<span style="color: #00AA00;">:</span> <span style="color: #ff0000;">&quot;Myriad Pro&quot;</span><span style="color: #00AA00;">;</span>
	src<span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;/Users/dragos/Library/Fonts/MyriadPro-Regular.otf&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	embedAsCFF<span style="color: #00AA00;">:</span> true<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.videoControlBar</span>
<span style="color: #00AA00;">&#123;</span>
	skinClass<span style="color: #00AA00;">:</span> ClassReference<span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;skins.controlBar.VideoControlBarSkin&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	horizontal-<span style="color: #993333;">center</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">bottom</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">15</span><span style="color: #00AA00;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">font-family</span><span style="color: #00AA00;">:</span> <span style="color: #ff0000;">&quot;Myriad Pro&quot;</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">9</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#CCCCCC</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #6666ff;">.videoPlayer</span>
<span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">top</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">bottom</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">40</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>As you can see, I even declared the position of the video player in the screen, so that the bottom part leaves a space for the control bar. If later, the designer comes back to this and wants to make the control-bar overlay with the video, I could set &#8220;bottom:0&#8243; for <code>.videoPlayer</code> and I can achieve this.
</li>
<li>With Flash Catalyst and Flash Builder: Create a configuration describing which modules to load into Catalyst. This will enable the designer to see the actual application, or maybe just a part of it. This is how I declared the modules:

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;">...
<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Declarations</span><span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;config:MediaCenterConfigurationDto</span> id=<span style="color: #ff0000;">&quot;defaultConfiguration&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;config:modules</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:ArrayCollection</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;config:MediaCenterModuleDto</span> </span>
<span style="color: #000000;">			 label=<span style="color: #ff0000;">&quot;Flex player&quot;</span> version=<span style="color: #ff0000;">&quot;1.0&quot;</span> </span>
<span style="color: #000000;">			 fileName=<span style="color: #ff0000;">&quot;assets/MediaCenterPlayer.swf&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;config:MediaCenterModuleDto</span> </span>
<span style="color: #000000;">			label=<span style="color: #ff0000;">&quot;Flex control bar&quot;</span> version=<span style="color: #ff0000;">&quot;1.0&quot;</span> </span>
<span style="color: #000000;">			 fileName=<span style="color: #ff0000;">&quot;assets/MediaCenterControlBar.swf&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:ArrayCollection</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/config:modules</span><span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/config:MediaCenterConfigurationDto</span><span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Declarations</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

</li>
<li>With Flash Catalyst and Flash Builder: Update project&#8217;s Main.mxml file, adding the functionality to load modules.This can be achieved in several ways, you can see in <a href="http://www.flexthinker.com/downloads/LightChannelSkinProject.fxp">the Catalyst project</a> my approach.</li>
<li>With Flash Catalyst and Flash Builder: Add the toolbar layer described above</li>
<li>With Flash Catalyst and Flash Builder: Add the logic to show the actual application or hide it, to the buttons within the toolbar: &#8220;Show real application&#8221; or &#8220;Show design&#8221;</li>
</ol>
</li>
</ul>
</li>
</ul>
<p>This is the setup I needed. So , to summarize, these are the points I have achieved at this moment:</p>
<ul>
<li>As designer, I can preview the changes into the action application by running only the Flash Catalyst project</li>
<li>As developer, in order to update the visual design, I only need to compile the Main.css file into a SWF file and load it at runtime. No extra work needed.</li>
</ul>
<p>If you&#8217;re wondering how did I manage to edit the Flash Catalyst files, since they are in read-only mode in Catalyst, I&#8217;m going to create a new post really soon and detail there how I managed to open an already opened Flash Catalyst project, into Flash Builder, and edit at the same time Flash Catalyst and Flash Builder.</p>
<p>For now, you can <a href="http://www.flexthinker.com/downloads/LightChannelSkinProject.fxp">download the Catalyst project</a> I used in this demo and play with it. At the same time, you can <a href="http://www.flexthinker.com/downloads/FC_FB_Designer_Developer_Workflow_shared.pptx.pdf">view also the PowerPoint presentation</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexthinker.com/2010/04/designer-and-developer-workflow-with-adobe-flash-catalyst/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Avoid user&#8217;s cache when deploying new versions of Flex app</title>
		<link>http://www.flexthinker.com/2010/04/avoid-users-cache-when-deploying-new-versions-of-flex-app/</link>
		<comments>http://www.flexthinker.com/2010/04/avoid-users-cache-when-deploying-new-versions-of-flex-app/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 14:30:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Building and CI]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://www.flexthinker.com/?p=326</guid>
		<description><![CDATA[As to continue my previous post, these days I&#8217;ve been trying to provide a solution that removes the ambiguity for the released swf files into production so that I know what version is deployed and also to make sure that the users are forced to get the last release, no matter of their browser&#8217;s cache. [...]]]></description>
			<content:encoded><![CDATA[<p>As to continue <a href="http://www.flexthinker.com/2010/04/automatically-version-a-flex-application-with-maven/">my previous post</a>, these days I&#8217;ve been trying to provide a solution that removes the ambiguity for the released swf files into production so that I know what version is deployed and also to make sure that the users are forced to get the last release, no matter of their browser&#8217;s cache.</p>
<p>Problem<br />
When deploying new versions of the application, some users having cache in their browser don&#8217;t see the updated version of the swf, thus loosing the updates.</p>
<p>Solution<br />
Automatically append the version number at the end of the url pointing to the swf file, ending with something like : <code>Main.swf?173-1.0-SNAPSHOT</code>. The advantage is that you benefit of the cache in-between new releases; this means that clients can view you flash application faster, and only for new releases they have to wait a little bit more to load.</p>
<p>Having the flex application packaged inside of a WAR file I&#8217;ve been looking for places to store this information inside of it, and read the build-number at runtime. I discovered that the MANIFEST.MF file, which is found inside the META-INF folder, is the best candidate.<br />
In order to write the buildNumber into that file, I used <code>maven-war-plugin</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.apache.maven.plugins<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-war-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2.1-beta-1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;phase<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>package<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/phase<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		          	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>war<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		           <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;archive<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	          		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;manifest<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	          		   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;addDefaultSpecificationEntries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	   	   	   	      true
	   	   	   	   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/addDefaultSpecificationEntries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	          		   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;addDefaultSpecificationEntries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	   	   	   	      true
	   	   	   	   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/addDefaultSpecificationEntries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	          		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/manifest<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		          	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;manifestEntries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		            	   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Implementation-Build<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	   	   	   	      ${BUILD_NUMBER}
	   	   	   	   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Implementation-Build<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		          	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/manifestEntries<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		           <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/archive<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>  
		        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
 <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><code>${BUILD_NUMBER}</code> is only available when executing the maven build from Hudson, as explained in my previous post. Maven also has a plugin that generates a build number automatically, but I didn&#8217;t need it because, in my case, no code goes into production without passing the Continuous Integration build and the tests, so I will have a build number for every promoted build.</p>
<p>Next, I had to read the information at runtime. For that I altered a bit the index.jsp file I am using to show the flex application:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;%@</span> page language<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;java&quot;</span> pageEncoding<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;UTF-8&quot;</span> contentType<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/html;charset=utf-8&quot;</span> <span style="color: #339933;">%&gt;</span>
<span style="color: #339933;">&lt;%@</span> taglib uri<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://java.sun.com/jsp/jstl/core&quot;</span> prefix<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;c&quot;</span> <span style="color: #339933;">%&gt;</span>
<span style="color: #339933;">&lt;%@</span> taglib uri<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://java.sun.com/jsp/jstl/functions&quot;</span> prefix<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;fn&quot;</span> <span style="color: #339933;">%&gt;</span>
&nbsp;
<span style="color: #339933;">&lt;%</span> 
java.<span style="color: #660066;">util</span>.<span style="color: #660066;">jar</span>.<span style="color: #660066;">Manifest</span> manifest <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> java.<span style="color: #660066;">util</span>.<span style="color: #660066;">jar</span>.<span style="color: #660066;">Manifest</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
manifest.<span style="color: #660066;">read</span><span style="color: #009900;">&#40;</span>pageContext.<span style="color: #660066;">getServletContext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.
                                   <span style="color: #660066;">getResourceAsStream</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;/META-INF/MANIFEST.MF&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
java.<span style="color: #660066;">util</span>.<span style="color: #660066;">jar</span>.<span style="color: #660066;">Attributes</span> attributes <span style="color: #339933;">=</span> manifest.<span style="color: #660066;">getMainAttributes</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
String fullVersion <span style="color: #339933;">=</span> attributes.<span style="color: #660066;">getValue</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Implementation-Build&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> 
                 <span style="color: #3366CC;">&quot;-&quot;</span> <span style="color: #339933;">+</span> attributes.<span style="color: #660066;">getValue</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Specification-Version&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">%&gt;</span>
&nbsp;
<span style="color: #339933;">&lt;</span>c<span style="color: #339933;">:</span>set <span style="color: #003366; font-weight: bold;">var</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;swf&quot;</span> value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;bin/MediaCenter&quot;</span><span style="color: #339933;">/&gt;</span>
<span style="color: #339933;">&lt;</span>c<span style="color: #339933;">:</span>set <span style="color: #003366; font-weight: bold;">var</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;version&quot;</span> value<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&lt;%=fullVersion%&gt;&quot;</span> <span style="color: #339933;">/&gt;</span>
&nbsp;
<span style="color: #339933;">&lt;%@</span> include file<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;/flex.jsp&quot;</span> <span style="color: #339933;">%&gt;</span></pre></div></div>

<p>The <code>flex.jsp</code> file is taken from the <code><a href="http://code.google.com/p/fna-v2/source/browse/#svn/trunk/samples/lcds_autowired_spring_hibernate/java_webapp/src/main/webapp">FNA project</a></code> hosted on Google Code. I&#8217;ve only altered a bit just to add the version number at the end of the request:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">swfobject.<span style="color: #660066;">embedSWF</span><span style="color: #009900;">&#40;</span>
            <span style="color: #3366CC;">&quot;${ctx}/${swf}.swf?${version}&quot;</span><span style="color: #339933;">,</span> 
            <span style="color: #3366CC;">&quot;${application}_div&quot;</span><span style="color: #339933;">,</span> 
            <span style="color: #3366CC;">&quot;${width}&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;${height}&quot;</span><span style="color: #339933;">,</span> 
            <span style="color: #3366CC;">&quot;${version_major}&quot;</span><span style="color: #339933;">,</span> xiSwfUrlStr<span style="color: #339933;">,</span> 
            flashvars<span style="color: #339933;">,</span> params<span style="color: #339933;">,</span> attributes<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>That&#8217;s pretty much it. The result is:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">Main.<span style="color: #660066;">swf</span><span style="color: #339933;">?</span><span style="color: #CC0000;">173</span><span style="color: #339933;">-</span><span style="color: #CC0000;">1.0</span><span style="color: #339933;">-</span>SNAPSHOT</pre></div></div>

<p>and it&#8217;s set automatically, for each build. This ensures that users, testers, everyone else see the right version of the application.</p>
<p>Note that I&#8217;m also using the <code>Specification-Version</code>, which is the same with maven version. The reason I&#8217;m doing this is because locally, on the dev machine, the <code>${BUILD_NUMBER}</code> is null, and I simply didn&#8217;t want to see <code>Main.swf?null</code> in the url <img src='http://www.flexthinker.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . <code>Specification-Version</code> came for free with the Maven-war-plugin, so I decided to make use of it. The MANIFEST.MF file contains more information; you can have a look into that file, after deploying it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexthinker.com/2010/04/avoid-users-cache-when-deploying-new-versions-of-flex-app/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Automatically version a Flex application with Maven</title>
		<link>http://www.flexthinker.com/2010/04/automatically-version-a-flex-application-with-maven/</link>
		<comments>http://www.flexthinker.com/2010/04/automatically-version-a-flex-application-with-maven/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 14:29:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Building and CI]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[build versioning]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://www.flexthinker.com/?p=305</guid>
		<description><![CDATA[Today I had an issue debugging a Flex application. Problem Some of my changes were not built correctly and I had a hard time debugging and checking whether the version of the swf I had deployed is the same with the latest version of my swf file. Solution I wanted to have an embedded code [...]]]></description>
			<content:encoded><![CDATA[<p>Today I had an issue debugging a Flex application.</p>
<p>Problem</p>
<p>Some of my changes were not built correctly and I had a hard time debugging and checking whether the version of the swf I had deployed is the same with the latest version of my swf file.</p>
<p>Solution</p>
<p>I wanted to have an embedded code into the swf and display it into a label, at runtime. Browsing the internet initially, I&#8217;ve found some solutions using <a title="Python" href="http://denislaprise.com/2008/06/23/how-to-automatically-version-a-flex-application/" target="_blank">Python</a> and <a title="Ruby" href="http://philemonworks.wordpress.com/2007/09/06/flex-project-version-and-buildnumber/" target="_blank">Ruby</a>.  Having my build in maven, I decided to see what is provided by Flex, FlexMojos and Maven in order to facilitate that.</p>
<p>Analyzing the mxmlc compiler arguments I have found that I can define custom parameters into the compiler and read them from actionscript code. So I have defined a BUILD::buildNumber compiler variable:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">-define+=BUILD::buildNumber,<span style="color: #ff0000;">&quot;'1.0.0'&quot;</span></pre></div></div>

<p>In the Main.mxml application I&#8217;ve added:</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Script</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;">&lt;!<span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span></span>
<span style="color: #000000;">		<span style="color: #66cc66;">&#91;</span>Bindable<span style="color: #66cc66;">&#93;</span></span>
<span style="color: #000000;">		/**</span>
<span style="color: #000000;">		* specified through the flex compiler arguments like: </span>
<span style="color: #000000;">		* -define+=BUILD::buildNumber,<span style="color: #ff0000;">&quot;'1.0.0'&quot;</span></span>
<span style="color: #000000;">		*/</span>
<span style="color: #000000;">		private static var buildNumber:String = BUILD::buildNumber;</span>
<span style="color: #000000;">	<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Script</span><span style="color: #7400FF;">&gt;</span></span>		
<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Label</span> </span>
<span style="color: #000000;">	right=<span style="color: #ff0000;">&quot;0&quot;</span> top=<span style="color: #ff0000;">&quot;0&quot;</span></span>
<span style="color: #000000;">	color=<span style="color: #ff0000;">&quot;red&quot;</span></span>
<span style="color: #000000;">	text=<span style="color: #ff0000;">&quot;{buildNumber}&quot;</span> <span style="color: #7400FF;">/&gt;</span></span></pre></div></div>

<p>Next, I had to change the compiler parameter for each build, automatically. Using Hudson as my Continuous Integration server, things got very simple. When a Hudson job executes, it sets some environment variables that can be used in build scripts. Among those variables there is BUILD_NUMBER.</p>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;plugin<span style="color: #7400FF;">&gt;</span></span>
       <span style="color: #000000;">&lt;groupId<span style="color: #7400FF;">&gt;</span></span>org.sonatype.flexmojos<span style="color: #000000;">&lt;/groupId<span style="color: #7400FF;">&gt;</span></span>
       <span style="color: #000000;">&lt;artifactId<span style="color: #7400FF;">&gt;</span></span>flexmojos-maven-plugin<span style="color: #000000;">&lt;/artifactId<span style="color: #7400FF;">&gt;</span></span>
       <span style="color: #000000;">&lt;version<span style="color: #7400FF;">&gt;</span></span>${flex-mojos.version}<span style="color: #000000;">&lt;/version<span style="color: #7400FF;">&gt;</span></span>
       <span style="color: #000000;">&lt;extensions<span style="color: #7400FF;">&gt;</span></span>true<span style="color: #000000;">&lt;/extensions<span style="color: #7400FF;">&gt;</span></span>
       <span style="color: #000000;">&lt;configuration<span style="color: #7400FF;">&gt;</span></span>
                <span style="color: #000000;">&lt;definesDeclaration<span style="color: #7400FF;">&gt;</span></span>
		 	<span style="color: #000000;">&lt;property<span style="color: #7400FF;">&gt;</span></span>
		 	       <span style="color: #000000;">&lt;name<span style="color: #7400FF;">&gt;</span></span>BUILD::buildNumber<span style="color: #000000;">&lt;/name<span style="color: #7400FF;">&gt;</span></span>
		 	       <span style="color: #000000;">&lt;value<span style="color: #7400FF;">&gt;</span></span>&quot;${BUILD_NUMBER}-${project.version}&quot;<span style="color: #000000;">&lt;/value<span style="color: #7400FF;">&gt;</span></span>
		 	<span style="color: #000000;">&lt;/property<span style="color: #7400FF;">&gt;</span></span>
          	<span style="color: #000000;">&lt;/definesDeclaration<span style="color: #7400FF;">&gt;</span></span>
       <span style="color: #000000;">&lt;/configuration<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;">&lt;/plugin<span style="color: #7400FF;">&gt;</span></span></pre></div></div>

<p>The output of this, for a buildNumber 173 and a project version 1.0-SNAPSHOT is:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #cc66cc;">173</span>-<span style="color: #cc66cc;">1.0</span>-SNAPSHOT</pre></div></div>

<p>The next thing I need to achieve, is to trick the browser&#8217;s cache, using this buildNumber, appending it at the end of the request for Main.swf, to end up automatically with a request like:<br />
<code>Main.swf?173-1.0-SNAPSHOT. </code></p>
<p>My <a href="http://www.flexthinker.com/2010/04/avoid-users-cache-when-deploying-new-versions-of-flex-app/">next post</a> covers this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexthinker.com/2010/04/automatically-version-a-flex-application-with-maven/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

