<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Blogrammazione</title>
	
	<link>http://www.marcolecce.com/blog</link>
	<description>Programmazione, PHP, JAVA, ASP, Linux, Windows, Ajax, Web 2.0, Web 3.0</description>
	<lastBuildDate>Thu, 22 Jul 2010 13:06:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Blogrammazione" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="blogrammazione" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">Blogrammazione</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Zend Framework – Disabilitare il layout e la view</title>
		<link>http://www.marcolecce.com/blog/2010/07/22/zend-framework-disabilitare-il-layout-e-la-view/</link>
		<comments>http://www.marcolecce.com/blog/2010/07/22/zend-framework-disabilitare-il-layout-e-la-view/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 13:03:19 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Mysq]]></category>
		<category><![CDATA[Sviluppo Web]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=425</guid>
		<description><![CDATA[Lavorando con Zend Framework in diverse occasioni avremo la necessità di disabilitare il layout e la renderizzazione della vista. Per effettuare l&#8217;upload di file ad esempio potrei aver bisogno di una action da richiamare in un determinato controller, senza però per forza applicare a questa una vista. L&#8217;implementazione del pattern MVC (Model-View-Controller) di Zend Framework, [...]]]></description>
			<content:encoded><![CDATA[<p>Lavorando con<a title="Zend Framework" href="http://framework.zend.com/" target="_blank"> Zend Framework</a> in diverse occasioni avremo la necessità di disabilitare il layout e la renderizzazione della vista. Per effettuare l&#8217;upload di file ad esempio potrei aver bisogno di una action da richiamare in un determinato controller, senza però per forza applicare a questa una vista.</p>
<p>L&#8217;implementazione del pattern <a title="Model View Controller - MVC" href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">MVC</a> (Model-View-Controller) di <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend  Framework</a>, in accordo con le regole di naming implementate dal framework, richiedono uno schema di questo tipo:</p>
<p>==&gt; <strong>richiesta al controller</strong> (www.dominio.com/news/list)</p>
<p>==&gt; <strong>attivazione della action corrispondente</strong> (chiamata al metodo listAction() del controller &#8220;news&#8221;)</p>
<p>==&gt; <strong>gestione dei dati nel model</strong> (vengono recuperati dal databse i dati richiesti e passati al controller)</p>
<p>==&gt; <strong>ritorno del responso al controller</strong> (il controller recupera i dati restituiti dal model e li assegna alla vista)</p>
<p>==&gt; <strong>visualizzazione dei dati nella vista corrispondente</strong> (la vista visualizza i dati risultati dalla richiesta ricevuta al primo passaggio )</p>
<p>Per quanto riguarda il naming, invece, il framework richiede che ci sia una corrispondenza tra la richiesta (URL) e gli elementi <a title="Model View Controller - MVC" href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">MVC</a> :</p>
<p>- URL = www.dominio.com/<span style="color: #0000ff;">news</span>/<span style="color: #993366;">list</span></p>
<p>- nome del controller (<span style="color: #0000ff;">News</span>Controller)</p>
<p>- nome della action (<span style="color: #993366;">list</span>Action)</p>
<p>- file della vista che contiene il codice <a title="HTML" href="http://en.wikipedia.org/wiki/HTML" target="_blank">HTML</a> per la visualizzazione del responso (<span style="color: #993366;">list</span>.phtml)</p>
<p>I colori ci aiutano a chiarire le corrispondente. Ci sono dei casi però in cui tutto il meccanismo che implementa l&#8217;<a title="Model View Controller - MVC" href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">MVC</a> non è necessario. In alcuni casi, infatti, il file della vista (nel nostro caso list.phtml) non è necessario.</p>
<p>Pensiamo ad esempio all&#8217;azione di caricamento (upload) di un file: in questo caso ci interessa richiedere al controller che si occupa della gestione dei file di attivare la action adibita alla gestione del caricamento, ma senza richiamare un file di visualizzazione, restituendo invece un semplice messaggio per fornire il feedback sul successo o meno dell&#8217;operazione.</p>
<p>Per ottenere la disabilitazione del layout e il richiamo automatico della vista possiamo servici dell&#8217;helper messo a disposizione da <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend  Framework</a> stesso:<br />
<code><br />
$this-&gt;_helper-&gt;layout-&gt;disableLayout();<br />
$this-&gt;_helper-&gt;viewRenderer-&gt;setNoRender(true);</code></p>
<p>Inserendo queste righe di codice all&#8217;interno della action del controller comunichiamo al framework di disabilitare il layout e dunque la visualizzazione del risultato nel corrispondente file .phtml . In questo modo <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend  Framework</a> non andrà a cercare il file della vista, e noi siamo liberi di utilizzare il risultato della richiesta nel modo più adeguato alle necessità del nostro applicativo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2010/07/22/zend-framework-disabilitare-il-layout-e-la-view/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Crea la tua stazione radio con Aupeo</title>
		<link>http://www.marcolecce.com/blog/2010/07/19/crea-la-tua-stazione-radio-con-aupeo/</link>
		<comments>http://www.marcolecce.com/blog/2010/07/19/crea-la-tua-stazione-radio-con-aupeo/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 07:49:23 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Servizi Web]]></category>
		<category><![CDATA[servizi]]></category>
		<category><![CDATA[web radio]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=420</guid>
		<description><![CDATA[Aupeo è un servizio web davvero comodo ed interessante per chi passa ore davanti al PC. Aupeo infatti fornisce un servizio per creare una stazione radio web personalizzata con la trasmissione del nostro genere di musica preferito. Fontadato nel 2008, Aupeo ci permette con pochissimi click di avere a disposizione tutta la musica del nostro/nostri [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Aupeo" href="http://www.aupeo.com/" target="_blank"><strong>Aupeo</strong></a> è un servizio web davvero comodo ed interessante per chi passa ore davanti al PC. <strong><a title="Aupeo" href="http://www.aupeo.com/" target="_blank"><strong>Aupeo</strong></a></strong><strong> </strong>infatti fornisce un servizio per creare una stazione radio web personalizzata con la trasmissione del nostro genere di musica preferito.</p>
<p>Fontadato nel 2008, <strong><a title="Aupeo" href="http://www.aupeo.com/" target="_blank"><strong>Aupeo</strong></a></strong> ci permette con pochissimi click di avere a disposizione tutta la musica del nostro/nostri artisti preferiti: l&#8217;unica cosa di cui abbiamo bisogno è in effetti una banda larga degna di questo nome, per evitare i fastidiosi silenzi e le fastidiose interruzioni durante la trasmissione.</p>
<p>Il funzionamento alla base del progetto (nato e cresciuto a Berlino) è molto semplice: tutto ciò che dobbiamo fare è inserire il nome del nostro artista preferito nell&#8217;apposito spazio, e subito verrà trasmessa la sua musica più quella dei musicisti affini. Ad esempio, se scriviamo &#8220;Jimi Hendrix&#8221; e facciamo partire la trasmissione, troveremo oltre al rock del mitico chitarrista anche la musica di Muddy Waters, Eric Clapton, Steve Ray Vaughan e tanti altri.</p>
<p>L&#8217;interfaccia è disponibile anche in italiano, e il servizio è davvero semplice da utilizzare&#8230;provare per credere! <img src='http://www.marcolecce.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;"><strong><a title="Aupeo" href="http://www.aupeo.com/" target="_blank"><strong>Aupeo</strong></a></strong></div>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2010/07/19/crea-la-tua-stazione-radio-con-aupeo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I migliori giochi per Android 2.1 (Prima parte)</title>
		<link>http://www.marcolecce.com/blog/2010/07/16/i-migliori-giochi-per-android-2-1-prima-parte/</link>
		<comments>http://www.marcolecce.com/blog/2010/07/16/i-migliori-giochi-per-android-2-1-prima-parte/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 07:56:11 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[sviluppo]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=393</guid>
		<description><![CDATA[Android sta conquistando sempre più mercato: gli utenti lo apprezzano, le case produttrici di cellulari anche, e gli sviluppatori sembrano divertirsi un sacco con il suo SDK. Lo dimostra il numero di applicazioni in costante aumento disponibili per cellulari Android (Acer Liquid in primis): tra queste, i giochi sono sicuramente tra quelle più gettonate. Sì, [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Android " href="http://www.android.com/" target="_blank">Android</a> sta conquistando sempre più mercato: gli utenti lo apprezzano, le case produttrici di cellulari anche, e gli sviluppatori sembrano divertirsi un sacco con il suo <a title="Android SDK" href="http://developer.android.com/sdk/index.html" target="_blank">SDK</a>. Lo dimostra il numero di applicazioni in costante aumento disponibili per cellulari Android (<a title="Acer Liquid" href="http://mobile.acer.com/en/liquid/" target="_blank">Acer Liquid</a> in primis): tra queste, i giochi sono sicuramente tra quelle più gettonate. Sì, perchè con la risoluzione degli attuali schermi, con la possibilità di implementare il 3D e il 2D e di utilizzare il touchscreen e l&#8217;accelerometro, i giochi <a title="Android " href="http://www.android.com/" target="_blank">Android</a> per smartphone sono davvero una nuova esperienza di divertimento ed intrattenimento.</p>
<p>Vediamo alla una prima rassegna dei giochi più interessanti finora testati e scelti non solo per la loro qualità, ma anche per il divertimento e la pura bellezza di giocare.</p>
<div id="attachment_400" class="wp-caption alignleft" style="width: 160px"><a href="http://www.marcolecce.com/blog/wp-content/com.fridgecat.android.atiltlite1.jpg"><img class="size-thumbnail wp-image-400" title="com.fridgecat.android.atiltlite1" src="http://www.marcolecce.com/blog/wp-content/com.fridgecat.android.atiltlite1-150x150.jpg" alt="Giochi per Android - atiltlite" width="150" height="150" /></a><p class="wp-caption-text">aTiltlite</p></div>
<p><a title="giochi per android - atiltlite" href="http://www.android.com/market/#app=com.fridgecat.android.atiltlite" target="_blank"><br />
aTiltlite</a> è sicuramente uno dei giochi più interessanti: bello, divertente, coinvolgente&#8230;insomma da avere. Il gioco è in realtà molto semplice: si tratta di portare la pallina fino al traguarda attraverso un percorso labirintico di buchi e trappole.</p>
<p>Avviato il gioco, il nostro cellulare si trasforma nel percorso da completare: i movimenti del cellulare inclinano il piano su cui si muove la pallina, con una vibrazione per ogni &#8220;contatto&#8221; che questa ha con le pareti del labirinto; il risultato è una esperienza di gioco davvero coinvolgente e divertente.</p>
<p>Quello che differenzia questa versione da altre disponibili nel <a title="Android Market" href="http://www.android.com/market/" target="_blank">market</a> di <a title="Android " href="http://www.android.com/" target="_blank">Android</a> è il numero impressionante di livelli disponibili (200) e la possibilità di averne sempre di nuovi, da scaricare o da creare (possiamo creare i nostri percorsi nell&#8217;editor online di supporto al gioco, raggiungibile attraverso un link disponibile nel menu del gioco stesso).</p>
<p>E&#8217; tra i più scaricati del market&#8230;.un pensierino lo farei!</p>
<div id="attachment_403" class="wp-caption alignleft" style="width: 160px"><a href="http://www.marcolecce.com/blog/wp-content/com.reverie.game_.fallingball0.png"><img class="size-thumbnail wp-image-403 " title="fallingball" src="http://www.marcolecce.com/blog/wp-content/com.reverie.game_.fallingball0-150x150.png" alt="Giochi per Android - fallingball " width="150" height="150" /></a><a title="Giochi per Android - FallingBall" href="http://www.android.com/market/#app=com.reverie.game.fallingball" target="_blank"></a><p class="wp-caption-text">Fallingball</p></div>
<p><a title="Giochi per Android - FallingBall" href="http://www.android.com/market/#app=com.reverie.game.fallingball" target="_blank">Fallingball</a> non ha certo la cura grafica di  <a title="giochi per android - atiltlite" href="http://www.android.com/market/#app=com.fridgecat.android.atiltlite" target="_blank">aTiltlite</a>, però è un gioco davvero semplice, leggero e divertente.</p>
<p>Questa volta siamo un omino come lo disegnavamo alle elementari (nel mio caso  è ancora così in realtà <img src='http://www.marcolecce.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) e dobbiamo schivare delle palline che ribalzano continuamente sulla nostra testa.</p>
<p>Anche in questo caso non dobbiamo fare altro che muovere il nostro cellulare per far correre l&#8217;omino a destra o a sinistra: la sensibilità ai movimenti del cellulare è sufficiente per divertirsi senza problemi.</p>
<p>E&#8217; una gara a tempo, dunque possiamo giocare con gli amici e segnare il nostro tempo nella classifica del gioco: dopo 30 secondi circa le palline sono già tre, e il numero cresce velocemente, dunque&#8230;</p>
<p>&#8230;occhio alla testa!!</p>
<div id="attachment_405" class="wp-caption alignleft" style="width: 160px"><a href="http://www.marcolecce.com/blog/wp-content/com.virtuesoft.wordsearch1.jpg"><img class="size-thumbnail wp-image-405" title="WordSearch" src="http://www.marcolecce.com/blog/wp-content/com.virtuesoft.wordsearch1-150x150.jpg" alt="Giochi per Android - WordSearch" width="150" height="150" /></a><p class="wp-caption-text">WordSearch</p></div>
<p><a title="Giochi per Android - WordSearch" href="http://www.android.com/market/#app=com.virtuesoft.wordsearch" target="_blank">WordSearch</a> è un classico che non passa mai di moda, come dimostra la sua costante presenza nella &#8220;settimana enigmistica&#8221;.</p>
<p>Tutto ciò che dobbiamo fare è trovare le parole che ci vengono indicate sul fondo dello schermo: chiaramente le dobbiamo cercare, perchè sono tutte &#8220;mescolate&#8221; tra loro.</p>
<p>E&#8217; possibile personalizzare lo sfondo scegliendo tra quelli proposti, anche se a mio parere la lavagna rimane il migliore&#8230;distrae meno e il punteggio alto è assicurato!</p>
<p>Il gioco supporto il touchscreen, dunque è sufficiente far scivolare il dito sulla parola per segnalare la nostra scoperta: attualmente la lingua supportata è l&#8217;inglese, dunque le parole che dobbiamo trovare seguono la stessa impostazione.</p>
<p>Ma non è un male, anzi: possiamo imparare qualche nuovo vocabolo in inglese divertendoci e giocando.</p>
<div id="attachment_408" class="wp-caption alignleft" style="width: 160px"><a href="http://www.marcolecce.com/blog/wp-content/net.sunflat.android.papijump0.jpg"><img class="size-thumbnail wp-image-408" title="PapiJump" src="http://www.marcolecce.com/blog/wp-content/net.sunflat.android.papijump0-150x150.jpg" alt="giochi per android - PapiJump" width="150" height="150" /></a><p class="wp-caption-text">PapiJump</p></div>
<p><a title="PapiJump" href="http://www.android.com/market/#app=net.sunflat.android.papijump" target="_blank">PapiJump </a>è un gioco davvero originale: torniamo ad essere una pallina, ma questa volta dobbiamo andare&#8230;più in alto possibile!</p>
<p>Sì, perchè lo scopo del gioco è riuscire ad andare sempre più in alto sostenendoci con degli scalini posti qua e là sulla schermo: il problema è che una &#8220;forza&#8221; ci spinge sempre in alto, e se non ci affidiamo agli scalini&#8230;&#8230;splash sul pavimento!</p>
<p>Graficamente il gioco non è proprio curato, ma vi assicuro che è tra i più divertenti e coinvolgenti tra quelli provati: la velocità e la dinamicità del gioco assicurano il divertimento.</p>
<p>Anche in questo caso è sufficiente far &#8220;oscillare &#8221; il nostro cellulare per dirigere gli spostamenti della nostra pallina&#8230;</p>
<p>..anche da una parte all&#8217;altra dello schermo!!</p>
<div id="attachment_409" class="wp-caption alignleft" style="width: 160px"><a href="http://www.marcolecce.com/blog/wp-content/com.pineconesoft.comparator1.jpg"><img class="size-thumbnail wp-image-409" title="Trova le differenze" src="http://www.marcolecce.com/blog/wp-content/com.pineconesoft.comparator1-150x150.jpg" alt="Giochi per Android - Trova le differenze" width="150" height="150" /></a><p class="wp-caption-text">Trova le differenze</p></div>
<p>Anche in questo caso siamo di fronte ad un classico: <a title="Giochi per Android - Trova le differenze" href="http://www.android.com/market/#app=com.pineconesoft.comparator" target="_blank">Trova le differenze</a> ci dà giusto il tempo di trovare le 5 differenze nelle due immagini proposte&#8230;.poi perdiamo un sacco di punti!</p>
<p>Molto curato graficamente, assicura il divertimento grazie ad un sistema di aiuti autoaggiornante (ne abbiamo inizialmente 5, ma se siamo bravi possono diventare molti di più) e ad un numero impressionante di immagini disponibili da confrontare.</p>
<p>Supportato dal touchscreen, il gioco è senz&#8217;altro divertente, anche se chiaramente un pò più monòtono dei precedenti.</p>
<p>Inoltre il gioco è un pochetto pesante rispetto agli altri visti, proprio perchè si porta dietro il carico delle immagini: nonostante questo però risulta essere un ottimo passatempo&#8230;</p>
<p>&#8230;quindi perchè non averlo?</p>
<p>Questi sono i primi 5 giochi che vi consiglio di provare, sia perchè davvero simpatici sia perchè mostrano le potenzialità del mondo mobile nell&#8217;ambito dell&#8217;entertainment. Sicuramente seguirà una seconda rassegna, ma prima devo tornare a &#8220;spluciare&#8221; il market di Android, perciò&#8230;alla prossima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2010/07/16/i-migliori-giochi-per-android-2-1-prima-parte/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Finalmente è tra noi! Ecco l’aggiornamento ufficiale ad Android 2.1 per l’Acer Liquid</title>
		<link>http://www.marcolecce.com/blog/2010/07/13/finalmente-e-tra-noi-ecco-laggiornamento-ufficiale-ad-android-2-1-per-lacer-liquid/</link>
		<comments>http://www.marcolecce.com/blog/2010/07/13/finalmente-e-tra-noi-ecco-laggiornamento-ufficiale-ad-android-2-1-per-lacer-liquid/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 07:02:44 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=383</guid>
		<description><![CDATA[Doveva uscire a maggio 2010, poi voci lo davano disponibile per la metà di giugno&#8230;.finalmente, dopo mesi di attesa, è stata rilasciata proprio qualche giorno fa la ROM ufficiale per l&#8217;aggiornamento dalla versione 1.6 alla 2.1 di Android per i cellulari Acer Liquid. Ovviamente non ho perso neanche un secondo&#8230;.ho fatto tutti i backup del [...]]]></description>
			<content:encoded><![CDATA[<p>Doveva uscire a maggio 2010, poi voci lo davano disponibile per la metà di giugno&#8230;.finalmente, dopo mesi di attesa, è stata rilasciata proprio qualche giorno fa la <a title="ROM ufficiale upgrade Acer Liquid" href="http://www.acer.co.uk/acer/service.do?LanguageISOCtxParam=en&amp;miu10einu24.current.attN2B2F2EEF=3734&amp;sp=page15e&amp;ctx2.c2att1=17&amp;miu10ekcond13.attN2B2F2EEF=3734&amp;CountryISOCtxParam=UK&amp;ctx1g.c2att92=122&amp;ctx1.att21k=1&amp;CRC=2980211862" target="_blank">ROM ufficiale</a> per l&#8217;aggiornamento dalla versione 1.6 alla 2.1 di Android per i cellulari <a title="Acer Liquid" href="http://mobile.acer.com/en/liquid/" target="_blank">Acer Liquid</a>.</p>
<p>Ovviamente non ho perso neanche un secondo&#8230;.ho fatto tutti i backup del caso e mi sono preparato ai test. Ecco le mie impressioni.</p>
<p>Partiamo dal <strong>processo di aggiornamento</strong>: a parte un piccolo intoppo iniziale (per qualche strano motivo si è bloccato l&#8217;aggiornamento, ma è stato sufficiente seguire i passi indicati per risolvere il problema e riprendere l&#8217;upgrade) il processo di upgrade è praticamente tutto automatico. E&#8217; sufficiente seguire i passi indicati dall&#8217;assistente dell&#8217;installazione per concludere con un successo&#8230;.et voilà, bastano <strong>una ventina di minuti circa per avere il nuovo sistema operativo pronto all&#8217;uso!</strong></p>
<p><a title="Android 2.1 Eclair" href="http://developer.android.com/sdk/android-2.1.html" target="_blank">Android 2.1 Eclair</a> presenta una <strong>grafica decisamente più accattivante</strong> della precedente versione 1.6 : il numero di animazioni è aumentato, rendendo la navigazione più piacevole e divertente. Il prezzo da pagare è un<strong> leggero rallentamento</strong>: ad ogni modo è sufficiente installare un task manager per velocizzare notevolmente il sistema.</p>
<p>L&#8217;hardware risponde davvero molto bene al nuovo sistema operativo, dando vita ad un prodotto davvero interessante.</p>
<p>Tra le novità maggiori vi è la <strong>disponibilità di ben 4 spazi </strong>oltre al solito pannello di home, rispetto ai soli due della versione 1.6: nei due pannelli inseriti con la versione Eclair abbiamo a disposizione la versione mobile di <a title="Facebook" href="http://www.facebook.com/" target="_blank">Facebook</a> in uno e l&#8217;orologio nell&#8217;altro. Entrambi i pannelli sono chiaramente personalizzabili, proprio come lo erano quelli della versione precedente.</p>
<p>La visualizzazione delle apps disponibili è stata modificata graficamente: ora l&#8217;effetto di scorrimento è più dettagliato, dando l&#8217;impressione di avere a disposizione un &#8220;rullo&#8221; di applicazioni&#8230;carino!</p>
<p>Alcuni applicativi forniscono funzionalità in più se installati in Eclair: ad esempio uno dei più utilizzati, <a title="Android Quick Settings" href="http://www.androlib.com/android.application.com-bwx-bequick-zmDq.aspx" target="_blank">Quick Settings</a>, mette a disposizione il famoso effetto &#8220;torcia&#8221;, che nella versione <a title="Android 2.1 Eclair" href="http://developer.android.com/sdk/android-2.1.html" target="_blank">Android 2.1</a> diventa sensibile all&#8217;accelerometro, diminuendo l&#8217;intensità della luce se rivolgiamo lo schermo del cellulare verso l&#8217;alto, aumentandola se lo rivolgiamo verso il basso.</p>
<p>Un&#8217;altra caratteristica introdotta e sicuramente degna di essere sottolineata è il <strong>multitouch</strong>: possiamo &#8220;zoomare&#8221; le pagine del browser o le foto nelle nostre gallery con solo due dita; il touch dell&#8217;Acer si comportamente decisamente bene, e il multitouch implementato in <a title="Android 2.1 Eclair" href="http://developer.android.com/sdk/android-2.1.html" target="_blank">Android 2.1 Eclair</a> fa il resto.</p>
<p>In conclusione l&#8217;<strong>Acer Liquid risponde molto bene all&#8217;upgrade</strong>: l&#8217;unico lato negativo è, come anticipato, un rallentamento generale. Le applicazioni ci mettono qualche istante in più a caricarsi, e la navigazione ad aprire i pannelli in cui vogliamo andare. I task manager migliorano la situazione, ma la differenza rispetto alla versione precedente rimane: chiaramente per ovviare completamente al problema potremmo disabilitare le animazioni, ma, diciamo la verità, anche l&#8217;occhio vuole la sua parte!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2010/07/13/finalmente-e-tra-noi-ecco-laggiornamento-ufficiale-ad-android-2-1-per-lacer-liquid/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Backup – Trasferire i nostri SMS da Windows Mobile al PC</title>
		<link>http://www.marcolecce.com/blog/2010/07/10/backup-trasferire-i-nostri-sms-da-windows-mobile-al-pc/</link>
		<comments>http://www.marcolecce.com/blog/2010/07/10/backup-trasferire-i-nostri-sms-da-windows-mobile-al-pc/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 10:38:31 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Windows Mobile]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Sistemi Operativi]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=267</guid>
		<description><![CDATA[﻿﻿﻿﻿﻿Windows Mobile (WM) ha a disposizione diversi applicativi per effettuare il backup delle informazioni presenti sul cellulare, ma normalmente i risultati di tali backup sono file utilizzabili esclusivamente in ambito mobile. Qualche tempo fa avevo la necessità di effettuare il backup degli SMS dal mio cellulare WM al PC, visto che mi accingevo ad entrare [...]]]></description>
			<content:encoded><![CDATA[<p>﻿﻿﻿<a title="Wndows Mobile 6.1" href="http://it.wikipedia.org/wiki/Windows_Phone#Windows_Mobile_6.1" target="_blank">﻿﻿Windows Mobile</a> (WM) ha a disposizione diversi applicativi per effettuare il <a title="Backup SMS Windows Mobile" href="http://it.wikipedia.org/wiki/Backup" target="_blank">backup</a> delle informazioni presenti sul cellulare, ma normalmente i risultati di tali backup sono file utilizzabili esclusivamente in ambito mobile. Qualche tempo fa avevo la necessità di effettuare il backup degli <a title="SMS" href="http://it.wikipedia.org/wiki/SMS" target="_blank">SMS</a> dal mio cellulare WM al PC, visto che mi accingevo ad entrare nel fantastico mondo di <a title="Android" href="http://www.android.com/" target="_blank">Android</a>, con l&#8217;acquisto di un cellulare meravigliosamente open (ma questa è un&#8217;altra storia).</p>
<p>Non dovendo più utilizzare <a title="Windows Mobile 6.1" href="http://it.wikipedia.org/wiki/Windows_Phone#Windows_Mobile_6.1" target="_blank">WM</a>, non volevo che il risultato del <a title="Backup SMS Windows Mobile" href="http://it.wikipedia.org/wiki/Backup" target="_blank">backup</a> fosse un file proprietario: volevo avere la possibilità di rileggere i miei <a title="SMS" href="http://it.wikipedia.org/wiki/SMS" target="_blank">SMS</a> con qualsiasi PC. Dopo diverse ricerche ma soprattutto diverse prove effettuate direttamente sul cellulare (più di una volta ho rischiato anche troppo <img src='http://www.marcolecce.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) ho trovato l&#8217;applicativo che rispondeva perfettamente alle mie necessità: <a title="Click Here To Download The Latest Version of GodswMobile SMS  Transfer" onclick="javascript:  pageTracker._trackPageview('/download/sms-download-times'); " href="http://www.godswmobile.com/download/godswmobile-sms-transfer.zip"><strong>GodswMobile SMS Transfer</strong></a>.</p>
<p>Dopo aver installato questo applicativo sul proprio cellulare, in pochi passi possiamo convertire i nostri <a title="SMS" href="http://it.wikipedia.org/wiki/SMS" target="_blank">SMS</a> in diversi formati, tra cui il comodissimo .TXT: è sufficiente seguire la guida presente al seguente <a title="Backup SMS Windows Mobile" href="http://www.godswmobile.com/transfer-sms-from-windows-mobile-phone-to-pc.html" target="_blank">link</a>.</p>
<p>In breve, una volta installato ed eseguito questo applicativo, possiamo scegliere se eseguire il backup o il restore degli <a title="SMS" href="http://it.wikipedia.org/wiki/SMS" target="_blank">SMS</a>. Scegliendo &#8220;Backup&#8221;, giungiamo alla finestra di configurazione del nostro backup, appunto.</p>
<p>A questo punto abbiamo 4 campi da impostare:</p>
<ol>
<li>nome del file di backup</li>
<li>la cartella degli SMS che vogliamo &#8220;backuppare&#8221; (possiamo scegliere tra tutte quelle disponibili, come Bozze, Inviati, Ricevuti, ecc.)</li>
<li>il formato del file di backup (TXT o il formato STF dell&#8217;applicativo)</li>
<li>la cartella in cui salvare il backup (possiamo lasciare l&#8217;impostazione di default)</li>
</ol>
<p>Ora possiamo cliccare sul pulsante &#8220;Salva&#8221; per eseguire l&#8217;operazione che abbiamo configurato: il backup verrà salvato prima sul nostro cellulare nel formato che abbiamo impostato, e successivamente possiamo poi portarlo sui nostri pc con l&#8217;Active Sync o con la memory card. In 5 minuti abbiamo eseguito un perfetto backup di tutti i nostri <a title="SMS" href="http://it.wikipedia.org/wiki/SMS" target="_blank">SMS</a>, voilà!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2010/07/10/backup-trasferire-i-nostri-sms-da-windows-mobile-al-pc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>La migliore distribuzione Linux</title>
		<link>http://www.marcolecce.com/blog/2010/06/24/la-migliore-distribuzione-linux/</link>
		<comments>http://www.marcolecce.com/blog/2010/06/24/la-migliore-distribuzione-linux/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 09:33:13 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemi Operativi]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Opensource]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=343</guid>
		<description><![CDATA[Negli ultimi anni le distribuzioni Linux hanno raggiunto un livello di usabilità adeguato al &#8220;grande pubblico&#8221;, permettendo anche agli utenti non professionisti di poter utilizzare senza troppa fatica questo sistema operativo. Certo, ci sono ancora tante cose da migliorare, ma il numero di distruzioni disponibili oggi è tale per cui possiamo decidere la distro che [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Negli ultimi anni le distribuzioni <a title="Linux" href="http://www.linux.org/" target="_blank">Linux</a> hanno raggiunto un livello di usabilità adeguato al &#8220;grande pubblico&#8221;, permettendo anche agli utenti non professionisti di poter utilizzare senza troppa fatica questo sistema operativo. Certo, ci sono ancora tante cose da migliorare, ma il numero di distruzioni disponibili oggi è tale per cui possiamo decidere la distro che riteniamo più adeguata alle nostre necessità.</p>
<p style="text-align: justify;">Con questo articolo analizziamo quelle che sono le linee guida per trovare la propria distribuzione <a title="Linux" href="http://www.linux.org/" target="_blank">Linux</a>, quella cioè che possa rispondere alle nostre necessità e che più si addice alle nostre caratteristiche. Sì, perchè non esiste La distrubuzione <a title="Linux" href="http://www.linux.org/" target="_blank">Linux</a> perfetta&#8230;.esiste quella perfetta per noi! <img src='http://www.marcolecce.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: justify;"><strong>1) Conoscere l&#8217;hardware principale del proprio PC</strong></p>
<p style="text-align: justify;">Questo è il primo passo, e non a caso: conoscere le caratteristiche hardware del proprio PC è di fondamentale importanza per la scelta del sistema operativo <a title="Linux" href="http://www.linux.org/" target="_blank">Linux</a>. A seconda della nostra macchina, infatti, può essere valida una distrubuzione ma al contrario risultare scadente una versione molto diffusa. La prima cosa che dobbiamo fare è controllare la tipologia del nostro processore/processori: in particolare dobbiamo verificare se ci troviamo di fronte processori a 32-bit o 64-bit. Nel primo caso dobbiamo indirizzare la nostra attenzione alle distro con la sigla &#8220;i386&#8243; (e qui rientrano la maggior parte dei sistemi), nel secondo caso invece dobbiamo cercare le distro con la sigla &#8220;amd64&#8243; (alcuni processori supportano entrambe le versioni, ma visto il carattere introduttivo dell&#8217;articolo per ora saltiamo questo argomento).</p>
<p style="text-align: justify;">Dobbiamo anche controllare la scheda video, la scheda audio, e la scheda wireless. Anche se le distruzioni Linux attuali sono abbastanza evolute per risolvere la maggior parte dei problemi, è bene scegliere le distribuzioni consigliate per l&#8217;hardware che abbiamo a disposizione. Chi ha una scheda video nvidia, ad esempio, va sul sicuro con le distribuzioni Ubuntu, mentre potrebbe avere problemi con quelle di Fedora o Debian: ma molto dipende anche dalle sinergie degli altri componenti, quindi il primo consiglio è cercare la maggior parte di informazioni possibili sui forum o nelle community specializzate.</p>
<p style="text-align: justify;">Per indirizzarci nella scelta del sistema Linux più adeguato alle caratteristiche del nostro PC possiamo aiutarci con questo<a href="http://www.tldp.org/HOWTO/Hardware-HOWTO/" target="_blank"> How To</a>.</p>
<p style="text-align: justify;"><strong>2) Scegliere l&#8217;ambiente grafico desktop preferito<br />
</strong></p>
<p style="text-align: justify;">Il secondo elemento da scegliere è il sistema grafico: <a title="Linux" href="http://www.linux.org/" target="_blank">Linux</a> dispone di due sistemi grafici diversi, <a title="KDE desktop environment" href="www.kde.org" target="_blank">KDE</a> e <a title="GNOME desktop environment" href="www.gnome.org" target="_blank">GNOME</a>. Il primo è quello che ricorda più da vicino la struttura grafica dei sistemi Microsoft Windows: menu principale sul basso, una sorta di menu &#8220;start&#8221;, e sottomenu a pannelli orizzontali.</p>
<p style="text-align: justify;"><a title="GNOME desktop environment" href="www.gnome.org" target="_blank">GNOME</a> è invece un sistema grafico completamente diverso: il menu principale è situato nella parte alta dello schermo, con i sottomenu che si aprono prima in verticale e poi in orizzontale.</p>
<p style="text-align: justify;"><a title="KDE desktop environment" href="www.kde.org" target="_blank">KDE</a> e <a title="GNOME desktop environment" href="www.gnome.org" target="_blank">GNOME</a> possono anche coesistere, ma normalmente è meglio scegliere tra uno dei due, visto che ognuno supporta diversi programmi ad esempio per la gestione multimediale, per la gestione della posta, ecc.</p>
<p style="text-align: justify;"><strong>3) Seguiamo i consigli delle community</strong></p>
<p style="text-align: justify;">Alcune distribuzioni <a title="Linux" href="http://www.linux.org/" target="_blank">Linux</a> sono oggettivamente più complesse da utilizzare: se stiamo muovendo i primi passi in questo fantastico mondo, non è necessario partire utilizzando i sistemi più complessi. Fidiamoci dunque di quanto ci consigliano le innumerevoli community dedicate.</p>
<p style="text-align: justify;"><strong>4) </strong> <strong>Prima dell&#8217;installazione&#8230;..live version!</strong></p>
<p style="text-align: justify;">Anche se abbiamo eseguito tutti i passi con attenzione, è molto probabile che ci siamo persi qualche informazione, ma non ci dobbiamo preoccupare&#8230;la bellezza di <a title="Linux" href="http://www.linux.org/" target="_blank">Linux</a> è che praticamente pensa a tutto lui! Praticamente tutte le distribuzioni dispongono di una live version, ovvero di una versione di test che ci permette appunto di testare la distribuzione <a title="Linux" href="http://www.linux.org/" target="_blank">Linux</a> senza doverla installare. In questo modo possiamo vedere all&#8217;opera sul nostro PC il sistema che abbiamo scelto, verificare come risponde ed eventualmente trovare le problematiche e le criticità. Se tutto funziona a dovere, siamo sicuri di aver fatto la scelta giusta, e possiamo procedere all&#8217;installazione direttamente dalla live version.</p>
<p style="text-align: justify;"><strong>5) Le distribuzioni più importanti</strong></p>
<p style="text-align: justify;">Vediamo alcune delle distribuzioni <a title="Linux" href="http://www.linux.org/" target="_blank">Linux</a> più diffuse, famose ed utilizzate.</p>
<p style="text-align: justify;"><a href="http://www.ubuntulinux.org/desktop" target="_blank"><img class="size-thumbnail wp-image-352 alignleft" title="ubuntu-logo" src="http://www.marcolecce.com/blog/wp-content/ubuntu-logo-150x150.gif" alt="Ubuntu" width="150" height="150" />Ubuntu</a>, giunto alla versione 10.4, è uno dei sistemi <a title="Linux" href="http://www.linux.org/" target="_blank">Linux</a> più utilizzati, per diversi motivi. In primo luogo perchè si è conquistato la fama, non immeritata, di essere il sistema operativo più semplice da utilizzare.</p>
<p style="text-align: justify;">Questo perchè in effetti il sistema di installazione di <a href="http://www.ubuntulinux.org/desktop" target="_blank">Ubuntu</a> è tra i più semplici e, elemento ancora più importante, è un sistema che si  muove bene su un numero davvero notevole di configurazione diverse di PC.</p>
<p style="text-align: justify;">I driver nativi disponibili nelle distribuzioni <a href="http://www.ubuntulinux.org/desktop" target="_blank">Ubuntu</a> funzionano sulla maggior parte dell&#8217;hardware, permettendo agli utenti di utilizzare fin da subito il proprio PC al completo, senza ulteriore lavoro aggiuntivo. <a href="http://www.ubuntulinux.org/desktop" target="_blank">Ubuntu</a> inoltre non solo dispone di una live version, ma ha anche la possibilità di essere installato all&#8217;interno di una cartella Windwos, facilitando di molto la vita agli utenti principianti che vogliono avvicinarsi al mondo <a href="http://www.ubuntulinux.org/desktop" target="_blank">Ubuntu.</a></p>
<p style="text-align: justify;">
<p style="text-align: justify;"><a href="http://www.marcolecce.com/blog/wp-content/FedoraLogo-250x250-400x400.jpg"><img class="size-thumbnail wp-image-353 alignleft" title="FedoraLogo-250x250-400x400" src="http://www.marcolecce.com/blog/wp-content/FedoraLogo-250x250-400x400-150x150.jpg" alt="Fedora" width="150" height="150" /></a><a title="Fedora Linux" href="fedoraproject.org" target="_blank">Fedora</a> è un sistema operativo completamente open (ha una licenza molto davvero &#8220;free&#8221;), è anch&#8217;esso risulta tra i più utilizzati. Le ultime versioni hanno risolto diversi problemi, in particolare quelli dei driver delle schede video nvidia: fino a qualche tempo fa infatti per chi possedeva una scheda video nvidia ad ogni aggiornamento del kernel del sistema doveva affrontare una mezza odissea per risolvere le incompatibilità che ne derivavano.</p>
<p style="text-align: justify;">Ora con le ultime versioni sembra che questi problemi siano stai completamente risolti: <a title="Fedora Linux" href="fedoraproject.org" target="_blank">Fedora</a> è un sistema piacevole, abbastanza semplice da usare e sicuramente molto utilizzato per installazioni server. Normalmente <a title="Fedora Linux" href="fedoraproject.org" target="_blank">Fedora</a> si scarica con <a title="GNOME desktop environment" href="www.gnome.org" target="_blank">GNOME</a> come sistema grafico di default, ma ultimamente sono disponibili anche versioni con <a title="KDE desktop environment" href="www.kde.org" target="_blank">KDE</a>.</p>
<p style="text-align: justify;"><a href="http://www.marcolecce.com/blog/wp-content/debian-logo.png"><img class="size-thumbnail wp-image-354 alignleft" title="debian-logo" src="http://www.marcolecce.com/blog/wp-content/debian-logo-150x150.png" alt="Debian" width="150" height="150" /></a><a title="Debian Linux" href="www.debian.org" target="_blank">Debian</a> non è una distribuzione che normalmente si consiglia per i principianti, visto che alcuni procedimenti sono abbastanza complessi e richiedono una conoscenza approfondita di alcuni elementi del sistema operativo Linux.</p>
<p style="text-align: justify;">Rispetto alle versioni Ubuntu o <a title="Fedora Linux" href="fedoraproject.org" target="_blank">Fedora</a> , è sicuramente meno curato graficamente, però vanta un numero impressionante di pacchetti disponibili nel repository. Il sistema si presenta con il sistema grafico <a title="GNOME desktop environment" href="www.gnome.org" target="_blank">GNOME</a>, anche se da qualche anno esiste un progetto parallelo per un progetto che utilizza il sistema grafico <a title="KDE desktop environment" href="www.kde.org" target="_blank">KDE</a>.</p>
<p style="text-align: justify;"><a href="http://www.marcolecce.com/blog/wp-content/Mandriva_Logo.png"><img class="size-thumbnail wp-image-355 alignleft" title="Mandriva_Logo" src="http://www.marcolecce.com/blog/wp-content/Mandriva_Logo-140x150.png" alt="Mandriva" width="140" height="150" /></a><a title="Mandriva Linux" href="www.mandriva.org" target="_blank">Mandriva</a> è un sistema operativo che si presenta di default con <a title="KDE desktop environment" href="www.kde.org" target="_blank">KDE</a>, e graficamente è sicuramente tra i più curati. E&#8217; anche disponibile la versione <a title="GNOME desktop environment" href="www.gnome.org" target="_blank">GNOME</a>, anch&#8217;essa curata e molto performante. Negli ultimi anni è diventato uno dei sistemi <a title="Linux" href="http://www.linux.org/" target="_blank">Linux</a> più utilizzati, perchè riunisce un&#8217;interfaccia grafica ben curata con un sistema operativo altrettanto ben curato e facile da configurare ed utilizzare.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">Il numero di distribuzioni <a title="Linux" href="http://www.linux.org/" target="_blank">Linux</a> disponibili è troppo grande per poterli citare tutti, ma per chi volesse vedere un elenco più esauriente può seguire questo <a title="Distribuzioni Linux" href="http://en.wikipedia.org/wiki/List_of_Linux_distributions" target="_blank">link</a>.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 570px; width: 1px; height: 1px; overflow: hidden;"><span id="main" style="visibility: visible;"><span id="search" style="visibility: visible;"><span class="f"><cite>www.<strong>kde</strong>.org</cite></span></span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2010/06/24/la-migliore-distribuzione-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework e i context JSON, HTML e XML</title>
		<link>http://www.marcolecce.com/blog/2010/06/16/zend-framework-e-i-context-json-html-e-xml/</link>
		<comments>http://www.marcolecce.com/blog/2010/06/16/zend-framework-e-i-context-json-html-e-xml/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 07:40:50 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[Opensource]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=331</guid>
		<description><![CDATA[Qualche giorno fa ho iniziato il nostro percorso di conoscenza “avanzata” di Zend Framework raccontando in questo articolo come il framework gestisce le transazioni sui nostri database. Con questo articolo proseguiamo la conoscenza di Zend Framework trattando un altro interessante argomento di vitale importanza per lo sviluppo di un&#8217;applicazione web “moderna” che possa interagire con [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		A:link { color: #0000ff } -->Qualche giorno fa ho iniziato il nostro percorso di conoscenza “avanzata” di <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend Framework</a> raccontando in <a title="Transazioni Database Zend Framework" href="http://www.marcolecce.com/blog/2010/06/11/come-gestire-le-transazioni-in-zend-framework/" target="_blank">questo articolo</a> come il framework gestisce le transazioni sui nostri database.</p>
<p style="text-align: justify;">Con questo articolo proseguiamo la conoscenza di <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend  Framework</a> trattando un altro interessante argomento di vitale importanza per lo sviluppo di un&#8217;applicazione web “moderna” che possa interagire con il mondo esterno utilizzando le principali tecniche e i più diffusi protocolli di comunicazione. L&#8217;argomento che vediamo è la gestione dei contesti (context) in <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend  Framework</a>.</p>
<p style="text-align: justify;">Un&#8217;applicazione web moderna deve poter interagire con migliaia di altre applicazioni web, ricevere feed, inviare contenuto, gestire chiamate asincrone, ecc.</p>
<p style="text-align: justify;">Diventa dunque estremamente importante avere a disposizione uno strumento che permetta di gestire la maggior parte delle interazioni con un meccanismo semplice, intuitivo e rapido da utilizzare e capire&#8230;.ed è proprio quello di cui dispone <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend  Framework</a>.</p>
<p style="text-align: justify;"><a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend  Framework</a> implementa il pattern <a title="Model View Controller - design pattern" href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">MVC</a>, in cui il Controller è l&#8217;elemento che si occupa di “leggere” la richiesta ricevuta, di inoltrare tale richiesta a chi la sa gestire e di “restituire” il responso. Ed è proprio qui che i context giocano un ruolo fondamentale.</p>
<p style="text-align: justify;">Il meccanismo è molto semplice: <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend  Framework</a> permette di impostare di volta in volta il “tipo” di responso che può gestire una determinata “action” in un Controller, e dunque le modalità con cui ,attraverso questa action, l&#8217;applicativo web può comunicare con il mondo.</p>
<p style="text-align: justify;">Chiariamoci subito i dubbi con un esempio. Supponiamo che al nostro applicativo web guinga una richiesta di questo tipo:</p>
<p style="text-align: center;">http://www.miodominio.com/public/articolo/list</p>
<p style="text-align: justify;">in altre parole l&#8217;applicativo web riceve la richiesta di eseguire la action “list” del Controller “articolo”. Fin qui normale amministrazione: supponiamo che la action “list” non faccia altro che interrogare la nostra base di dati per raccogliere tutti gli articoli presenti nella web application e li restituisca. Quello che noi facciamo è proprio modificare la modalità con cui tale action restituisce i risultati.</p>
<p style="text-align: justify;">In alcuni casi infatti può essere molto comodo avere in risposta una lista di articoli sotto forma di oggetto o array, ma in altri casi può essere molto più comodo ad esempio dover gestire una stringa in formato <a title="JSON" href="http://www.json.org/" target="_blank">JSON</a>, in formato <a title="HTML" href="http://en.wikipedia.org/wiki/HTML" target="_blank">HTML</a> o <a title="XML" href="http://en.wikipedia.org/wiki/XML" target="_blank">XML</a>. Ad esempio quando dobbiamo gestire chiamate asincrone <a title="AJAX" href="http://en.wikipedia.org/wiki/Ajax_%28programming%29" target="_blank">AJAX</a> è molto comodo ricevere il responso in formato <a title="XML" href="http://en.wikipedia.org/wiki/XML" target="_blank">XML</a> o <a title="JSON" href="http://www.json.org/" target="_blank">JSON</a>, due “protocolli” di comunicazioni molto diffusi proprio in questo ambito.</p>
<p style="text-align: justify;">Vediamo allora come restituire una stringa <a title="JSON" href="http://www.json.org/" target="_blank">JSON</a> a seguito della richiesta ricevuta come da esempio.</p>
<p style="text-align: justify;">Nel Controller “articolo” avremo un metodo “listAction()” per gestire la action “list”, che può essere implementato come segue:</p>
<p><code><br />
public function listAction() {<br />
[…]<br />
try {<br />
if ( $this-&gt;getRequest()-&gt;isPost() ) {<br />
[...]<br />
// (1)<br />
$response = array("success" =&gt; true, "lista" =&gt; $result);<br />
// (2)<br />
$this-&gt;_helper-&gt;json($response);<br />
[...]<br />
}<br />
} catch ( Exception $e ) {<br />
// (3)<br />
$response = array( "success" =&gt; false, "error" =&gt;  $e-&gt;getMessage() );<br />
// (4)<br />
$this-&gt;_helper-&gt;json($response);<br />
}<br />
[...]<br />
}<br />
</code></p>
<p style="text-align: justify;">Supponendo di ricevere una richiesta tramite POST la action esegue tutte le computazioni del caso (ad esempio crea un oggetto model Articolo, interroga questo oggetto e salva i risultati nella variabile “$result” ) e, se non ci sono stati problemi, invia un responso di successo (&#8220;success&#8221; =&gt; true) con la lista degli articoli (&#8220;lista&#8221; =&gt; $result)) attraverso il protocollo <a title="JSON" href="http://www.json.org/" target="_blank">JSON</a> ( $this-&gt;_helper-&gt;json($response);   ) . Chiaramente in caso di problemi verrà eseguito il blocco “catch”, il responso sarà insuccesso (3) e tale responso sarà inviato alla vista (4).</p>
<p style="text-align: justify;">L&#8217;ultima cosa che rimane da fare è impostare il contesto, ovvero impostare il fatto che il responso della action “list” sarà in formato <a title="JSON" href="http://www.json.org/" target="_blank">JSON</a>. Per fare questo utilizziamo il metodo “init()” dei Controller, utilie proprio per impostare le loro configurazioni di inizializzazione:</p>
<p style="text-align: justify;">
<pre>public function init() {

$contextSwitch = $this-&gt;_helper-&gt;getHelper('contextSwitch')
-&gt;setContext(
'html', array(
'suffix'    =&gt; 'html',
'headers'   =&gt; array(
'Content-Type' =&gt; 'text/html; Charset=UTF-8',
),
)
-&gt;addActionContext('list', 'json')
-&gt;addActionContext('crea', 'xml')
-&gt;addActionContext('cancella', 'html')
)
-&gt;initContext();

}
</pre>
<p style="text-align: justify;">Come si vede dal codice, utilizziamo l&#8217;helper “contextSwitch” per la gestione dei contesti: nel nostro esempio abbiamo imposta sia un contesto <a title="JSON" href="http://www.json.org/" target="_blank">JSON</a> per la action “list” di cui sopra, sia un contesto <a title="XML" href="http://en.wikipedia.org/wiki/XML" target="_blank">XML</a> e <a title="HTML" href="http://en.wikipedia.org/wiki/HTML" target="_blank">HTML</a>. Quest&#8217;ultimo è quello che richiede due parole di più: di default infatti non è disponibile un contesto <a title="HTML" href="http://en.wikipedia.org/wiki/HTML" target="_blank">HTML</a>, ma questo non è assolutamente un problema. La flessibilità di <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend  Framework</a> è tale perc cui, in poche righe di codice, possiamo impostare e personalizzare i context a seconda delle nostre necessità&#8230;.niente male vero? <img src='http://www.marcolecce.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: justify;">Per chi volesse approfondire può leggere la <a title="Zend_Controller " href="http://zendframework.com/manual/en/zend.controller.actionhelpers.html" target="_blank">pagina</a> della documentazione di <a title="Zend Framework" href="http://framework.zend.com/" target="_blank">Zend  Framework</a> dedicata agli <a title="Action Helper Zend Framework" href="http://zendframework.com/manual/en/zend.controller.actionhelpers.html" target="_blank">Action Helper</a> del componente <a title="Zend_Controller" href="http://zendframework.com/manual/en/zend.controller.html" target="_blank">Zend_Controller</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2010/06/16/zend-framework-e-i-context-json-html-e-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Database – Come gestire le transazioni in Zend Framework</title>
		<link>http://www.marcolecce.com/blog/2010/06/11/come-gestire-le-transazioni-in-zend-framework/</link>
		<comments>http://www.marcolecce.com/blog/2010/06/11/come-gestire-le-transazioni-in-zend-framework/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 07:26:41 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[MySql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=280</guid>
		<description><![CDATA[Zend Framework è uno tra i principali framework (se non il principale) per lo sviluppo di applicazioni enterprise in PHP. E&#8217; uno strumento molto potente al servizio degli sviluppatori PHP: è estremamente flessibile, estendibile, facile da usare e decisamente manutenibile. Questo è il primo di una serie di articoli che sto preparando per presentare quelle [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a title="Zend Framework" href="http://zendframework.com" target="_blank">Zend Framework</a> è uno tra i principali framework (se non il principale) per lo sviluppo di applicazioni enterprise in PHP. E&#8217; uno strumento molto potente al servizio degli sviluppatori PHP: è estremamente flessibile, estendibile, facile da usare e decisamente manutenibile. Questo è il primo di una serie di articoli che sto preparando per presentare quelle che sono le caratteristiche più interessanti di questo prodotto.</p>
<p style="text-align: justify;">L&#8217;argomento che trattiamo in questo articolo è la gestione delle <a title="Transazione" href="http://it.wikipedia.org/wiki/Transazione_%28database%29" target="_blank">transazioni</a> con <a title="Zend Framework" href="http://zendframework.com/" target="_blank">Zend  Framework</a>. Una <a title="Transazione" href="http://it.wikipedia.org/wiki/Transazione_%28database%29" target="_blank">transazione</a> è una sequenza di operazioni che deve rispettare le proprietà <a title="ACID" href="http://it.wikipedia.org/wiki/ACID" target="_blank">ACID</a> (<strong> Atomicity</strong>, <strong>Consistency</strong>, <strong>Isolation</strong>, e <strong>Durability</strong> &#8211; <strong>A</strong>tomicità, <strong>C</strong>oerenza, <strong>I</strong>solamento e <strong>D</strong>urabilità). Una <a title="Transazione" href="http://it.wikipedia.org/wiki/Transazione_%28database%29" target="_blank">transazione</a> può terminare con successo o con un insuccesso: nel primo caso il risultato sarà permamente, mentre nel caso di insuccesso di deve tornare alla situazione precedente l&#8217;inizio della <a title="Transazione" href="http://it.wikipedia.org/wiki/Transazione_%28database%29" target="_blank">transazione</a>, come se nulla fosse successo.</p>
<p style="text-align: justify;">Una <a title="Transazione" href="http://it.wikipedia.org/wiki/Transazione_%28database%29" target="_blank">transazione</a> inizia con l&#8217;istruzione che dichiara appunto l&#8217; &#8220;inizio della <a title="Transazione" href="http://it.wikipedia.org/wiki/Transazione_%28database%29" target="_blank">transazione</a>&#8221; ( il punto (1) nel codice). Le operazioni che intendiamo eseguire tutte insieme sul database vanno inseriti <strong>dopo</strong> questa istruzione (1), all&#8217;interno di un blocco &#8220;try{} catch {}&#8221; che permette di verificare che tutto abbia funzionanto e pertanto che non siano state lanciate eccezioni.</p>
<p style="text-align: justify;">Nel nostro esempio vogliamo eseguire due operazioni di inserimento sul database (2), utilizzando i modelli &#8220;$model&#8221; e &#8220;$model2&#8243; (<a title="Zend Framework" href="http://zendframework.com/" target="_blank">Zend  Framework</a> si basa su una implementazione del pattern <a title="Design Pattern - Model View Controller" href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller">MVC</a>, Model-View-Controller). Vorremmo che queste operazioni di inserimento avvennissero una dopo l&#8217;altra, e che vengano annullate nel caso in cui una delle due &#8220;INSERT&#8221; non andasse a buon fine. I dati che vogliamo inserire li organizziamo in una struttura dati simile a quella nel punto (3) del codice (in sostanza un array associativo).</p>
<p style="text-align: justify;">Nei punti (4) e (5) dell&#8217;esempio effettuiamo gli inserimenti veri e propri. Se tutto funziona senza problemi, effettuiamo l&#8217;operazione di COMMIT (6) per confermare la correttezza della transazione e dunque la conseguente chiusura della stessa.</p>
<p style="text-align: justify;">Nel caso in cui invece  si siano verificati problemi, verrà lanciata una eccezione che sarà catturata dal blocco &#8220;catch&#8221;, nel quale, prima di riportare il messaggio dell&#8217;errore e lanciarlo alla classe padre (8), eseguiamo l&#8217;azione di ROLLBACK (7). Questa è l&#8217;istruzione che comunica alla <a href="http://it.wikipedia.org/wiki/Transazione_%28database%29" target="_blank">transazione</a> che ci sono stati problemi e che dunque deve essere annullata, senza apportare modifiche permanenti alla base di dati.</p>
<p style="text-align: justify;">
<pre>(1) $this-&gt;getAdapter()-&gt;beginTransaction();
try {

  // TODO ho aggiunto io l’autoincrement nelle tabelle articoli
  (2) $model   = new My_Model();
  $model2 = new My_Model2();
  (3) $data   = array("nome"=&gt;"Marco", "cognome"=&gt;"Lecce");
  $data2 = array("tipo"=&gt;"Utente", "ruolo"=&gt;"Editore");
  (4) $id = $model-&gt;insert($data);
  (5) $id2 = $model2-&gt;insert($data2);

  (6) $this-&gt;getAdapter()-&gt;commit();

} catch ( Zend_Exception $e ) {

  (7) $this-&gt;getAdapter()-&gt;rollBack();
  (8) throw new Exception( $e-&gt;getMessage() );

}
</pre>
<p style="text-align: justify;">Come abbiamo visto sono sufficienti queste poche righe di codice per gestire un importante concetto come quello delle <a title="Transazione" href="http://it.wikipedia.org/wiki/Transazione_%28database%29" target="_blank">transazioni</a>. Il codice rimane dunque pulito e molto leggibile: per ora è tutto, ci vediamo al prossimo articolo con <a title="Zend Framework" href="http://zendframework.com/" target="_blank">Zend  Framework</a>! <img src='http://www.marcolecce.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2010/06/11/come-gestire-le-transazioni-in-zend-framework/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Google è il Grande Fratello?</title>
		<link>http://www.marcolecce.com/blog/2010/06/10/google-e-il-grande-fratello/</link>
		<comments>http://www.marcolecce.com/blog/2010/06/10/google-e-il-grande-fratello/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 15:08:20 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Reti]]></category>
		<category><![CDATA[Varie]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=282</guid>
		<description><![CDATA[A cosa dobbiamo rinunciare per avere servizi sempre più tecnologicamente avanzati che ci semplificano (e in alcuni casi) allietano la quotidianità? Non è semplice rispondere a questa domanda, soprattutto perchè, per chi vive nel nostro tempo, la tecnologia è ormai necessario quanto l&#8217;ossigeno. Qualche giorno fa ho letto un articolo in cui si racconta l&#8217;ultimo [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">A cosa dobbiamo rinunciare per avere servizi sempre più tecnologicamente  avanzati che ci semplificano (e in alcuni casi) allietano la quotidianità? Non è semplice rispondere a questa domanda, soprattutto perchè, per chi vive nel nostro tempo, la tecnologia è ormai necessario quanto l&#8217;ossigeno.</p>
<p style="text-align: justify;">Qualche giorno fa ho letto un articolo in cui si racconta l&#8217;ultimo attacco portato a <a href="http://www.google.com/" target="_blank">Google</a> da alcune società di consumatori che vogliono vederci chiaro sulle attività e soprattutto sulla quantità, qualità  e tipologia di dati che vengono raccolti dal gigante di Mountain View. E se ci fermiamo un secondo a riflettere, in effetti è qualcosa che fa pensare&#8230;</p>
<p style="text-align: justify;">Non è la prima volta che <a href="http://www.google.com/" target="_blank">Google</a> si trova a fronteggiare le associazioni di consumatori che l&#8217;<strong>accusano apertamente di abusi della privacy</strong> e di non rispettare le basilari regole nello sviluppo del software. Del resto <a href="http://www.google.com/" target="_blank">Google</a> non ha mai nascosto di aver catturato &#8220;per errore&#8221; tutta una serie di dati che sicuramente rientrano nella categoria di &#8220;abuso&#8221;.</p>
<p style="text-align: justify;">In rete ci sono diversi articoli che trattano dell&#8217;argomento, ma il vero quesito che dobbiamo porci è se, per rispettare la nostra privacy, <strong>saremmo disposti a rinunciare a quelli che sono tra i principali servizi forniti da Google (e non solo chiaramente) e che ormai utilizziamo praticamente ogni giorno</strong>.</p>
<p style="text-align: justify;">Saremmo pronti  a dire &#8220;addio&#8221; a <a href="http://maps.google.com/maps?hl=en&amp;tab=wl" target="_blank">Google Maps</a> per  esempio?</p>
<p style="text-align: justify;">E se pensiamo al mondo mobile la riflessione diventa ancora più complessa: il cellulare è uno strumento che possiamo considerare un pò come  un secondo portafoglio, uno strumento in cui sono contenute informazioni sensibili sui nostri contatti, i nostri messaggi, le nostre fotografie&#8230;insomma di tutto un pò. Con la connessione internet mobile 24 ore su 24 in sostanza questa raccolta indiscriminata di dati potrebbe essere inarrestabile.</p>
<p style="text-align: justify;">Ma possiamo rinunciare ad utilizzare questi strumenti con queste caratteristiche e funzionalità che ci permettono di comunicare con il mondo ovunque ci troviamo?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2010/06/10/google-e-il-grande-fratello/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP – Attivare il Code Assistant in Eclipse</title>
		<link>http://www.marcolecce.com/blog/2010/06/09/php-attivare-il-code-assistant-in-eclipse/</link>
		<comments>http://www.marcolecce.com/blog/2010/06/09/php-attivare-il-code-assistant-in-eclipse/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 17:53:32 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Sviluppo Web]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=256</guid>
		<description><![CDATA[Il Code Assistant non solo velocizza la scrittura del codice, ma permette anche di imparare molto più rapidamente il linguaggio o i framework che stiamo utilizzando nel nostro applicativo. Ecco come fare quando smette di funzionare!]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Quando scriviamo il nostro codice è davvero comodo avere un assistente che ti suggerisce ad esempio i metodi che possiamo richiamare su un oggetto o le classi che abbiamo a disposizione per raggiungere il nostro obiettivo. Sono strumenti che quando inizi ad usare non puoi più farne a meno.</p>
<p style="text-align: justify;">Il &#8220;Code Assistant&#8221; di <a title="Eclipse " href="http://www.eclipse.org/" target="_blank">Eclipse</a> è uno strumento molto potente, che non solo suggerisce le librerie di default del linguaggio di programmazione con il quale stiamo lavorando (<a href="http://it.wikipedia.org/wiki/Java_%28linguaggio%29" target="_blank">Java</a>, <a title="PHP" href="http://it.wikipedia.org/wiki/PHP" target="_blank">PHP</a>, ecc.) ma permette anche di personalizzare le librerie a disposizione, aggiungendone ad esempio di terze parti.</p>
<p style="text-align: justify;">Questo non solo velocizza la scrittura del codice, ma permette anche di imparare molto più rapidamente il linguaggio o i framework che stiamo utilizzando nel nostro applicativo. Quando però lavoriamo in team su un progetto, è molto probabile che si utilizzino i plugin come quello di <a href="http://subversion.tigris.org/" target="_blank">subversion</a> per gestire il lavoro. Il problema è che quando lavoriamo in questo ambiente, di default, il progetto perde l&#8217;indicazione sulla sua stessa natura&#8230;.in pratica <a title="Eclipse " href="http://www.eclipse.org/" target="_blank">Eclipse</a> non sa più se stiamo lavorando in <a title="PHP Sito" href="http://php.net/index.php" target="_blank">PHP</a> o <a href="http://www.java.com" target="_blank">Java</a>, sa solo che stiamo lavorando con subversion, perdendo in questo modo il prezioso aiuto che ci fornisce il Code Assistant. Ma per risolvere questo problema ci vogliono davvero 5 minuti&#8230;</p>
<p style="text-align: justify;">Dobbiamo concentrare la nostra attenzione sui file &#8220;.buildpath&#8221; e &#8220;. project&#8221; del nostro progetto <a title="Eclipse " href="http://www.eclipse.org/" target="_blank">Eclipse</a>: se li editiamo noteremo che non vi sono indicazioni circa la natura del progetto (cioè se siamo in ambiente <a href="http://www.java.com/" target="_blank">Java</a>, <a title="PHP Sito" href="http://php.net/index.php" target="_blank">PHP</a> o <a href="it.wikipedia.org/wiki/JavaScript" target="_blank">Javascript</a>). Tutto ciò che dobbiamo fare è inserire nei rispettivi file le seguenti direttive in neretto:</p>
<p style="text-align: justify;">.PROJECT</p>
<p style="text-align: justify;">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<br />
&lt;projectDescription&gt;<br />
&lt;name&gt;prova&lt;/name&gt;<br />
&lt;comment&gt;&lt;/comment&gt;<br />
&lt;projects&gt;<br />
&lt;/projects&gt;<br />
&lt;buildSpec&gt;<br />
&lt;buildCommand&gt;<br />
&lt;name&gt;org.eclipse.wst.validation.validationbuilder&lt;/name&gt;<br />
&lt;arguments&gt;<br />
&lt;/arguments&gt;<br />
&lt;/buildCommand&gt;<br />
&lt;buildCommand&gt;<br />
&lt;name&gt;org.eclipse.dltk.core.scriptbuilder&lt;/name&gt;<br />
&lt;arguments&gt;<br />
&lt;/arguments&gt;<br />
&lt;/buildCommand&gt;<br />
&lt;/buildSpec&gt;<br />
&lt;natures&gt;<br />
<strong>&lt;nature&gt;org.eclipse.php.core.PHPNature&lt;/nature&gt;</strong><br />
&lt;/natures&gt;<br />
&lt;/projectDescription&gt;</p>
<p style="text-align: justify;">.BUILDPATH</p>
<p style="text-align: justify;">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<br />
&lt;buildpath&gt;<br />
<strong>&lt;buildpathentry kind=&#8221;con&#8221; path=&#8221;org.eclipse.php.core.LANGUAGE&#8221;/&gt;</strong><br />
&lt;buildpathentry external=&#8221;true&#8221; kind=&#8221;lib&#8221; path=&#8221;/myLibrary&#8221;/&gt;<br />
&lt;buildpathentry kind=&#8221;src&#8221; path=&#8221;"/&gt;<br />
&lt;/buildpath&gt;</p>
<p style="text-align: justify;">A questo punto, una volta riavviata l&#8217;<a href="http://en.wikipedia.org/wiki/Integrated_development_environment" target="_blank">IDE</a>, il nostro progetto sarà etichettato in base alla sua natura, e dunque si riattiveranno tutte le funzionalità e tutti gli strumenti a disposizione per lo sviluppo con l&#8217;ambiente che abbiamo impostato (e il Code Assistant non fa eccezione! <img src='http://www.marcolecce.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
<div id="wrtranslator-translate" style="left: 217px; top: 110px; text-align: justify;"><a href="http://www.wordreference.com/enit/Java#Otbl" target="_blank">Translate</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2010/06/09/php-attivare-il-code-assistant-in-eclipse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 1.712 seconds --><!-- Cached page served by WP-Cache -->
