<?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>Jozef Chúťka&#039;s blog</title>
	<atom:link href="http://blog.yoz.sk/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.yoz.sk</link>
	<description>My life, my work</description>
	<lastBuildDate>Thu, 26 Apr 2012 12:55:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Quick Tip: FlexUnit &amp; JUnitReport &amp; haltonfailure</title>
		<link>http://blog.yoz.sk/2012/04/quick-tip-flexunit-and-junitreport-and-haltonfailure/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quick-tip-flexunit-and-junitreport-and-haltonfailure</link>
		<comments>http://blog.yoz.sk/2012/04/quick-tip-flexunit-and-junitreport-and-haltonfailure/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 12:54:41 +0000</pubDate>
		<dc:creator>Jozef Chúťka</dc:creator>
				<category><![CDATA[Flash / Flex]]></category>
		<category><![CDATA[FlexUnit]]></category>
		<category><![CDATA[haltonfailure]]></category>
		<category><![CDATA[JUnitReport]]></category>
		<category><![CDATA[unit tests]]></category>

		<guid isPermaLink="false">http://blog.yoz.sk/?p=3200</guid>
		<description><![CDATA[In case you are using flexunit ant task with your flex builds and you are used to failed builds with haltonfailure=&#8221;true&#8221;, you may notice that junitreport task is not executed when unit tests fails. Without having test reports, it does not give you much info about what went wrong. Fortunately, there is a solution using [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.yoz.sk/wp-content/uploads/antunittest.png" alt="" title="antunittest" width="200" height="100" class="alignleft size-full wp-image-3164" /></p>
<p>In case you are using <a href="http://docs.flexunit.org/index.php?title=Ant_Task">flexunit ant task</a> with your flex builds and you are used to failed builds with haltonfailure=&#8221;true&#8221;, you may notice that junitreport task is not executed when unit tests fails. Without having test reports, it does not give you much info about what went wrong. Fortunately, there is a solution using attribute failureproperty and <a href="http://ant.apache.org/manual/Tasks/fail.html">fail ant task</a>. Here is a quick ant build config to generate junitreport report for failed unit tests followed by build fail.</p>
<p><span id="more-3200"></span></p>
<pre class="brush: xml; title: ; notranslate">&lt;flexunit toDir=&quot;${basedir}/${OUTPUT_DIRECTORY}&quot;
    workingDir=&quot;${basedir}/${OUTPUT_DIRECTORY}&quot;
    haltonfailure=&quot;false&quot; verbose=&quot;true&quot; localTrusted=&quot;true&quot;
    failureproperty=&quot;flexunit.failure&quot;
    swf=&quot;${basedir}/${OUTPUT_DIRECTORY}/TestRunner.swf&quot;/&gt;

&lt;mkdir dir=&quot;target/surefire-reports&quot; /&gt;

&lt;junitreport todir=&quot;target/surefire-reports&quot;&gt;
    &lt;fileset dir=&quot;${basedir}/${OUTPUT_DIRECTORY}&quot;&gt;
        &lt;include name=&quot;TEST-*.xml&quot;/&gt;
    &lt;/fileset&gt;
    &lt;report format=&quot;frames&quot; todir=&quot;target/surefire-reports/html&quot;/&gt;
&lt;/junitreport&gt;

&lt;fail if=&quot;flexunit.failure&quot; message=&quot;Unit test(s) failed. See reports!&quot;/&gt;</pre>
<p>Notice: <em>haltonfailure</em>, <em>failureproperty</em>, <em>fail</em></p>
<p>Where to go from here:</p>
<ul>
<li><a href="http://blog.yoz.sk/2012/01/quicktip-flexunit-and-ant/">Quick Tip: FlexUnit &#038; ANT</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.yoz.sk/2012/04/quick-tip-flexunit-and-junitreport-and-haltonfailure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YCanvas Remote Controlled By Remotair</title>
		<link>http://blog.yoz.sk/2012/01/ycanvas-remote-controlled-by-remotair/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ycanvas-remote-controlled-by-remotair</link>
		<comments>http://blog.yoz.sk/2012/01/ycanvas-remote-controlled-by-remotair/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 09:09:41 +0000</pubDate>
		<dc:creator>Jozef Chúťka</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[Flash / Flex]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Multitouch]]></category>
		<category><![CDATA[Remotair]]></category>
		<category><![CDATA[remote controll]]></category>
		<category><![CDATA[RTMFP]]></category>
		<category><![CDATA[YCanvas]]></category>

		<guid isPermaLink="false">http://blog.yoz.sk/?p=3188</guid>
		<description><![CDATA[At the same time I released YCanvas, I have spotted an interesting starling experiment. I realized I can do this for YCanvas easily with Remotair. Remotair is a concept of transmitting device inputs (gestures, accelerometer, camera etc.) into receiving flash or AIR application. Consists of one transmitting app installed on a mobile device or a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.yoz.sk/wp-content/uploads/ycanvas-remotair.jpg" alt="" title="ycanvas-remotair" width="200" height="100" class="alignleft size-full wp-image-3189" /></p>
<p>At the same time I released <a href="http://blog.yoz.sk/2012/01/introduction-to-ycanvas/">YCanvas</a>, I have spotted an interesting <a href="http://vimeo.com/35173287">starling experiment</a>. I realized I can do this for YCanvas easily with <a href="http://remotair.yoz.sk/">Remotair</a>. Remotair is a concept of transmitting device inputs (gestures, accelerometer, camera etc.) into receiving flash or AIR application. Consists of one transmitting app installed on a mobile device or a tablet and one receiving app running on a PC. In order to pair transmitting and receiving application, RTMFP protocol is used. Implementing remotair reciever into any flash application takes only a few minutes, I spent much more time on touch + multitouch implementation with transitions. At the end of the day, I was able to remote controll YCanvas application with BlackBerry Playbook. </p>
<p><span id="more-3188"></span></p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/V0NUIq547dY" frameborder="0" allowfullscreen></iframe></p>
<p>If you want to try it yourself, YCanvas application is available on <a href="http://ycanvas.yoz.sk/remotair/">ycanvas.yoz.sk/remotair</a>, and you can download free Remotair app for <a href="http://appworld.blackberry.com/webstore/content/23068">Playbook</a> or <a href="https://market.android.com/details?id=air.sk.yoz.remotair">Android</a> devices from markets. Source is available on <a href="http://ycanvas.yoz.sk/">ycanvas.yoz.sk</a>.</p>
<ol>
<li>download Remotair application to your device</li>
<li>open and click connect, you should recieve a channel id (e.g. 1008)</li>
<li>open <a href="http://ycanvas.yoz.sk/remotair/">ycanvas.yoz.sk/remotair</a> on your pc</li>
<li>notice white TextInput on top-right position, insert channel id (e.g. 1008) and press enter.</li>
<li>device get paired with your pc and after that you should se &#8220;Touch&#8221; option in Remotair application, click it to open Touch view</li>
<li>use one-finer or two-finger gestures to remotely move, rotate and scale application on a pc</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.yoz.sk/2012/01/ycanvas-remote-controlled-by-remotair/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Introduction to YCanvas</title>
		<link>http://blog.yoz.sk/2012/01/introduction-to-ycanvas/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=introduction-to-ycanvas</link>
		<comments>http://blog.yoz.sk/2012/01/introduction-to-ycanvas/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 09:17:50 +0000</pubDate>
		<dc:creator>Jozef Chúťka</dc:creator>
				<category><![CDATA[Flash / Flex]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[onBoard]]></category>
		<category><![CDATA[Stage3D]]></category>
		<category><![CDATA[Wall Of Fame]]></category>
		<category><![CDATA[WebCanvas]]></category>
		<category><![CDATA[YCanvas]]></category>

		<guid isPermaLink="false">http://blog.yoz.sk/?p=3167</guid>
		<description><![CDATA[Hello YCanvas, who are you? I am an open source ActionScript 3 library that provides stage3D (GPU) engine for perfectly overlapping grid based zooming projects like world maps or onBoard. What? Ok, I am the engine that statnds behind onBoard, and I can handle much more. I can implement Wall Of Fame, WebCanvas, MapQuest, ArcGIS, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.yoz.sk/wp-content/uploads/ycanvas.jpg" alt="" title="ycanvas" width="200" height="100" class="alignleft size-full wp-image-3168" /></p>
<p>Hello <a href="http://ycanvas.yoz.sk">YCanvas</a>, who are you? I am an open source ActionScript 3 library that provides stage3D (GPU) engine for perfectly overlapping grid based zooming projects like world maps or <a href="http://onboard.yoz.sk">onBoard</a>. What? Ok, I am the engine that statnds behind onBoard, and I can handle much <a href="http://ycanvas.yoz.sk/explorer">more</a>. I can implement <a href="http://wall-of-fame.com/">Wall Of Fame</a>, <a href="http://webcanvas.com/">WebCanvas</a>, <a href="http://www.mapquest.com/">MapQuest</a>, <a href="http://www.esri.com/software/arcgis/index.html">ArcGIS</a>, <a href="http://www.openstreetmap.org/">Open Street Map</a> or do some experiments like <a href="http://www.flickr.com/">Flickr gallery</a>, all this in one flash, few lines (10-20) of specific code per mode, all running at 60 FPS. Anyhing else would you like to see implemented? Just let me know&#8230; Do you want to know more and see it in action?</p>
<p><span id="more-3167"></span></p>
<p>Enough talking, now impress me!</p>
<p><iframe src="http://ycanvas.yoz.sk/explorer/" width="100%" height="500" style="border:none;"></iframe></p>
<p>This is YCanvas explorer demo (<a href="http://ycanvas.yoz.sk/explorer/" target="_blank">run fullscreen</a>), you can find sources on <a href="http://ycanvas.yoz.sk">repository</a>.</p>
<p>There is also <a href="http://ycanvas.yoz.sk/demo/" target="_blank">simpliest possible implementation</a> of YCanvas available with sources as well.</p>
<h2>FAQ:</h2>
<p><strong>Q: Can you run on mobile/AIR?</strong><br />
A: Comes hand in hand with Stage3D available in AIR for mobile.</p>
<p><strong>Q: Can you run google maps?</strong><br />
A: Technicaly yes, on AIR there is no problem at all. In case of Flash Player, however, engine uploads BitmapData to graphic cards, in order to upload it you need the access that would be granted via crossdomain.xml, and unfortunately google maps domains do not serve one.</p>
<p><strong>Q: What are the requirements?</strong><br />
A: wmode=direct, flash player 11.1</p>
<p><strong>Q: Do you have a CPU fallback in case there is no GPU available</strong><br />
A: Not yet.</p>
<p><strong>Q: Do you have a support for moving, rotating, zooming?</strong><br />
A: The YCanvas api lets you set all of these manualy, or you can use available util classes in case you want to rotate around specific point or zoom to specific place. Checkout demo and explorer sources in repository.</p>
<p><strong>Q: Do you have multi touch support, gesture suppport?</strong><br />
A: Yes, have a look at ApplicationRemotair in sources. You can use two finger gestures to move, rotate, scale.</p>
<p><strong>Q: Do you have implementation for drawing?</strong><br />
A: Yes! Any display object on stage can be applied/drawn as simple as by calling one function. Read more in asdoc.</p>
<p><strong>Q: I like it and I want to support. How?</strong><br />
A: Cool, feel free to <a href="http://ycanvas.yoz.sk/donate.html">donate via PayPal here</a>. Thank you.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yoz.sk/2012/01/introduction-to-ycanvas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Quick Tip: FlexUnit &amp; ANT</title>
		<link>http://blog.yoz.sk/2012/01/quicktip-flexunit-and-ant/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=quicktip-flexunit-and-ant</link>
		<comments>http://blog.yoz.sk/2012/01/quicktip-flexunit-and-ant/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 11:24:03 +0000</pubDate>
		<dc:creator>Jozef Chúťka</dc:creator>
				<category><![CDATA[Flash / Flex]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[FlexUnit]]></category>
		<category><![CDATA[JUnitReport]]></category>

		<guid isPermaLink="false">http://blog.yoz.sk/?p=3156</guid>
		<description><![CDATA[Even if you have worked already with flexunit task in ant, it may not be obvious that there are 2 ways to execute it. First, you can compile runner.mxml to .swf prior to flexunit task or you can force flexunit task to generate/compile runner for you. Now lets have a look at pros and cons [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.yoz.sk/wp-content/uploads/antunittest.png" alt="" title="antunittest" width="200" height="100" class="alignleft size-full wp-image-3164" /></p>
<p>Even if you have worked already with flexunit task in ant, it may not be obvious that there are 2 ways to execute it. First, you can compile runner.mxml to .swf prior to flexunit task or you can force flexunit task to generate/compile runner for you. Now lets have a look at pros and cons of those 2 solutions. Unfortunately it seems the flexunit ant task development has stopped sometime a year ago, and a few features are missing in order to call this task perfect, so it seems we are left in wild with what we have&#8230;</p>
<p><span id="more-3156"></span></p>
<h3>Running compiled runner.mxml</h3>
<pre class="brush: xml; title: ; notranslate">&lt;flexunit toDir=&quot;...&quot; workingDir=&quot;...&quot; haltonfailure=&quot;true&quot; verbose=&quot;true&quot; localTrusted=&quot;true&quot; swf=&quot;runner.swf&quot;/&gt;</pre>
<ul>
<li>simple one line definition</li>
<li>requires runner.swf to be compiled prior to the task (you can use mxmlc task)</li>
<li>your runner.mxml is a static file containing predefined test cases/suites, there is no simple way you can dynamicaly force test cases/suites to be tested</li>
</ul>
<p>See more details for flexunit ant task in <a href="http://docs.flexunit.org/index.php?title=Ant_Task">wiki</a>.</p>
<p>Here is an example of a simple runner.mxml:</p>
<pre class="brush: xml; title: ; notranslate">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot;
	xmlns:flexUnitUIRunner=&quot;http://www.adobe.com/2009/flexUnitUIRunner&quot;
	creationComplete=&quot;runTests();&quot; layout=&quot;absolute&quot;&gt;
	&lt;mx:Script&gt;
		&lt;![CDATA[
			import org.flexunit.listeners.CIListener;
			import org.flexunit.listeners.UIListener;
			import org.flexunit.runner.FlexUnitCore;

			public function runTests() : void
			{
				var core : FlexUnitCore = new FlexUnitCore();
				core.addListener(new UIListener(uiListener));
				core.addListener(new CIListener());
				core.run(MyTestSuite);
			}
		]]&gt;
		&lt;/mx:Script&gt;
	&lt;flexUnitUIRunner:TestRunnerBase id=&quot;uiListener&quot; width=&quot;100%&quot; height=&quot;100%&quot;  /&gt;
&lt;/mx:Application&gt;</pre>
<h3>Running dynamically generated runner</h3>
<pre class="brush: xml; title: ; notranslate">&lt;flexunit toDir=&quot;...&quot; workingDir=&quot;...&quot; haltonfailure=&quot;true&quot; verbose=&quot;true&quot; localTrusted=&quot;true&quot;&gt;
    &lt;source dir=&quot;${basedir}/src&quot; /&gt;
    &lt;testSource dir=&quot;${basedir}/src&quot;&gt;
        &lt;include name=&quot;**/*Test.as&quot; /&gt;
        &lt;include name=&quot;**/*Test.mxml&quot; /&gt;
    &lt;/testSource&gt;
    &lt;library dir=&quot;${FLEX_HOME}/ant/lib&quot;&gt;
        &lt;include name=&quot;**/*.swc&quot; /&gt;
    &lt;/library&gt;
&lt;/flexunit&gt;</pre>
<ul>
<li>lets you dynamically define test cases/suites to be included for testing (testSource)</li>
<li>lets you define libraries and sources to be included, but that is where it ends (source, library)</li>
<li>does not let you define additional compiler arguments (theme, flash player version, resource bundles etc.)</li>
</ul>
<p>Make sure to define flexunit task in ant, if you do not have .jar file, just download the latest from <a href="http://www.flexunit.org/">flexunit.org</a> or <a href="http://opensource.adobe.com/wiki/display/flexunit/Downloads">adobe.com</a>, and do not forget to copy necessary .swc classes into your libs dir.</p>
<pre class="brush: xml; title: ; notranslate">&lt;taskdef resource=&quot;flexUnitTasks.tasks&quot; classpath=&quot;${FLEX_HOME}/ant/lib/flexUnitTasks-4.1.0-8.jar&quot;/&gt;</pre>
<h3>JUnit reports</h3>
<p>This task should be defined and available in ant, but in case it is not (you run ant from maven), just include taskdef and target .jar files (should be available with <a href="http://ant.apache.org/bindownload.cgi">ant download</a> package)</p>
<pre class="brush: xml; title: ; notranslate">&lt;taskdef name=&quot;junitreport&quot; classname=&quot;org.apache.tools.ant.taskdefs.optional.junit.XMLResultAggregator&quot;&gt;
    &lt;classpath&gt;
        &lt;pathelement location=&quot;${FLEX_HOME}/ant/lib/ant-junit.jar&quot; /&gt;
        &lt;pathelement location=&quot;${FLEX_HOME}/ant/lib/ant-junit-4.jar&quot; /&gt;
    &lt;/classpath&gt;
&lt;/taskdef&gt;
...
&lt;junitreport todir=&quot;target/surefire-reports&quot;&gt;
    &lt;fileset dir=&quot;...&quot;&gt;
        &lt;include name=&quot;TEST-*.xml&quot;/&gt;
    &lt;/fileset&gt;
    &lt;report format=&quot;frames&quot; todir=&quot;target/surefire-reports/html&quot;/&gt;
&lt;/junitreport&gt;</pre>
<p>Where to go from here:</p>
<ul>
<li><a href="http://www.unitedmindset.com/jonbcampos/2010/02/02/run-flex-unit-tests-from-ant/">Run Flex Unit Tests from ANT</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.yoz.sk/2012/01/quicktip-flexunit-and-ant/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>onBoard v3 Goes GPU</title>
		<link>http://blog.yoz.sk/2012/01/onboard-v3-goes-gpu/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=onboard-v3-goes-gpu</link>
		<comments>http://blog.yoz.sk/2012/01/onboard-v3-goes-gpu/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 11:02:31 +0000</pubDate>
		<dc:creator>Jozef Chúťka</dc:creator>
				<category><![CDATA[Flash / Flex]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[onBoard]]></category>
		<category><![CDATA[Starling]]></category>
		<category><![CDATA[YCanvas]]></category>

		<guid isPermaLink="false">http://blog.yoz.sk/?p=3144</guid>
		<description><![CDATA[onBoard is a massive collaborative painting and drawing canvas where you can draw, sketch, paint, zoom, rotate, screenshot or post your drawing to facebook. See other users drawing live. Today, I am releasing 3rd version (1st, 2nd) that is a little different than the previous ones. It takes advantage of Starling Framework and YCanvas and [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.yoz.sk/wp-content/uploads/onboard3.png" alt="" title="onboard3" width="200" height="100" class="alignleft size-full wp-image-3145" /></p>
<p><a href="http://onboard.yoz.sk/about/">onBoard is</a> a massive collaborative painting and drawing canvas where you can draw, sketch, paint, zoom, rotate, screenshot or post your drawing to facebook. See other users drawing live. Today, I am releasing 3rd version (<a href="http://blog.yoz.sk/2009/10/onboard-collaborative-painting/">1st</a>, <a href="http://blog.yoz.sk/2010/07/onboard-2-0-massive-collaborative-painting-and-drawing/">2nd</a>) that is a little different than the previous ones. It takes advantage of <a href="http://www.starling-framework.org/">Starling Framework</a> and <a href="https://github.com/jozefchutka/YCanvas">YCanvas</a> and runs on GPU at 60fps, smoother than any before. For now there is a new <a href="http://onboard.yoz.sk/">web version available</a> with old drawing and other tools. Mobile versions are currently not available. I am also working on a canvas/grid framework called <a href="https://github.com/jozefchutka/YCanvas">YCanvas that is available on github</a> (more information with next blog post). Have a look and compare cpu vs. gpu versions of onBoard&#8230;</p>
<p><span id="more-3144"></span></p>
<h2>onBoard v2 &#8211; cpu</h2>
<p><iframe width="100%" height="480" src="http://onboard.yoz.sk/?playerFile=onBoard2.swf&amp;debug=true&amp;x=16000&amp;y=-20000&amp;rotation=24&amp;scale=0.04"></iframe></p>
<h2>onBoard v3 &#8211; gpu</h2>
<p><iframe width="100%" height="480" src="http://onboard.yoz.sk/?playerFile=onBoard3.swf&amp;debug=true&amp;x=16000&amp;y=-20000&amp;rotation=24&amp;scale=0.04"></iframe></p>
<p>Notice the smooth rotation, and no render glitches with gpu version. Best performance with non-debug flash player.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yoz.sk/2012/01/onboard-v3-goes-gpu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Useful links and market url schemas for Android, iOS, BlackBerry</title>
		<link>http://blog.yoz.sk/2011/12/useful-links-and-market-url-schemas-for-android-ios-blackberry/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=useful-links-and-market-url-schemas-for-android-ios-blackberry</link>
		<comments>http://blog.yoz.sk/2011/12/useful-links-and-market-url-schemas-for-android-ios-blackberry/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 11:07:26 +0000</pubDate>
		<dc:creator>Jozef Chúťka</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[appstore]]></category>
		<category><![CDATA[appworld]]></category>
		<category><![CDATA[market]]></category>
		<category><![CDATA[Playbook]]></category>
		<category><![CDATA[qr]]></category>

		<guid isPermaLink="false">http://blog.yoz.sk/?p=3122</guid>
		<description><![CDATA[After a few months off from mobile development, I realized I have forgotten all the necessary developer, application and market links for my Android, iOS, BlackBerry applications. Furthermore, it took me some time to gather them all back together as well as market deeplinks for all environments. So, I have decided to put the list [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.yoz.sk/wp-content/uploads/androidiosblackberry.jpg" alt="" title="androidiosblackberry" width="200" height="100" class="alignleft size-full wp-image-3132" /></p>
<p>After a few months off from mobile development, I realized I have forgotten all the necessary developer, application and market links for my Android, iOS, BlackBerry applications. Furthermore, it took me some time to gather them all back together as well as market deeplinks for all environments. So, I have decided to put the list together that will help me catch much faster next time.</p>
<p><span id="more-3122"></span></p>
<h2>Android</h2>
<ul>
<li><a href="https://market.android.com/publish/Home">Developer &amp; Application administration</a></li>
<li><a href="http://developer.android.com/guide/publishing/publishing.html">Market schema details</a></li>
<li>desktop -&gt; market:<br /><a href="https://market.android.com/details?id=air.sk.yoz.remotair">https://market.android.com/details?id=&lt;package_name&gt;</a></li>
<li>phone -&gt; market (detail):<br /><a href="market://details?id=air.sk.yoz.remotair">market://details?id=&lt;package_name&gt;</a></li>
<li>phone -&gt; market (search result):<br /><a href="market://search?q=pname:air.sk.yoz.remotair">market://search?q=pname:&lt;package_name&gt;</a></li>
</ul>
<h2>iOS</h2>
<ul>
<li><a href="http://developer.apple.com/membercenter/">Developer administration</a></li>
<li><a href="https://itunesconnect.apple.com">Application administration</a></li>
<li><a href="http://developer.apple.com/library/ios/#qa/qa1633/_index.html">Market schema details</a>, <a href="http://developer.apple.com/library/ios/#qa/qa1629/_index.html">more details</a>, <a href="http://www.apple.com/itunes/podcasts/specs.html">podcasts</a></li>
<li>desktop -&gt; market:<br /><a href="http://itunes.apple.com/us/app/onboard/id452517053?mt=8">http://itunes.apple.com/us/app/onboard/id&lt;applicationid&gt;?mt=8</a></li>
<li>desktop -&gt; itunes:<br /><a href="http://itunes.com/apps/onboard">http://itunes.com/apps/&lt;applicationname&gt;</a></li>
<li>phone -&gt; appstore (direct):<br /><a href="itms-apps://itunes.com/apps/onboard">itms-apps://itunes.com/apps/&lt;applicationname&gt;</a></li>
<li>phone -&gt; appstore (itunes redirect?):<br /><a href="itms://itunes.com/apps/onboard">itms://itunes.com/apps/&lt;applicationname&gt;</a></li>
<li>phone -&gt; appstore (old):<br /><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=452517053&#038;mt=8">http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=&lt;applicationid&gt;&#038;mt=8</a></li>
</ul>
<h2>BlackBerry Playbook</h2>
<ul>
<li><a href="http://us.blackberry.com/developers/">Developer administration</a>, <a href="https://www.blackberry.com/SignedKeys/">Signed Keys</a></li>
<li><a href="https://appworld.blackberry.com/isvportal/">Application administration</a></li>
<li><a href="http://us.blackberry.com/developers/tablet/adobe.jsp">Tablet developers home</a></li>
<li>desktop -&gt; market:<br /><a href="http://appworld.blackberry.com/webstore/content/21076">http://appworld.blackberry.com/webstore/content/&lt;applicationid&gt;</a></li>
<li>tablet -&gt; appworld:<br /><a href="http://appworld.blackberry.com/webstore/content/21076">http://appworld.blackberry.com/webstore/content/&lt;applicationid&gt;</a></li>
<li>tablet -&gt; appworld (suggested all over the internet, but does not work for my playbook):<br /><a href="http://appworld.blackberry.com/webstore/clientlaunch/21076">http://appworld.blackberry.com/webstore/clientlaunch/&lt;applicationid&gt;</a></li>
</ul>
<p>Market schemas (deeplinking) is especially useful to generate QR codes. You can try the following QR codes with your mobile device to access my application directly in application market. Codes were generated by open source project <a href="http://code.google.com/p/zxing/">zxing</a>.</p>
<p><img src="http://blog.yoz.sk/wp-content/uploads/qrs.png" alt="" title="qrs" width="250" height="850" class="alignnone size-full wp-image-3140" /></p>
<p>Here is a simple zxing wrapper class for generating QR codes to bitmapData</p>
<pre class="brush: as3; title: ; notranslate">package
{
    import com.google.zxing.BarcodeFormat;
    import com.google.zxing.common.ByteMatrix;
    import com.google.zxing.qrcode.QRCodeWriter;

    import flash.display.BitmapData;

    public class QRUtils
    {
        public static function generate(link:String, width:uint, height:uint):BitmapData
        {
            var writer:QRCodeWriter = new QRCodeWriter;
            var format:BarcodeFormat = BarcodeFormat.QR_CODE;
            var byteMatrix:ByteMatrix = (writer.encode(link, format, width, height)) as ByteMatrix;
            var bitmapData:BitmapData = new BitmapData(width, height, false, 0x009900);
            for(var y:uint = 0; y &lt; width; y++)
            for(var x:uint = 0; x &lt; height; x++)
                bitmapData.setPixel(x, y, byteMatrix._get(x, y) == 0 ? 0x000000 : 0xFFFFFF);
            return bitmapData;
        }

        /**
         * Generates QR code link to Android Market to be accessed by Android Device
         * usage: generateAndroidMarket(&quot;air.sk.yoz.remotair&quot;, 300, 300);
         */
        public static function generateAndroidMarket(appId:String, width:uint, height:uint):BitmapData
        {
            return generate(&quot;market://details?id=&quot; + appId, width, height);
        }

        /**
         * Generates QR code link to App Store to be accessed by iPhone/iPad Device
         * usage: generateAppStore(&quot;onboard&quot;, 300, 300);
         */
        public static function generateAppStore(appName:String, width:uint, height:uint):BitmapData
        {
            return generate(&quot;itms-apps://itunes.com/apps/&quot; + appName, width, height);
        }

        /**
         * Generates QR code link to App World to be accessed by BlackBerry Playbook device
         * usage: generateAppWorld(&quot;21076&quot;, 300, 300);
         */
        public static function generateAppWorld(appId:String, width:uint, height:uint):BitmapData
        {
            return generate(&quot;http://appworld.blackberry.com/webstore/content/&quot; + appId, width, height);
        }
    }
}</pre>
<p>Where to go from here:</p>
<ul>
<li><a href="http://code.google.com/p/zxing/">zxing</a> &#8211; Multi-format 1D/2D barcode image processing library with clients for Android, Java (and actionscript)</li>
<li><a href="http://zxing.appspot.com/generator/">QR Code Generator</a> from the ZXing Project</li>
<li><a href="http://www.socialqrcode.com/">SocialQRCode</a> &#8211; Create Social QR Codes in minutes. </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.yoz.sk/2011/12/useful-links-and-market-url-schemas-for-android-ios-blackberry/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex + ( Ant &#124; Maven ) + Sonar</title>
		<link>http://blog.yoz.sk/2011/12/flex-ant-maven-sonar/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flex-ant-maven-sonar</link>
		<comments>http://blog.yoz.sk/2011/12/flex-ant-maven-sonar/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 16:36:20 +0000</pubDate>
		<dc:creator>Jozef Chúťka</dc:creator>
				<category><![CDATA[Flash / Flex]]></category>
		<category><![CDATA[Technologies]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[FlexPMD]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[sonar]]></category>

		<guid isPermaLink="false">http://blog.yoz.sk/?p=3105</guid>
		<description><![CDATA[The title may sound like there are two possible ways how you can have your source code analyzed and published to sonar, but you better do not rejoice prematurely. After spending couple of hours trying to figure out how to make it work using ant I may have hit some nice articles, however sonar-ant-task seems [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.yoz.sk/wp-content/uploads/sonar.jpg" alt="" title="sonar" width="200" height="100" class="alignleft size-full wp-image-3115" /></p>
<p>The title may sound like there are two possible ways how you can have your source code analyzed and published to sonar, but you better do not rejoice prematurely. After spending couple of hours trying to figure out how to make it work using ant I may have hit some nice articles, however <a href="http://docs.codehaus.org/display/SONAR/Analyse+with+Ant+Task">sonar-ant-task</a> seems to have major issues with sonar version 2.8. The solution is maven!</p>
<p><span id="more-3105"></span></p>
<p>First of all, for &#8220;flex language&#8221; sonar uses <a href="http://opensource.adobe.com/wiki/display/flexpmd/FlexPMD">FlexPMD</a>. Sonar plugin/task should be able to take your source code and evaluate based on FlexPMD dependency. Unfortunately this thing is never done for you in case of sonar-ant-task. Even there is a simple way described you can <a href="http://opensource.adobe.com/wiki/display/flexpmd/How+to+invoke+FlexPMD">invoke FlexPMD from Ant</a> (you have to do slight changes for latest FlexPMD version), there is no way sonar 2.8 let you pass these results into its database. Ant way was a no-go for me.</p>
<p>Later I realized we already have some flex projects on sonar, but these get there using maven, while whole projects has been built by maven (<a href="http://flexmojos.sonatype.org/">flex-mojos</a>). And as Sonar was initialy developed for maven, it is integrated really nicely. Even my current project is not being built by maven, there is a way to use minimal configuration just for sonar. It appeared there are already some <a href="http://blog.obecto.com/2011/07/improve-your-code-using-sonar-with-flex-plugin/">maven &#8211; sonar config</a> examples, all I needed to do in addition to this was adding pluginManagement, while we are not using latest maven version:</p>
<pre class="brush: xml; title: ; notranslate">&lt;build&gt;
	&lt;sourceDirectory&gt;...&lt;/sourceDirectory&gt;
	&lt;pluginManagement&gt;
		&lt;plugins&gt;
			&lt;plugin&gt;
				&lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
				&lt;artifactId&gt;sonar-maven-plugin&lt;/artifactId&gt;
				&lt;version&gt;1.0-beta-2&lt;/version&gt;
			&lt;/plugin&gt;
		&lt;/plugins&gt;
	&lt;/pluginManagement&gt;
&lt;/build&gt;</pre>
<p>Finally, the day was saved thanks to maven. So my preference to use maven or ant is 50:50 because, even if ant seems much easier to use, there are some thing that you just can not do for now.</p>
<p>Where to go from here:</p>
<ul>
<li><a href="http://docs.codehaus.org/display/SONAR/Frequently+Asked+Questions#FrequentlyAskedQuestions-Errorresolvingversionfor%27org.codehaus.mojo%3Asonarmavenplugin%27%3APluginrequiresMavenversion3.0">Frequently Asked Questions</a></li>
<li><a href="http://docs.codehaus.org/display/SONAR/Analyse+with+Ant+Task">Analyse with Ant Task</a></li>
<li><a href="http://stackoverflow.com/questions/6452689/sonar-ant-task">Sonar ANT Task &#8211; [closed]</a></li>
<li><a href="http://old.nabble.com/Re%3A-Reusing-Flexcover-reports-with-Sonar-Ant-(No-Maven-Repo)-p32115659.html">Reusing Flexcover reports with Sonar/Ant (No Maven Repo)</a></li>
<li><a href="http://comments.gmane.org/gmane.comp.java.sonar.general/11209">Reusing Flexcover reports with Sonar/Ant (No Maven Repo)</a></li>
<li><a href="http://jira.codehaus.org/browse/SONARPLUGINS-959">Reduce dependency on Maven</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.yoz.sk/2011/12/flex-ant-maven-sonar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex &amp; QTP Automation Testing</title>
		<link>http://blog.yoz.sk/2011/11/flex-qtp-automation-testing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flex-qtp-automation-testing</link>
		<comments>http://blog.yoz.sk/2011/11/flex-qtp-automation-testing/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 14:31:20 +0000</pubDate>
		<dc:creator>Jozef Chúťka</dc:creator>
				<category><![CDATA[Flash / Flex]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[Internet Explorer 8]]></category>
		<category><![CDATA[QTP]]></category>
		<category><![CDATA[QuickTest Pro]]></category>

		<guid isPermaLink="false">http://blog.yoz.sk/?p=3093</guid>
		<description><![CDATA[While there is not much source available out there about how to prepare QTP (HP QuickTest Professional) automation test environment working with flex applications, I decided to write this post. It is not clear, nor straightforward for one who never ran QTP, and while I spend just a few hours preparing the test environment, I [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.yoz.sk/wp-content/uploads/qtp.jpg" alt="" title="qtp" width="200" height="100" class="alignleft size-full wp-image-3102" /></p>
<p>While there is not much source available out there about how to prepare QTP (HP QuickTest Professional) automation test environment working with flex applications, I decided to write this post. It is not clear, nor straightforward for one who never ran QTP, and while I spend just a few hours preparing the test environment, I hope this article will help some of you to get started much faster. Basicaly what you need is QTP 11, Internet Explorer 8 (unfortunately), Flex Automation Plug-in and flex automation framework (.swc classes)&#8230;</p>
<p><span id="more-3093"></span></p>
<p>First you need to download and install QTP from HP. To locate a download link appeared to be a few hour investigation thanks to internet full of broken links. Finally I hit this nice article <a href="http://www.learnqtp.com/download-install-qtp/">Update: Download and Install QTP</a> describing all the download process hell. Basicaly downloads are available after login on <a href="http://www8.hp.com/us/en/software/software-solution.html?compURI=tcm:245-937061#tab=3">hp.com</a> and you should be looking for <strong>HP Functional Testing 11.00 Evaluation</strong>. There were some installation steps and additional dependecies and software within the installation, but default settings worked for me.</p>
<p>Next, I spend few hours looking for a valid firefox or chrome plugin to work with QTP, but unfortunately non worked. After I surrendered and decided to use Internet Explorer, it appeared that only IE 8 worked with QTP 11. Does it need any comment describing my anger downgrading to version 8? <img src='http://blog.yoz.sk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  &#8230; yeah, you just have to, no other way.</p>
<p>Once you have QTP 11 and IE 8 installed, you should be already able to do some recording with html webpages etc.</p>
<p><a href="https://www.adobe.com/cfusion/entitlement/index.cfm?e=flex4_5_automation_plugin">Flex Automation Plug-in</a> from Adobe contains .bat executables that register proper .dlls so that is not much work with it, just download and run.</p>
<p>There are 2 possible ways described on <a href="http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7ec5.html">Adobe Help</a> of how you can make flex qtp framework work for your application. You can &#8220;include-libraries&#8221; directly into your app or you can create an application wrapper with libraries included that loads your application.swf via SWFLoader. I played with the idea of having the automation framework classes available through PreloadSWF in mm.cfg (some <a href="http://blog.yoz.sk/2011/04/quick-tip-debugging-module-inside-nondebug-application/">more reading about PreloadSWF</a>) but it appeared that the classes from preloaded .swf appears in different application domain&#8230; and while automation framework classes are unfortunately initialized staticaly (mixin), there is no elegant way to initialize them on components on different application domain. I end up with my custom wrapper, that has some changes against the template from flex sdk (&#8230;/4.1.0.16076/templates/automation-runtimeloading-files/runtimeloading.mxml):</p>
<pre class="brush: xml; title: ; notranslate">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;s:Application xmlns:fx=&quot;http://ns.adobe.com/mxml/2009&quot;
                xmlns:s=&quot;library://ns.adobe.com/flex/spark&quot;
                xmlns:mx=&quot;library://ns.adobe.com/flex/mx&quot;
                creationComplete=&quot;init()&quot;&gt;
    &lt;fx:Script&gt;
        &lt;![CDATA[
            public function init():void
            {
                var pointerKey:String = &quot;automationswfurl&quot;;
                var variables:URLVariables = new URLVariables;
                for(var key:String in parameters)
                    if(key != &quot;automationswfurl&quot;)
                        variables[key] = parameters[key];

                swfLoader.loaderContext = new LoaderContext(false, ApplicationDomain.currentDomain)
                swfLoader.source = parameters.automationswfurl + &quot;?&quot; + variables.toString();
            }
        ]]&gt;
    &lt;/fx:Script&gt;
    &lt;mx:SWFLoader id=&quot;swfLoader&quot; width=&quot;100%&quot; height=&quot;100%&quot;/&gt;
&lt;/s:Application&gt;</pre>
<p>&#8230; and ant build script:</p>
<pre class="brush: xml; title: ; notranslate">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;project name=&quot;AppStudio application&quot; default=&quot;main&quot;&gt;
	&lt;taskdef resource=&quot;flexTasks.tasks&quot; classpath=&quot;${FLEX_HOME}/ant/lib/flexTasks.jar&quot; /&gt;

	&lt;target name=&quot;main&quot;&gt;
		&lt;mxmlc file=&quot;${basedir}/src/main/flex/QTPWrapper.mxml&quot; output=&quot;${OUTPUT}&quot; target-player=&quot;${TARGET_PLAYER}&quot;
			static-link-runtime-shared-libraries=&quot;false&quot; debug=&quot;${DEBUG}&quot;&gt;
			&lt;compiler.include-libraries dir=&quot;${FLEX_HOME}/frameworks/libs/automation&quot; append=&quot;true&quot;&gt;
				&lt;include name=&quot;automation.swc&quot; /&gt;
				&lt;include name=&quot;automation_agent.swc&quot; /&gt;
				&lt;include name=&quot;automation_dmv.swc&quot; /&gt;
				&lt;include name=&quot;automation_flashflexkit.swc&quot; /&gt;
				&lt;include name=&quot;automation_spark.swc&quot; /&gt;
				&lt;include name=&quot;qtp.swc&quot; /&gt;
			&lt;/compiler.include-libraries&gt;
		&lt;/mxmlc&gt;
	&lt;/target&gt;
&lt;/project&gt;</pre>
<p>There were some more issues and random compile time as well as runtime errors exceptions after including flex automation and qtp libraries, however some unexpectedly disappeared with release build and some were manualy investigated and removed.</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/jHZOdwjWwBk" frameborder="0" allowfullscreen></iframe></p>
<p>Where to go from here:</p>
<ul>
<li><a href="http://publib.boulder.ibm.com/infocenter/rfthelp/v8r1/index.jsp?topic=/com.ibm.rational.test.ft.doc/topics/t_conf_flex_tools.html">Configuring Flex application using tools</a></li>
<li><a href="http://shanazvakil.wordpress.com/2009/06/12/steps-how-to-automate-a-flex-application/">Steps required to automate a flex application</a></li>
<li><a href="http://www.adobe.com/devnet/flex/samples/custom_automated.html">Flex samples: Automation API sample applications</a></li>
<li><a href="http://qtpadvanced.blogspot.com/2010/11/installing-flex-4-plug-in-for-qtp.html">Installing Flex 4 Plug-In for QTP</a></li>
<li><a href="http://blogs.adobe.com/vikaschandran/2010/07/10/compatibility-matrix-for-flex-qtp-plugin-3-0-0-and-4-0-0-for-qtp-and-ie-combinations/">Compatibility Matrix for Flex QTP plugin 3.0.0 and 4.5.0 for QTP and IE combinations</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.yoz.sk/2011/11/flex-qtp-automation-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Sound In Image Experiment</title>
		<link>http://blog.yoz.sk/2011/10/a-sound-in-image-experiment/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-sound-in-image-experiment</link>
		<comments>http://blog.yoz.sk/2011/10/a-sound-in-image-experiment/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 09:58:45 +0000</pubDate>
		<dc:creator>Jozef Chúťka</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash / Flex]]></category>
		<category><![CDATA[BitmapData]]></category>
		<category><![CDATA[extract]]></category>
		<category><![CDATA[SampleDataEvent]]></category>
		<category><![CDATA[Sound]]></category>

		<guid isPermaLink="false">http://blog.yoz.sk/?p=3075</guid>
		<description><![CDATA[There are some usefull apis since Flash Player 10, I have never been playing with. Yesterday, I realized one experiment with Sound + SampleDataEvent and created quick demo for converting music into a bitmap and vice versa. There is a Sound.extract() method in ActionScript allowing you to grab raw sound data from a sound object. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.yoz.sk/wp-content/uploads/violin.jpg" alt="" title="violin" width="200" height="100" class="alignleft size-full wp-image-3076" /></p>
<p>There are some usefull apis since Flash Player 10, I have never been playing with. Yesterday, I realized one experiment with <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Sound.html">Sound</a> + <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/SampleDataEvent.html">SampleDataEvent</a> and created quick demo for converting music into a bitmap and vice versa.</p>
<p>There is a <a href="http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Sound.html#extract()">Sound.extract()</a> method in ActionScript allowing you to grab raw sound data from a sound object. It provides you ByteArray of 32-bit floating-point values, which can be converted to a Number using ByteArray.readFloat(). The resulting values are -1 < value < 1...</p>
<p><span id="more-3075"></span></p>
<p>I tried to add and multiply the Number to get unsigned integer and it appeared that only first 16 bytes are changing while the rest 16 remains unused (0xffff). I did not get any further to investigate if it is related to the type conversion or its a limitation of Sound api. While for BitmapData you provide 32 values (unsigned integers) and the converted sound value use only 16, next 16 bites can store additional sound value. That perfectly fits for left + right channel. BitmapData handles 32-bit ARGB values. In my case, left channel will occupy first AR, right channel GB values, so please do not expect the result to be Mona Lisa portrait, but rather it is a chaotic (noise like) color and alpha result. Following image contains 5 seconds of Vivaldi:</p>
<p><img src="http://blog.yoz.sk/examples/soundInImage/soundInImage.png" alt=""/></p>
<p>If you are able match image width with music rythm, some more interesting result may appear. And here is the demo player:</p>
<p><script type="text/javascript" src="http://wonderfl.net/blogparts/2rEF/js"></script>
<p class="ttlBpWonderfl" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://wonderfl.net/c/2rEF" title="Sound In Image">Sound In Image &#8211; wonderfl build flash online</a></p>
<p>There is a lot of commented code in the demo, feel free to uncomment for generating images from your mp3s.</p>
<p>Some quick math about image size vs. music length:</p>
<ul>
<li>in sound, the audio data is always exposed as 44100 Hz stereo</li>
<li>so there is 88200 32-bit floating-point values per second (left + right channel)</li>
<li>two values can be stored in a pixel, that results in 44100 pixels per second</li>
<li>that means you can store almost <strong>18 seconds in 1024&#215;768 ARGB image</strong></li>
</ul>
<p>It would be nice to see how can image compression, watermark etc. affect the resulting sound/size. Or how would some image filters affect the resulting sound&#8230; A lot of experiments ahead <img src='http://blog.yoz.sk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yoz.sk/2011/10/a-sound-in-image-experiment/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SequenceParser &#8211; Simple yet Mighty</title>
		<link>http://blog.yoz.sk/2011/10/sequenceparser-simple-yet-mighty/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sequenceparser-simple-yet-mighty</link>
		<comments>http://blog.yoz.sk/2011/10/sequenceparser-simple-yet-mighty/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 15:19:53 +0000</pubDate>
		<dc:creator>Jozef Chúťka</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash / Flex]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[highlight]]></category>
		<category><![CDATA[ISequence]]></category>
		<category><![CDATA[parser]]></category>
		<category><![CDATA[SequenceParser]]></category>

		<guid isPermaLink="false">http://blog.yoz.sk/?p=3062</guid>
		<description><![CDATA[With my latest approach to create universal parser, I came up with something simple yet mighty. SequenceParser is a simple (30 lines) class that crawles any source and matches specified list of highly customizable ISequences. While each sequence can contain list of nester sequences, you are able to parse any type of source with nested [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.yoz.sk/wp-content/uploads/parser.png" alt="" title="parser" width="200" height="100" class="alignleft size-full wp-image-3063" /></p>
<p>With my latest approach to create universal parser, I came up with something simple yet mighty. <a href="http://classes.yoz.sk/sk/yoz/data/sequenceParser/SequenceParser.as">SequenceParser</a> is a simple (30 lines) class that crawles any source and matches specified list of highly customizable <a href="http://classes.yoz.sk/sk/yoz/data/sequenceParser/sequences/ISequence.as">ISequence</a>s. While each sequence can contain list of nester sequences, you are able to parse any type of source with nested conditions and sequences. A good example can be an attribute inside a xml node, a xml node inside a xml node, an escape character inside quotas etc.
</p>
<p>I have also created some example sequences like <a href="http://classes.yoz.sk/sk/yoz/data/sequenceParser/sequences/MatchAnythingSequence.as">MatchAnything</a>, <a href="http://classes.yoz.sk/sk/yoz/data/sequenceParser/sequences/MatchRegexpSequence.as">MatchRegexp</a>, <a href="http://classes.yoz.sk/sk/yoz/data/sequenceParser/sequences/MatchStringSequence.as">MatchString</a>, <a href="http://classes.yoz.sk/sk/yoz/data/sequenceParser/sequences/StartRegexpEndRegexpSequence.as">StartRegexpEndRegexp</a>, <a href="http://classes.yoz.sk/sk/yoz/data/sequenceParser/sequences/StartRegexpEndStringSequence.as">StartRegexpEndString</a>, <a href="http://classes.yoz.sk/sk/yoz/data/sequenceParser/sequences/StartStringEndStringSequence.as">StartStringEndString</a> that should help to cover almost any possible parsing scenario. These sequences notifies back via callback containing parsed string, that is vital for further bulding additional logic like highlightning, validation over parsed phrases.</p>
<p><span id="more-3062"></span></p>
<p>Here is a simple example of css parsing and highlighting via SequenceParser:</p>
<p><script type="text/javascript" src="http://wonderfl.net/blogparts/fY34/js"></script>
<p class="ttlBpWonderfl" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://wonderfl.net/c/fY34" title="SequenceParser">SequenceParser &#8211; wonderfl build flash online</a></p>
<p>Here is an example of parsing and validating pseudo serch queries:</p>
<p><script type="text/javascript" src="http://wonderfl.net/blogparts/b3gd/js"></script>
<p class="ttlBpWonderfl" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://wonderfl.net/c/b3gd" title="SequenceParser - Query Validator">SequenceParser &#8211; Query Validator &#8211; wonderfl build flash online</a></p>
<p>&#8230; and a JSON decoder:</p>
<p><script type="text/javascript" src="http://wonderfl.net/blogparts/3xkF/js"></script>
<p class="ttlBpWonderfl" style="width: 465px; margin: 0; text-align: right; font-size: 11px;"><a href="http://wonderfl.net/c/3xkF" title="SequenceParser - JSON decoder">SequenceParser &#8211; JSON decoder &#8211; wonderfl build flash online</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yoz.sk/2011/10/sequenceparser-simple-yet-mighty/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

