<?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>FlexBandit &#187; Flex Info</title>
	<atom:link href="http://flexbandit.com/archives/category/flex-info/feed" rel="self" type="application/rss+xml" />
	<link>http://flexbandit.com</link>
	<description>Yet another Flex enthusiast? You Betcha!</description>
	<lastBuildDate>Sun, 04 Dec 2011 15:34:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Eclipse/FlexBuilder Memory Settings</title>
		<link>http://flexbandit.com/archives/75</link>
		<comments>http://flexbandit.com/archives/75#comments</comments>
		<pubDate>Wed, 16 Sep 2009 13:09:28 +0000</pubDate>
		<dc:creator>donkeybandit</dc:creator>
				<category><![CDATA[Flex Gotchas]]></category>
		<category><![CDATA[Flex Info]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://flexbandit.com/?p=75</guid>
		<description><![CDATA[Increase the amount of heap used by Eclipse/FlexBuilder by adding the following command line options: -vmargs -Xms256M -Xmx512M Shortcut Example: "C:\Program Files\eclipse\eclipse.exe" -vmargs -Xms256M -Xmx512M Alternatively, you can update your eclipse.ini file. More information can be found on Ryan Phelan&#8217;s site. These examples have been tested on a Windows XP PC with 2GB RAM.]]></description>
			<content:encoded><![CDATA[<p>Increase the amount of heap used by Eclipse/FlexBuilder by adding the following command line options:</p>
<p><code>-vmargs -Xms256M -Xmx512M</code></p>
<p>Shortcut Example: <code>"C:\Program Files\eclipse\eclipse.exe" -vmargs -Xms256M -Xmx512M</code></p>
<p>Alternatively, you can update your eclipse.ini file.</p>
<p>More information can be found on <a title="Tweaking Compiler Performance in Flex Builder" href="http://www.rphelan.com/2008/03/27/tweaking-compiler-performance-in-flex-builder/" target="_blank">Ryan Phelan&#8217;s site</a>.</p>
<p>These examples have been tested on a Windows XP PC with 2GB RAM.</p>
]]></content:encoded>
			<wfw:commentRss>http://flexbandit.com/archives/75/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subclipse With SSH &#8211; Top Tip</title>
		<link>http://flexbandit.com/archives/69</link>
		<comments>http://flexbandit.com/archives/69#comments</comments>
		<pubDate>Sun, 21 Jun 2009 13:36:17 +0000</pubDate>
		<dc:creator>donkeybandit</dc:creator>
				<category><![CDATA[Flex Gotchas]]></category>
		<category><![CDATA[Flex Info]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[SVN+SSH]]></category>

		<guid isPermaLink="false">http://flexbandit.com/?p=69</guid>
		<description><![CDATA[If you&#8217;ve attempted to use subclipse with a secure session, you may well have experienced the dreaded error message: The system cannot find the file specified. svn: Can't create tunnel: The system cannot find the file specified. Typically, you experience it when using a url with the following structure: svn+ssh://myfancy.svnserver.com/repo Thankfully there is a very [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve attempted to use subclipse with a secure session, you may well have experienced the dreaded error message:</p>
<p><code>The system cannot find the file specified.<br />
svn: Can't create tunnel: The system cannot find the file specified.</code></p>
<p>Typically, you experience it when using a url with the following structure:</p>
<p><code>svn+ssh://myfancy.svnserver.com/repo</code></p>
<p>Thankfully there is a very simple fix. All you need to do is <span id="more-69"></span>adjust one of the settings in the &#8220;<strong>Window-&gt;Preferences</strong>&#8221; menu.</p>
<p>Navigate the tree to &#8220;<strong>Team-&gt;SVN</strong>&#8221; and you will notice a section called &#8220;SVN Interface&#8221;. If the client is set to &#8220;JavaHL (JNI)&#8221; then <strong>change it to &#8220;SVNKit (Pure Java)&#8221;</strong>.</p>
<p>Thanks to <a href="http://markphip.blogspot.com/" target="_blank">Mark Phippard</a> for this gem.</p>
]]></content:encoded>
			<wfw:commentRss>http://flexbandit.com/archives/69/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Setting Up a Basic BlazeDS Server with Debugging</title>
		<link>http://flexbandit.com/archives/55</link>
		<comments>http://flexbandit.com/archives/55#comments</comments>
		<pubDate>Sun, 01 Mar 2009 22:17:38 +0000</pubDate>
		<dc:creator>donkeybandit</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex Info]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[BlazeDS]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[HowTo]]></category>

		<guid isPermaLink="false">http://flexbandit.com/?p=55</guid>
		<description><![CDATA[Working with Eclipse is a great experience with lots of powerful features at your fingertips.  Unfortunately, for a beginner it can be a little difficult to get used to and not immediately obvious how to do certain tasks. Setting up projects can be particularly challenging, especially if you have a lot of extra development requirements [...]]]></description>
			<content:encoded><![CDATA[<p>Working with Eclipse is a great experience with lots of powerful features at your fingertips.  Unfortunately, for a beginner it can be a little difficult to get used to and not immediately obvious how to do certain tasks. Setting up projects can be particularly challenging, especially if you have a lot of extra development requirements (for example, using Maven, Ant, Sping, etc.).  Using the standard <a title="Getting started with BlazeDS" href="http://www.adobe.com/devnet/livecycle/articles/blazeds_gettingstarted.html" target="_blank">Adobe getting started guide</a> gives you a gentle introduction to remotiing and messaging, but doesn&#8217;t give you details on how to set up a clean &#8220;bare bones&#8221; application.</p>
<p>This article lists the steps to create a bare bones BlazeDS server configuration using the <a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/">turnkey</a> solution.<span id="more-55"></span></p>
<h2>What You&#8217;ll Need</h2>
<p>First I&#8217;ll assume you have already downloaded and installed the following:</p>
<ul>
<li>Eclipse</li>
<li>Flex Builder (or Flex Builder plugin for Eclipse)</li>
<li>BlazeDS turnkey</li>
</ul>
<p>If you followed all of the instructions for installing and running the basic BlazeDS turnkey, then you currently have a tomcat server running a demo on localhost (port 8400). If successful, you should see the BlazeDS index page by clicking <a title="Localhost BlazeDS Install..... hopefully!" href="http://localhost:8400/" class="broken_link">here</a>. If you see an error at this point, then you can go and check your server logs and try to correct it. <strong>Do not proceed with this guide until you see the functioning index page.</strong></p>
<p>Now you have successfully installed Tomcat and BlazeDS turnkey, you will need to turn it off as you won&#8217;t be using it from here. Yes that&#8217;s right, <strong>turn it off!</strong> Shutdown the tomcat server using any method you choose (i.e. ctrl-c, shutdown.bat, stop the service, catalina stop, etc.). This will free up port 8400 and allow you to run the server from Eclipse after we have configured it.</p>
<h2>Setting up Tomcat in Eclipse</h2>
<p>These are the steps for creating a connection to the tomcat server:</p>
<ol>
<li>Start Eclipse and select the &#8220;Java EE&#8221; perspective</li>
<li>In the bottom panel, select the &#8220;Servers&#8221; tab</li>
<li>Right click on the panel and select &#8220;New-&gt;Server&#8221;</li>
<li>Select the server settings and point them to your newly installed tomcat server. The installation directory should be &#8220;&lt;base turnkey installation dir&gt;\tomcat&#8221; (in my case this is &#8220;C:\blazeds\tomcat&#8221;).</li>
<li>Click Finish</li>
</ol>
<p>Once you have completed these steps, you should see a new server created in the &#8220;Servers&#8221; panel, plus a new tree entry in the Project Explorer (also called &#8220;Servers&#8221;). Your environment should look a bit like <a title="Server setup screenshot" href="http://flexbandit.com/wp-content/uploads/2009/03/eclipseserverscreenshot.jpg">this</a>.</p>
<h2>Creating a Project</h2>
<p>The next step is to create the server side project.</p>
<ol>
<li>Create a new &#8220;Dynamic Web Project&#8221; with the following settings:
<ul>
<li><strong>Project name:</strong> myBlazeProject</li>
<li><strong>Target Runtime:</strong> &#8220;Apache Tomcat x.x&#8221; (this is the server you created in the last section)</li>
<li><strong>Configuration:</strong> Default Configuration for Apache Tomcat x.x</li>
</ul>
</li>
<li>Click &#8220;Finish&#8221;</li>
</ol>
<p>After creating the project, your environment should look a little like <a href="http://flexbandit.com/wp-content/uploads/2009/03/eclipsenewprojectscreenshot.jpg">this</a>.</p>
<h2>Creating the Bare Bones BlazeDS Configuration</h2>
<p>Ok, we now have the server set up and a basic project. The next steps set up the BlazeDS libraries and configure the environment to auto-update the server when the project is built.</p>
<ol>
<li>Overwrite the contents of your &#8220;WebContent&#8221; directory with the BlazeDS directory structure &#8220;&lt;base turnkey installation dir&gt;\tomcat\webapps\blazeds&#8221;.  The result should look a little like <a href="http://flexbandit.com/wp-content/uploads/2009/03/eclipsecopiedfilesscreenshot.jpg">this</a>.</li>
<li>Right click on your newly created &#8220;myBlazeProject&#8221; project and select &#8220;Properties&#8221;</li>
<li>Select &#8220;Java Build Path&#8221; from the list in the left hand panel.</li>
<li>Set the &#8220;Default output folder&#8221; to &#8220;myBlazeProject/WebContent/WEB-INF/classes&#8221;. This will cause your web server to automatically update every time you rebuild your project.</li>
</ol>
<h2>Create a Basic Remote Class</h2>
<p>Great! We&#8217;re nearly there&#8230; now let&#8217;s create and configure a Java class so we can test our configuration.</p>
<ol>
<li>In the &#8220;myBlazeProject/WebContent/WEB-INF/src&#8221; directory, create a new class called HelloWorld.java.</li>
<pre>public class HelloWorld {
    public String sayHello(String name) {
        return "Hello, " + name;
    }
}</pre>
<li>Configure BlazeDS to allow remoting requests to the HelloWorld class by adding a destination to the &#8220;<strong>remoting-config.xml</strong>&#8221; file found in the &#8220;myBlazeProject/WebContent/WEB-INF/flex&#8221; directory. Use the following destination configuration:</li>
<pre>&lt;destination id="HelloWorld"&gt;
    &lt;properties&gt;
        &lt;source&gt;HelloWorld&lt;/source&gt;
    &lt;/properties&gt;
&lt;/destination&gt;</pre>
<li>Start your application server by clicking on the green &#8220;play&#8221; button. Verify your web application is configured by going to the following URL (The url and port may vary depending on your application server configuration and what you named your project): <a href="http://localhost:8400/myBlazeProject/" target="_blank" class="broken_link">http://localhost:8400/myBlazeProject/</a><br />
If your server is not configured to display directory contents, you might see a 404 error. This is OK, but failure to connect errors are not.</li>
</ol>
<h2>Create a Flex Project</h2>
<p>Whether you use the Flex Builder 3 plugin for Eclipse or standalone Flex builder 3 installation is entirely up to you. It&#8217;s possible to manage your Flex and Java code in one IDE if you use the plugin, but you may prefer the standalone IDE instead.</p>
<p>These steps create the Flex project and link it to your server:</p>
<ol>
<li>Create a new Flex Project
<ul>
<li> <strong>Project name: </strong>testHelloWorld</li>
<li><strong>Application server type:</strong> J2EE</li>
<li><strong>Use remote object access service:</strong> enabled (with &#8220;LiveCycle Data Services&#8221; selected)</li>
</ul>
</li>
<li>Click &#8220;Next &gt;&#8221;</li>
<li>Use these settings:
<ul>
<li><strong>Root folder:</strong> point this to your &#8220;WebContent&#8221; directory in the Java project</li>
<li><strong>Root URL:</strong> http://localhost:8400/myBlazeProject/</li>
<li><strong>Context Root:</strong> /myBlazeProject</li>
</ul>
</li>
<li>Click &#8220;Validate Configuration&#8221;</li>
<li>Click &#8220;Finish&#8221;</li>
</ol>
<h2>Create a Client Test Application</h2>
<p>Finally, let&#8217;s update the Flex project to use our BlazeDS Server so we can test our remote object:</p>
<ol>
<li>Update the testHelloWorld.mxml file with the following code:</li>
<pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"&gt;

    &lt;mx:RemoteObject id="ro" destination="HelloWorld"/&gt;
    &lt;mx:TextInput id="n" change="ro.sayHello(n.text)"/&gt;
    &lt;mx:Label text="{ro.sayHello.lastResult}"/&gt;

&lt;/mx:Application&gt;</pre>
<li>Build and Run!</li>
</ol>
<p>If all went well, then you should have a working Flex app that connects to your remote service and responds with &#8220;Hello, &lt;your name&gt;&#8221;.  Something like <a title="Success!" href="http://flexbandit.com/wp-content/uploads/2009/03/chromeremoteresult.jpg" target="_blank">this</a>.</p>
<h2>Troubleshooting</h2>
<p>If you for some reason your components don&#8217;t talk to each other after following all the steps, try cleaning the projects and restarting the server.</p>
<h2>Server Side Debugging</h2>
<p>Now that we have created the bare bones server in this manner, we can use the fantastic debug functionality provided by Eclipse in the Java server code as well as the Eclipse client code!</p>
<p>To use the Java debug mode, just add your breakpoints to your source files and make sure the server is running in debug mode. Then when your Flex apps call the remote objects, they will trigger the debug mode and Eclipse will automagically put you into Java debug mode.</p>
<h2>Further Reading</h2>
<p>This article was inspired by the excellent in depth articles provided by the following sources:</p>
<ul>
<li><a href="http://www.javaworld.com/community/node/2181">Bare Bones BlazeDS Object Remoting &#8211; by Dustin Marx</a></li>
<li><a href="http://www.infoq.com/articles/blazeds-intro">Building Web and Desktop Applications with BlazeDS and AMF &#8211; by James Ward and Shashank Tiwari</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://flexbandit.com/archives/55/feed</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
		<item>
		<title>Zentrack Customer Front End</title>
		<link>http://flexbandit.com/archives/47</link>
		<comments>http://flexbandit.com/archives/47#comments</comments>
		<pubDate>Fri, 19 Dec 2008 13:40:13 +0000</pubDate>
		<dc:creator>donkeybandit</dc:creator>
				<category><![CDATA[Flex Info]]></category>
		<category><![CDATA[Zentrack]]></category>
		<category><![CDATA[Cairngorm]]></category>

		<guid isPermaLink="false">http://flexbandit.com/?p=47</guid>
		<description><![CDATA[I promised a while back that I would publish the new prototype front end for Zentrack. This initial version is written using the Cairngorm MVC framework and you can play with an early release here if you like The Flex front end interfaces to the traditional HTML version via an API that Kato and I [...]]]></description>
			<content:encoded><![CDATA[<p>I promised a while back that I would publish the new prototype front end for Zentrack. This initial version is written using the Cairngorm MVC framework and you can play with an early release <a href="http://flexbandit.com/zt/">here</a> if you like <img src='http://flexbandit.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <span id="more-47"></span></p>
<p>The Flex front end interfaces to the traditional HTML version via an API that Kato and I developed.  To see how the two tools interact, you can see the HTML version <a href="http://flexbandit.com/ZentrackDPD6/" class="broken_link">here</a>. As I have been getting a lot of spam and attacks lately, I won&#8217;t be giving out the login details openly but you can leave a comment or contact me via the <a href="http://flexbandit.com/contact">contact page</a> and I&#8217;ll send you the details. If you would prefer to stay anonymous, <a href="http://flexbandit.com/live-chat">live chat</a> is also an option.</p>
<p>You can get hold of the latest version of the source code at SourceForge in the <a href="https://sourceforge.net/svn/?group_id=22724">Zentrack SVN Repository</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://flexbandit.com/archives/47/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Search Engine Capability</title>
		<link>http://flexbandit.com/archives/46</link>
		<comments>http://flexbandit.com/archives/46#comments</comments>
		<pubDate>Sat, 13 Dec 2008 11:49:35 +0000</pubDate>
		<dc:creator>donkeybandit</dc:creator>
				<category><![CDATA[Clarisolve]]></category>
		<category><![CDATA[Flex Info]]></category>
		<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[htmlText]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://flexbandit.com/?p=46</guid>
		<description><![CDATA[Flash Player 10 has been out for a while now, so I decided to test the claims that Google and other search engines can now effectively crawl the Text inside a SWF. Historically, I found that a SWF would be identified but would not be displayed correctly in the search results. This has now been [...]]]></description>
			<content:encoded><![CDATA[<p>Flash Player 10 has been out for a while now, so I decided to test the claims that Google and other search engines can now effectively crawl the Text inside a SWF. Historically, I found that a SWF would be identified but would not be displayed correctly in the search results. This has now been solved.<span id="more-46"></span></p>
<p>To test the functionality I searched for &#8220;Clarisolve&#8221; in Google, which has a lot of freely visible text and did not display correctly before FP10. I then entered the search string &#8220;Clarisolve ClearCollect&#8221; and the results displayed from a specific page on the site. Clarisolve has an html shadow site so I checked to see if it was being picked up instead of the flash version. The results actually displayed both the html and SWF version.</p>
<p>At this time unfortunately I have not implemented deep linking on the Clarisolve site, so no matter what you choose in Google it will always go to the home page. Still this is better than a blank SWF that barely caches right?</p>
<p>The next step will be to determine how SEO works with Flash/Flex text has we don&#8217;t have the luxury of traditional html text to add &#8220;h&#8221; tags.</p>
]]></content:encoded>
			<wfw:commentRss>http://flexbandit.com/archives/46/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tab Navigator &#8211; Firefox Styleeeeee</title>
		<link>http://flexbandit.com/archives/35</link>
		<comments>http://flexbandit.com/archives/35#comments</comments>
		<pubDate>Mon, 22 Sep 2008 19:30:06 +0000</pubDate>
		<dc:creator>donkeybandit</dc:creator>
				<category><![CDATA[Flex Info]]></category>

		<guid isPermaLink="false">http://flexbandit.com/?p=35</guid>
		<description><![CDATA[There are some very generous souls out there on the interweb thingy, and one of them has offered up a solution on how to make a very nifty TabNavigator. Take a look at this link for details.]]></description>
			<content:encoded><![CDATA[<p>There are some very generous souls out there on the interweb thingy, and one of them has offered up a solution on how to make a very nifty TabNavigator. Take a look at <a href="http://dougmccune.com/blog/2007/02/07/quest-for-the-perfect-tabnavigator-part-3-with-source/">this link</a> for details.</p>
]]></content:encoded>
			<wfw:commentRss>http://flexbandit.com/archives/35/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Flex Site with SEO in Mind</title>
		<link>http://flexbandit.com/archives/7</link>
		<comments>http://flexbandit.com/archives/7#comments</comments>
		<pubDate>Mon, 30 Jun 2008 18:14:26 +0000</pubDate>
		<dc:creator>donkeybandit</dc:creator>
				<category><![CDATA[Clarisolve]]></category>
		<category><![CDATA[Flex Info]]></category>
		<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://matt.was-here.org/?p=7</guid>
		<description><![CDATA[- Part 1 &#8211; Creating a Shadow Site Creating a beautiful web 2.0 website in Flash/Flex is very satisfying. I really enjoy the development time savings of Flex versus that of general HTML/javascript solutions and the crispness of the interfaces created. The pleasure of Flex development is something I can talk about for hours and [...]]]></description>
			<content:encoded><![CDATA[<p>-</p>
<h1>Part 1 &#8211; Creating a Shadow Site</h1>
<p>Creating a beautiful web 2.0 website in Flash/Flex is very satisfying. I really enjoy the development time savings of Flex versus that of general HTML/javascript solutions and the crispness of the interfaces created. The pleasure of Flex development is something I can talk about for hours and I have even been known to evangelise in my local bar on a Friday night.</p>
<p>It&#8217;s not all roses though, as Flex solutions do come with one major flaw; They are not search engine friendly (for a number of reasons). Part 1 of this article explores a solution using a &#8220;<strong>Shadow Site</strong>&#8220;, which is a term I surfed across recently and feel it accurately describes the subject. <span id="more-7"></span></p>
<h1>The Problem</h1>
<p>You are probably already aware of the issues associated with <a title="Wikipedia definition of " href="http://en.wikipedia.org/wiki/Search_engine_optimization" target="_blank">SEO (Search Engine Optimisation)</a> and Flex, but just in case this is a new concept for you I will briefly explain the issues that are Flex related:</p>
<h2>Pure Flash/Flex sites are not crawled for search text</h2>
<p>As your SWF is basically a compiled program that is executed through the Flash Player, for a search engine to be able to read any embedded content it would have to effectively decompile your <a title="Wikipedia definition of " href="http://en.wikipedia.org/wiki/SWF" target="_self">SWF</a>. This is a problem for a number of reasons:</p>
<ul>
<li>Google doesn&#8217;t do it (presently)</li>
<li>developers may choose a Flash solution as a means of <a title="Wikipedia definition of " href="http://en.wikipedia.org/wiki/Obfuscation" target="_self">obfuscation </a>(compared to alternative <a title="Wikipedia definition of " href="http://en.wikipedia.org/wiki/Web_2.0" target="_self">web 2.0</a> strategies) so don&#8217;t want their precious code available to the world</li>
<li>the Flash Player/<a title="Wikipedia definition of " href="http://en.wikipedia.org/wiki/SWF" target="_self">SWF</a> standard is owned by Adobe and it is debatable whether it should be decompilable (see point above)</li>
<li>decompilation would cause a large processing overhead for a search engine crawler</li>
</ul>
<h2>Pure Flex solutions are all inclusive within a single SWF structure</h2>
<p>When you compile your Flex programs they ultimately produce a single <a title="Wikipedia definition of " href="http://en.wikipedia.org/wiki/SWF" target="_self">SWF</a> file (not including all of the associated html, javascript, shared resource files, etc.). This single file contains the whole program (and therefore navigation structure) so there is no need to leave the <a title="Wikipedia definition of " href="http://en.wikipedia.org/wiki/SWF" target="_self">SWF</a> just because you are moving to a different page, effectively making the whole URL structure irrelevant. Although this has a lot of advantages, it makes linking to a particular point in your application something you really have to think about. That particular problem is solved in Flex 3 with the improved &#8220;<a title="Wikipedia definition of " href="http://en.wikipedia.org/wiki/Deep_linking" target="_self">Deep Linking</a>&#8221; functionality, but <strong>how does a search engine know about your deep links?</strong></p>
<h1>A Solution</h1>
<p>What I have currently implemented as a solution on the <a title="Clarisolve Web Site" href="http://www.clarisolve.com/" target="_blank">Clarisolve project</a> is a &#8220;shadow site&#8221;. Historically the term &#8220;HTML version&#8221; or &#8220;Text only&#8221; has been used, but in this case the symantics are slightly different because I don&#8217;t really want people to see underlying site, I only want the search engine to. In my implementation, the shadow site is basically a WordPress blog used as a content manager with all the relevant HTML articles stored in the associated MySQL database. <a title="WordPress home page" href="http://wordpress.org/" target="_self">WordPress 2.5.1</a> offers a number of interfaces with which to extract the pages and articles, so I can very easily use the same source text in my Flex application too. <a title="WordPress home page" href="http://wordpress.org/" target="_self">WordPress</a> also has a great publishing element and user manager, so makes for a very rich content management system. You can of course use any CMS of your choice, but I chose WordPress.</p>
<p>The most important part to creating the shadow site is the javascript that queries the current version of Flash Player installed, then either displays the trailing HTML (derived from PHP) or redirects to the Flex version of the site. On redirect, the javascript also interprets the current URL parameters and rearranges them into a friendly format for &#8220;deep linking&#8221;.</p>
<p>The main reason for using WordPress is the great slug support, which is useful on Google as each page is separately displayed. Make sure that the &#8220;PermaLink&#8221; settings are not using the default format as historically search engines could not cope with GET notation very well.</p>
<p>Currently, this solution does need some polish as the way I have implemented it is fairly static, resulting in the RSS feed being broken. Solving the problem should be fairly simple by making the javascript text conditionally addable by a PHP function (based on the URL).</p>
<p>To see the shadow site you need to disable Flash in your browser. The easiest way I found to do this is to use Internet Explorer and go to the &#8220;Tools<strong>-&gt;</strong>Manage Add-ons<strong>-&gt;</strong>Enable or Disable Add-ons..&#8221; and disable the &#8220;Shockwave Flash Object&#8221;. At the time of writing, the HTML site is actually looking prettier than the Flex site but that will change in time <img src='http://flexbandit.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Hopefully that is all the information you&#8217;ll need to create your own shadow site.</p>
<p>The PHP/javascript for selecting whether to use the Flash or HTML looks like this:</p>
<pre>&lt;script src="/AC_OETags.js" language="Javascript"&gt;&lt;/script&gt;
&lt;script language="JavaScript" type="text/javascript"&gt;
&lt;!--
// -----------------------------------------------------------------------------
// Globals
// Major version of Flash required
var requiredMajorVersion = 9;
// Minor version of Flash required
var requiredMinorVersion = 0;
// Minor version of Flash required
var requiredRevision = 0;
// -----------------------------------------------------------------------------
// --&gt;
&lt;/script&gt;
&lt;script language="JavaScript" type="text/javascript"&gt;
&lt;!--
// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
var hasProductInstall = DetectFlashVer(6, 0, 65);

// Version check based upon the values defined in globals
var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);

// Check to see if a player with Flash Product Install is available and the version does not meet the requirements for playback
if ( hasProductInstall &amp;&amp; !hasRequestedVersion ) {
	// MMdoctitle is the stored document.title value used by the installation process to close the window that started the process
	// This is necessary in order to close browser windows that are still utilizing the older version of the player after installation has completed
	// DO NOT MODIFY THE FOLLOWING FOUR LINES
	// Location visited after installation is complete if installation is required
	var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
	var MMredirectURL = window.location;
    document.title = document.title.slice(0, 47) + " - Flash Player Installation";
    var MMdoctitle = document.title;

	AC_FL_RunContent(
		"src", "playerProductInstall",
		"FlashVars", "MMredirectURL="+MMredirectURL+'&amp;MMplayerType='+MMPlayerType+'&amp;MMdoctitle='+MMdoctitle+"",
		"width", "100%",
		"height", "100%",
		"align", "middle",
		"id", "ClarisolveWebSite_v2",
		"quality", "high",
		"bgcolor", "#869ca7",
		"name", "ClarisolveWebSite_v2",
		"allowScriptAccess","sameDomain",
		"type", "application/x-shockwave-flash",
		"pluginspage", "http://www.adobe.com/go/getflashplayer"
	);
} else if (hasRequestedVersion) {
    var strReturn = "";
    var strHref = window.location.href;
    if ( strHref.indexOf("/") &gt; -1 ){
        var aQueryString = strHref.split("/");
        for ( var iParam = aQueryString.length-1; iParam &gt; aQueryString.length-3; iParam-- ){
		    if ( isNaN(aQueryString[iParam]) ) {
	            strReturn += "page=" + aQueryString[iParam];
				iParam = 2;
			} else {
	            strReturn += "archives=" + aQueryString[iParam] + "&amp;";
			}
	    }
    }

    window.location = "/ClarisolveWebSite_v2.html#" + strReturn;
}
// --&gt;
&lt;/script&gt;
&lt;noscript&gt;
  	&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="ClarisolveWebSite_v2" width="100%" height="100%"
			codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"&gt;
			&lt;param name="movie" value="ClarisolveWebSite_v2.swf" /&gt;
			&lt;param name="quality" value="high" /&gt;
			&lt;param name="bgcolor" value="#869ca7" /&gt;
			&lt;param name="allowScriptAccess" value="sameDomain" /&gt;
			&lt;embed src="ClarisolveWebSite_v2.swf" quality="high" bgcolor="#869ca7"
				width="100%" height="100%" name="ClarisolveWebSite_v2" align="middle"
				play="true"
				loop="false"
				quality="high"
				allowScriptAccess="sameDomain"
				type="application/x-shockwave-flash"
				pluginspage="http://www.adobe.com/go/getflashplayer"&gt;
			&lt;/embed&gt;
	&lt;/object&gt;
&lt;/noscript&gt;

&lt;?php
define('WP_USE_THEMES', true);
require('./wordpress/wp-blog-header.php');
?&gt;</pre>
<h1>Conclusion</h1>
<p>SEO is quite a large subject, so I haven&#8217;t gone into the details of how to understand the inner workings of Google or the use of &#8220;&lt;strong&gt;&#8221; and &#8220;&lt;h1&gt;&#8221; tags. Instead I have concentrated on how to get your HTML recognised in a search engine and how to alter your URL to something more &#8220;Deep Link&#8221; friendly.</p>
<p>The next part of this article will be related to importing WordPress articles and deep linking.</p>
]]></content:encoded>
			<wfw:commentRss>http://flexbandit.com/archives/7/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

