<?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>Flex i AIR &#187; Flash Platform</title>
	<atom:link href="http://flex.imrahil.com/category/flash-platform/feed/" rel="self" type="application/rss+xml" />
	<link>http://flex.imrahil.com</link>
	<description>Wiadomości ze świata RIA oraz moje zmagania z programowaniem w Flex/AIR</description>
	<lastBuildDate>Fri, 18 Jun 2010 20:40:18 +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>Flex SDK + Flash Player 10</title>
		<link>http://flex.imrahil.com/2009/10/24/flex-sdk-flash-player-10/</link>
		<comments>http://flex.imrahil.com/2009/10/24/flex-sdk-flash-player-10/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 11:05:50 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS 3.0]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex SDK]]></category>
		<category><![CDATA[Zapamiętać]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=385</guid>
		<description><![CDATA[Wpis w związku z powtarzającymi się pytaniami na różnych forach. Jak włączyć w Flex Builderze kompilowanie dla Flash Playera 10 (czyli mieć dostęp do klasy Vector i metody &#8222;save&#8221; w klasie FileReference): zakładam, że mamy nowe SDK (najlepiej 3.4) w właściwościach projektu wybieramy zakładkę &#8222;Flex Compiler&#8221; i&#8230; wpisujemy w &#8222;Additional compiler arguments&#8221; -target-player=10.0.0 . LUB [...]]]></description>
			<content:encoded><![CDATA[<p>Wpis w związku z powtarzającymi się pytaniami na różnych forach.</p>
<p><strong>Jak włączyć w <a href="http://www.adobe.com/products/flex/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe Flex"  rel="external">Flex</a> Builderze kompilowanie dla Flash Playera 10 (czyli mieć dostęp do klasy Vector i metody &#8222;save&#8221; w klasie FileReference):</strong></p>
<ol>
<li>zakładam, że mamy nowe SDK (najlepiej 3.4)</li>
<li>w właściwościach projektu wybieramy zakładkę &#8222;Flex Compiler&#8221; i&#8230;
<ul>
<li>wpisujemy w <em>&#8222;Additional compiler arguments&#8221;</em> <strong>-target-player=10.0.0 </strong><br />
<span style="color: #ffffff;">.</span><br />
<a href="http://flex.imrahil.com/files/2009/10/player10_1.jpg" rel="lightbox[385]"><img class="alignnone size-thumbnail wp-image-387" title="player10_1" src="http://flex.imrahil.com/files/2009/10/player10_1-150x150.jpg" alt="player10_1" width="150" height="150" /></a></li>
</ul>
<p><strong>LUB</strong></p>
<ul>
<li>zaznaczamy <em>&#8222;Require Flash Player version:&#8221;</em> i podajemy wartości: 10 0 0<br />
<span style="color: #ffffff;">.</span><br />
<a href="http://flex.imrahil.com/files/2009/10/player10_2.jpg" rel="lightbox[385]"><img class="alignnone size-thumbnail wp-image-386" title="player10_2" src="http://flex.imrahil.com/files/2009/10/player10_2-150x150.jpg" alt="player10_2" width="150" height="150" /></a></li>
</ul>
</li>
</ol>
<p>Więcej informacji na stronach <a href="http://www.adobe.com/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe"  rel="external">Adobe</a> &#8211; <a href="http://opensource.adobe.com/wiki/display/flexsdk/Targeting+Flash+Player+10" target="_blank">Targeting Flash Player 10</a></p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/10/24/flex-sdk-flash-player-10/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wysyłanie formularzy multipart/form-data</title>
		<link>http://flex.imrahil.com/2009/09/08/wysylanie-formularzy-multipartform-data/</link>
		<comments>http://flex.imrahil.com/2009/09/08/wysylanie-formularzy-multipartform-data/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 13:08:04 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[AS 3.0]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=149</guid>
		<description><![CDATA[Trafiłem ostatnio na dość dziwny problem. Potrzebowałem mianowicie wysłać z poziomu Flexa dane formularza, które po stronie serwera zostałyby odebrane przez PHP (lub inny język server-side). Jednak cały kłopot polegał na tym, że: dane te miały wykorzystać istniejący już kod obsługiwany przez formularz w HTML&#8217;u &#8211; czyli niejako miałem się podszyć pod zwykłą stronę www, [...]]]></description>
			<content:encoded><![CDATA[<p>Trafiłem ostatnio na dość dziwny problem. Potrzebowałem mianowicie wysłać z poziomu Flexa dane formularza, które po stronie serwera zostałyby odebrane przez PHP (lub inny język server-side).</p>
<p>Jednak cały kłopot polegał na tym, że:</p>
<ul>
<li> dane te miały wykorzystać istniejący już kod obsługiwany przez formularz w HTML&#8217;u &#8211; czyli niejako miałem się podszyć pod zwykłą stronę www, nie wykorzystując żadnych udogodnień typu AMF, Webservice czy RemoteObject,</li>
<li>chciałem wysłać jednocześnie dane tekstowe (np. dane rejestracyjne) oraz binarne (np. obrazki JPG), bez limitu ilości,</li>
<li>obrazki nie były pobierane z dysku użytkownika przez FileReference.browse, ale tworzone w locie jako zrzuty komponentów przez ImageSnapshot i trzymane w pamięci w zmiennych typu ByteArray.</li>
</ul>
<p>Jedyne co udało mi się znaleźć to <a href="http://www.neerfri.com/2007/12/flex-multipartform-data-post-request.html" target="_blank">artykuł na blogu Neer&#8217;a Friedman&#8217;a</a> i jego <a href="http://code.google.com/p/multipart-loader/" target="_blank">projekt na Google Code</a>. Był to dobry początek do zmian&#8230;<br />
BTW: niejaki Mike Stead, którego komentarz widnieje pod wpisem Neer&#8217;a też zajmował się tym problemem i zdaje się, że nawet go jakoś elegancko rozwiązał, jednak jego stronka padła kompletnie i nie ma jej nawet w Google Cache&#8230;</p>
<p>Wywaliłem kod odpowiedzialny za używanie Socketów zamieniając go na zwykłego URLLoader&#8217;a oraz troche zrefaktoryzowałem kod (uporzadkowałem). Tym sposobem pojawiła się biblioteka MultipartRequestLoader <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://flex.imrahil.com/work/multipart_loader/multipart_loader_example.html" target="_blank">Przykładowa aplikacja</a> (wraz z kodem źródłówym pod prawym klikiem myszki), a tutaj kod biblioteki: <a href="http://flex.imrahil.com/work/multipart_loader/multipart_loader_imrahil.zip" target="_blank">multipart_loader_imrahil.zip</a></p>
<p>Kod przykładowej aplikacji:</p>
<div class="codecolorer-container mxml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br /></div></td><td><div class="mxml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span style="color: #ff0000;">&quot;absolute&quot;</span> creationComplete=<span style="color: #ff0000;">&quot;init()&quot;</span> viewSourceURL=<span style="color: #ff0000;">&quot;srcview/index.html&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;mx:Script&gt;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;&lt;![CDATA[</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;import multipart.MultipartVariables;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;import multipart.MultipartRequestLoader;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private var loader:MultipartRequestLoader;</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function init():void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loader = new MultipartRequestLoader('http://flex.imrahil.com/work/multipart_loader/upload.php');</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var variables:MultipartVariables = new MultipartVariables();</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var myByteArray:ByteArray = new ByteArray();</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// we will create a fake file content here, you should replace this with the binary data you want to upload</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(var i:int=0; i&lt;100;i++) </span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;myByteArray.writeUTFBytes(&quot;123by\nAR\r\nRA\x65\x0156&quot;);</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;variables.add('file_data', myByteArray, 'filename.bin');</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;variables.add('another_var','extra data');</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loader.variables = variables;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loader.addEventListener(Event.COMPLETE, fileUploaded);</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function fileUploaded(event:Event):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text += 'Result:';</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text += MultipartRequestLoader(event.target).responseBody;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function securityErrorHandler(event:SecurityErrorEvent):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text = &quot;securityErrorHandler: &quot; + event;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function ioErrorHandler(event:IOErrorEvent):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text = &quot;ioErrorHandler: &quot; + event;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function upload(event:MouseEvent):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;loader.load();</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;]]&gt;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp;&lt;/mx:Script&gt;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:VBox</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span> height=<span style="color: #ff0000;">&quot;100%&quot;</span> horizontalAlign=<span style="color: #ff0000;">&quot;center&quot;</span> verticalAlign=<span style="color: #ff0000;">&quot;middle&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Upload!&quot;</span> click=<span style="color: #ff0000;">&quot;upload(event)&quot;</span> <span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TextArea</span> id=<span style="color: #ff0000;">&quot;outputTxt&quot;</span> width=<span style="color: #ff0000;">&quot;500&quot;</span> height=<span style="color: #ff0000;">&quot;250&quot;</span> <span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:VBox</span><span style="color: #7400FF;">&gt;</span></span> <br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/09/08/wysylanie-formularzy-multipartform-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex SDK 3.4 &#8211; niespodzianka z wykresami</title>
		<link>http://flex.imrahil.com/2009/08/27/flex-sdk-3-4-niespodzianka-z-wykresami/</link>
		<comments>http://flex.imrahil.com/2009/08/27/flex-sdk-3-4-niespodzianka-z-wykresami/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 12:30:41 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Wydarzenia]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=332</guid>
		<description><![CDATA[Adobe opublikowało dzisiaj oficjalnie nowe Flex SDK 3.4 (chodzi oczywiście o to ze strony głównej, a nie z opensource.adobe.com gdzie leżało już jakiś czas temu). W zasadzie jest to ten sam build (3.4.0.9271) tyle tylko, że dorzucono do niego paczkę z komponentami do wykresów (Flex Data Visualization Component) w tejże wersji. Największe zaskoczenie jednak to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.adobe.com/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe"  rel="external">Adobe</a> opublikowało dzisiaj oficjalnie <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk" target="_blank">nowe Flex SDK 3.4</a> (chodzi oczywiście o to ze strony głównej, a nie z <a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3" target="_blank">opensource.adobe.com</a> gdzie leżało już jakiś czas temu).</p>
<p>W zasadzie jest to ten sam build (3.4.0.9271) tyle tylko, że dorzucono do niego paczkę z komponentami do wykresów (<a href="http://download.macromedia.com/pub/flex/sdk/datavisualization_sdk3.4.zip" target="_blank">Flex Data Visualization Component</a>) w tejże wersji.</p>
<p>Największe zaskoczenie jednak to fakt, że paczka z wykresami zawiera <strong>kod źródłowy</strong> oraz <strong>nie ma klasy odpowiedzialnej za watermarki!</strong> Ok, wcześniej można było rozpakować kod źródłowy posiadając klucz licencyjny do <a href="http://www.adobe.com/products/flex/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe Flex"  rel="external">Flex</a> Buildera, ale brak watermarków to całkowita nowość. Teraz każdy może robić wykresy czy używać AdvancedDataGrid bez żadnych problemów.</p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/08/27/flex-sdk-3-4-niespodzianka-z-wykresami/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uaktualnienia Flash Playera i Adobe AIR</title>
		<link>http://flex.imrahil.com/2009/07/31/uaktualnienia-flash-playera-i-adobe-air/</link>
		<comments>http://flex.imrahil.com/2009/07/31/uaktualnienia-flash-playera-i-adobe-air/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 21:03:37 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[Flash Player]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=309</guid>
		<description><![CDATA[Na szybko &#8211; Adobe udostępniło do ściągnięcia: nową wersję Adobe AIR 1.5.2 &#8211; zmiany wyłącznie kosmetyczne. Zdaje się, że zmienili tylko ekran instalacyjny tak, że już nie straszy komunikatem o zagrożeniach jakie stanowi instalowana aplikacja&#8230; Edit: pełne release notes dla developerów nowe wersje Flash Playera &#8211; w wersji 10.0.32.18 (wcześniejsza była wersja 10.0.22.87 &#8211; do [...]]]></description>
			<content:encoded><![CDATA[<p>Na szybko &#8211; <a href="http://www.adobe.com/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe"  rel="external">Adobe</a> udostępniło do ściągnięcia:</p>
<ul>
<li> nową wersję <a href="http://get.adobe.com/air/" target="_blank">Adobe AIR 1.5.2</a> &#8211; zmiany wyłącznie kosmetyczne. Zdaje się, że zmienili tylko ekran instalacyjny tak, że już nie straszy komunikatem o zagrożeniach jakie stanowi instalowana aplikacja&#8230; <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<strong>Edit:</strong> <a href="http://www.adobe.com/support/documentation/en/air/1_5_2/releasenotes_developers.html" target="_blank">pełne release notes dla developerów</a></li>
<li><a href="http://get.adobe.com/flashplayer" target="_blank">nowe wersje Flash Playera</a> &#8211; w wersji 10.0.32.18 (wcześniejsza była wersja 10.0.22.87 &#8211; do sprawdzenia na <a href="http://playerversion.com/" target="_blank">playerversion.com</a>). Wersje debug jak zwykle dostępne na <a href="http://www.adobe.com/support/flashplayer/downloads.html" target="_blank">stronach Support Center</a>. Poprawka podyktowana łataniem poważnej dziury bezpieczeństwa &#8211; więcej na ten temat <a href="http://www.adobe.com/go/apsb09-10" target="_blank">tutaj</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/07/31/uaktualnienia-flash-playera-i-adobe-air/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex + Java w jednym projekcie w Flex Builderze &#8211; część II</title>
		<link>http://flex.imrahil.com/2009/07/31/flex-java-w-jednym-projekcie-w-flex-builderze-czesc-ii/</link>
		<comments>http://flex.imrahil.com/2009/07/31/flex-java-w-jednym-projekcie-w-flex-builderze-czesc-ii/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 20:41:32 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[BlazeDS]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Flex Builder]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=260</guid>
		<description><![CDATA[Czas na stworzenie prostej aplikacji wykorzystującej Jave (BlazeDS) i Flex w jednym projekcie Flex Buildera. Będzie to klasyczne &#8222;Hello World&#8221; Wymagane oprogramowanie: Flex Builder 3.0.2 – dostępny do ściągnięcia w wersji trial ze stron Adobe lub w specjalnej wersji dla studentów lub bezrobotnych programistów ze strony Free RIA Tools, BlazeDS 3.2.0.3978 &#8211; dostępny na stronach [...]]]></description>
			<content:encoded><![CDATA[<p>Czas na stworzenie prostej aplikacji wykorzystującej Jave (<a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/"  class="alinks_links" onclick="return alinks_click(this);" title="BlazeDS"  rel="external">BlazeDS</a>) i <a href="http://www.adobe.com/products/flex/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe Flex"  rel="external">Flex</a> w jednym projekcie Flex Buildera. Będzie to klasyczne &#8222;Hello World&#8221; <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Wymagane oprogramowanie:</strong></p>
<ul>
<li><strong>Flex Builder 3.0.2</strong> – dostępny do ściągnięcia w wersji trial ze <a href="http://www.adobe.com/go/flex_trial" target="_blank">stron Adobe</a> lub w specjalnej wersji dla studentów lub bezrobotnych programistów ze <a href="https://freeriatools.adobe.com/" target="_blank">strony Free RIA Tools</a>,</li>
<li><strong>BlazeDS 3.2.0.3978</strong> &#8211; dostępny na <a href="http://flexorg.wip3.adobe.com/blazeds/3.0.x/milestone/3978/blazeds-bin-3.2.0.3978.zip" target="_blank">stronach Adobe Open Source</a> (jest to wersja z samymi binariami &#8211; dostępna jest także wersja z zintegrowanym Tomcatem) &#8211; rozpakowujemy w dowolne miejsce, np.: <em>C:\Work\BlazeDS</em></li>
<li><strong>Tomcat 6.0.20</strong> &#8211; dostępny na <a href="http://tomcat.apache.org/download-60.cgi" target="_blank">stronach Apache Software Foundation</a> &#8211; rozpakowujemy w dowolne miejsce, np.: <em>C:\apache-tomcat-6.0.20</em></li>
<li><strong>BlazeMonster</strong> &#8211; bardzo przydatne narzędzie do testowania świeżo stworzonych metod BlazeDS &#8211; do ściągnięcia <a href="http://sujitreddyg.wordpress.com/2009/05/07/blazemonster/" target="_blank">z bloga Sujit Reddy G</a>.</li>
</ul>
<p>Do dzieła!</p>
<p><span id="more-260"></span></p>
<p>Po odpaleniu Flex Buildera tworzymy nowy projekt wybierając w sekcji &#8222;Server technology&#8221; opcję &#8222;J2EE&#8221; i zaznaczając &#8222;Create combined <a href="http://java.sun.com/javase/downloads/index.jsp"  class="alinks_links" onclick="return alinks_click(this);" title="Java"  rel="external">Java</a>/Flex project using WTP&#8221;:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava01.jpg" rel="lightbox[260]"><img class="size-medium wp-image-268  aligncenter" title="FlexJava01" src="http://flex.imrahil.com/files/2009/07/FlexJava01-300x292.jpg" alt="FlexJava01" width="300" height="292" /></a></p>
<p>Następnym krokiem jest stworzenie lokalnej instancji serwera Tomcat &#8211; wskazujemy katalog z rozpakowanymi binariami Tomcata:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava02.jpg" rel="lightbox[260]"><img class="size-medium wp-image-269  aligncenter" title="FlexJava02" src="http://flex.imrahil.com/files/2009/07/FlexJava02-266x300.jpg" alt="FlexJava02" width="266" height="300" /></a></p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava03.jpg" rel="lightbox[260]"><img class="size-medium wp-image-270  aligncenter" title="FlexJava03" src="http://flex.imrahil.com/files/2009/07/FlexJava03-266x300.jpg" alt="FlexJava03" width="266" height="300" /></a></p>
<p>oraz wskazanie lokalizacji pliku <em>blazeds.war</em>:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava04.jpg" rel="lightbox[260]"><img class="size-medium wp-image-271 aligncenter" title="FlexJava04" src="http://flex.imrahil.com/files/2009/07/FlexJava04-300x292.jpg" alt="FlexJava04" width="300" height="292" /></a></p>
<p>Następny ekran i projekt jest już utworzony:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava05.jpg" rel="lightbox[260]"><img class="size-medium wp-image-272 aligncenter" title="FlexJava05" src="http://flex.imrahil.com/files/2009/07/FlexJava05-277x300.jpg" alt="FlexJava05" width="277" height="300" /></a></p>
<p>Struktura nowego projektu powinna przedstawiać się następująco:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava06.jpg" rel="lightbox[260]"><img class="size-full wp-image-267 aligncenter" src="http://flex.imrahil.com/files/2009/07/FlexJava06.jpg" alt="FlexJava06" width="280" height="451" /></a></p>
<p style="text-align: left;">Katalog <em>flex_src</em> to nasz główny katalog ze kodem Flexa, <em>src</em> z kodem Java, a <em>WebContent</em> to nasz lokalny serwer WWW.<br />
Aby upewnić się czy wszystko działa dodajmy do kodu Flexa kawałek prostego kodu:</p>
<div class="codecolorer-container mxml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="mxml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span><br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span style="color: #ff0000;">&quot;absolute&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Label</span> text=<span style="color: #ff0000;">&quot;Hello World!&quot;</span> horizontalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> verticalCenter=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7400FF;">/&gt;</span></span><br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></div></td></tr></tbody></table></div>
<p>i odpalmy całą aplikację na serwerze &#8211; klikamy prawym klawiszem myszy na projekcie wybieramy <em>Run</em> -&gt; <em>Run on Server</em>, a następnie Next, Next, Finish:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava07.jpg" rel="lightbox[260]"><img class="size-medium wp-image-284   aligncenter" title="FlexJava07" src="http://flex.imrahil.com/files/2009/07/FlexJava07-292x300.jpg" alt="FlexJava07" width="292" height="300" /></a></p>
<p style="text-align: left;">W oknie konsoli Flex Buildera widzimy logi uruchamianego Tomcata, a na koniec otrzymujemy przepiękny error <em>HTTP Status 404</em> <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Jednak nie ma się co zrażać! Wracamy do Flex Buildera i wciskamy klawisz F11 (<em>Run debug</em>) w efekcie czego otwiera nam się domyślna przeglądarka, a w niej nasza mikro-aplikacja:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava08.jpg" rel="lightbox[260]"><img class="size-medium wp-image-285 aligncenter" src="http://flex.imrahil.com/files/2009/07/FlexJava08-300x252.jpg" alt="FlexJava08" width="300" height="252" /></a></p>
<p>Taadaa! Serwer śmiga aż miło. Czas przystąpić do stworzenia czegoś bardziej konkretnego! Do dzieła!<br />
Na początek tworzymy nową klasę w Javie &#8211; <em>File -&gt; New -&gt; Other -&gt; Class</em>:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava09.jpg" rel="lightbox[260]"><img class="size-medium wp-image-298 aligncenter" title="FlexJava09" src="http://flex.imrahil.com/files/2009/07/FlexJava09-250x300.jpg" alt="FlexJava09" width="250" height="300" /></a></p>
<p>i dodajemy do niej dwie metody: <em>helloWorld</em> i <em>repeatAfterMe</em>:</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.imrahil.tutorial</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> HelloWorld <br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> helloWorld<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;Server said: Hello World!&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> repeatAfterMe<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> sayHello<span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;You said: &quot;</span> <span style="color: #339933;">+</span> sayHello<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Skompilowana klasa powinna znaleźć się w katalogu<em> <strong>/WebContent/WEB-INF/classes/com/imrahil/tutorial</strong></em>.<br />
Żeby jednak BlazeDS potrafił z niej skorzystać trzeba ją dodać do pliku <strong><em>remoting-config.xml</em></strong>, który powinien wyglądać następująco:</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;remoting-service&quot;</span> </span><br />
<span style="color: #009900;"> &nbsp; &nbsp;<span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;flex.messaging.services.RemotingService&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;adapters<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;adapter-definition</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;java-object&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;flex.messaging.services.remoting.adapters.JavaAdapter&quot;</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/adapters<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;default-channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channel</span> <span style="color: #000066;">ref</span>=<span style="color: #ff0000;">&quot;my-amf&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/default-channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;destination</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;HelloWorld&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.imrahil.tutorial.HelloWorld<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/destination<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/service<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></td></tr></tbody></table></div>
<p>Przy okazji można wywalić pliki: <strong><em>messaging-config.xml</em></strong> oraz <em><strong>proxy-config.xml</strong> </em>bo z tych opcji nie będziemy wogóle korzystać. Trzeba jednak zmodyfikować wtedy plik <strong><em>services-config.xml</em></strong>, który powinien wyglądać tak:</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br /></div></td><td><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;services-config<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;services<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service-include</span> <span style="color: #000066;">file-path</span>=<span style="color: #ff0000;">&quot;remoting-config.xml&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/services<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;security<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;login-command</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;flex.messaging.security.TomcatLoginCommand&quot;</span> <span style="color: #000066;">server</span>=<span style="color: #ff0000;">&quot;Tomcat&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/security<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;channel-definition</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;my-amf&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;mx.messaging.channels.AMFChannel&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;endpoint</span> <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;http://{server.name}:{server.port}/{context.root}/messagebroker/amf&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;flex.messaging.endpoints.AMFEndpoint&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channel-definition<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/channels<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;logging<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;target</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;flex.messaging.log.ConsoleTarget&quot;</span> <span style="color: #000066;">level</span>=<span style="color: #ff0000;">&quot;Debug&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;prefix<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>[BlazeDS] <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/prefix<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;includeDate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>false<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/includeDate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;includeTime<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>false<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/includeTime<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;includeLevel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>false<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/includeLevel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;includeCategory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>false<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/includeCategory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filters<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Endpoint.*<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Service.*<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Configuration<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filters<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/target<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/logging<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;system<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;redeploy<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;enabled<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>false<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/enabled<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/redeploy<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/system<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/services-config<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></td></tr></tbody></table></div>
<p>Cenną zmianą jest zwłaszcza opcja <strong>target=&#8221;Debug&#8221;</strong> w sekcji <strong>&lt;logging /&gt;</strong> &#8211; pozwoli nam ona obserwować odpowiedzi BlazeDS w konsoli serwera Tomcat.</p>
<p>Czas zatem stworzyć aplikację Flex komunikującą się z nowo stworzonymi metodami Javy.</p>
<p>Tworzymy nową <em>MXML Application</em> i piszemy:</p>
<div class="codecolorer-container mxml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br /></div></td><td><div class="mxml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span><br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Application</span> xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span style="color: #ff0000;">&quot;vertical&quot;</span> horizontalAlign=<span style="color: #ff0000;">&quot;left&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:RemoteObject</span> id=<span style="color: #ff0000;">&quot;myservice&quot;</span> fault=<span style="color: #ff0000;">&quot;faultHandler(event)&quot;</span> showBusyCursor=<span style="color: #ff0000;">&quot;true&quot;</span> destination=<span style="color: #ff0000;">&quot;HelloWorld&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:method</span> name=<span style="color: #ff0000;">&quot;helloWorld&quot;</span> result=<span style="color: #ff0000;">&quot;resultHandler(event)&quot;</span> <span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:method</span> name=<span style="color: #ff0000;">&quot;repeatAfterMe&quot;</span> result=<span style="color: #ff0000;">&quot;resultHandler(event)&quot;</span> <span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:RemoteObject</span><span style="color: #7400FF;">&gt;</span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;mx:Script&gt;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;&lt;![CDATA[</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;import mx.rpc.events.ResultEvent;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;import mx.rpc.events.FaultEvent;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function resultHandler(evt:ResultEvent):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text += evt.message.body.toString() + &quot;\n&quot;;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private function faultHandler(fault:FaultEvent):void</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text = &nbsp;&quot;Code: &quot; + fault.fault.faultCode + &quot;\n&quot;;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text += &quot;Message: &quot; + fault.fault.faultString + &quot;\n&quot;;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;outputTxt.text += &quot;Detail: &quot; + fault.fault.faultDetail + &quot;\n&quot;;</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</span><br />
<span style="color: #339933;"> &nbsp; &nbsp; &nbsp; &nbsp;]]&gt;</span><br />
<span style="color: #339933;">&nbsp; &nbsp; &lt;/mx:Script&gt;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Label</span> text=<span style="color: #ff0000;">&quot;Output:&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TextArea</span> width=<span style="color: #ff0000;">&quot;500&quot;</span> height=<span style="color: #ff0000;">&quot;100&quot;</span> id=<span style="color: #ff0000;">&quot;outputTxt&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Hello World!&quot;</span> click=<span style="color: #ff0000;">&quot;myservice.getOperation('helloWorld').send();&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:HBox</span> width=<span style="color: #ff0000;">&quot;100%&quot;</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Repeat After Me:&quot;</span> click=<span style="color: #ff0000;">&quot;myservice.getOperation('repeatAfterMe').send(myText.text);&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:TextInput</span> id=<span style="color: #ff0000;">&quot;myText&quot;</span> text=<span style="color: #ff0000;">&quot;Sent to Server&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:HBox</span><span style="color: #7400FF;">&gt;</span></span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Invoke wrong method&quot;</span> click=<span style="color: #ff0000;">&quot;myservice.getOperation('wrongMethod').send();&quot;</span><span style="color: #7400FF;">/&gt;</span></span><br />
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Application</span><span style="color: #7400FF;">&gt;</span></span></div></td></tr></tbody></table></div>
<p><strong>Uwaga!</strong> Jeśli po odpaleniu w przeglądarce (klawisz F11 lub CTRL+F11 w Flex Builderze) i wywołaniu metody helloWorld wyskakuje nam błąd <em>Client.Error.MessageSend</em> (a konkretniej: <em>Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url: &#8216;http://localhost:8080/WebContent/messagebroker/amf&#8217;</em>) to  prawdopodobnie trzeba zmodyfikować parametr <strong><em>Context root</em></strong> w opcjach projektu: <strong><em>Preferences -&gt; Flex Server -&gt; Context root</em></strong>.<br />
Właściwą wartością jest nazwa projektu, czyli w naszym przypadku: <em>BlazeDS-Hello-World.</em> Trzeba jeszcze zrestartować serwer (lub wyczyścić mu cache: prawy klawisz myszy na serwerze w zakładce <em>Servers</em> i opcja <em>Clean</em>)</p>
<p>Gdy już wszystko ustawimy jak trzeba to pod adresem: <strong><em>http://localhost:8080/BlazeDS-Hello-World/hello_world.html</em></strong> znajdziemy naszą śliczną aplikację:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/07/FlexJava10.jpg" rel="lightbox[260]"><img class="size-medium wp-image-301 aligncenter" title="FlexJava10" src="http://flex.imrahil.com/files/2009/07/FlexJava10-300x209.jpg" alt="FlexJava10" width="300" height="209" /></a></p>
<p>Jeśli ktoś nie miał tyle czasu, żeby samemu stworzyć powyższą aplikację ten może <a href="http://flex.imrahil.com/tutorials/flex-java/BlazeDS-Hello-World.zip">ściągnąć pełen kod wraz z plikami projektu Flex Buildera</a>.</p>
<p>ps.: kod Flexowy bazuje w pewnej części na kodzie Wade&#8217;a Arnolda z <a href="http://wadearnold.com/blog/flash/blazeds-worth-figuring-out-helloworld-example" target="_blank">tego wpisu</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/07/31/flex-java-w-jednym-projekcie-w-flex-builderze-czesc-ii/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flex + Java w jednym projekcie w Flex Builderze &#8211; część I</title>
		<link>http://flex.imrahil.com/2009/04/11/flex-java-w-jednym-projekcie-w-flex-builderze-czesc-i/</link>
		<comments>http://flex.imrahil.com/2009/04/11/flex-java-w-jednym-projekcie-w-flex-builderze-czesc-i/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 12:10:39 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[BlazeDS]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=147</guid>
		<description><![CDATA[Chciałbym przedstawić w jaki sposób można przygotować środowisko deweloperskie Flex Builder do kodowania Flex + Java. Chodzi oto, żeby móc tworzyć jednocześnie część aplikacji widoczną dla użytkownika (frontend) jak i backend, czyli kod Javy odpowiedzialny np.: za komunikację z bazami danych i obróbkę tych danych. Uwaga! Poniższy sposób tworzenia aplikacji sprawdza się tylko w przypadku [...]]]></description>
			<content:encoded><![CDATA[<p>Chciałbym przedstawić w jaki sposób można przygotować środowisko deweloperskie <a href="http://www.adobe.com/products/flex/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe Flex"  rel="external">Flex</a> Builder do kodowania Flex + <a href="http://java.sun.com/javase/downloads/index.jsp"  class="alinks_links" onclick="return alinks_click(this);" title="Java"  rel="external">Java</a>. Chodzi oto, żeby móc tworzyć jednocześnie część aplikacji widoczną dla użytkownika (frontend) jak i backend, czyli kod Javy odpowiedzialny np.: za komunikację z bazami danych i obróbkę tych danych.</p>
<p>Uwaga! Poniższy sposób tworzenia aplikacji sprawdza się tylko w przypadku kodowania przez jedną osobę.</p>
<p>Kod Javy będzie docelowo wykorzystywał <a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/"  class="alinks_links" onclick="return alinks_click(this);" title="BlazeDS"  rel="external">BlazeDS</a>/LiveCycle Data Services &#8211; będzie to jednak zagadnieniem następnego tutoriala.</p>
<p><strong>Wymagane oprogramowanie:</strong> Flex Builder 3.0.2 &#8211; dostępny do ściągnięcia w wersji trial ze <a href="http://www.adobe.com/go/flex_trial" target="_blank">stron Adobe</a> lub w specjalnej wersji dla studentów lub bezrobotnych programistów ze <a href="https://freeriatools.adobe.com/" target="_blank">strony Free RIA Tools</a>.</p>
<p><span id="more-147"></span></p>
<p>Zaczynamy od uruchomienia Flex Buildera:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds00.jpg" rel="lightbox[147]"><img class="size-medium wp-image-222 aligncenter" title="flex_builder_blazeds00" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds00-300x141.jpg" alt="flex_builder_blazeds00" width="300" height="141" /></a></p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds01.jpg" rel="lightbox[147]"><img class="size-medium wp-image-223 aligncenter" title="flex_builder_blazeds01" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds01-300x225.jpg" alt="flex_builder_blazeds01" width="300" height="225" /></a></p>
<p style="text-align: left;">Wybieramy menu <strong>Help -&gt; Software Updates -&gt; Find and Install</strong>:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds02.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-237" title="flex_builder_blazeds02" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds02-300x225.jpg" alt="flex_builder_blazeds02" width="300" height="225" /></a></p>
<p style="text-align: left;">Zaznaczamy opcję &#8222;<strong>Search for new features to install</strong>&#8222;:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds03.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-238" title="flex_builder_blazeds03" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds03-296x300.jpg" alt="flex_builder_blazeds03" width="296" height="300" /></a></p>
<p style="text-align: left;">Na liście zaznaczamy <strong>Europa Discovery Site</strong> i klikamy <strong>Finish</strong>:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds04.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-239" title="flex_builder_blazeds04" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds04-296x300.jpg" alt="flex_builder_blazeds04" width="296" height="300" /></a></p>
<p style="text-align: left;">Po wczytaniu listy aplikacji wybieramy ostatnią pozycję &#8222;<strong>Web and JEE Development</strong>&#8222;:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds05.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-227" title="flex_builder_blazeds05" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds05-272x300.jpg" alt="flex_builder_blazeds05" width="272" height="300" /></a></p>
<p style="text-align: left;">oraz wybieramy &#8222;<strong>Select required</strong>&#8222;, żeby dodać wszystkie wymagane zależności:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds06.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-228" title="flex_builder_blazeds06" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds06-272x300.jpg" alt="flex_builder_blazeds06" width="272" height="300" /></a></p>
<p style="text-align: left;">Następny krok to zgoda licencyjna:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds07.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-229" title="flex_builder_blazeds07" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds07-272x300.jpg" alt="flex_builder_blazeds07" width="272" height="300" /></a></p>
<p style="text-align: left;">oraz wybór komponentów opcjonalnych &#8211; wybieramy &#8222;<strong>Select All</strong>&#8221; (lub nie ruszamy nic, jeśli wszystko jest już zaznaczone):</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds08.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-230" title="flex_builder_blazeds08" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds08-272x300.jpg" alt="flex_builder_blazeds08" width="272" height="300" /></a></p>
<p style="text-align: left;">Jeszcze tylko ekran podsumowujący i klikamy <strong>Finish</strong>:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds09.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-231" title="flex_builder_blazeds09" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds09-272x300.jpg" alt="flex_builder_blazeds09" width="272" height="300" /></a></p>
<p style="text-align: left;">Chwila czekania, aż wszystkie ściągną się na dysk:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds10.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-236" title="flex_builder_blazeds10" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds10-300x132.jpg" alt="flex_builder_blazeds10" width="300" height="132" /></a></p>
<p style="text-align: left;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds11.jpg" rel="lightbox[147]"><img class="alignleft size-medium wp-image-250" style="display: none;" title="flex_builder_blazeds11" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds11-300x250.jpg" alt="flex_builder_blazeds11" width="300" height="250" /></a></p>
<p style="text-align: left;">Po ściągnięciu plików jeszcze raz zatwierdzamy chęć instalacji wybierając &#8222;<strong>Install all</strong>&#8222;.</p>
<p style="text-align: left;">Po pozytywej i całkowitej instalacji pojawia się monit do restartu Flex Buildera:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds12.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-221" title="flex_builder_blazeds12" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds12-300x99.jpg" alt="flex_builder_blazeds12" width="300" height="99" /></a></p>
<p style="text-align: left;">Efektem powyższych kroków będzie nowa opcja &#8222;<strong>Create combined Flex/Java project using WTP</strong>&#8221; w momencie tworzenia nowego projektu:</p>
<p style="text-align: center;"><a href="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds13.jpg" rel="lightbox[147]"><img class="aligncenter size-medium wp-image-256" title="flex_builder_blazeds13" src="http://flex.imrahil.com/files/2009/04/flex_builder_blazeds13-300x292.jpg" alt="flex_builder_blazeds13" width="300" height="292" /></a></p>
<p style="text-align: left;">Czas na Flex + Java w jednym projekcie w Flex Builderze &#8211; część II !</p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/04/11/flex-java-w-jednym-projekcie-w-flex-builderze-czesc-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PIT-37 przez internet, czyli e-Deklaracje Desktop</title>
		<link>http://flex.imrahil.com/2009/04/10/pit-37-przez-internet-czyli-e-deklaracje-desktop/</link>
		<comments>http://flex.imrahil.com/2009/04/10/pit-37-przez-internet-czyli-e-deklaracje-desktop/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 08:41:48 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Różne]]></category>
		<category><![CDATA[Wydarzenia]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=199</guid>
		<description><![CDATA[Uwaga! Pojawił się chyba pierwszy duży projekt AIR&#8216;owy w Polsce!. Ministerstwo Finansów zdecydowało się stworzyć aplikację do wypełniania PIT&#8217;ów-37 w technologii Adobe AIR. Do ściągnięcia ze strony www.e-deklaracje.gov.pl. Wielkość tego projektu to jednak nie złożoność aplikacji (bo całość wypełniania i obliczeń opiera się o interaktywny formularz PDF), ale jego nadchodząca popularność. Już widzę, jak w [...]]]></description>
			<content:encoded><![CDATA[<p>Uwaga! Pojawił się chyba pierwszy duży projekt <a href="http://www.adobe.com/products/air/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe AIR"  rel="external">AIR</a>&#8216;owy w Polsce!. Ministerstwo Finansów zdecydowało się stworzyć aplikację do wypełniania PIT&#8217;ów-37 w technologii <a href="http://www.adobe.com/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe"  rel="external">Adobe</a> AIR. Do ściągnięcia ze strony <a href="http://www.e-deklaracje.gov.pl/index.php?page=do_pobrania" target="_blank">www.e-deklaracje.gov.pl</a>.</p>
<p>Wielkość tego projektu to jednak nie złożoność aplikacji (bo całość wypełniania i obliczeń opiera się o interaktywny formularz PDF), ale jego nadchodząca popularność. Już widzę, jak w statystykach wystrzelą słupki popularności środowiska Adobe AIR w Polsce <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Appka oprócz rozliczeniowego PDF&#8217;a dodaje kilka możliwości &#8222;desktopowych&#8221;, czyli zapisywanie wersji roboczych na dysk, śledzenie statusu wysłanego rozliczenia czy z detali: kontrolę aktywności połączenia internetowego lub uruchamianie na starcie systemu.<br />
Przydałby się jeszcze tylko lepszy system pomocy, bo ten aktualny to po prostu wielgachny PDF w którym na 30 stronach opisana jest cała aplikacja. Dla normalnego użytkownika jest to całkowicie nie do ogarnięcia&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/04/10/pit-37-przez-internet-czyli-e-deklaracje-desktop/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lupo &#8211; szybkie i zgrabne tworzenie tłumaczeń i lokalizacji</title>
		<link>http://flex.imrahil.com/2009/04/09/lupo-szybkie-i-zgrabne-tworzenie-tlumaczen-i-lokalizacji/</link>
		<comments>http://flex.imrahil.com/2009/04/09/lupo-szybkie-i-zgrabne-tworzenie-tlumaczen-i-lokalizacji/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 11:07:04 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Różne]]></category>
		<category><![CDATA[Zapamiętać]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=192</guid>
		<description><![CDATA[Lupo Flex Localization Studio &#8211; to kolejna fajna rzecz znaleziona na blogu Davida Deraedt&#8217;a (wcześniej była prezentacja o Agile+Flex). Lupo Flex Localization Studio będzie to narzędzie składające się z dwóch modułów z których każdy ułatwiać będzie: Lupo Manager &#8211; proces tworzenia lokalizacji podczas pisania aplikacji, czyli: zamianę tekstów na odnośniki do resourceManager&#8217;a, dodawanie nowych jezyków, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dehats.com/drupal/?q=node/81" target="_blank">Lupo Flex Localization Studio</a> &#8211; to kolejna fajna rzecz znaleziona na <a href="http://www.dehats.com/drupal/" target="_blank">blogu Davida Deraedt&#8217;a</a> (wcześniej była <a href="http://flex.imrahil.com/2009/04/09/flex-i-metodologia-agile/" target="_blank">prezentacja o Agile+Flex</a>).</p>
<p style="text-align: center;"><a href="http://www.dehats.com/drupal/?q=node/81" target="_blank"><img class="aligncenter size-full wp-image-193" title="Lupo Flex Localization Studio" src="http://flex.imrahil.com/files/2009/04/lupo_screenshot.jpg" alt="lupo_screenshot" width="145" height="145" /></a></p>
<p>Lupo <a href="http://www.adobe.com/products/flex/"  class="alinks_links" onclick="return alinks_click(this);" title="Adobe Flex"  rel="external">Flex</a> Localization Studio będzie to narzędzie składające się z dwóch modułów z których każdy ułatwiać będzie:</p>
<ul>
<li>Lupo Manager &#8211; proces tworzenia lokalizacji podczas pisania aplikacji, czyli: zamianę tekstów na odnośniki do resourceManager&#8217;a, dodawanie nowych jezyków, czy generowanie potrzebnego kodu AS/MXML</li>
<li>Lupo Translator &#8211; proces tłumaczenia kolejnych tekstów aplikacji na różne języki,  coś na kształt <a href="http://www.poedit.net/" target="_blank">Poedit</a> dla plików *.po/*.mo</li>
</ul>
<p>Niestety nie ma narazie możliwości ściągnięcia instalki Lupo ani zarejestrowania się do programu beta-testów&#8230;. <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/04/09/lupo-szybkie-i-zgrabne-tworzenie-tlumaczen-i-lokalizacji/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex i metodologia Agile</title>
		<link>http://flex.imrahil.com/2009/04/09/flex-i-metodologia-agile/</link>
		<comments>http://flex.imrahil.com/2009/04/09/flex-i-metodologia-agile/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 10:49:23 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[Flash Platform]]></category>
		<category><![CDATA[Różne]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=184</guid>
		<description><![CDATA[Na blogu Davida Deraedt&#8217;a znalazłem bardzo ciekawą prezentację dotyczącą kodowania we Flexie przy wykorzystaniu metodyki Agile:]]></description>
			<content:encoded><![CDATA[<p>Na <a href="http://www.dehats.com/drupal/?q=node/66" target="_blank">blogu Davida Deraedt&#8217;a</a> znalazłem bardzo ciekawą prezentację dotyczącą kodowania we Flexie przy wykorzystaniu metodyki Agile:</p>
<p style="text-align: center;"><object width="400" height="300" data="http://data.sliderocket.com/SlideRocketPlayer.swf" type="application/x-shockwave-flash"><param name="flashvars" value="id=80840675-B0DB-84AE-496C-AB9873FCD501" /><param name="src" value="http://data.sliderocket.com/SlideRocketPlayer.swf" /><param name="allowfullscreen" value="true" /></object></p>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/04/09/flex-i-metodologia-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AMF remoting &#8211; co wybrać?</title>
		<link>http://flex.imrahil.com/2009/03/31/amf-remoting-co-wybrac/</link>
		<comments>http://flex.imrahil.com/2009/03/31/amf-remoting-co-wybrac/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 09:11:17 +0000</pubDate>
		<dc:creator>Jarek</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Serwer Side]]></category>

		<guid isPermaLink="false">http://flex.imrahil.com/?p=177</guid>
		<description><![CDATA[Co wybrać? AMFPHP, ZendAmf, WebOrb for PHP czy może SabreAMF? A może wogóle język inny niż PHP? Pytanie na które ciężko ostanim czasy znaleźć dobrą odpowiedź. Żeby choć trochę ułatwić sprawę polecam sprawne porównanie istniejących rozwiązań dla PHP opublikowane przez  Mihai Corlan&#8217;a. Dodatkowo dodam, że w dniu dzisiejszym pojawił się update (do wersji 1.7.8) biblioteki [...]]]></description>
			<content:encoded><![CDATA[<p>Co wybrać? AMFPHP, ZendAmf, WebOrb for PHP czy może SabreAMF? A może wogóle język inny niż PHP? <img src='http://flex.imrahil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Pytanie na które ciężko ostanim czasy znaleźć dobrą odpowiedź. Żeby choć trochę ułatwić sprawę polecam sprawne <a href="http://corlan.org/2009/03/31/flex-and-remoting-with-php-which-library-is-the-best-zend-amf-amfphp-weborb-for-php-or-sabreamf/" target="_blank">porównanie istniejących rozwiązań dla PHP</a> opublikowane przez  Mihai Corlan&#8217;a.</p>
<p>Dodatkowo dodam, że w dniu dzisiejszym pojawił się update (do wersji 1.7.8) biblioteki ZendAMF &#8211; więcej info na <a href="http://wadearnold.com/blog/?p=248" target="_blank">blogu Wade&#8217;a Arnolda</a>, a kod można ściągnąć ze <a href="http://framework.zend.com/download/amf" target="_blank">stron Zend Frameworka</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://flex.imrahil.com/2009/03/31/amf-remoting-co-wybrac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
