<?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>AG Prime Blog &#187; seo</title>
	<atom:link href="http://blog.ag-prime.com/tag/seo/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ag-prime.com</link>
	<description>Afla ce idei ne-au mai venit...</description>
	<lastBuildDate>Thu, 15 Dec 2011 10:55:45 +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>seoLink in Flex</title>
		<link>http://blog.ag-prime.com/2009/09/seolink-in-flex/</link>
		<comments>http://blog.ag-prime.com/2009/09/seolink-in-flex/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 11:31:02 +0000</pubDate>
		<dc:creator>gabriel.ungureanu</dc:creator>
				<category><![CDATA[Promovare]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://blog.ag-prime.com/?p=207</guid>
		<description><![CDATA[Hello, In the past days I worked on the so-called seoLink project for Flex. It&#8217;s a more deep aproach of Google Friendly Flex applications (discussed here: http://blog.ag-prime.com/2009/06/permanent-links-in-flex-and-track-them-with-google-analytics/). Well the main idea is to create a common XML file that stores actual content. Then this XML file is parsed by the Flex application and by an [...]]]></description>
			<content:encoded><![CDATA[<p>Hello,</p>
<p>In the past days I worked on the so-called seoLink project for Flex. It&#8217;s a more deep aproach of Google Friendly Flex applications (discussed here: <a href="http://blog.ag-prime.com/2009/06/permanent-links-in-flex-and-track-them-with-google-analytics/">http://blog.ag-prime.com/2009/06/permanent-links-in-flex-and-track-them-with-google-analytics/</a>).</p>
<p>Well the main idea is to create a common XML file that stores actual content. Then this XML file is parsed by the Flex application and by an PHP file too.</p>
<p>Using .htaccess I redirect all incoming requests to index.php?p=&lt;request&gt;</p>
<p>So, inside the .php file, I dispach this <em>path</em> parameter and load the equivalent information from XML file.</p>
<p>The resulting html will have the SWF loader for Flex (with flashvars = p=&lt;request&gt;) and alternate content selected from XML. So both alternate text and actual Flex content will be according to the &lt;request&gt; set to the browser.</p>
<p>You can view full source just by right click and view source here: <a href="http://seolink.ag-prime.com/">http://seolink.ag-prime.com/</a></p>
<p>I&#8217;ll soon come with updates.</p>
<p>Later update: Lynx view</p>
<p><a href="http://blog.ag-prime.com/wp-content/uploads/2009/09/lynx.jpg"><img class="alignnone size-medium wp-image-209" title="lynx view" src="http://blog.ag-prime.com/wp-content/uploads/2009/09/lynx-300x185.jpg" alt="" width="300" height="185" /></a></p>
<p>[15.09.2009 21:20] Yes, we are getting there. The first results in google just arived: <a href="http://www.google.com/search?q=site:seolink.ag-prime.com">http://www.google.com/search?q=site:seolink.ag-prime.com</a></p>
<p>Also, how it look on Google Analytics. It tracks pageviews, landing pages&#8230;</p>
<p style="text-align: center;"><a href="http://blog.ag-prime.com/wp-content/uploads/2009/09/analytics-view.jpg"><img class="aligncenter size-medium wp-image-213" title="analytics-view" src="http://blog.ag-prime.com/wp-content/uploads/2009/09/analytics-view-300x74.jpg" alt="" width="300" height="74" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ag-prime.com/2009/09/seolink-in-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Permanent links in Flex and track them with Google Analytics</title>
		<link>http://blog.ag-prime.com/2009/06/permanent-links-in-flex-and-track-them-with-google-analytics/</link>
		<comments>http://blog.ag-prime.com/2009/06/permanent-links-in-flex-and-track-them-with-google-analytics/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 13:45:47 +0000</pubDate>
		<dc:creator>gabriel.ungureanu</dc:creator>
				<category><![CDATA[Promovare]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[browser manager]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://blog.ag-prime.com/?p=173</guid>
		<description><![CDATA[The purpose of this tutorial is to recreate the browsing experience similar to HTML, so you can save / share links and track clicks through sections of your site. I first created a very simple application, having 3 sections: Home, Events and Contact: The directory structure The application is organized in Views using ViewStack CODE: [...]]]></description>
			<content:encoded><![CDATA[<p>The purpose of this tutorial is to recreate the browsing experience similar to HTML, so you can save / share links and track clicks through sections of your site.</p>
<p>I first created a very simple application, having 3 sections: <strong>Home, Events and Contact</strong>:</p>
<p><strong>The directory structure</strong></p>
<p><img class="dynImage" src="http://67.220.209.22/%7Eagprimec/gabrielungureanu/permaLink/img/directoryStructure.png" alt="" width="200" height="332" /></p>
<p>The application is organized in Views using ViewStack</p>
<p><strong>CODE:</strong></p>
<p><span style="color: #000080;">&lt;mx:ViewStack id=&#8221;views&#8221; horizontalCenter=&#8221;0&#8243; verticalCenter=&#8221;0&#8243;&gt;</span></p>
<p><span style="color: #000080;"> &lt;views:home id=&#8221;home&#8221; label=&#8221;Home&#8221; showEffect=&#8221;{fadeIn}&#8221; hideEffect=&#8221;{fadeOut}&#8221; /&gt;</span></p>
<p><span style="color: #000080;"> &lt;views:events id=&#8221;events&#8221; label=&#8221;Events&#8221; showEffect=&#8221;{fadeIn}&#8221; hideEffect=&#8221;{fadeOut}&#8221; /&gt;</span></p>
<p><span style="color: #000080;"> &lt;views:contact id=&#8221;contact&#8221; label=&#8221;Contact&#8221; showEffect=&#8221;{fadeIn}&#8221; hideEffect=&#8221;{fadeOut}&#8221; /&gt;</span></p>
<p><span style="color: #000080;">&lt;/mx:ViewStack&gt;</span></p>
<p>Every  view being placed in <strong>com/views/*</strong> , and all are components having the same structure:</p>
<p><strong>CODE:</strong></p>
<p><span style="color: #000080;">&lt;mx:Canvas xmlns:mx=&#8221;http://www.adobe.com/2006/mxml&#8221; width=&#8221;400&#8243; height=&#8221;300&#8243;&gt;</span></p>
<p><span style="color: #000080;"> &lt;mx:VBox&gt;</span></p>
<p><span style="color: #000080;"> &lt;mx:Label text=&#8221;Home page&#8221; /&gt;</span></p>
<p><span style="color: #000080;"> &lt;mx:TextArea htmlText=&#8221;Lorem ipsum&#8221;</span></p>
<p><span style="color: #000080;"> editable=&#8221;false&#8221; borderThickness=&#8221;0&#8243; condenseWhite=&#8221;true&#8221; backgroundAlpha=&#8221;0&#8243; focusRoundedCorners=&#8221;0&#8243; focusThickness=&#8221;0&#8243;</span></p>
<p><span style="color: #000080;"> verticalScrollPolicy=&#8221;auto&#8221; horizontalScrollPolicy=&#8221;off&#8221;/&gt; </span></p>
<p><span style="color: #000080;"> &lt;/mx:VBox&gt; </span></p>
<p><span style="color: #000080;">&lt;/mx:Canvas&gt;</span></p>
<p>For menu display I used the very intuitive LinkBar that extracts labels from views inside ViewStack (great!)</p>
<p><strong>CODE:</strong></p>
<p><span style="color: #000080;">&lt;mx:LinkBar dataProvider=&#8221;views&#8221; top=&#8221;10&#8243; horizontalCenter=&#8221;0&#8243;/&gt;</span></p>
<p>And that&#8217;s it for our simple application setup.</p>
<p>Preview what we have so far:</p>
<p><img class="dynImage img-popup" src="http://67.220.209.22/%7Eagprimec/gabrielungureanu/permaLink/img/firstPreview.png" alt="" width="718" height="370" /></p>
<p>Ok it all works ok now, but we want, to send somebody directly to our events page. Simple! For that we will have to use the BrowserManager so we can add trailing variables to our page link. They will be pairs <strong>variable=value</strong> after a <strong>#</strong> character.</p>
<p>The steps are very simple, when we first load our application we check the variables, if any, at the end of our url and load the specified view. And during our application is running we update the url every time we change views, and update views every time we spot a url change (so we can also handle the browser&#8217;s back button).</p>
<p><strong>Note!</strong> This makes use of the <em>history.js</em> script, make sure it&#8217;s included in your <em>index.template.html</em> file.</p>
<p><strong>CODE:</strong></p>
<p><span style="color: #000080;">&lt;mx:Script&gt;</span></p>
<p><span style="color: #000080;"> &lt;![CDATA[</span></p>
<p><span style="color: #000080;"> <em>// browser</em></span></p>
<p><span style="color: #000080;"> <strong>import</strong> mx.events.BrowserChangeEvent;</span></p>
<p><span style="color: #000080;"> <strong>import</strong> mx.managers.IBrowserManager;</span></p>
<p><span style="color: #000080;"> <strong>import</strong> mx.managers.BrowserManager;</span></p>
<p><span style="color: #000080;"> <strong>import</strong> mx.utils.URLUtil;</span></p>
<p><span style="color: #000080;"> <strong>private</strong> <strong>var</strong> bm:IBrowserManager</span></p>
<p><span style="color: #000080;"> <strong>protected</strong> <strong>function</strong> init() : <strong>void</strong> {</span></p>
<p><span style="color: #000080;"> <em>//get an instance of the browser manager</em></span></p>
<p><span style="color: #000080;"> bm = BrowserManager.getInstance();</span></p>
<p><span style="color: #000080;"> <em>//initialize the browser manager</em></span></p>
<p><span style="color: #000080;"> bm.init();</span></p>
<p><span style="color: #000080;"> <em>//set initial values based on url parameters</em></span></p>
<p><span style="color: #000080;"> updateContent();</span></p>
<p><span style="color: #000080;"> <em>//add event listeners to handle back/forward browser buttons</em></span></p>
<p><span style="color: #000080;"> bm.addEventListener( BrowserChangeEvent.BROWSER_URL_CHANGE,onURLChange );</span></p>
<p><span style="color: #000080;"> }</span></p>
<p><span style="color: #000080;"> <strong>private</strong> <strong>function</strong> updateContent():<strong>void</strong></span></p>
<p><span style="color: #000080;"> {</span></p>
<p><span style="color: #000080;"> <em>//convert url parameters to an actionscript object</em></span></p>
<p><span style="color: #000080;"> <strong>var</strong> o:Object = URLUtil.stringToObject(bm.fragment);</span></p>
<p><span style="color: #000080;"> <em>//set the selected view</em></span></p>
<p><span style="color: #000080;"> <strong>var</strong> p : String = (o.p != <strong>null</strong>)?o.p:<strong>"home"</strong>;</span></p>
<p><span style="color: #000080;"> Application.application.views.selectedChild = getViewsChildById(p);</span></p>
<p><span style="color: #000080;"> }</span></p>
<p><span style="color: #000080;"> <strong>private</strong> <strong>function</strong> onURLChange( event : BrowserChangeEvent ):<strong>void</strong></span></p>
<p><span style="color: #000080;"> {</span></p>
<p><span style="color: #000080;"> <em>//call update values based on change url</em></span></p>
<p><span style="color: #000080;"> updateContent();</span></p>
<p><span style="color: #000080;"> }</span></p>
<p><span style="color: #000080;"> <strong>public</strong> <strong>function</strong> updateURL():<strong>void</strong></span></p>
<p><span style="color: #000080;"> {</span></p>
<p><span style="color: #000080;"> <em>//update URL fragment</em></span></p>
<p><span style="color: #000080;"> <strong>var</strong> page : String = Application.application.views.selectedChild.toString().split(<strong>"."</strong>).pop().toString();</span></p>
<p><span style="color: #000080;"> bm.setFragment( <strong>"p="</strong> + page );</span></p>
<p><span style="color: #000080;"> }</span></p>
<p><span style="color: #000080;"> <strong>private</strong> <strong>static</strong> <strong>function</strong> getViewsChildById(str : String):Object {</span></p>
<p><span style="color: #000080;"> <strong>for</strong> <strong>each</strong> (<strong>var</strong> child : Object <strong>in</strong> Application.application.views.getChildren()) {</span></p>
<p><span style="color: #000080;"> <strong>if</strong> (child.id == str) {</span></p>
<p><span style="color: #000080;"> <strong>return</strong> child;</span></p>
<p><span style="color: #000080;"> }</span></p>
<p><span style="color: #000080;"> }</span></p>
<p><span style="color: #000080;"> <strong>return</strong> <strong>null</strong>;</span></p>
<p><span style="color: #000080;"> }</span></p>
<p><span style="color: #000080;"> ]]&gt;</span></p>
<p><span style="color: #000080;"> &lt;/mx:Script&gt;</span></p>
<p>We store a browser manager instance into out <em>IBrowserManager</em> variable. Upon <em>applicationComplete</em> event we launch <em>init()</em>, initializing the browser manager, updating to selected view, and hooking a <em>BROWSER_URL_CHANGE</em> event to update views every time a url is change or browser&#8217;s Back, Forward button is pressed.</p>
<p>The pairs stored at the end of the url can be extracted from BrowserManager&#8217;s .fragment value. For example, I used the variable <strong><em>p</em></strong> to store the view name. So, for example the events view will have a link like <em>http://localhost/&#8230;/permaLink.html<strong>#p=events</strong></em></p>
<p>Since the value from fragment  is a string, I also created a helper function that extracts the view child by specifying it&#8217;s name <em>getViewsChildById(str:String)</em> that returns the object representing that view.</p>
<p>Next step is to put a handler on ViewStack change event , <em>change=&#8221;updateURL()&#8221;</em> so we will update the browser&#8217;s url every time a view is changed inside our application.</p>
<p>The updateUrl() simply reads the current ViewStack selectedChild and updates BrowserManager&#8217;s fragment variable.</p>
<p><strong>CODE:</strong></p>
<p><span style="color: #000080;"><strong>var</strong> page : String = Application.application.views.selectedChild.toString().split(<strong>&#8220;.&#8221;</strong>).pop().toString();</span></p>
<p><span style="color: #000080;"> bm.setFragment( <strong>&#8220;p=&#8221;</strong> + page );</span></p>
<p>That&#8217;s it. Simple, right? Now when we click on events our url will like this:</p>
<p>Preview (note the <em>p=value</em> pair at the ending of your url)</p>
<p><img class="dynImage img-popup" src="http://67.220.209.22/%7Eagprimec/gabrielungureanu/permaLink/img/previewUrl.png" alt="" width="718" height="313" /></p>
<p>Now our next task is to track this clicks with Google Analytics. Practically our Flex application behaves now like a Ajax application. So we just have to include our Google Analytics code in the <em>&lt;head&gt;</em> tag of our output html.</p>
<p>You can do this by modifying the <em>html-template/index.template.html</em> file.</p>
<p><strong>CODE:</strong></p>
<p><span style="color: #000080;">&lt;head&gt;</span></p>
<p><span style="color: #000080;">&#8230;</span></p>
<p><span style="color: #000080;">&lt;script type=&#8221;text/javascript&#8221;&gt;</span></p>
<p><span style="color: #000080;">var gaJsHost = ((&#8220;https:&#8221; == document.location.protocol) ? &#8220;https://ssl.&#8221; : &#8220;http://www.&#8221;);</span></p>
<p><span style="color: #000080;">document.write(unescape(&#8220;%3Cscript src=&#8217;&#8221; + gaJsHost + &#8220;google-analytics.com/ga.js&#8217; type=&#8217;text/javascript&#8217;%3E%3C/script%3E&#8221;));</span></p>
<p><span style="color: #000080;">&lt;/script&gt;</span></p>
<p><span style="color: #000080;">&lt;script type=&#8221;text/javascript&#8221;&gt;</span></p>
<p><span style="color: #000080;">try {</span></p>
<p><span style="color: #000080;">var pageTracker = _gat._getTracker(&#8220;put your tracker ID here&#8221;);</span></p>
<p><span style="color: #000080;">pageTracker._trackPageview();</span></p>
<p><span style="color: #000080;">} catch(err) {}</span></p>
<p><span style="color: #000080;">&lt;/script&gt;</span></p>
<p><span style="color: #000080;">&#8230;</span></p>
<p><span style="color: #000080;">&lt;/head&gt;</span></p>
<p>And when we update the url&#8217;s we should tell Google Analytics that we changed that page. For this purpose we have the function <em>pageTracker._trackPageview(pageName)</em><strong>.</strong></p>
<p>So we will simply add a call to this Javascript function, using the Flex&#8217;s <em>ExternalInterface.call</em> , in the <em>updateUrl</em> function:</p>
<p><strong>CODE:</strong></p>
<p><span style="color: #000080;">ExternalInterface.call(<strong>&#8216;pageTracker._trackPageview&#8217;</strong>,<strong>&#8216;#&#8217;</strong>+bm.fragment);</span></p>
<p>So now we can share permanent links to views of our applications, we can track landing / exit pages, all trafic statistics with Google Analytics.</p>
<p>Thank you.</p>
<p>You can view the application in action <a rel="nofollow" href="http://gabrielungureanu.ag-prime.com/permaLink/index.html#p=home" target="_blank">here</a>.</p>
<p>You can download sources here: <a href="http://blog.ag-prime.com/wp-content/uploads/2009/06/permalink.rar">permalink</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ag-prime.com/2009/06/permanent-links-in-flex-and-track-them-with-google-analytics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google indexes external loaded data in SWF files</title>
		<link>http://blog.ag-prime.com/2009/06/google-indexes-external-loaded-data-in-swf-files/</link>
		<comments>http://blog.ag-prime.com/2009/06/google-indexes-external-loaded-data-in-swf-files/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 11:12:00 +0000</pubDate>
		<dc:creator>gabriel.ungureanu</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Promovare]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://blog.ag-prime.com/?p=142</guid>
		<description><![CDATA[Hello, recently, Google announced support for dinamicly generated SWF content (aka. Flash and / or Flex). So, from now onw, every SWF file in your website will be indexed, and appear on Google&#8217;s search results. Read more about tracking your Flex website and friendly url&#8217;s here. Read more about Google indexing content from external resources [...]]]></description>
			<content:encoded><![CDATA[<p>Hello, recently, Google announced support for dinamicly generated SWF content (aka. Flash and / or Flex).</p>
<p>So, from now onw, every SWF file in your website will be indexed, and appear on Google&#8217;s search results.</p>
<p>Read more about tracking your Flex website and friendly url&#8217;s <a rel="nofollow" href="http://groups.adobe.com/posts/6bca8cb2e9" target="_blank">here</a>.</p>
<p>Read more about Google indexing content from external resources in Flash / Flex <a rel="nofollow" href="http://googlewebmastercentral.blogspot.com/2009/06/flash-indexing-with-external-resource.html" target="_blank">here</a>.</p>
<p><em><strong>Note!</strong> There will be still a issue with this, by now they can only index sites scripted with AS1 and AS2, so not your Flex application.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ag-prime.com/2009/06/google-indexes-external-loaded-data-in-swf-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Coltar de bucatarie&#8221; &#8211; keyword-ul minune!</title>
		<link>http://blog.ag-prime.com/2008/12/coltar-de-bucatarie-keyword-ul-minune/</link>
		<comments>http://blog.ag-prime.com/2008/12/coltar-de-bucatarie-keyword-ul-minune/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 19:29:08 +0000</pubDate>
		<dc:creator>gabriel.ungureanu</dc:creator>
				<category><![CDATA[Promovare]]></category>
		<category><![CDATA[optimizare]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://blog.ag-prime.com/?p=73</guid>
		<description><![CDATA[De curand am inceput o campanie de optimizare SEO si atat de structura cat si de continut pentru un producator de mobila din Jud. Suceava. Site-ul este www.tarraplast.ro si are in index-ul google.ro aproximativ 140 de pagini. Dupa scurt timp de la optimizare au inceput sa se genereze si vizitele. Un cuvant cheie foarte puternic, [...]]]></description>
			<content:encoded><![CDATA[<p>De curand am inceput o campanie de optimizare SEO si atat de structura cat si de continut pentru un producator de mobila din Jud. Suceava.</p>
<p>Site-ul este <a href="http://www.tarraplast.ro/" target="_blank">www.tarraplast.ro</a> si are in index-ul <a href="http://www.google.ro/search?q=site%3Awww.tarraplast.ro&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:en-GB:official&amp;client=firefox-a" target="_blank">google.ro</a> aproximativ 140 de pagini.</p>
<p>Dupa scurt timp de la optimizare au inceput sa se genereze si vizitele. Un cuvant cheie foarte puternic, care genereaza de mai bine de o luna o buna parte din vizite si totodata si vanzari pentru client, este uimitor, un singur produs din site, <a href="http://www.tarraplast.ro/produs-Mobilier%20de%20Bucatarie-Coltar%20bucatarie-26.html" target="_blank">Coltar de Bucatarie</a>. Vedeti <a href="http://www.google.ro/search?q=coltar+de+bucatarie" target="_blank">aici</a> pe ce pozitie se situeaza www.tarraplast.ro la cautarea dupa acest cuvant cheie, practic este primul rezultat al unei companii pe aceste cuvinte. De asemeni aceeasi situatie se intalneste si la cuvinte cheie precum <a href="http://www.google.ro/search?hl=en&amp;client=firefox-a&amp;rls=org.mozilla%3Aen-GB%3Aofficial&amp;q=mobila+falticeni&amp;btnG=Search" target="_blank">mobila falticeni</a> sau <a href="http://www.google.ro/search?hl=en&amp;client=firefox-a&amp;rls=org.mozilla%3Aen-GB%3Aofficial&amp;q=magazine+mobila+suceava&amp;btnG=Search" target="_blank">magazine mobila suceava</a>. In toate aceste rezultate este primul site de companie.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ag-prime.com/2008/12/coltar-de-bucatarie-keyword-ul-minune/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

