<?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>Spyre&#039;s Blog</title>
	<atom:link href="http://www.spyre.it/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.spyre.it/blog</link>
	<description>php flex and more!</description>
	<lastBuildDate>Sun, 22 May 2011 10:50:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Eccezioni non gestite in Flex</title>
		<link>http://www.spyre.it/blog/2011/05/22/eccezioni-non-gestite-in-flex/</link>
		<comments>http://www.spyre.it/blog/2011/05/22/eccezioni-non-gestite-in-flex/#comments</comments>
		<pubDate>Sun, 22 May 2011 10:50:40 +0000</pubDate>
		<dc:creator>spyre</dc:creator>
				<category><![CDATA[Articoli HTML.it]]></category>
		<category><![CDATA[Flash e Flex]]></category>

		<guid isPermaLink="false">http://www.spyre.it/blog/?p=432</guid>
		<description><![CDATA[Con la release 10.1 del Flash Player, Adobe ha introdotto una funzionalità importante per gli sviluppatori di Rich Internet Applications in Flex. La novità riguarda la possibilità di gestire le eccezioni non gestite ed evitare, quindi, la visualizzazione dei fastidiosissimi popup di errore o, in casi estremi, il blocco totale dell&#8217;applicazione. Potete leggere l&#8217;articolo completo]]></description>
			<content:encoded><![CDATA[<p>Con la release 10.1 del <a href="http://www.spyre.it/blog/tag/flash-player/" class="st_tag internal_tag" rel="tag" title="Post taggati con flash player">Flash Player</a>, <a href="http://www.spyre.it/blog/tag/adobe/" class="st_tag internal_tag" rel="tag" title="Post taggati con adobe">Adobe</a> ha introdotto una funzionalità importante per gli sviluppatori di <a href="http://www.spyre.it/blog/tag/rich-internet-applications/" class="st_tag internal_tag" rel="tag" title="Post taggati con rich internet applications">Rich Internet Applications</a> in Flex. La novità riguarda la possibilità di gestire le eccezioni non gestite ed evitare, quindi, la visualizzazione dei fastidiosissimi popup di errore o, in casi estremi, il blocco totale dell&#8217;applicazione.</p>
<p>Potete leggere l&#8217;articolo completo <a href="http://flash.html.it/articoli/leggi/3632/gestire-le-eccezioni-non-gestite-il-global-exception-handler/">qui</a>.</p>
<p>E potete scaricare l&#8217;esempio da <a href="http://www.spyre.it/blog/global-exception-handler-di-flex/">qui</a>.</p>
<p>Utilizzare il Global Exception Handler è estremamente conveniente ma non deve essere una scusa per non gestire quando possibile le eccezioni. E&#8217; bene gestire sempre le eccezioni dalle quali si può recuperare uno stato consistente dell&#8217;applicazione, e riservare l&#8217;utilizzo del gestore globale a quelle situazioni inaspettate che causerebbero problemi seri all&#8217;applicazione.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.spyre.it%2Fblog%2F2011%2F05%2F22%2Feccezioni-non-gestite-in-flex%2F&amp;title=Eccezioni%20non%20gestite%20in%20Flex"><img src="http://www.spyre.it/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.spyre.it/blog/2011/05/22/eccezioni-non-gestite-in-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AutoComplete: autocompletare i campi di testo in Flex</title>
		<link>http://www.spyre.it/blog/2011/02/20/autocomplete-autocompletare-i-campi-di-testo-in-flex/</link>
		<comments>http://www.spyre.it/blog/2011/02/20/autocomplete-autocompletare-i-campi-di-testo-in-flex/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 19:47:00 +0000</pubDate>
		<dc:creator>spyre</dc:creator>
				<category><![CDATA[Articoli HTML.it]]></category>
		<category><![CDATA[Flash e Flex]]></category>
		<category><![CDATA[autocompletamento]]></category>
		<category><![CDATA[html.it]]></category>
		<category><![CDATA[rich internet applications]]></category>

		<guid isPermaLink="false">http://www.spyre.it/blog/?p=413</guid>
		<description><![CDATA[AutoComplete è un component Flex per autocompletare i campi di testo in stile Facebook. &#8220;Spesso, durante lo sviluppo di applicazioni Flex, ci siamo trovati ad utilizzare il component ComboBox per consentire la selezione di un elemento da una lunga lista di oggetti. Quando, però, i dataProvider assegnati alle combo box contengono molti elementi è scomodo]]></description>
			<content:encoded><![CDATA[<p>AutoComplete è un component Flex per autocompletare i campi di testo in stile Facebook. </p>
<p>&#8220;Spesso, durante lo sviluppo di <a href="http://www.spyre.it/blog/tag/applicazioni/" class="st_tag internal_tag" rel="tag" title="Post taggati con applicazioni">applicazioni</a> Flex, ci siamo trovati ad utilizzare il component ComboBox per consentire la selezione di un elemento da una lunga lista di oggetti. Quando, però, i dataProvider assegnati alle combo box contengono molti elementi è scomodo utilizzare il component ComboBox e obbligare l&#8217;utente a ricercare l&#8217;elemento di interesse costringendolo a scorrere tutta la lista.</p>
<p>In sostituzione delle combobox possiamo utilizzare un component molto potente chiamato AutoComplete, che consente di gestire il riempimento di un campo di testo filtrando il dataProvider in stile Facebook.&#8221;</p>
<p>Per approfondire <a href="http://flash.html.it/articoli/leggi/3614/autocomplete-un-component-per-lautocompletamento-dei-campi-di-testo/">clicca qui</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.spyre.it%2Fblog%2F2011%2F02%2F20%2Fautocomplete-autocompletare-i-campi-di-testo-in-flex%2F&amp;title=AutoComplete%3A%20autocompletare%20i%20campi%20di%20testo%20in%20Flex"><img src="http://www.spyre.it/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.spyre.it/blog/2011/02/20/autocomplete-autocompletare-i-campi-di-testo-in-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Growl-like notifications for Flex</title>
		<link>http://www.spyre.it/blog/2010/10/05/growl-like-notifications-for-flex/</link>
		<comments>http://www.spyre.it/blog/2010/10/05/growl-like-notifications-for-flex/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 11:05:30 +0000</pubDate>
		<dc:creator>spyre</dc:creator>
				<category><![CDATA[Articoli HTML.it]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Flash e Flex]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[rich internet applications]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[web application]]></category>

		<guid isPermaLink="false">http://www.spyre.it/blog/?p=386</guid>
		<description><![CDATA[In generale, quando si sviluppano applicazioni basate su una complessa interfaccia grafica, è necessario studiare un buon sistema per comunicare all&#8217;utente il successo o il fallimento di un&#8217;operazione. E&#8217; stato pubblicato su Html.it un mio articolo su Bark, un framework per la gestione dei messaggi all&#8217;utente di una web application senza utilizzare i fastidiosissimi popup.]]></description>
			<content:encoded><![CDATA[<p>In generale, quando si sviluppano <a href="http://www.spyre.it/blog/tag/applicazioni/" class="st_tag internal_tag" rel="tag" title="Post taggati con applicazioni">applicazioni</a> basate su una complessa interfaccia grafica, è necessario studiare un buon sistema per comunicare all&#8217;utente il successo o il fallimento di un&#8217;operazione.</p>
<p>E&#8217; stato pubblicato su <a href="http://flash.html.it/articoli/leggi/3483/bark-notifiche-stile-growl-per-le-applicazioni-flex/">Html.it</a> un mio articolo su Bark, un <a href="http://www.spyre.it/blog/tag/framework/" class="st_tag internal_tag" rel="tag" title="Post taggati con Framework">framework</a> per la gestione dei messaggi all&#8217;utente di una <a href="http://www.spyre.it/blog/tag/web-application/" class="st_tag internal_tag" rel="tag" title="Post taggati con web application">web application</a> senza utilizzare i fastidiosissimi popup.</p>
<p>E&#8217; disponibile anche l&#8217;esempio: basta cliccare <a href="http://www.html.it/articoli/3483/swf/Main.html">qui</a>!!!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.spyre.it%2Fblog%2F2010%2F10%2F05%2Fgrowl-like-notifications-for-flex%2F&amp;title=Growl-like%20notifications%20for%20Flex"><img src="http://www.spyre.it/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.spyre.it/blog/2010/10/05/growl-like-notifications-for-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple apre le porte ad Adobe: era ora!</title>
		<link>http://www.spyre.it/blog/2010/09/11/apple-apre-le-porte-ad-adobe/</link>
		<comments>http://www.spyre.it/blog/2010/09/11/apple-apre-le-porte-ad-adobe/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 15:51:59 +0000</pubDate>
		<dc:creator>spyre</dc:creator>
				<category><![CDATA[Flash e Flex]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[applicazioni]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flash player]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://www.spyre.it/blog/?p=343</guid>
		<description><![CDATA[Apple, dopo un braccio di ferro con Adobe, si piega e consente lo sviluppo di applicazioni Flash/Flex sui dispositivi mobile. Apple, nel comunicato rilasciato il 9 Settembre, ha ridefinito gran parte delle linee guida per lo sviluppo di applicazioni mobile consentendo agli sviluppatori di utilizzare i tool di sviluppo che preferiscono, pur mantenendo delle stringenti]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.spyre.it/blog/wp-content/uploads/2010/09/apple_adobe_guerra_tn-e1284220644802.jpg" alt="Adobe vs Apple" title="apple_adobe_guerra_tn" width="180" height="196" class="alignleft size-full wp-image-353" /><a href="http://www.spyre.it/blog/tag/apple/" class="st_tag internal_tag" rel="tag" title="Post taggati con apple">Apple</a>, dopo un braccio di ferro con <a href="http://www.spyre.it/blog/tag/adobe/" class="st_tag internal_tag" rel="tag" title="Post taggati con adobe">Adobe</a>, si piega e consente lo sviluppo di <a href="http://www.spyre.it/blog/tag/applicazioni/" class="st_tag internal_tag" rel="tag" title="Post taggati con applicazioni">applicazioni</a> <a href="http://www.spyre.it/blog/tag/flash/" class="st_tag internal_tag" rel="tag" title="Post taggati con flash">Flash</a>/Flex sui dispositivi mobile.</p>
<p>Apple, nel <a href="http://www.apple.com/pr/library/2010/09/09statement.html" target="_blank">comunicato rilasciato il 9 Settembre</a>, ha ridefinito gran parte delle linee guida per lo sviluppo di applicazioni mobile consentendo agli sviluppatori di utilizzare i tool di sviluppo che preferiscono, pur mantenendo delle stringenti constrains per quanto riguarda la sicurezza.</p>
<p>Gli sviluppatori Adobe hanno ricevuto una <a href="http://blogs.adobe.com/conversations/2010/09/great-news-for-developers.html" target="_blank">gran bella notizia</a>, così come afferma un recente post sul <a href="http://www.spyre.it/blog/tag/blog/" class="st_tag internal_tag" rel="tag" title="Post taggati con blog">blog</a> ufficiale di Adobe stessa.<br />
<br />
<div class="clear-block"><div class="ad aligncenter"><!--  ADVERTISEMENT TAG 468 x 60, DO NOT MODIFY THIS CODE -->
<script src='http://performance-by.simply.com/simply.js?code=8689;1;0&v=2'></script>
<script language='JavaScript'>
<!--
document.write("<iframe marginheight='0px' marginwidth='0px' frameborder='0' scrolling='no' width='468' height='60' src='http://optimized-by.simply.com/play.html?code=26202;8556;6727;0&from="+escape(document.referrer)+"'></iframe>");
// -->
</script></div></div><br />
<br />
E&#8217; chiaro che Apple ha effettuato una scelta commerciale molto sofferta, poichè ha rinunciato a gran parte dei proclami fatti ad inizio anno rendendosi conto che Android, suo diretto concorrente, aveva aperto le porte ad una miriade di sviluppatori, compresi quelli che utilizzano tecnologie Flash/Flex.<br />
Infatti, su Android è possibile caricare applicazioni AIR2 che sfruttano tante delle potenzialità messe a disposizione dagli strumenti Adobe.</p>
<p>A mio avviso, un altro motivo (di sottofondo e non dichiarato) per cui Apple ha deciso di riaprire le porte dell&#8217;Apple Store riguarda la sicurezza delle applicazioni che sono hostate sullo store della mela. E&#8217; vero che le applicazioni sono controllate prima di essere pubblicate ma di certo Apple <a href="http://punto-informatico.it/2950391/PI/News/iphone-torcia-connessa.aspx" target="_blank">non ha fatto una bella figura</a> con l&#8217;applicazione Handy Torch che, oltre ad essere una semplice torcia, permetteva di approfittare del tethering della connessione wi-fi senza pagare una tariffa aggiuntiva (espressamente vietato negli Stati Uniti dall&#8217;unico concessionario iPhone).</p>
<p>In fin dei conti questa è una situazione che, se non risolta completamente, si avvia ad una rosea soluzione!</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.spyre.it%2Fblog%2F2010%2F09%2F11%2Fapple-apre-le-porte-ad-adobe%2F&amp;title=Apple%20apre%20le%20porte%20ad%20Adobe%3A%20era%20ora%21"><img src="http://www.spyre.it/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.spyre.it/blog/2010/09/11/apple-apre-le-porte-ad-adobe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial: Unit testing con JUnit</title>
		<link>http://www.spyre.it/blog/2010/08/30/tutorial-esempi-unit-testing-con-junit/</link>
		<comments>http://www.spyre.it/blog/2010/08/30/tutorial-esempi-unit-testing-con-junit/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 20:23:02 +0000</pubDate>
		<dc:creator>spyre</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[esempi]]></category>
		<category><![CDATA[ingegneria del software]]></category>
		<category><![CDATA[junit]]></category>
		<category><![CDATA[librerie]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[unit test]]></category>

		<guid isPermaLink="false">http://www.spyre.it/blog/?p=117</guid>
		<description><![CDATA[Come promesso nell&#8217;articolo sul Test Driven Development (anche se ho fatto passare un pò di tempo !), è giunto il momento di esplorare la libreria JUnit, necessaria per la scrittura dei test unitari in linguaggio Java. In questo articolo è presentata &#8220;solo&#8221; la libreria e non vengono illustrate le regole da seguire per poter scrivere]]></description>
			<content:encoded><![CDATA[<p>Come promesso nell&#8217;articolo sul <a href="http://www.spyre.it/blog/2009/12/05/test-driven-development-tdd/">Test Driven Development</a> (anche se ho fatto passare un pò di tempo <img src='http://www.spyre.it/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> !), è giunto il momento di esplorare la libreria <a href="http://www.spyre.it/blog/tag/junit/" class="st_tag internal_tag" rel="tag" title="Post taggati con junit">JUnit</a>, necessaria per la scrittura dei test unitari in linguaggio <a href="http://www.spyre.it/blog/tag/java/" class="st_tag internal_tag" rel="tag" title="Post taggati con Java">Java</a>.</p>
<p><em>In questo articolo è presentata &#8220;solo&#8221; la libreria e non vengono illustrate le regole da seguire per poter scrivere correttamente i test delle nostre <a href="http://www.spyre.it/blog/tag/applicazioni/" class="st_tag internal_tag" rel="tag" title="Post taggati con applicazioni">applicazioni</a>!</em></p>
<p>
<div class="clear-block"><div class="ad aligncenter"><!--  ADVERTISEMENT TAG 468 x 60, DO NOT MODIFY THIS CODE -->
<script src='http://performance-by.simply.com/simply.js?code=8689;1;0&v=2'></script>
<script language='JavaScript'>
<!--
document.write("<iframe marginheight='0px' marginwidth='0px' frameborder='0' scrolling='no' width='468' height='60' src='http://optimized-by.simply.com/play.html?code=26202;8556;6727;0&from="+escape(document.referrer)+"'></iframe>");
// -->
</script></div></div><br />
</p>
<h3>La libreria</h3>
<p>JUnit è un progetto open source gestito da Kent Beck e scaricabile all&#8217;indirizzo <a href="http://github.com/KentBeck/junit/downloads">http://github.com/KentBeck/junit/downloads</a>.</p>
<h3>Mettiamoci all&#8217;opera</h3>
<p>Quando si vuole testare il funzionamento di una classe, è necessario scrivere un&#8217;altra classe (!) che, per convenzione, viene sempre chiamata con lo stesso nome della classe da testare più il suffisso &#8220;Test&#8221;.</p>
<p>Supponiamo di avere una classe MathOp (di seguito) che svolge le operazioni di addizione e sottrazione, e di voler scrivere lo <a href="http://www.spyre.it/blog/tag/unit-test/" class="st_tag internal_tag" rel="tag" title="Post taggati con unit test">unit test</a>.</p>
<div class="geshi no java">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">public</span> <span class="kw2">class</span> MathOp <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> MathOp<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">int</span> add<span class="br0">&#40;</span><span class="kw4">int</span> a, <span class="kw4">int</span> b<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> a + b<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">int</span> sub<span class="br0">&#40;</span><span class="kw4">int</span> a, <span class="kw4">int</span> b<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> a &#8211; b<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Come accennato prima, è necessario creare un&#8217;altra classe, che deve essere chiamata MathOpTest. Per utilizzare la libreria JUnit è necessario aggiungerla al build path del progetto (lo si può fare direttamente dalle preferenze del progetto di Eclipse, ad esempio).</p>
<h3>Importare le classi di JUnit</h3>
<p>Per utilizzare i costrutti JUnit per effettuare le asserzioni sui risultati dei metodi è necessario importare, prima di tutto, la libreria e importare staticamente le classi del package org.junit.Assert:</p>
<div class="geshi no java">
<ol>
<li class="li1">
<div class="de1"><span class="co2">import org.junit.*;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">import static org.junit.Assert.*;</span></div>
</li>
</ol>
</div>
<h3>La classe di test</h3>
<p>A questo punto siamo pronti per scrivere la classe di test. Per indicare a JUnit quali sono i metodi che effettuano i test è necessario contraddistinguerli con l&#8217;annotazione @Test. In questo modo JUnit riconoscerà i metodi che contengono le asserzioni e li tratterà di conseguenza.</p>
<div class="geshi no java">
<ol>
<li class="li1">
<div class="de1"><span class="co2">import org.junit.*;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">import static org.junit.Assert.*;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">public</span> <span class="kw2">class</span> MathOpTest <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @Test</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> testAdd<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; MathOp a = <span class="kw2">new</span> MathOp<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; assertEquals<span class="br0">&#40;</span><span class="nu0">4</span>, a.<span class="me1">add</span><span class="br0">&#40;</span><span class="nu0">3</span>, <span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @Test</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> testSub<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; MathOp a = <span class="kw2">new</span> MathOp<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; assertEquals<span class="br0">&#40;</span><span class="nu0">-4</span>, a.<span class="me1">add</span><span class="br0">&#40;</span><span class="nu0">-3</span>, <span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<h3>Le asserzioni</h3>
<p>Con JUnit è possibile effettuare diversi tipo di test (con asserzioni diverse). Al momento dell’esecuzione, un test si considera superato se tutte le condizioni specificate risultano verificate.</p>
<ul>
<li><strong>assertEquals(expected, actual), assertArrayEquals(expected, actual)</strong> : richiede che il valore &#8216;expected&#8217; sia uguale a &#8216;actual&#8217;</li>
<li><strong>assertTrue(cond)</strong>: richiede che &#8216;cond&#8217; abbia come valore: &#8216;true&#8217;</li>
<li><strong>assertFalse(cond)</strong>: richiede che &#8216;cond&#8217; abbia come valore &#8216;false&#8217;</li>
<li><strong>assertNull(obj)</strong>: richiede che &#8216;obj&#8217; sia un riferimento nullo</li>
<li><strong>assertNotNull(obj)</strong>: richiede che &#8216;obj&#8217; sia un riferimento non nullo</li>
</ul>
<h3>@Before</h3>
<p>Nell&#8217;esempio precedente, in ognuno dei due test case è stato istanziato un oggetto MathOp. JUnit mette a disposizione degli sviluppatori una funzionalità per eseguire delle istruzioni prima che vengano eseguiti i test. Il metodo setUp() ha un&#8217;annotazione <em>@Before</em> che serve ad indicare a JUnit che il metodo va eseguito prima dell&#8217;esecuzione dei test case. In questo modo, il codice per inizializzare oggetti o risorse (ad esempio una connessione al DBMS) è concentrato in un solo punto della classe di test.<br />
Analogamente a <em>@Before</em>, l&#8217;annotazione <strong><em>@After</em></strong> indica a JUnit di eseguire il metodo dopo l&#8217;esecuzione dei test case.</p>
<div class="geshi no java">
<ol>
<li class="li1">
<div class="de1"><span class="co2">import org.junit.*;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co2">import static org.junit.Assert.*;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">public</span> <span class="kw2">class</span> MathOpTest <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">private</span> MathOp a<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @Before</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> setUp<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; a = <span class="kw2">new</span> MathOp<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @Test</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> testAdd<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; assertEquals<span class="br0">&#40;</span><span class="nu0">4</span>, a.<span class="me1">add</span><span class="br0">&#40;</span><span class="nu0">3</span>, <span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @Test</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> testSub<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; assertEquals<span class="br0">&#40;</span><span class="nu0">-4</span>, a.<span class="me1">sub</span><span class="br0">&#40;</span><span class="nu0">-3</span>, <span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<h3>Lanciare i test</h3>
<p>I test possono essere lanciati direttamente da Eclipse selezionando la classe di test e cliccando su &#8220;Run as&#8221; -> &#8220;JUnit Test&#8221;.<br />
E&#8217; possibile utilizzare anche la linea di comando o i task <strong>junit</strong> e <strong>junitreport</strong> di <a href="http://ant.apache.org">Apache Ant</a>.</p>
<p>Di seguito uno screenshot dei risultati del test in Eclipse:<br />
<img src="http://www.spyre.it/blog/wp-content/uploads/2010/08/test-report-junit-blog.png" alt="test junit report" title="test-report-junit-blog" width="340" height="305" /></p>
<p>I due test hanno avuto entrambi esito positivo! Nel caso si verifichino errori verranno conteggiati alla voce <em>Errors</em>, mentre le condizioni non verificate saranno conteggiate alla voce <em>Failures</em>.</p>
<h3>Conclusioni</h3>
<p>In questo articolo è stata fatta una semplice introduzione alla libreria, che dovrebbe essere utilizzata in ogni progetto software sviluppato in Java per garantire il test automatico del codice sorgente.<br />
Per approfondimenti vi rimando al sito <a href="http://www.junit.org/">http://www.junit.org/</a>.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.spyre.it%2Fblog%2F2010%2F08%2F30%2Ftutorial-esempi-unit-testing-con-junit%2F&amp;title=Tutorial%3A%20Unit%20testing%20con%20JUnit"><img src="http://www.spyre.it/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.spyre.it/blog/2010/08/30/tutorial-esempi-unit-testing-con-junit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Il primo Flash Player &#8220;out of the box&#8221;</title>
		<link>http://www.spyre.it/blog/2010/08/22/il-primo-flash-player-out-of-the-box/</link>
		<comments>http://www.spyre.it/blog/2010/08/22/il-primo-flash-player-out-of-the-box/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 10:56:54 +0000</pubDate>
		<dc:creator>spyre</dc:creator>
				<category><![CDATA[Flash e Flex]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[flash player]]></category>
		<category><![CDATA[h264]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web application]]></category>

		<guid isPermaLink="false">http://www.spyre.it/blog/?p=281</guid>
		<description><![CDATA[Motorola, lo scorso 12 Agosto, ha annunciato il rilascio di Droid 2, il nuovo smartphone, che è il primo telefono cellulare in assoluto che è fornito con Adobe Flash Player &#8220;out of the box&#8221;. Droid 2 ha come sistema operativo Andriod 2.2 per il quale il Flash Player 10.1 è già stato notevolmente ottimizzato. Droid]]></description>
			<content:encoded><![CDATA[<p>Motorola, lo scorso 12 Agosto, ha annunciato il r<a href="http://topnews.net.nz/content/27013-motorola-s-droid-2-launches-verizon-network-august-12">ilascio di Droid 2</a>, il nuovo smartphone, che è il primo telefono cellulare in assoluto che è fornito con <a href="http://www.spyre.it/blog/tag/adobe/" class="st_tag internal_tag" rel="tag" title="Post taggati con adobe">Adobe</a> <a href="http://www.spyre.it/blog/tag/flash-player/" class="st_tag internal_tag" rel="tag" title="Post taggati con flash player">Flash Player</a> &#8220;out of the box&#8221;.<br />
Droid 2 ha come sistema operativo Andriod 2.2 per il quale il <a href="http://www.spyre.it/blog/tag/flash/" class="st_tag internal_tag" rel="tag" title="Post taggati con flash">Flash</a> Player 10.1 è già stato notevolmente ottimizzato.<br />
Droid 2 sfrutta le potenzialità della decodifica hardware del protocollo H.264, che permette un risparmio della batteria di circa il 50% rispetto alla decodifica software (necessaria con le versioni precedenti del Flash Player).<br />
<br />
<div class="clear-block"><div class="ad aligncenter"><!--  ADVERTISEMENT TAG 468 x 60, DO NOT MODIFY THIS CODE -->
<script src='http://performance-by.simply.com/simply.js?code=8689;1;0&v=2'></script>
<script language='JavaScript'>
<!--
document.write("<iframe marginheight='0px' marginwidth='0px' frameborder='0' scrolling='no' width='468' height='60' src='http://optimized-by.simply.com/play.html?code=26202;8556;6727;0&from="+escape(document.referrer)+"'></iframe>");
// -->
</script></div></div><br />
<br />
Di seguito il <a href="http://www.spyre.it/blog/tag/video/" class="st_tag internal_tag" rel="tag" title="Post taggati con video">video</a> della presentazione (fonte: <a href="http://tv.adobe.com/">Adobe TV</a>):<br />
<object width="425" height="256"><param name="movie" value="http://images.tv.adobe.com/swf/player.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="FlashVars" value="fileID=7313&#038;context=76&#038;embeded=true&#038;environment=production"></param><embed src="http://images.tv.adobe.com/swf/player.swf" flashvars="fileID=7313&#038;context=76&#038;embeded=true&#038;environment=production" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="256"></embed></object></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.spyre.it%2Fblog%2F2010%2F08%2F22%2Fil-primo-flash-player-out-of-the-box%2F&amp;title=Il%20primo%20Flash%20Player%20%26%238220%3Bout%20of%20the%20box%26%238221%3B"><img src="http://www.spyre.it/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.spyre.it/blog/2010/08/22/il-primo-flash-player-out-of-the-box/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java vs PHP ?!?!</title>
		<link>http://www.spyre.it/blog/2010/08/16/java-vs-php-confronto/</link>
		<comments>http://www.spyre.it/blog/2010/08/16/java-vs-php-confronto/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 09:19:48 +0000</pubDate>
		<dc:creator>spyre</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[confronto]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[JSP]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webeetle]]></category>

		<guid isPermaLink="false">http://www.spyre.it/blog/?p=212</guid>
		<description><![CDATA[Gli ultimi 12 mesi hanno visto molti cambiamenti in weBeetle, dal punto di vista degli standard di sviluppo e dell&#8217;attenzione alla qualità del codice. Il cambiamento più grande, quasi epocale, è stato il volo da Php a Java. C&#8217;è da dire che la scelta di cambiare è stata lunga e sofferta, visto che è difficile]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-235" title="Confronto Java Php" src="http://www.spyre.it/blog/wp-content/uploads/2010/08/java-v-php1.jpg" alt="Confronto Java Php" width="200" />Gli ultimi 12 mesi hanno visto molti cambiamenti in <a href="http://www.spyre.it/blog/tag/webeetle/" class="st_tag internal_tag" rel="tag" title="Post taggati con webeetle">weBeetle</a>, dal punto di vista degli standard di sviluppo e dell&#8217;attenzione alla qualità del codice.<br />
Il cambiamento più grande, quasi epocale, è stato il volo da <a href="http://www.spyre.it/blog/tag/php/" class="st_tag internal_tag" rel="tag" title="Post taggati con Php">Php</a> a <a href="http://www.spyre.it/blog/tag/java/" class="st_tag internal_tag" rel="tag" title="Post taggati con Java">Java</a>. C&#8217;è da dire che la scelta di cambiare è stata lunga e sofferta, visto che è difficile cambiare una tecnologia quando i ritmi di sviluppo sono alti e devono essere mantenuti tali.<br />
Ma siamo arrivati al punto in cui non si poteva andare più avanti esclusivamente con il Php, visti i chiari limiti di questo linguaggio che si porta avanti le pecche delle sue origini, cioè quelle di essere nato come linguaggio di scripting e non come &#8220;vero e completo&#8221; linguaggio di programmazione.</p>
<p>Ma veniamo al vero scopo dell&#8217;articolo: tentare di fare un paragone tra i due linguaggi, anche se un vero e proprio <a href="http://www.spyre.it/blog/tag/confronto/" class="st_tag internal_tag" rel="tag" title="Post taggati con confronto">confronto</a> non è possibile.</p>
<h3>Le origini</h3>
<p>Java nasce come linguaggio totalmente ad oggetti, con una struttura solida e con il chiaro obiettivo di essere un linguaggio portabile, non legato al sistema su cui deve essere eseguito.<br />
Php, invece, nasce come linguaggio di scripting totalmente procedurale, con lo scopo di fornire uno strumento per sviluppare velocemente pagine <a href="http://www.spyre.it/blog/tag/web/" class="st_tag internal_tag" rel="tag" title="Post taggati con web">web</a> dinamiche.</p>
<h3>Il tipo dei dati</h3>
<p>Java è un linguaggio strongly-typed: per ogni variabile deve essere dichiarato il tipo. Php invece è un linguaggio weakly-typed: non è necessario dichiarare il tipo delle variabili e il riconoscimento del tipo viene effettuato a tempo di esecuzione.</p>
<h3>La vita degli oggetti</h3>
<p>La durata della vita degli oggetti è il limite più grande di Php, poichè un oggetto &#8220;muore&#8221; quando termina l&#8217;esecuzione di uno script. Non esiste, in Php, il concetto di scope degli oggetti!<br />
In Java, invece, è possibile decidere quanto un oggetto deve vivere:</p>
<ul>
<li><strong>Page</strong>: gli oggetti sono accessibili solo all&#8217;interno della pagina in cui sono stati creati, e vengono distrutti alla chiusura della pagina.</li>
<li><strong>Request</strong>: gli oggetti sono accessibili esclusivamente nelle pagine che elaborano la stessa richiesta; l&#8217;oggetto resta in vita anche se la richiesta viene inoltrata ad un&#8217;altra risorsa.</li>
<li><strong>Session</strong>: gli oggetti sono accessibili solo alle pagine che elaborano richieste all&#8217;interno della stessa sessione di quella in cui l&#8217;oggetto è stato creato; alla chiusura del browser vengono distrutti.</li>
<li><strong>Application</strong>: gli oggetti sono accessibili alle pagine che elaborano richieste relative alla stessa applicazione; gli oggetti vengono distrutti quando il <a href="http://www.spyre.it/blog/tag/server/" class="st_tag internal_tag" rel="tag" title="Post taggati con Server">server</a> viene spento o riavviato.</li>
</ul>
<p>Ad esempio, <a href="http://www.hibernate.org">Hibernate</a> (ORM in Java) permette di effettuare un object mapping del database. In Hibernate la gestione del pool connessioni al db è effettuata con una SessionFactory che viene istanziata all&#8217;avvio dell&#8217;applicazione web e il cui ciclo di vita è lungo quanto quello dell&#8217;intera applicazione. In questo modo è necessario effettuare il parsing dei file XML che descrivono il mapping del database solo all&#8217;avvio dell&#8217;applicazione e non ad ogni richiesta che viene effettuata dai client. Con Php non è permesso gestire in questo modo gli oggetti! E come dicevo prima: questo è, secondo me, il più grande limite di Php.</p>
<h3>L&#8217;architettura delle <a href="http://www.spyre.it/blog/tag/applicazioni/" class="st_tag internal_tag" rel="tag" title="Post taggati con applicazioni">applicazioni</a></h3>
<p>Php è un linguaggio semplice e, come tale, non impone agli sviluppatori di seguire una struttura ben precisa per lo sviluppo di un&#8217;applicazione web. Molte volte, data anche l&#8217;inesperienza dello sviluppatore, il codice prodotto è impossibile da riutilizzare: la logica è mischiata alle interfacce grafiche, non esiste un livello di interazione con il database ma le query sono fatte direttamente nel codice della business logic, ecc&#8230;<br />
Java, al contrario, impone agli sviluppatori di seguire una struttura ben precisa: la logica applicativa va racchiusa nelle classi HttpServlet mentre la visualizzazione dei risultati deve essere effettuata attraverso le pagine <a href="http://www.spyre.it/blog/tag/jsp/" class="st_tag internal_tag" rel="tag" title="Post taggati con JSP">JSP</a>.<br />
Java consente &#8220;nativamente&#8221; di separare la logica dalla visualizzazione, mentre in Php ciò è riservato all&#8217;esperienza e alle capacità del programmatore.</p>
<div class="clear-block"><div class="ad aligncenter"><!--  ADVERTISEMENT TAG 468 x 60, DO NOT MODIFY THIS CODE -->
<script src='http://performance-by.simply.com/simply.js?code=8689;1;0&v=2'></script>
<script language='JavaScript'>
<!--
document.write("<iframe marginheight='0px' marginwidth='0px' frameborder='0' scrolling='no' width='468' height='60' src='http://optimized-by.simply.com/play.html?code=26202;8556;6727;0&from="+escape(document.referrer)+"'></iframe>");
// -->
</script></div></div>
<h3>Velocità di sviluppo</h3>
<p>Php, data la sua struttura e le sue caratteristiche, permette di sviluppare velocemente applicazioni web. Per visualizzare una semplice pagina dinamica è possibile scrivere anche un solo file &#8220;.php&#8221; e il gioco è fatto.<br />
Per quanto riguarda Java, invece, le cose sono più complicate. Per prima cosa è necessario creare una classe che estende la classe HttpServlet (che si occupa di gestire la richiesta) di cui bisogna implementare i metodi doGet e doPost e poi bisogna mappare la servlet su di un url all&#8217;interno del file web.xml. Per visualizzare i risultati dell&#8217;elaborazione bisogna creare un file &#8220;.jsp&#8221; e legarlo alla servlet.</p>
<h3>Conclusioni</h3>
<p>Come avete potuto notare, Java e Php sono linguaggi completamente diversi e, quindi, aver tentato un paragone è stata una mossa un pò azzardata. Lo scopo non era quello di confrontare (nel vero senso della parola) e quindi scegliere il linguaggio migliore. Php e Java nascono per scopi diversi anche se ultimamente l&#8217;evoluzione di Php sta tendendo verso Java. Scegliere il linguaggio migliore non è possibile, almeno non è possibile farlo semplicemente.<br />
C&#8217;è da dire che in ambito <a href="http://www.spyre.it/blog/tag/enterprise/" class="st_tag internal_tag" rel="tag" title="Post taggati con enterprise">enterprise</a>, Java è preferito a Php per la quantità di strumenti, <a href="http://www.spyre.it/blog/tag/framework/" class="st_tag internal_tag" rel="tag" title="Post taggati con Framework">framework</a> e <a href="http://www.spyre.it/blog/tag/librerie/" class="st_tag internal_tag" rel="tag" title="Post taggati con librerie">librerie</a> disponibili sia a pagamento che open source e anche per il modo nel quale sono gestiti gli oggetti (Java in questo è molto più potente).<br />
Java e Php sono i linguaggi per lo sviluppo web più utilizzati, ognuno ha delle potenzialità specifiche e la scelta di uno dei due deve essere fatta al momento valutando l&#8217;applicazione da sviluppare e le caratteristiche che essa deve presentare.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.spyre.it%2Fblog%2F2010%2F08%2F16%2Fjava-vs-php-confronto%2F&amp;title=Java%20vs%20PHP%20%3F%21%3F%21"><img src="http://www.spyre.it/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.spyre.it/blog/2010/08/16/java-vs-php-confronto/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Costruire applicazioni Flex con PureMVC</title>
		<link>http://www.spyre.it/blog/2010/05/12/costruire-applicazioni-flex-con-puremvc/</link>
		<comments>http://www.spyre.it/blog/2010/05/12/costruire-applicazioni-flex-con-puremvc/#comments</comments>
		<pubDate>Tue, 11 May 2010 22:02:01 +0000</pubDate>
		<dc:creator>spyre</dc:creator>
				<category><![CDATA[Articoli HTML.it]]></category>
		<category><![CDATA[Flash e Flex]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[model view controller]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[puremvc]]></category>
		<category><![CDATA[web application]]></category>

		<guid isPermaLink="false">http://www.spyre.it/blog/?p=206</guid>
		<description><![CDATA[Ho scritto un articolo, abbastanza lungo, su come utilizzare il framework PureMVC, di cui ho discusso in un precedente post, per costruire un&#8217;applicazione Flex. E&#8217; chiaro che, per sviluppare una web application di medie o grandi dimensioni, è necessario darsi delle regole, un&#8217;architettura chiara e funzionale e scrivere codice modulare e disaccoppiato e PureMvc aiuta]]></description>
			<content:encoded><![CDATA[<p>Ho scritto un articolo, abbastanza lungo, su come utilizzare il <a href="http://www.spyre.it/blog/tag/framework/" class="st_tag internal_tag" rel="tag" title="Post taggati con Framework">framework</a> <a href="http://www.spyre.it/blog/tag/puremvc/" class="st_tag internal_tag" rel="tag" title="Post taggati con puremvc">PureMVC</a>, di cui ho discusso in un precedente post, per costruire un&#8217;applicazione Flex. E&#8217; chiaro che, per sviluppare una <a href="http://www.spyre.it/blog/tag/web-application/" class="st_tag internal_tag" rel="tag" title="Post taggati con web application">web application</a> di medie o grandi dimensioni, è necessario darsi delle regole, un&#8217;architettura chiara e funzionale e scrivere codice modulare e disaccoppiato e PureMvc aiuta gli ingeneri e gli sviluppatori a realizzare software di alta qualità seguendo questi &#8220;dictat&#8221;.</p>
<p><a href="http://flash.html.it/articoli/leggi/3346/introduzione-a-puremvc-la-prima-applicazione/">Per leggere l&#8217;articolo su Html.it clicca qui!</a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.spyre.it%2Fblog%2F2010%2F05%2F12%2Fcostruire-applicazioni-flex-con-puremvc%2F&amp;title=Costruire%20applicazioni%20Flex%20con%20PureMVC"><img src="http://www.spyre.it/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.spyre.it/blog/2010/05/12/costruire-applicazioni-flex-con-puremvc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PureMVC: le ragioni di una scelta</title>
		<link>http://www.spyre.it/blog/2010/04/18/puremvc-le-ragioni-di-una-scelta/</link>
		<comments>http://www.spyre.it/blog/2010/04/18/puremvc-le-ragioni-di-una-scelta/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 14:53:20 +0000</pubDate>
		<dc:creator>spyre</dc:creator>
				<category><![CDATA[Flash e Flex]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[ingegneria del software]]></category>
		<category><![CDATA[model view controller]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[puremvc]]></category>
		<category><![CDATA[rich internet applications]]></category>
		<category><![CDATA[webeetle]]></category>

		<guid isPermaLink="false">http://www.spyre.it/blog/?p=198</guid>
		<description><![CDATA[In weBeetle, nell&#8217;ultimo anno, abbiamo sviluppato molte applicazioni utilizzando Adobe Flex. Alcuni moduli e funzionalità, come ad esempio il Login, si ripetevano in tutte le applicazioni e ci hanno spinto a cercare una soluzione per rendere il nostro codice veramente riutilizzabile. Non si può affrontare lo sviluppo di una serie di applicazioni partendo ogni volta]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://www.webeetle.com">weBeetle</a>, nell&#8217;ultimo anno, abbiamo sviluppato molte <a href="http://www.spyre.it/blog/tag/applicazioni/" class="st_tag internal_tag" rel="tag" title="Post taggati con applicazioni">applicazioni</a> utilizzando <a href="http://www.spyre.it/blog/tag/adobe/" class="st_tag internal_tag" rel="tag" title="Post taggati con adobe">Adobe</a> Flex.<br />
Alcuni moduli e funzionalità, come ad esempio il Login, si ripetevano in tutte le applicazioni e ci hanno spinto a cercare una soluzione per rendere il nostro codice veramente riutilizzabile.<br />
Non si può affrontare lo sviluppo di una serie di applicazioni partendo ogni volta da capo, riscrivendo gli stessi moduli e ripetendo le stesse operazioni: è una perdita di tempo che può, anzi deve, essere evitata per ottimizzare il processo di sviluppo del software.</p>
<p>A questo punto, abbiamo maturato la decisione di utilizzare un <a href="http://www.spyre.it/blog/tag/framework/" class="st_tag internal_tag" rel="tag" title="Post taggati con Framework">framework</a> <a href="http://www.spyre.it/blog/tag/mvc/" class="st_tag internal_tag" rel="tag" title="Post taggati con MVC">MVC</a> (<a href="http://www.spyre.it/blog/tag/model-view-controller/" class="st_tag internal_tag" rel="tag" title="Post taggati con model view controller">Model View Controller</a>), che ci permettesse di garantire il minimo accoppiamento tra i moduli, in modo da rendere il software riutilizzabile ed estendibile.<br />
Dopo alcune ricerche, abbiamo ristretto il campo di decisione su <a href="http://www.spyre.it/blog/tag/puremvc/" class="st_tag internal_tag" rel="tag" title="Post taggati con puremvc">PureMVC</a> e Cairngorm, che sono i framework più utilizzati per lo sviluppo di <a href="http://www.spyre.it/blog/tag/rich-internet-applications/" class="st_tag internal_tag" rel="tag" title="Post taggati con rich internet applications">rich internet applications</a> in Flex.</p>
<p><strong>Cairngorm</strong><br />
<em>pro</em>:</p>
<ul>
<li>è sviluppato da Adobe</li>
<li>sono disponibili molte risorse </li>
</ul>
<p><em>contro</em>:	</p>
<ul>
<li>non segue la metodologia DRY (don&#8217;t repeat yourself)</li>
<li>bisogna scrivere molte classi per implementare una sola funzionalità</li>
</ul>
<p>Lo svantaggio più grande di questo framework è la scrittura di molte classi per l&#8217;implementazione di una singola funzionalità. Inoltre, molto codice viene riscritto e ripetuto e, quindi, il software è molto soggetto alla presenza di bugs.</p>
<p><strong>PureMVC</strong><br />
<em>pro</em>:</p>
<ul>
<li>è scritto come framework per Flex, <a href="http://www.spyre.it/blog/tag/flash/" class="st_tag internal_tag" rel="tag" title="Post taggati con flash">Flash</a> e Air</li>
<li>la documentazione e gli <a href="http://www.spyre.it/blog/tag/esempi/" class="st_tag internal_tag" rel="tag" title="Post taggati con esempi">esempi</a> sono molto chiari</li>
</ul>
<p><em>contro</em>:</p>
<ul>
<li>per gli sviluppatori è necessario utilizzare un sistema di segnalazione diverso da quello nativo di Flex</li>
</ul>
<p>Le classi da scrivere per implementare una funzionalità sono in numero minore rispetto a Cairngorm. Inoltre, PureMVC implementa un sistema di comunicazione tra i livelli basato sull&#8217;invio di messaggi, detti Notification, tra i component. Da questo punto di vista è assicurato un basso livello di accoppiamento tra i moduli. Seguendo le best practices illustrate nella documentazione del framework, il codice risulta molto chiaro e pulito.</p>
<h3>In conclusione</h3>
<p>Abbiamo scelto PureMVC e non siamo pentiti della nostra scelta. Anzi, siamo veramente entusiasti del framework e della rapidità con cui stiamo sviluppando le applicazioni. Il riutilizzo del codice ha raggiunto il massimo livello in azienda: basti pensare alla funzionalità di login che abbiamo sviluppato una sola volta e che ora stiamo usando in tutti i nostri progetti.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.spyre.it%2Fblog%2F2010%2F04%2F18%2Fpuremvc-le-ragioni-di-una-scelta%2F&amp;title=PureMVC%3A%20le%20ragioni%20di%20una%20scelta"><img src="http://www.spyre.it/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.spyre.it/blog/2010/04/18/puremvc-le-ragioni-di-una-scelta/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Unit testing per applicazioni Flex/ActionScript con FlexUnit</title>
		<link>http://www.spyre.it/blog/2010/01/22/unit-testing-per-applicazioni-flexactionscript-con-flexunit/</link>
		<comments>http://www.spyre.it/blog/2010/01/22/unit-testing-per-applicazioni-flexactionscript-con-flexunit/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 21:53:58 +0000</pubDate>
		<dc:creator>spyre</dc:creator>
				<category><![CDATA[Articoli HTML.it]]></category>
		<category><![CDATA[Flash e Flex]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[librerie]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[unit test]]></category>

		<guid isPermaLink="false">http://www.spyre.it/blog/?p=180</guid>
		<description><![CDATA[Riprendendo l&#8217;articolo sul articolo sul test driven development pubblicato su questo blog, ho scritto per Html.it un articolo su come utilizzare il framework FlexUnit per realizzare i test unitari per un&#8217;applicazione scritta in ActionScript. &#8220;FlexUnit è un framework per unit testing per ActionScript 3.0 e Flex e permette di eseguire i test attraverso un test]]></description>
			<content:encoded><![CDATA[<p>Riprendendo l&#8217;articolo sul <a href="http://www.spyre.it/blog/2009/12/05/test-driven-development-tdd/">articolo sul test driven development</a> pubblicato su questo <a href="http://www.spyre.it/blog/tag/blog/" class="st_tag internal_tag" rel="tag" title="Post taggati con blog">blog</a>, ho scritto per <a href="http://www.spyre.it/blog/tag/html-it/" class="st_tag internal_tag" rel="tag" title="Post taggati con html.it">Html.it</a> un articolo su come utilizzare il <a href="http://www.spyre.it/blog/tag/framework/" class="st_tag internal_tag" rel="tag" title="Post taggati con Framework">framework</a> FlexUnit per realizzare i test unitari per un&#8217;applicazione scritta in ActionScript.</p>
<p><em>&#8220;FlexUnit è un framework per unit <a href="http://www.spyre.it/blog/tag/testing/" class="st_tag internal_tag" rel="tag" title="Post taggati con testing">testing</a> per ActionScript 3.0 e Flex e permette di eseguire i test attraverso un test runner grafico.<br />
Per utilizzare FlexUnit, dobbiamo creare un&#8217;applicazione dedicata all&#8217;esecuzione dei test: l&#8217;applicazione deve sfruttare un component di tipo TestRunnerBase per l&#8217;esecuzione dei test unitari.&#8221;</em></p>
<p><a href="http://flash.html.it/articoli/leggi/3254/flexunit-unit-testing-per-applicazioni-flash-e-actionscript/">Continua la lettura dell&#8217;articolo completo&#8230;</a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.spyre.it%2Fblog%2F2010%2F01%2F22%2Funit-testing-per-applicazioni-flexactionscript-con-flexunit%2F&amp;title=Unit%20testing%20per%20applicazioni%20Flex%2FActionScript%20con%20FlexUnit"><img src="http://www.spyre.it/blog/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.spyre.it/blog/2010/01/22/unit-testing-per-applicazioni-flexactionscript-con-flexunit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

