<?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>Rainbowbreeze &#187; Technology</title>
	<atom:link href="http://www.rainbowbreeze.it/category/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rainbowbreeze.it</link>
	<description>Alfredo Morresi personal website</description>
	<lastBuildDate>Sat, 28 Jan 2012 10:56:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Il significato dei colori</title>
		<link>http://www.rainbowbreeze.it/il-significato-dei-colori/</link>
		<comments>http://www.rainbowbreeze.it/il-significato-dei-colori/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 15:45:06 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1359</guid>
		<description><![CDATA[Un&#8217;interessante estratto di una presentazione &#8220;Color for Dummies&#8221; che il miglior contesto di utilizzo per ogni colore: Da considerare quando ci sara&#8217; da fare la prossima presentazione. &#160;]]></description>
			<content:encoded><![CDATA[<p>Un&#8217;interessante estratto di una presentazione &#8220;<a title="Color for Dummies" href="http://www.slideshare.net/adechriz/color-for-dummies" target="_blank">Color for Dummies</a>&#8221; che il miglior contesto di utilizzo per ogni colore:</p>
<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2012/01/color_meaning11.png"><img class="aligncenter size-full wp-image-1362" title="color_meaning1" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2012/01/color_meaning11.png" alt="" width="490" height="813" /></a></p>
<p>Da considerare quando ci sara&#8217; da fare la prossima presentazione.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/il-significato-dei-colori/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tethering dallo smartphone, ecco come gli operatori telefonici possono scoprirlo</title>
		<link>http://www.rainbowbreeze.it/tethering-dallo-smartphone-ecco-come-gli-operatori-telefonici-possono-scoprirlo/</link>
		<comments>http://www.rainbowbreeze.it/tethering-dallo-smartphone-ecco-come-gli-operatori-telefonici-possono-scoprirlo/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 08:07:16 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tethering]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1355</guid>
		<description><![CDATA[Molte delle promozioni per la navigazione web dal proporio smartphone precisano che l&#8217;accesso ad Internet e&#8217; consentito *solo dal device*, e non attaccando il device ad un computer attraverso il tethering (wifi o usb). Mi sono sempre chiesto come facessero i carrier a capire quando stavo navigando nell&#8217;uno o nell&#8217;altro modo, e grazie a questo [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2012/01/android_tethering2.jpg"><img class="alignleft size-full wp-image-1357" style="margin-top: 2px; margin-bottom: 2px; margin-left: 4px; margin-right: 4px;" title="android_tethering2" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2012/01/android_tethering2.jpg" alt="" width="240" height="155" /></a>Molte delle promozioni per la navigazione web dal proporio smartphone precisano che l&#8217;accesso ad Internet e&#8217; consentito <strong>*solo dal device*</strong>, e non attaccando il device ad un computer attraverso il tethering (wifi o usb). Mi sono sempre chiesto come facessero i carrier a capire quando stavo navigando nell&#8217;uno o nell&#8217;altro modo, e grazie a <a title="New ClockworkMod app offers free tethering to Android phones, sans root" href="http://www.theverge.com/2012/1/2/2677391/clockworkmod-tether-non-rooted-android-free-tethering#87381046" target="_blank">questo commento</a> a <a title="New ClockworkMod app offers free tethering to Android phones, sans root" href="http://www.theverge.com/2012/1/2/2677391/clockworkmod-tether-non-rooted-android-free-tethering" target="_blank">questo post</a> ho avuto la risposta, almeno per Android:</p>
<p><em>The built-in tether support acts as a WiFi hotspot and router. This does a USB tether, and acts as a network proxy. Very different.</em></p>
<p><em>The biggest difference, from the carrier’s end, is that routing is pretty easy to detect; each packet that goes through the router, the time-to-live (TTL) field in the IPv4 header is decremented. In addition, there is NAT going on, and there are heuristics to detect that. There are ways around this using Linux’s iptables that can masquerade the routing/NAT, but I’m unaware of any mainstream implementations of this on Android, and it would require root. This app doesn’t; I’m like 90% sure it’s all done over ADB (Android Debug Bridge), which every Android device supports.</em></p>
<p><em>With the USB tether acting as a network proxy, there is simply no routing/NAT going on, so there is no way for the carrier to detect what’s going on. It just appears to be data coming from the phone.</em></p>
<p>Ottimo, penso anche che il meccanismo sia estendibile anche ad altre piattaforme, non si finisce mai di imparare dai commenti! Prossima mossa, vedere se veramente il tethering USB non viene scoperto dai carrier.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/tethering-dallo-smartphone-ecco-come-gli-operatori-telefonici-possono-scoprirlo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Aggiornamento manuale del Nexus S ad Ice Cream Sandwich</title>
		<link>http://www.rainbowbreeze.it/aggiornamento-manuale-del-nexus-s-ad-ice-cream-sandwich/</link>
		<comments>http://www.rainbowbreeze.it/aggiornamento-manuale-del-nexus-s-ad-ice-cream-sandwich/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 23:55:17 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ICS]]></category>
		<category><![CDATA[Nexus S]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1350</guid>
		<description><![CDATA[Aggiornare il proprio Nexus S al nuovo Android Ice Cream Sandwich e&#8217; ormai solo una questione di pazienza, dato che l&#8217;update via OTA e&#8217; in arrivo in questi giorni. Il problema e&#8217; che, se come me avete installato una custom ROM (MIUI, Cyanogenmod o altre), l&#8217;aggiornamento via OTA non arrivera&#8217; mai. Situazione che si puo&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/12/android-ics.jpg"><img class="alignleft size-full wp-image-1351" style="margin: 2px 4px;" title="android-ics" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/12/android-ics.jpg" alt="" width="230" height="173" /></a>Aggiornare il proprio Nexus S al nuovo Android Ice Cream Sandwich e&#8217; ormai solo una questione di pazienza, dato che l&#8217;update via OTA e&#8217; in arrivo in questi giorni. Il problema e&#8217; che, se come me avete installato una custom ROM (MIUI, Cyanogenmod o altre), l&#8217;aggiornamento via OTA non arrivera&#8217; mai.</p>
<p>Situazione che si puo&#8217; risolvere facilmente, dato che e&#8217; sempre possibile aggiornare manualmente alla ROM ICS ufficiale, ora che sono disponibili.</p>
<p>La guida di partenza che ho usato per fare l&#8217;aggiornamento <a title="[Guida] Nexus S: aggiornamento manuale Android Ice Cream Sandwich " href="http://www.nexus-lab.com/2011/12/17/guida-nexus-s-aggiornamento-manuale-android-ice-cream-sandwich-4-0-3-iml74k/" target="_blank">e&#8217; stato questa</a>. Ho scaricato l&#8217;ultima ROM 4.0.3 dal link fornito (il file ZD3PyN0t.zip), l&#8217;ho copiato nel dispositivo sotto la cartella principale della SD card rinominandolo in update.zip, poi ho spento il device, l&#8217;ho riavviato premendo volume up + power in modo da far partire il bootloader, ho selezionato il recovery (nel mio caso il Clockworld Manager, ma funziona anche con quello standard), ho fatto un bel wipe di dati e della cache e ho installato il file update.zip. Un nuovo reboot e voila&#8217;, ICS anche sul mio smartphone!</p>
<p title="[Guida] Nexus S: permessi di root Android Ice Cream Sandwich 4.0.3">Altra cosa che ho ripristinato e&#8217; stato l&#8217;accesso come root al dispositivo. La procedura e&#8217; ben <a title="[Guida] Nexus S: permessi di root Android Ice Cream Sandwich 4.0.3" href="http://www.nexus-lab.com/2011/12/18/guida-nexus-s-permessi-root-android-ice-cream-sandwich-4-0-3/" target="_blank">descritta qui</a>, e che contiene l&#8217;hack per ottenerli. Il problema e&#8217; che non mi funzionava piu&#8217; il ClockWorld Manager: <a title="ROM Manager  ROMs and Recovery Images" href="http://www.clockworkmod.com/rommanager" target="_blank">nel sito con tutte le versioni</a> e&#8217; ancora disponibile la 5.0.2.0, che pero&#8217; a me non partiva dal bootloader. Ho dovuto prendere l&#8217;ultimissima <a title="[RECOVERY][MOD][9.25.11] Clockwork 5.0.2.3 New wipe &amp; confirm menus. For ALL variants" href="http://forum.xda-developers.com/showthread.php?t=988686&amp;highlight=recovery" target="_blank">versione &#8220;non ufficiale&#8221; 5.0.2.3</a> e, installata, il recovery ha ripreso ad andare. <a title="[GUIDE] CWRecovery flashable working Root SperUser for stock ICS 4.0.3" href="http://forum.xda-developers.com/showthread.php?t=1396959" target="_blank">Anche in questo post</a> il problema sembra essere conosciuto.</p>
<p>Nello sfortunato caso di brick del Nexus S (non parte piu&#8217; niente), si puo&#8217; sempre tentare un ripristino a basso livello con Odin, come spiegato <a title="[Guida] Nexus S: ripristino firmware originale tramite Odin" href="http://www.nexus-lab.com/2011/05/29/guida-nexus-s-ripristino-firmware-originale-tramite-odin/" target="_blank">da questa</a> e <a title="GUIDA Ripristino Nexus S attraverso ODIN " href="http://www.androidworld.it/forum/nexus-s-i9020-i9023-116/guida-ripristino-nexus-s-attraverso-odin-15096/" target="_blank">da questa guida</a>, ma funzionera&#8217; solo con Windows</p>
<p>Ovviamente anche le ROM custom non sono rimaste a guardare e se Cyanogenmod <a title="CM9 Progress Update" href="http://www.cyanogenmod.com/blog/cm9-progress-update" target="_blank">ha rilasciato una versione di Android Ice Cream Sandwich</a> qualche settimana prima di quella ufficiale, dal canto suo la MIUI ha portato <a title="Rilasciata MIUI 1.12.16 su base Ice Cream Sandwich" href="http://www.nexus-lab.com/2011/12/16/rilasciata-miui-1-12-16-su-base-ice-cream-sandwich/" target="_blank">ICS sulla sua versione per Nexus S</a>. Il supporto ad altri dispositivi e&#8217; atteso a breve. Per ora, da quello che ho visto, non ci sono sostanziali differenze rispetto alle ROM stock, quindi ho installato quest&#8217;ultima e poi vedro&#8217; se e dove orientarmi.</p>
<p>Infine, per i piu&#8217; curiosi, la lista completa delle <a title="ROM e degli update per tutti i modelli di Nexus S" href="http://forum.xda-developers.com/showthread.php?t=1063664" target="_blank">ROM e degli update per tutti i modelli di Nexus S</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/aggiornamento-manuale-del-nexus-s-ad-ice-cream-sandwich/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kindle Fire, Ubuntu Linux, ADB e Cyanogenmod</title>
		<link>http://www.rainbowbreeze.it/kindle-fire-ubuntu-linux-e-cyanogenmod/</link>
		<comments>http://www.rainbowbreeze.it/kindle-fire-ubuntu-linux-e-cyanogenmod/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 16:02:39 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Kindle Fire]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1345</guid>
		<description><![CDATA[Appena avuto tra le mani un Kidle Fire, da sviluppatore Android, ho cercato di capire come installare applicazioni NON provenienti dall&#8217;Amazon AppStore: ecco i passi necessari. Di default il Fire non viene neanche rilevato da ADB, quindi occorre forzare il bridge tramite un semplice file di configurazione da modificare sul proprio pc, come spiegato qui. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/12/kindlefiresm.png"><img class="alignleft size-thumbnail wp-image-1346" title="kindlefiresm" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/12/kindlefiresm-121x200.png" alt="" width="121" height="200" /></a>Appena avuto tra le mani un Kidle Fire, da sviluppatore Android, ho cercato di capire come installare applicazioni NON provenienti dall&#8217;Amazon AppStore: ecco i passi necessari.</p>
<p>Di default il Fire non viene neanche rilevato da ADB, quindi occorre forzare il bridge tramite un semplice file di configurazione da modificare sul proprio pc, <a title="Developing on the Kindle Fire" href="http://blog.actlocalmedia.com/2011/11/developing-on-kindle-fire.html" target="_blank">come spiegato qui</a>.</p>
<ul>
<li>Aprire il file ~/.android/adb_usb.ini e aggiungere la stringa &#8220;0&#215;1949&#8243; alla fine del file (senza le virgolette)</li>
<li>Riavviare l&#8217;adb server, magari tramite il comando <em>adb kill-server</em></li>
<li>Lanciando il comando <em>adb devices</em> ora dovrebbe essere possibile vedere un nuovo device, anche se con il <a title="adb devices, ???????? no permissions e come risolverlo" href="http://www.rainbowbreeze.it/adb-devices-no-permissions-e-come-risolverlo/">classico problema dei ??????????</a></li>
</ul>
<p>La soluzione e&#8217; facile, basta aggiungere queste righe al file <em>/etc/udev/rules.d/51-android.rules</em>:</p>
<p style="padding-left: 30px;"><em>#Amazon Kindle Fire</em><br />
<em>SUBSYSTEM==&#8221;usb&#8221;, SYSFS{idVendor}==&#8221;1949&#8243;, MODE=&#8221;0666&#8243;</em></p>
<p>Dove ox1949 e&#8217;, appunto, il manufacturer id. Bene, l&#8217;USB Debugging e&#8217; ora abilitato e funzionante.</p>
<p>Per installare applicazioni non provenienti dall&#8217;Amazon AppStore, basta andare nei <em>Settings</em> (la rotellina vicino all&#8217;orologio), poi <em>More</em>, <em>Device</em>, e abilitare <em>Allow Installation of Application From Unknown sources</em>. Ora un semplice <em>adb install nome_file_app.apk</em> funzionera&#8217; senza fare una piega.</p>
<p>Passiamo a qualche personalizzazione piu&#8217; dura, tipo installare la CyanogenMod 7 sul Fire. Gli smanettoni di xda-developers <a title="[ROM] CM7 for the Kindle Fire" href="http://forum.xda-developers.com/showthread.php?t=1368012" target="_blank">stanno gia&#8217; elaborando una ROM ad hoc per il dispositivo</a>. Buoni tentativi ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/kindle-fire-ubuntu-linux-e-cyanogenmod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Video dell&#8217;intervento &#8220;Sopravvivere a due anni di sviluppo con Android&#8221;</title>
		<link>http://www.rainbowbreeze.it/video-dellintervento-sopravvivere-a-due-anni-di-sviluppo-con-android/</link>
		<comments>http://www.rainbowbreeze.it/video-dellintervento-sopravvivere-a-due-anni-di-sviluppo-con-android/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 23:03:41 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Talk]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1343</guid>
		<description><![CDATA[Ecco i video dell&#8217;intervento che ho fatto il 22 Novembre al GTUG Milano, dove ho condiviso con i partecipanti alcuni consigli utili imparati dopo piu&#8217; di due anni di sviluppo per piattaforma Android. http://www.youtube.com/watch?v=zHmW4pX8114 http://www.youtube.com/watch?v=5dlCrE-PrxQ http://www.youtube.com/watch?v=4vKe2xNSUAs Qui di seguito, invece, le slides Android Survival Guide &#8211; Two years of software development View more presentations from [...]]]></description>
			<content:encoded><![CDATA[<p>Ecco i video dell&#8217;intervento che ho fatto il 22 Novembre al <a title="GTUG Milano" href="http://groups.google.com/group/gtug-milano" target="_blank">GTUG Milano</a>, dove ho condiviso con i partecipanti alcuni consigli utili imparati dopo piu&#8217; di due anni di sviluppo per piattaforma Android.</p>
<p><a href="http://www.youtube.com/watch?v=zHmW4pX8114">http://www.youtube.com/watch?v=zHmW4pX8114</a></p>
<p><span id="more-1343"></span>
<p><a href="http://www.youtube.com/watch?v=5dlCrE-PrxQ">http://www.youtube.com/watch?v=5dlCrE-PrxQ</a></p>
<p><a href="http://www.youtube.com/watch?v=4vKe2xNSUAs">http://www.youtube.com/watch?v=4vKe2xNSUAs</a></p>
<p>Qui di seguito, invece, le slides</p>
<div style="width:510px" id="__ss_9488886"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/rainbowbreeze/android-survival-guide-two-years-of-software-development" title="Android Survival Guide - Two years of software development" target="_blank">Android Survival Guide &#8211; Two years of software development</a></strong> <object id="__sse9488886" width="510" height="426"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=20110930-androidota-110930095545-phpapp01&#038;stripped_title=android-survival-guide-two-years-of-software-development&#038;userName=rainbowbreeze" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><param name="wmode" value="transparent"/><embed name="__sse9488886" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=20110930-androidota-110930095545-phpapp01&#038;stripped_title=android-survival-guide-two-years-of-software-development&#038;userName=rainbowbreeze" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="510" height="426"></embed></object>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/rainbowbreeze" target="_blank">Alfredo Morresi</a> </div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/video-dellintervento-sopravvivere-a-due-anni-di-sviluppo-con-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un gruppo per organizzare eventi ICT in Italia</title>
		<link>http://www.rainbowbreeze.it/un-gruppo-per-organizzare-eventi-ict-in-italia/</link>
		<comments>http://www.rainbowbreeze.it/un-gruppo-per-organizzare-eventi-ict-in-italia/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 22:50:00 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Community]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1336</guid>
		<description><![CDATA[Dopo poco che partecipi ed organizzi eventi ICT in Italia, dalla conference di piu&#8217; giorni all&#8217;incontro informale, ti accorgi che ci sono periodi caldi dell&#8217;anno in cui ogni weekend, e non solo, e&#8217; gia&#8217; occupato da qualcosa e diventa quasi impossibile infilarci dentro un&#8217;altra iniziativa senza pistare i piedi a qualcuno. Inoltre, in genere, passa sempre [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/11/community.jpg"><img class="alignleft size-full wp-image-1337" style="margin-top: 2px; margin-bottom: 2px; margin-left: 4px; margin-right: 4px;" title="Organizzare eventi ICT" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/11/community.jpg" alt="" width="250" height="166" /></a>Dopo poco che partecipi ed <strong>organizzi eventi ICT in Italia</strong>, dalla conference di piu&#8217; giorni all&#8217;incontro informale, ti accorgi che ci sono periodi caldi dell&#8217;anno in cui ogni weekend, e non solo, e&#8217; gia&#8217; occupato da qualcosa e diventa quasi impossibile infilarci dentro un&#8217;altra iniziativa senza pistare i piedi a qualcuno.</p>
<p>Inoltre, in genere, passa sempre del tempo da quando gli organizzatori decidono la data di un evento a quando la rendono pubblica. Per questo <strong>ho creato un gruppo</strong> dove noi organizzatori possiamo liberamente dire: &#8220;vi dico in anteprima che tal giorno avevo intenzione di organizzare tal cosa&#8221;, <strong>in modo da evitare il piu&#8217; possibile soprapposizioni di date</strong> e non impazzire per controllare 100 siti per capire se in quella data c&#8217;e&#8217; gia&#8217; qualcosa in programma.</p>
<p>Oltre a questo primo obiettivo, il gruppo potrebbe tornare comodo <strong>per condividere risorse logistiche e dritte varie</strong>, sempre utili a noi organizzatori: il contatto per accedere a tal posto, il nome di quello speaker, un&#8217;anteprima su dei temi che si andranno a trattare in modo da non fare la stessa cosa e magari favorire lo scambio di sinergie, ecc.</p>
<p>Insomma, <strong>una mailing list dedicata a noi addetti ai lavori</strong>, che ci conosciamo quasi tutti almeno di nome, ma spesso dialoghiamo e scambiamo opinioni solo quando ci incontriamo alle cose che facciamo ;)</p>
<p><strong>Poche regole</strong> quindi, almeno all&#8217;inizio:<br />
-postare le date degli eventi che si andranno ad organizzare, possibilmente in anteprima (tanto il gruppo non e&#8217; pubblico)<br />
-prima richiesta di aiuto o collaborazione per organizzare qualcosa (richiesta contatti, luoghi, argomenti)<br />
-non usare il gruppo come piazza pubblica di discussione, ma preferire il contatto pvt con gli altri organizzatori<br />
-se conosci un altro organizzatore e vuoi invitarlo, fai pure!</p>
<p>Bene, proviamo e vediamo cosa esce fuori. <a title="Organizzatori eventi ICT Italia" href="http://groups.google.com/group/eventiict" target="_blank">Questo e&#8217; l&#8217;indirizzo del gruppo</a>. Al momento dell&#8217;iscrizione, dite anche brevemente chi siete e come mai volete essere iscritti. L&#8217;appartenenza non si nega a nessuno, cosiccome l&#8217;educazione di chi saluta ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/un-gruppo-per-organizzare-eventi-ict-in-italia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Verificare che i permessi siano stati aggiunti nell&#8217;AndroidManifest.xml</title>
		<link>http://www.rainbowbreeze.it/verificare-che-i-permessi-siano-stati-aggiunti-nellandroidmanifest-xml/</link>
		<comments>http://www.rainbowbreeze.it/verificare-che-i-permessi-siano-stati-aggiunti-nellandroidmanifest-xml/#comments</comments>
		<pubDate>Sun, 06 Nov 2011 13:15:55 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1334</guid>
		<description><![CDATA[Se si sviluppa una libreria, si potrebbe voler essere certi che tutti i permessi necessari al suo funzionamento siano stati aggiunti all&#8217;AndroidManifest.xml, invece che sperare che chi la utilizzera&#8217; si ricordi di farlo. Esiste un modo per avere questa certezza, grazie a questo codice: ?View Code JAVAprivate void verifyPermission&#40;Context c, String permission&#41; &#123; int p [...]]]></description>
			<content:encoded><![CDATA[<p>Se si sviluppa una libreria, si potrebbe voler essere certi che tutti i permessi necessari al suo funzionamento siano stati aggiunti all&#8217;<em>AndroidManifest.xml</em>, invece che sperare che chi la utilizzera&#8217; si ricordi di farlo.</p>
<p>Esiste un modo per avere questa certezza, grazie a questo codice:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1334code3'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p13343"><td class="code" id="p1334code3"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> verifyPermission<span style="color: #009900;">&#40;</span><span style="color: #003399;">Context</span> c, <span style="color: #003399;">String</span> permission<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> p <span style="color: #339933;">=</span> c.<span style="color: #006633;">getPackageManager</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">checkPermission</span><span style="color: #009900;">&#40;</span>permission, c.<span style="color: #006633;">getPackageName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>p <span style="color: #339933;">==</span> PackageManager.<span style="color: #006633;">PERMISSION_DENIED</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">RuntimeException</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ImageLoader : please add the permission &quot;</span> <span style="color: #339933;">+</span> permission <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; to the manifest&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Magari da richiarame nel momento in cui si crea il servizio/i messi a disposizione:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1334code4'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p13344"><td class="code" id="p1334code4"><pre class="java" style="font-family:monospace;">verifyPermission<span style="color: #009900;">&#40;</span>c, <span style="color: #003399;">Manifest</span>.<span style="color: #006633;">permission</span>.<span style="color: #006633;">WRITE_EXTERNAL_STORAGE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
verifyPermission<span style="color: #009900;">&#40;</span>c, <span style="color: #003399;">Manifest</span>.<span style="color: #006633;">permission</span>.<span style="color: #006633;">INTERNET</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/verificare-che-i-permessi-siano-stati-aggiunti-nellandroidmanifest-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cronache dei miei Hackathon, e le idee realizzate</title>
		<link>http://www.rainbowbreeze.it/cronache-dei-miei-hackathon-e-le-idee-realizzate/</link>
		<comments>http://www.rainbowbreeze.it/cronache-dei-miei-hackathon-e-le-idee-realizzate/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 06:30:33 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Hackathon]]></category>
		<category><![CDATA[Hackitaly]]></category>
		<category><![CDATA[ota]]></category>
		<category><![CDATA[overtheair]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1329</guid>
		<description><![CDATA[Hackathon: maratone di coding dove la passione si mischia alla creativita&#8217;, la stanchezza fisica e mentale alla gioia di veder nascere, riga dopo riga, qualcosa che spesso e&#8217; un incredibile prototipo neanche lontanamente immaginato solo qualche ora prima. Oltre ad organizzarne con il WhyMCA, mi piace anche parteciparci. Di seguito la mia personalissima &#8220;Hackmission, a [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Hackathon</strong>: maratone di coding dove la passione si mischia alla creativita&#8217;, la stanchezza fisica e mentale alla gioia di veder nascere, riga dopo riga, qualcosa che spesso e&#8217; un incredibile prototipo neanche lontanamente immaginato solo qualche ora prima. Oltre ad <a title="Organizzare Hackathon in Italia, qualche considerazione" href="http://www.rainbowbreeze.it/organizzare-hackathon-in-italia-qualche-considerazione/">organizzarne</a> con il <a title="WhyMCA" href="http://www.whymca.org" target="_blank">WhyMCA</a>, mi piace anche parteciparci. Di seguito la mia personalissima <strong>&#8220;Hackmission, a crazy developer history&#8221;</strong>.</p>
<p><strong>OverTheAir Settembre 2008<br />
</strong>Primo hackathon a cui abbia mai partecipato, mi e&#8217; sempre rimasto nel cuore. Londra, in notturna, dentro una struttura universitaria, quando il <a title="Nokia N95" href="http://www.pianetacellulare.it/Modelli/Nokia/Nokia_N95.php" target="_blank">Nokia N95</a> era ancora il top della gamma. Assieme a <a title="Robert (Jamie) Munro" href="http://twitter.com/rjmunro" target="_blank">Robert</a>, conosciuto sul posto, realizzammo <strong>S.N.O.B &#8211; Social Network Open Butler</strong>, un&#8217;applicazione per Windows Mobile in grado di prendere gli avatar di Twitter e di Facebook (che a quel tempo erano ancora accedibili pubblicamente e anonimamente) e associarli ai contatti della propria rubrica. Robert si occupo&#8217; del webservice PHP che tirava fuori l&#8217;immagine in base al nome del contatto che il mio client gli passava, io del client per Windows Mobile, appunto, che verificava tutti i nomi della rubrica, faceva una ricerca dei loro avatar e proponeva se associarli o meno al contatto. <strong>Vincemmo nella categoria <em>&#8220;Most practical / ready for market&#8221;</em>, assieme ad uno smartphone Sony Ericsson in palio</strong>.</p>
<p><strong>OverTheAir Settembre 2009<br />
</strong>Ad un anno esatto dal primo, sempre a Londra e sempre in notturna. Assieme a <a title="Stefano Zingarini" href="http://twitter.com/stefanux" target="_blank">Stefano</a> e <a title="Robert (Jamie) Munro" href="http://twitter.com/rjmunro" target="_blank">Robert</a> creammo <strong>S.A.Y &#8211; Something Around You</strong>. Un&#8217;applicazione per Android che, in base alla posizione corrente, capiva i luoghi limitrofi grazie all&#8217;uso di <a title="YQL, Yahoo! Query Language" href="http://www.rainbowbreeze.it/yql-yahoo-query-language/">Yahoo Query Language</a>, interrogava Flickr per ottenere foto riguardandi quei luoghi e, alla fine, le visualizzava in realta&#8217; aumentata sfruttando le API di Wikitude. Era anche in grado di ottenere informazioni sugli spettacoli cinematografici circostanti, con tanto di locandina del film, breve descrizione e orari. A Stefano e a Robert la realizzazione dei webservice che ottenere i dati, a me quello del cliente Android per realizzarli. <strong>Primi nella categoria &#8220;<em>Best use of Yahoo APIs</em>&#8220;,  ci riportammo a casa una macchina del caffe&#8217; Nespresso.</strong></p>
<p><strong>HackItaly Febbraio 2011<br />
</strong>Dopo un anno di assenza forzata dall&#8217;OTA, finalmente anche il panorama italiano si era aperto agli hackathon. Cosi, improvvisando in mattinata un team assieme a <a title="Antonio Molinari" href="http://twitter.com/magnum" target="_blank">Magnum</a> e <a title="Sam Reghenzi" href="http://twitter.com/sammyrulez" target="_blank">Sammy</a>, abbiamo dato vita a <strong>Contestr</strong>. L&#8217;idea con cui ero partito il giorno prima era quella di realizzare un servizio che permettesse di gestire gare di snowboard tra rider: ti iscrivevi ad un contest e poi giravi sulle piste, accumulando punti in base alla velocita&#8217; raggiunta, chilometri percorsi, trick eseguiti (letti in grazie a giroscopio ed accelerometro). Alla fine della giornata avevamo messo in piedi un sito per organizzare caccie al tesoro in giro per la citta, con prove composte dal checkin in certi luoghi, prove a tempo di corsa e i punti fatti venivano raccolti e trasformati in digital goods grazie a <a href="http://www.beintoo.com/" target="_blank">Beintoo</a>. Magnum e Sammy hanno curato il backend in ROR e io invece ho realizzato il client Android. <strong>Vittoria come miglior uso delle <em>API di Beintoo</em> e per quelle di <em>Nokia Maps</em>, con un bottino composto da un viaggio in una capitale europea, un Nokia N7 e hosting gratuito su <a href="http://www.top-ix.org/" target="_blank">Top-ix</a> per un anno</strong>. Estratto a sorte tra noi tre, il viaggio e&#8217; toccato a me.</p>
<p><strong>HackItaly Settembre 2011<br />
</strong>Per questo secondo appuntamento sono riuscito a coinvolgere <a title="Paolo Sinelli" href="http://twitter.com/pasine" target="_blank">Paolo</a> e <a title="Mauro Vanetti" href="http://twitter.com/maurovanetti">Mauro</a>. Nonostante le poche API a disposizione tra cui scegliere, abbiamo partorito <strong>Kinect Says</strong>, versione aumentata del gioco <a title="Simon Says" href="http://www.digitalrendezvous.net/2006/05/25/simon-says/" target="_blank">Simon Says</a>: dall&#8217;iPad/iPhone si schiacciavano una sequenza di tasti colorati su una griglia 3&#215;3, accompagnati da una musica riprodotta in streaming grazie alle API di <a title="Play.me" href="http://play.me" target="_blank">Play.me</a>. Questi tasti premuti venivano salvati sul backend e letti da un&#8217;applicazione Windows WPF che, avviata la partita, li riproduceva su una griglia a schermo e, grazie al <a title="Kinect SDK" href="http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/" target="_blank">Kinect SDK</a>, controllava se il giocatore riusciva a &#8220;colpirli&#8221;, muovendo le braccia nella loro direzione prima che questi scomparissero. sostituiti dal nuovo riquadro da colpire. Sul device del primo giocatore, inoltre, venivano mostrate le mosse giuste e quelle mancate dell&#8217;avversario, visto che il match poteva anche essere giocato in contemporanea. Sembra una roba tranquilla, ma vi assicuro che alla fine era una sequenza molto frenetica. A Paolo e&#8217; toccata la realizzazione del client iOS, a Mauro quella del backend in PHP e io ho fatto l&#8217;applicazione WPF che parlava col Kinect. <strong>Oltre ad un divertimento spropositato, ci siamo portati a casa una XBox 360, come premio per la categoria delle <em>API Kinect</em></strong>.</p>
<p><strong>OverTheAir Settembre 2011<br />
</strong>Partiti in sordina, io, <a title="Paolo Sinelli" href="http://twitter.com/pasine" target="_blank">Paolo</a> e <a title="Andrea Piovani" href="http://twitter.com/andreaaa_p" target="_blank">Andrea</a> ci siamo trovati seduti in un prato sopra alle nostre <a title="OTA Beanbag" href="http://overtheair.org/blog/wp-content/uploads/2011/10/OTA11-BeanBags-photo-by-spiritquest-on-Flickr.jpg" target="_blank">beanbag</a>, bevendo birra e ammirando le stelle (si, una notte inglese atipicamente calda e serena), e abbiamo partorito l&#8217;idea di <strong>Hack-The-Mansion</strong>, grazie anche allo zampino creativo di <a title="Andrea Trasatti" href="http://twitter.com/andreatrasatti" target="_blank">Andrea</a> che ci ha fatto compagnia durante il birrastorming. Lanciati nell&#8217;impresa, alle 15 del giorno dopo era pronto un gioco per Android che si ispirava al Monopoli, ma molto piu&#8217; articolato. I giocatori dovevano leggere dei QR-Code attaccati sui luogi del campo da gioco (idealmente alberghi o monumenti o altro). Se quel luogo non era stato ancora prenotato da nessuno, c&#8217;era l&#8217;opzione di prenotarlo per un numero variabile di turni. Se lo era stato, si doveva pagare al proprietario una &#8220;tassa di soggiorno&#8221; per la durata del turno. Questi flussi di ota-coin componevano il punteggio dei giocatori, che poteva essere incrementato acquistando nuovi ota-coin tramite le <a title="Mobile Payment Libraries" href="https://www.x.com/developers/paypal/products/mobile-payment-libraries" target="_blank">Mobile Payment Libraries di Paypal</a>, oppure rispondendo correttamente a delle domande riguardanti il luogo dove si era, generate dal backend che interrogava dei dataset OpenData, come quelli sulla densita&#8217; di popolazione, il numero di abitanti ed altro. A me il client Android, a Paolo e Andrea il backend in ROR. Devo dire di non aver mai scritto tanto codice in un solo hackathon, ma ne e&#8217; valsa la pena: <strong>abbiamo vinto il premio come <em>&#8220;Best Android Application&#8221;</em> e quello come <em>&#8220;Best Game&#8221;</em>, per un totale di 3 libri, 2 Sony Ericsson Xperia Xplay e ben 3 Nexus S</strong>. Insomma, non sapevamo piu&#8217; dove metterli nel bagaglio di ritorno a casa.</p>
<p>&nbsp;</p>
<p>Considerazione di fondo. Partecipo agli hackathon sopratutto per divertirmi e per mettere alla prova le mie capacita&#8217;. Poi certo, vincere non dispiace mai, ma l&#8217;emozione di creare qualcosa che non e&#8217; la solita applicazione che fai al lavoro, dove sacrifichi senza problemi stabilita&#8217; per funzionalita&#8217;, dove provi a fare cose cosi&#8217; avveneristiche che magari riutilizzerai tra un anno di tempo, dove scopri quanto e&#8217; bello e ricco il mondo dei mashup tra librerie ed API&#8230; Beh, e&#8217; questo il vero premio per 9 o piu&#8217; ore di stress mentale, o per la notte passata in bianco. Ma ne valgono tutte la pena, minuto per minuto. Ci vediamo al prossimo hackathon!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/cronache-dei-miei-hackathon-e-le-idee-realizzate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Come installare Cyanogenmod, MIUI o una custom rom sul Nexus One</title>
		<link>http://www.rainbowbreeze.it/come-installare-cyanogenmod-miui-o-una-custom-rom-sul-nexus-one/</link>
		<comments>http://www.rainbowbreeze.it/come-installare-cyanogenmod-miui-o-una-custom-rom-sul-nexus-one/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 08:35:19 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[CyanogenMod]]></category>
		<category><![CDATA[MIUI]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1319</guid>
		<description><![CDATA[Installare un sistema operativo personalizzato al posto di quello standard presente sul proprio smartphone e&#8217; una pratica consolidata. Gia&#8217; con Symbian era prassi comune quella di eliminare la versione customizzata che l&#8217;operatore telefonico installava nel telefono, spesso con crapware e limitazioni varie, per usarne una &#8220;stock&#8221;, ovvero pulita, spesso piu&#8217; aggiornata, piu&#8217; leggera e senza [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/10/upgraderom.png"><img class="alignleft size-full wp-image-1321" style="margin: 2px 4px;" title="Custom ROM for Android Nexus One" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/10/upgraderom.png" alt="" width="199" height="250" /></a>Installare un sistema operativo personalizzato al posto di quello standard presente sul proprio smartphone e&#8217; una pratica consolidata. Gia&#8217; con Symbian era prassi comune quella di eliminare la versione customizzata che l&#8217;operatore telefonico installava nel telefono, spesso con crapware e limitazioni varie, per usarne una &#8220;stock&#8221;, ovvero pulita, spesso piu&#8217; aggiornata, piu&#8217; leggera e senza vincoli. Con Windows Mobile c&#8217;e&#8217; stata un&#8217;esplosione di questa pratica e le <em>ROM coocked</em> create dalla comunita&#8217; erano spesso di gran lunga migliori di quelle standard: parecchi bugfix, driver e sistemi operativi aggiornati, utility precaricate per risparmiare spazio, Erano insomma capaci di prolungare la vita di un device di un anno o piu&#8217;. Dopotutto intendiamoci, i produttori di dispositivi non hanno interesse a rilasciare versioni aggiornate del firmare dei propri prodotti, preferiscono che si buttino via e si ricomprino nuovi con quanto di nuovo c&#8217;e&#8217; sul mercato.</p>
<p>Android, ovviamente, non fa differenza. Unica controindicazione di questo processo di customizzazione della ROM e&#8217; la perdita della garanzia, ma si puo&#8217; sempre ripristinare quella originale ;)</p>
<p><strong>Considerazione finale</strong> dopo aver sperimentato per un paio di giorni tutto: <strong>ma come ho fatto ad aspettare cosi&#8217; tanto tempo</strong> prima di usarle sul mio Nexus One!</p>
<p>&nbsp;</p>
<p><strong>I passi da seguire per un Nexus One</strong></p>
<p>Ovviamente ogni telefono ha una sua sequenza di comandi per essere sbloccato e personalizzato, di seguito quelli per il mio Nexus One:</p>
<ul>
<li>Sbloccare il bootloader del device per poter installare una nuova recovery image, al posto di quella standard (si usa fastboot).</li>
<li>Installare una Custom Recovery Image che permettera&#8217;, tra le altre cose, di installare delle ROM personalizzate (ClockWorld Mod).</li>
<li>Tramite la Custom Recovery Image, fare un salvataggio del sistema e poi caricare la nuova ROM personalizzata.</li>
<li>Installazioni aggiuntive.</li>
</ul>
<p>Purtroppo, la prima volta che si esegue questo processo, tutti i settaggi delle app saranno irrimediabilmente persi. Quindi addio punti nei giochi, impostazioni di programmi e tutto quello che non viene salvato nativamente nel cloud o sulla SD dalle singole applicazioni. Le volte successive, grazie all&#8217;accesso root al dispositivo e ai tool di backup esistenti, questo problema sara&#8217; solo un brutto ricordo. Ragione in piu&#8217; per fare il prima possibile lo sblocco, anche solo per avere un salvataggio completo di tutto, in caso di perdita del device.</p>
<p>&nbsp;</p>
<p><strong>Sbloccare il bootloader ed installare Fastboot</strong></p>
<p>Una volta il comando <em>fastboot</em> era installato nell&#8217;Android SDK, poi e&#8217; stato tolto. <a title="fastboot download" href="http://android.modaco.com/topic/299078-how-to-unlock-the-bootloader-on-your-nexus-one" target="_blank">Qui si puo&#8217; trovare un eseguibile multipiattaforma</a>: e questa e&#8217; <a title="Fastboot" href="http://wiki.cyanogenmod.com/wiki/Fastboot" target="_blank">la procedura dettagliata</a> per sbloccare il boot del device.</p>
<ul>
<li>Scaricare i pacchetti del fastboot per linux e copiati nella directory <em>platform-tools</em> dell&#8217;sdk Android</li>
<li>Boot del device nel bootloader (premere il trackpad e accendere il dispositivo). Apparira&#8217; uno schermo con dei robottini Android su uno skate.</li>
<li>Controllare che in alto a sinistra ci sia la scritta S-OFF, che indica il security off del dispositivo, quindi la possibilita&#8217; di sbloccarlo</li>
<li>Controllare che sia selezionato FASTBOOT e non HBOOT nelle voci del menu&#8217;</li>
<li>Connettere il device via USB al computer</li>
<li>Lanciare, dal computer, il comando <em>fastboot devices</em> e controllare che il proprio device sia elencato</li>
<li>Lanciare, dal computer, il comando <em>fastboot oem unlock</em> e confermare l&#8217;unlock del device</li>
</ul>
<p><strong>Tutti i dati saranno cancellati</strong> e il device verra&#8217; riavviato. Per controllare se e&#8217; effettivamente stato sbloccato, avviare nuovamente il bootloader e questa volta, in altro, dovrebbe apparire la scritta *** UNLOCKED ***</p>
<p>&nbsp;</p>
<p><strong>Installare una Custom Recovery Image</strong></p>
<p>Compito della Custom Recovery Image e&#8217; quello di installare custom rom, salvare dati, partizionare sd card, cancellare dati, resettare impostazioni particolari di sistema e molto altro. Ci sono diversi programmi molto usati e che fungono bene allo scopo, io ho scelto ClockWorldMod Recovery, <a title="What Is ClockworkMod Recovery And How To Use It On Android" href="http://www.addictivetips.com/mobile/what-is-clockworkmod-recovery-and-how-to-use-it-on-android-complete-guide/" target="_blank">ecco spiegato cos&#8217;e&#8217;</a>. Per installarlo, ho seguito <a title="ClockworkMod Recovery Installation" href="http://wiki.cyanogenmod.com/wiki/Nexus_One:_Full_Update_Guide#ClockworkMod_Recovery" target="_blank">questi passi qui</a>, che comprendono anche il link per il download del file img. In alternativa, c&#8217;e&#8217; anche <a title="Amon-Ra's" href="http://forum.xda-developers.com/showthread.php?t=611829" target="_blank">Amon-Ra&#8217;s</a></p>
<ul>
<li>Scaricato il file img nel computer</li>
<li>Boot del device nel bootloader</li>
<li>Connettere il device via USB al computer</li>
<li>Lanciare il comando <em>fastboot flash recovery /path/to/recovery-clockwork-3.0.0.5-passion.img</em></li>
<li>Riavviare il device. La Custom Recovery Image e&#8217; presente ed operativa.</li>
</ul>
<p>Ovviamente esiste una versione piu&#8217; nuova della 3.0.0.5, dopo l&#8217;installazione della custom rom ci sono le istruzioni per aggiornarla.</p>
<p>&nbsp;</p>
<p><strong><strong>Backup del sistema operativo, conosciuto anche come Nandroid backup, e i</strong>nstallare di una custom ROM</strong></p>
<p title="How To Perform And Restore A NANDROID Backup">Prima di installare una qualunque custom rom, e&#8217; buona cosa fare un backup dell&#8217;intero sistema operativo, che servira&#8217; anche nel caso in cui le cose vadano storte e il device non si riavvii piu&#8217;, ad esempio a a causa di una rom sbagliata, un errore nella sd che ha corrotto il file ecc. Inoltre e&#8217; l&#8217;immagine che va rimessa sul dispositivo in caso di invio in assistenza (assieme all&#8217;esecuzione del comando <em>fastboot oem lock</em> per ribloccare il bootloader e riportarlo allo stadio originale). Conosciuto anche come Nadroid backup, ecco i <a title="How To Perform And Restore A NANDROID Backup" href="http://www.addictivetips.com/mobile/how-to-perform-and-restore-a-nandroid-backup/" target="_blank">passi che ho seguito</a>:</p>
<ul>
<li>Fare il reboot in recovery mode: lanciare il bootloader, scegliere recovery, oppure, con il device connesso via usb, lanciare il comando <em>adb reboot recovery</em>.</li>
<li>Scegliere la voce di menu&#8217; Backup and Restore</li>
<li>Lanciare in backup e aspettare un paio di minuti</li>
<li>Per il restore, stessa procedura, ma selezionando restore invece di backup, e l&#8217;immagine da ripristinare (tramite data e ora del backup fatto)</li>
</ul>
<p>&nbsp;</p>
<p><strong>Installazione di una Custom ROM</strong></p>
<p>Ovviamente esistono tantissime custom rom, sia in base al device, sia in base all&#8217;orientamento che viene dato alla rom (performance, cool&amp;stylish, funzionalita&#8217; ecc). Personalmente, e per un Nexus One, ritengo che ci siano tre grandi alternative: installare una <a title="Stock ROMS" href="http://android.modaco.com/topic/300414-21oct-stock-roms-erd79-frg83-images-zip-online-kitchen-optional-root-insecure/" target="_blank">rom stock</a>, una <a title="Cyanogenmod" href="http://www.cyanogenmod.com/" target="_blank">Cyanogenmod</a> o una <a title="MIUI" href="http://en.miui.com/" target="_blank">MIUI</a>. Consiglio la prima scelta a chi usa il device per sviluppare e testare le proprie applicazioini, ma non vuole perdere i benefici di essere root: le rom customizzate, infatti, sono molto diverse da quella originale, quindi potrebbero anche avere dei comportamenti inattesi / fuori dagli standard che potrebbero pregiudicare il buon esito dei test di funzionamento. La Cyanogenmod, invece, e&#8217; <a title="Cyanogenmod features" href="Feature di Cyanogenmod: http://wiki.cyanogenmod.com/wiki/Features" target="_blank">tipicamente per gli smanettoni</a>: tantissimi settaggi, ottimizzazioni alle stelle e velocita&#8217; da urlo. MIUI, infine, e&#8217; esteticamente qualcosa di unico ed offre applicazioni di gran lunga migliori di quelle standard (player musicale, rubrica dei contatti, backup integrato ecc). A voi la scelta. Io le sto provando entrambe e, per ora, la MIUI mi ha conquistato. Seguiranno post piu&#8217; dettagliati.</p>
<p>A prescindere dal tipo di rom i passi sono molto simili, ecco quelli che ho seguito io per la Cyanogenmob, secondo la <a title="Nexus One: Full Update Guide" href="http://wiki.cyanogenmod.com/wiki/Nexus_One:_Full_Update_Guide#Flashing_CyanogenMod" target="_blank">guida ufficiale</a>.</p>
<ul>
<li>Scaricare nel computer il file della custom rom, prendendola dal sito o scaricandola con qualche app direttamente dal device. E&#8217; un file zip, che va copiato nella propria SD (dove si vuole, io ho creato la cartella /roms e le metto li sotto). Io ho preso la versione stable <a title="Cyanogenmod for Nexus One" href="http://wiki.cyanogenmod.com/wiki/Latest_Version#Nexus_One" target="_blank">da qui</a>.</li>
<li>Nel caso di una Cyanogenmod, se si vogliono anche le Google Apps (Market, GMail ecc), occorre scaricare l&#8217;<a title="Google apps for Cyanogenmod" href="http://wiki.cyanogenmod.com/wiki/Latest_Version#Google_Apps" target="_blank">apposito pacchetto</a>.</li>
<li>Fare il reboot in recovery mode: lanciare il bootloader, scegliere recovery, oppure, con il device connesso via usb, lanciare il comando <em>adb reboot recovery</em>.</li>
<li>Selezionare un Wipe data/factory reset e poi Wipe data/Cache partition: questo cancellera&#8217; tutti i dati presenti, ma e&#8217; fondamentale farlo quando si installa una nuova tipologia di ROM, non sempre richiesto quando si passa ad un nuova versione di rom della stessa famiglia.</li>
<li>Selezionare Install zip from sd card e poi Choose zip from sdcard e navigare fino a scegliere il file scaricato con la rom in precedenza</li>
<li>Ripetere il precedente passo, ma con il file delle Google Apps</li>
<li>Riavviare il sistema dall&#8217;apposito&#8217; menu.</li>
<li>Let&#8217;s the magic happens! La ROM e&#8217; pronta all&#8217;uso.</li>
</ul>
<p>&nbsp;</p>
<p><strong><span id="more-1319"></span>Prima di perdervi in questo nuovo mondo</strong></p>
<p>Consigli veloci da fare subito, per poi darsi alla sperimentazione selvaggia di tutto quello che c&#8217;e&#8217; di nuovo:</p>
<ul>
<li>Installate l&#8217;<a title="Clockworkmod" href="http://www.clockworkmod.com/" target="_blank">app ClockWorldMod ROM Managare</a> e aggiornate all&#8217;ultima versione disponibile la recovery image (prima voce del menu&#8217;)</li>
<li>Installare <a title="Titanium Backup Root" href="http://matrixrewriter.com/android/" target="_blank">Titanium Backup Root</a>, in modo da poter salvare applicazioni piu&#8217; i loro dati e ripristinare tutto con facilita&#8217; in caso di installazione di una nuova rom.</li>
<li>Una lista delle varie rom esistenti per Nexus One <a title="Nexus One Froyo custom roms list" href="http://www.nexusoneforum.net/forum/nexus-one-development-hacking/9307-custom-roms-list.html%20e%20http://alchemistar.blogspot.com/2010/10/nexus-one-froyo-custom-roms-list.html" target="_blank">e&#8217; qui</a>, mentre qui ci sono <a title="Favorite custom rom and why" href="http://www.nexusoneforum.net/forum/nexus-one-development-hacking/10075-favorite-custom-rom-s-why.html" target="_blank">alcune peculiarita&#8217; e considerazioni d&#8217;uso</a>.</li>
<li>Procedura di installazione troppo lunga e complessa? Si puo&#8217; provare <a title="SuperOnClick" href="http://shortfuse.org/" target="_blank">SuperOnClick</a>, compatibile con molti telefoni ed estremamente automatico.</li>
</ul>
<p>&nbsp;</p>
<p><strong>Spostare le applicazioni su SD per liberare spazio (APP2SD, A2SD, APP2Ext, APP2SD+)</strong></p>
<p>Prima di Froyo (Android 2.2), le applicazioni eran installate nella memoria interna del device. Il Nexus One ha circa 190 mega liberi da dedicare allo scopo ma, tra aggiormanenti di GMail, Maps, e poco altro, lo spazio a disposizione finiva in un baleno. Per questo, a partire da Froyo in poi, e&#8217; stato introdotto il supporto all&#8217;App2SD, la possibilita&#8217; di spostare un&#8217;applicazione sulla scheda sd. Si libera pareccha memoria interna (non tutta, perche&#8217; alcuni dati dell&#8217;app ancora rimangono li) e si puo&#8217; respirare un po&#8217; di piu&#8217;, ma e&#8217; una funzionalita&#8217; che la singola applicazione deve implementare e, ovviamente, molte non lo fanno (per precise ragioni o per pigrizia degli sviluppatori, dipende). Le principali custom ROM hanno abilitato un workaround che sposta automaticamente tutte le app nella memoria SD, a prescindere dal loro supporto o meno all&#8217;App2sd di Froyo. Grande comodita&#8217;, non si perde praticamente nulla in velocita&#8217;, solo forse si accorcia leggermente il ciclo di vita della propria SD (ma dipende sempre dall&#8217;utilizzo). <a title="App2sd explanation" href="http://forum.xda-developers.com/showpost.php?p=7458565&amp;postcount=8" target="_blank">Qui</a>, <a title="A2SD Explained" href="http://www.miui-au.com/faq/a2sd/" target="_blank">qui</a> e <a title="Using DarkTremor Apps2SD with Kang-o-rama" href="http://forum.xda-developers.com/showpost.php?p=8012686&amp;postcount=4342" target="_blank">qui</a> qualche info in piu&#8217; sulla cosa.</p>
<p>Brevemente, sia <a title="Cyanogenmod features" href="Feature%20di%20Cyanogenmod:%20http://wiki.cyanogenmod.com/wiki/Features" target="_blank">Cyanogenmod</a> che <a title="MIUI FAQ" href="http://en.miui.com/a-11.html" target="_blank">MIUI</a> hanno l&#8217;A2SD+ installato. Io per abilitarlo sulla seconda ho dovuto seguire questi passi (penso comunque utilizzabili anche per la prima)</p>
<ul>
<li>Creare una partizione EXT3 sulla mia SD (tramite GParted o un altro strumento). Ho scelto una dimensione di 600 mb, che penso sia abbastanza per installare moooolte cose.</li>
<li>Aprire una shell sul device (tramite applicazione del terminale o digitando adb shell dal pc attaccato al device)</li>
<li>Lanciare il comando <em>a2sd check</em> per verificare che non fosse gia&#8217; tutto abilitato. Si puo&#8217; capire nelle voci Apps e Private Apps, che hanno un &#8220;No Apps2SD Flag File not found.&#8221; selezionato.</li>
<li>Lanciare comando <em>as2d install</em> per abilitare il tutto, aspettato qualche minuto e il reboot del dispositivo.</li>
</ul>
<p>Se le applicazione supportano la modalita&#8217; App2sd di Froyo, si potranno ancora spostare sulla SD alla vecchia maniera (nella partizione fat32), se invece si lasciano nella memoria interna, verranno automaticamente messe nella nuova partizione ext3 creata. In aggiunta, si puo&#8217; anche spostare la cartella /data/data nella sd, liberando ancora piu&#8217; spazio in memoria interna, grazie al comando <em>a2sd datasd</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/come-installare-cyanogenmod-miui-o-una-custom-rom-sul-nexus-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sviluppatori Android e iPhone/iPad mobili in Italia, come cercarli e come farsi notare</title>
		<link>http://www.rainbowbreeze.it/sviluppatori-android-e-iphoneipad-mobili-in-italia-come-cercarli-e-come-farsi-notare/</link>
		<comments>http://www.rainbowbreeze.it/sviluppatori-android-e-iphoneipad-mobili-in-italia-come-cercarli-e-come-farsi-notare/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 17:52:01 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Community]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1308</guid>
		<description><![CDATA[Nelle ultime settimane mi saranno arrivate almeno 3-4 richieste del tipo &#8220;L&#8217;azienda XXX dove lavoro sta cercando degli sviluppatori per Android/iPhone/iPad/altro da assumere o a cui commissionare dei lavori da freelance. Sai darmi qualche nome o qualche posto dove guardare?&#8221;. Inoltre, capita che venga contattato su LinkedIn da diversi headhunter che cercano sviluppatori, sempre per [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/09/headhunter.jpg"><img class="alignleft size-full wp-image-1310" style="margin-top: 2px; margin-bottom: 2px; margin-left: 4px; margin-right: 4px;" title="headhunter" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/09/headhunter.jpg" alt="" width="240" height="180" /></a>Nelle ultime settimane mi saranno arrivate almeno 3-4 richieste del tipo &#8220;L&#8217;azienda XXX dove lavoro sta cercando degli sviluppatori per Android/iPhone/iPad/altro da assumere o a cui commissionare dei lavori da freelance. Sai darmi qualche nome o qualche posto dove guardare?&#8221;. Inoltre, capita che venga contattato su LinkedIn da diversi headhunter che cercano sviluppatori, sempre per mobile.</p>
<p>Questi fatti mi portano a fare diverse considerazioni:</p>
<ul>
<li>Ancora fondamentale <strong>la cultura del passaparola</strong>, quindi la rete di contatti e&#8217; tutto. Partecipazione a conferenze e community in primis possono assicurare quindi una buona visibilita&#8217; a chi sta cercando di professionalizzare le proprie competenze in questo campo.</li>
<li>I canonici <strong>siti per la ricerca di lavoro</strong> possono aiutare a dare visibilita&#8217; della domanda, ma non dell&#8217;offerta.</li>
<li>Un <strong>profilo LinkedIn</strong> ben scritto qualche possibilita&#8217; in piu&#8217; puo&#8217; darla.</li>
<li>Forse non c&#8217;e&#8217; ancora un vero luogo conosciuto e riconosciuto dove domanda e offerta si possano incontrare. A volte ci si trova in apposite sezioni nei <strong>forum delle varie community tematiche</strong> (ma e&#8217; difficile capire chi scrive e chi risponde), a volte nelle mailing list di JUG/iOS user locali.</li>
<li>Sempre <strong>LinkedIn</strong> puo&#8217; dare una mano con i <strong>gruppi</strong> <a href="http://www.linkedin.com/groups/Mobile-Developers-Italy-1855703" target="_blank">Mobile Developers Italia</a> e sicuramente con altri per iOS (che non frequento dato che non sviluppo (ancora) su questa piattaforma).</li>
<li>Query specifiche sui motori di ricerca (Google, Bing, Yahoo ecc) danno risultati utili solo per citta&#8217; o regioni grandi, e sono spesso focalizzate sulla domanda, non sull&#8217;offerta.</li>
</ul>
<div>Detto questo, mi piacerebbe sapere che consigli dareste in riferimento ai &#8220;luoghi&#8221; dove offrire e cercare lavoro come sviluppatore mobile. Magari potrebbe uscirne una raccolta interessante, e spero utile, di spunti.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/sviluppatori-android-e-iphoneipad-mobili-in-italia-come-cercarli-e-come-farsi-notare/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>NavigationBar in style iPhone UITabBarController per Android</title>
		<link>http://www.rainbowbreeze.it/navigationbar-in-style-iphone-uitabbarcontroller-per-android/</link>
		<comments>http://www.rainbowbreeze.it/navigationbar-in-style-iphone-uitabbarcontroller-per-android/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 07:00:26 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[#Anddev]]></category>
		<category><![CDATA[RadioButton]]></category>
		<category><![CDATA[UITabBarController]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1301</guid>
		<description><![CDATA[Nel porting di applicazioni iOS su piattaforma Android, ci sono casi in cui si vuole necessariamente una barra di navigazione nella parte bassa dello schermo, come quella presente in molte applicazioni iPhone/iPad. Ci sono diversi approcci che si possono seguire. Usare una libreria che rende anche possibile lo scrolling dei bottoni, un controllo personalizzato e [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/09/android_navigationbar1.png"><img src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/09/android_navigationbar1-200x300.png" alt="" title="android_navigationbar1" width="200" height="300" class="alignleft size-medium wp-image-1303" /></a> <a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/09/android_navigationbar2.png"><img src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/09/android_navigationbar2-200x300.png" alt="" title="android_navigationbar2" width="200" height="300" class="alignleft size-medium wp-image-1304" /></a>Nel porting di applicazioni iOS su piattaforma Android, ci sono casi in cui si vuole necessariamente una barra di navigazione nella parte bassa dello schermo, come quella presente in molte applicazioni iPhone/iPad. </p>
<p>Ci sono diversi approcci che si possono seguire. Usare <a href="http://code.google.com/p/mobyfactory-uiwidgets-android/" title="mobyfactory-uiwidgets-android - Custom UI for Android" target="_blank">una libreria che rende anche possibile lo scrolling dei bottoni</a>, un <a href="http://www.paxmodept.com/telesto/blogitem.htm?id=810" title="iPhone Like Toolbar for Android " target="_blank">controllo personalizzato</a> e gestito tutto via codice, dei <a href="http://android-pro.blogspot.com/2010/08/iphone-like-tab-bar-in-android.html" title="iPhone-Like Tab bar in Android" target="_blank">TabHost con dei TabWidget</a>, oppure inventarsi altro <a href="http://stackoverflow.com/questions/6827869/is-there-a-way-to-display-fragments-in-tabhost/6891923#6891923" title="Is there a way to display fragments in TabHost?" target="_blank">per gestire anche i Fragment</a>.</p>
<p>Invece io voglio ottenere lo stesso risultato con la massima flessibilita&#8217; possibile, quindi usando solo controlli standard e semplici, al massimo personalizzandone lo stile. Quindi il componente principale della navigationbar sara&#8217; un RadioGroup, all&#8217;interno del quale ogni elemento RadioButton rappresentera&#8217; un pulsante. Un diffuso uso di <a title="StateListDrawable" href="http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html" target="_blank">StateListDrawable</a> rendera&#8217; coerente l&#8217;aspetto grafico.</p>
<p>Di seguito il layout dell&#8217;activity principale, quella che conterra&#8217; la navigation bar: <strong>res/layout/actnavbar.xml</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1301code10'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p130110"><td class="code" id="p1301code10"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RelativeLayout</span></span>
<span style="color: #009900;">  <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000066;">android:background</span>=<span style="color: #ff0000;">&quot;@android:color/white&quot;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RadioGroup</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:layout_width</span>=<span style="color: #ff0000;">&quot;fill_parent&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:layout_height</span>=<span style="color: #ff0000;">&quot;60dp&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:layout_alignParentBottom</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:orientation</span>=<span style="color: #ff0000;">&quot;horizontal&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:background</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_background&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RadioButton</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/btnAll&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;@style/navbar_button&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:drawableTop</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_allselector&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;All&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RadioButton</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/btnPicture&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;@style/navbar_button&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:drawableTop</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_pictureselector&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;Pictures&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:layout_marginLeft</span>=<span style="color: #ff0000;">&quot;5dp&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RadioButton</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/btnVideo&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;@style/navbar_button&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:drawableTop</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_videoselector&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;Videos&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:layout_marginLeft</span>=<span style="color: #ff0000;">&quot;5dp&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RadioButton</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:id</span>=<span style="color: #ff0000;">&quot;@+id/btnFile&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">style</span>=<span style="color: #ff0000;">&quot;@style/navbar_button&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:drawableTop</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_fileselector&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:text</span>=<span style="color: #ff0000;">&quot;Files&quot;</span></span>
<span style="color: #009900;">      <span style="color: #000066;">android:layout_marginLeft</span>=<span style="color: #ff0000;">&quot;5dp&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RadioGroup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/RelativeLayout<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p><span id="more-1301"></span><br />
E il file con gli stili <strong>res/values/styles.xml</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1301code11'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p130111"><td class="code" id="p1301code11"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;resources<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;style</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;navbar_button&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:layout_width&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>0dp<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:layout_height&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>wrap_content<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:button&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>@null<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:background&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>@drawable/navbar_backgroundselector<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:gravity&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>center_horizontal<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:layout_weight&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;android:textSize&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>12dp<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/item<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/style<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/resources<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Il trucchetto e&#8217; impostare a @null la proprieta&#8217; <em>android:button</em> (in pratica, il disegno di default del RadioButton) e poi impostare <em>android:drawableTop</em> del testo all&#8217;icona che si vuole far apparire nella navigationbar. Impostare invece <em>android:background</em> serve per ottenere l&#8217;effetto del glow quando il bottone e&#8217; schiacciato. <em>android:layout_width</em> a 0dp e <em>android:layout_weight</em> a 1 fanno occupare a tutti i bottoni lo stesso spazio, a prescindere dalla lunghezza del testo.</p>
<p>Al resto pensano gli <a href="http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html" title="StateListDrawable" target="_blank">StateListDrawable</a>, grazie ai quali vengono impostate le icone da usare quando il bottone e&#8217; Checked oppure no. Il framework sottostante pensera&#8217; poi a gestire cosa visualizzare a seconda dello stato.</p>
<p>Ecco quindi uno dei selector usati per i bottoni, il primo della navigation bar: <strong>res/drawable/navbar_allselector.xml</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1301code12'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p130112"><td class="code" id="p1301code12"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;selector</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:state_checked</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:drawable</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_allselected&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">android:drawable</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_allnormal&quot;</span>  <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/selector<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Gli altri sono tutti simili, cambiano solo le due icone utilizzate. Ovviamente il selector piu&#8217; essere esteso per includere anche icone quando il bottone e&#8217; disabilitato, oppure premuto e disabilitato e cosi&#8217; via.</p>
<p>Per ottenere invece l&#8217;effetto glow quando il bottone e&#8217; premuto, il file e&#8217; il seguente: <strong>res/drawable/navbar_backgroundselector.xml</strong></p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1301code13'); return false;">View Code</a> XML</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p130113"><td class="code" id="p1301code13"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;selector</span> <span style="color: #000066;">xmlns:android</span>=<span style="color: #ff0000;">&quot;http://schemas.android.com/apk/res/android&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:state_checked</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #009900;">    <span style="color: #000066;">android:drawable</span>=<span style="color: #ff0000;">&quot;@drawable/navbar_highlight&quot;</span></span>
<span style="color: #009900;">  <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;item</span> <span style="color: #000066;">android:drawable</span>=<span style="color: #ff0000;">&quot;@android:color/transparent&quot;</span>  <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/selector<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>Anche il colore del testo potrebbe essere cambiato un base allo stato del bottone, basta impostare la proprieta&#8217; <em>android:textColor</em> del RadioButton all&#8217;apposito <a href="http://developer.android.com/reference/android/content/res/ColorStateList.html" title="ColorStateList" target="_blank">ColorStateList</a>. </p>
<p>Infine, il codice dell&#8217;Activity principale, src/com.test/NavbarActivity.java</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1301code14'); return false;">View Code</a> JAVA</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p130114"><td class="code" id="p1301code14"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> NavbarActivity  <span style="color: #000000; font-weight: bold;">extends</span> Activity <span style="color: #009900;">&#123;</span>
&nbsp;
  @Override
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCreate<span style="color: #009900;">&#40;</span>Bundle savedInstanceState<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">super</span>.<span style="color: #006633;">onCreate</span><span style="color: #009900;">&#40;</span>savedInstanceState<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    setContentView<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">layout</span>.<span style="color: #006633;">actnavbar</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    RadioButton radioButton<span style="color: #339933;">;</span>
    radioButton <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>RadioButton<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">btnAll</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton.<span style="color: #006633;">setOnCheckedChangeListener</span><span style="color: #009900;">&#40;</span>btnNavBarOnCheckedChangeListener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>RadioButton<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">btnPicture</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton.<span style="color: #006633;">setOnCheckedChangeListener</span><span style="color: #009900;">&#40;</span>btnNavBarOnCheckedChangeListener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>RadioButton<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">btnVideo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton.<span style="color: #006633;">setOnCheckedChangeListener</span><span style="color: #009900;">&#40;</span>btnNavBarOnCheckedChangeListener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>RadioButton<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">btnFile</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    radioButton.<span style="color: #006633;">setOnCheckedChangeListener</span><span style="color: #009900;">&#40;</span>btnNavBarOnCheckedChangeListener<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">private</span> CompoundButton.<span style="color: #006633;">OnCheckedChangeListener</span> btnNavBarOnCheckedChangeListener <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> CompoundButton.<span style="color: #006633;">OnCheckedChangeListener</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> onCheckedChanged<span style="color: #009900;">&#40;</span>CompoundButton buttonView, <span style="color: #000066; font-weight: bold;">boolean</span> isChecked<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>isChecked<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        Toast.<span style="color: #006633;">makeText</span><span style="color: #009900;">&#40;</span>NavbarActivity.<span style="color: #000000; font-weight: bold;">this</span>, buttonView.<span style="color: #006633;">getText</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, Toast.<span style="color: #006633;">LENGTH_SHORT</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>A questo link <a href="http://www.rainbowbreeze.it/site-media/develope/navigationbar_test.zip" title="Example source code">i sorgenti dell&#8217;esempio</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/navigationbar-in-style-iphone-uitabbarcontroller-per-android/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.10 Maverick con le ultime versioni di Thunderbird, Firefox, Libreoffice ecc</title>
		<link>http://www.rainbowbreeze.it/ubuntu-10-10-maverick-con-le-ultime-versioni-di-thunderbird-firefox-libreoffice-ecc/</link>
		<comments>http://www.rainbowbreeze.it/ubuntu-10-10-maverick-con-le-ultime-versioni-di-thunderbird-firefox-libreoffice-ecc/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 06:00:05 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Clementine]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Libreoffice]]></category>
		<category><![CDATA[maverick]]></category>
		<category><![CDATA[Pidgin]]></category>
		<category><![CDATA[Thunderbird]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1289</guid>
		<description><![CDATA[Purtroppo l&#8217;aggiornamento ad Ubunto 11.04 sul pc di casa e sul netbook mi ha lasciato con un po&#8217; di amaro in bocca: ho notato diversi rallentamenti rispetto a prima e sono dovuto passare a Gnome3 perche&#8217; con Unity le cose erano veramente ingestibili (parere personale, ovvio) e un po&#8217; di pacchetti a me utili, tipo prism, [...]]]></description>
			<content:encoded><![CDATA[<p>Purtroppo l&#8217;aggiornamento ad Ubunto 11.04 sul pc di casa e sul netbook mi ha lasciato con un po&#8217; di amaro in bocca: ho notato diversi rallentamenti rispetto a prima e sono dovuto passare a Gnome3 perche&#8217; con Unity le cose erano veramente ingestibili (parere personale, ovvio) e un po&#8217; di pacchetti a me utili, tipo prism, erano stati eliminati. Sul notebook del lavoro ho quindi pensato bene di lasciare la 10.10 con Gnome 2, che va un gioiellino, senza pero&#8217; rinunciare alle ultime versioni dei programmi che uso piu&#8217; spesso.</p>
<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/08/thunderbird_logo_100.jpg"><img class="alignleft size-full wp-image-1291" style="margin-top: 2px; margin-bottom: 2px; margin-left: 4px; margin-right: 4px;" title="thunderbird_logo_100" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/08/thunderbird_logo_100.jpg" alt="" width="85" height="85" /></a><strong>Thunderbird 6</strong>: Mozilla mantiene un PPA con l&#8217;ultima versione di Thunderbird e Lightning, raggiungibile a <a title="Thunderbird Stable Channel Packages" href="https://launchpad.net/~mozillateam/+archive/thunderbird-stable" target="_blank">questo indirizzo</a>. Per installarlo, basta eseguire tre semplici comandi:<br />
<em>sudo add-apt-repository ppa:mozillateam/thunderbird-stable</em><br />
<em> sudo apt-get update</em><br />
<em> sudo apt-get upgrade</em><br />
Piccolo tips: per ottenere in Thunderbird una visualizzazione simile a quella presente in GMail, installare l&#8217;addon <a title="Thunderbird Conversations" href="https://addons.mozilla.org/en-us/thunderbird/addon/gmail-conversation-view/" target="_blank">Thunderbird Conversations</a>.</p>
<p><strong><img class="alignleft size-full wp-image-1292" title="firefox-4-logo_100" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/08/firefox-4-logo_100.png" alt="" width="88" height="85" />Firefox 6</strong>: idem come sopra, anche se il consiglio e&#8217; quello di verificare il supporto degli addon installati all&#8217;ultima versione del browser.<br />
<em>sudo add-apt-repository ppa:mozillateam/firefox-stable</em><br />
<em>sudo apt-get update</em><br />
<em>sudo apt-get upgrade</em><br />
Nel PPA ci sono anche alcune celebri estensioni, come Adblock-plus, Flashblock ecc.</p>
<p><strong><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/08/chromium_logo.png"><img class="alignleft" title="chromium_logo" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/08/chromium_logo.png" alt="" width="85" height="85" /></a>Chromium</strong>: se vi piace vivere &#8220;on the edge&#8221; si puo&#8217; scegliere di aggiornare con la nightly build, oppure usare il PPA di seguito per l&#8217;ultima versione stabile.<br />
<em>sudo add-apt-repository ppa:chromium-daily/stable</em><br />
<em>sudo apt-get update</em><br />
<em>sudo apt-get install chromium-browser</em></p>
<p><strong><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/08/libreoffice-logo.jpg"><img class="alignleft size-full wp-image-1295" title="libreoffice-logo" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/08/libreoffice-logo.jpg" alt="" width="82" height="85" /></a>Libreoffice 3.3.2</strong>: In Ubuntu 10.10 e&#8217; ancora presente Openoffice.org. Per passare a Libreoffice, basta aggiungere l&#8217;apposito PPA e poi installare il pacchetto libreoffice, che rimpiazzera&#8217;, rimuovendolo, OpenOffice.org<br />
<em>sudo add-apt-repository ppa:libreoffice/ppa</em><br />
<em>sudo apt-get update</em><br />
<em>sudo apt-get install libreoffice libreoffice-gnome</em></p>
<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/08/clementine-logo.png"><img class="alignleft size-full wp-image-1294" style="margin-top: 2px; margin-bottom: 2px; margin-left: 4px; margin-right: 4px;" title="clementine-logo" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/08/clementine-logo.png" alt="" width="85" height="85" /></a><strong>Clementine 0.7.1</strong>: un&#8217;ottimo player multimediale a mio avviso, con supporto per streaming radio, media rimuovibili e moltissimo altro. Anche in questo caso, un PPA direttamente dall&#8217;autore<br />
<em>sudo add-apt-repository ppa:me-davidsansome/clementine</em><br />
<em>sudo apt-get update</em><br />
<em>sudo apt-get install clementine</em></p>
<p><img class="alignleft" style="margin-top: 2px; margin-bottom: 2px; margin-left: 4px; margin-right: 4px;" title="pidgin_logo_100" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/08/pidgin_logo_100.png" alt="" width="48" height="85" /><strong>Pidgin 2.9</strong>: Direttamente dagli sviluppatori del noto client di messaggistica multiprotocollo, il PPA con gli ultimi aggiornamenti.<br />
<em>sudo add-apt-repository ppa:pidgin-developers/ppa</em><br />
<em>sudo apt-get update</em><br />
<em>sudo apt-get upgrade</em></p>
<p>Infine, una lista di altri PPA che uso per tenere aggiornati tanti altri pacchetti</p>
<ul>
<li><em>ppa:medibuntu-maintainers/ppa</em>: diversi package multimediali</li>
<li><em>ppa:ubuntu-wine/ppa</em>: per poter eseguire programmi Windows direttamente nella vostra Linux box</li>
<li><a title="UbuntuUpdates.org" href="http://www.ubuntuupdates.org/ppas" target="_blank">UbuntuUpdates.org PPA list</a>: una lunga lista di PPA ufficiali o semi-ufficiali con le ultime release di molte famose applicazioni.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/ubuntu-10-10-maverick-con-le-ultime-versioni-di-thunderbird-firefox-libreoffice-ecc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutto il testing possibile per Android al BetterSoftware 2011</title>
		<link>http://www.rainbowbreeze.it/tutto-il-testing-possibile-per-android-bettersoftware-2011/</link>
		<comments>http://www.rainbowbreeze.it/tutto-il-testing-possibile-per-android-bettersoftware-2011/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 08:55:09 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Talk]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1287</guid>
		<description><![CDATA[Ecco la registrazione del mio intervento &#8220;Tutto il testing possibile per Android&#8221;, che ho tenuto durante il BetterSoftware a Firenze. Purtroppo 20 minuti per il mio intervento sono stati veramente pochi (ne avevo chiesti il doppio), quindi mi sono dovuto adattare con quello che avevo, tagliando e accorciando come un forsennato. Scusatemi :( Qui il [...]]]></description>
			<content:encoded><![CDATA[<p>Ecco la registrazione del mio intervento <a title="Tutto il testing possibile su Android" href="http://www.bettersoftware.it/conference/talks/tutto-il-testing-possibile-su-android" target="_blank">&#8220;Tutto il testing possibile per Android&#8221;</a>, che ho tenuto durante il <a title="BetterSoftware" href="http://www.bettersoftware.it/" target="_blank">BetterSoftware</a> a Firenze. Purtroppo 20 minuti per il mio intervento sono stati veramente pochi (ne avevo chiesti il doppio), quindi mi sono dovuto adattare con quello che avevo, tagliando e accorciando come un forsennato. Scusatemi :(</p>
<div><video width="540" height="361" class="projekktor" controls="controls" src="/media/conference/videos/tutto-il-testing-possibile-su-android.mp4"><object width="540" height="361" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.rainbowbreeze.it/wordpress/wp-includes/js/tinymce/plugins/media/moxieplayer.swf" /><param name="flashvars" value="url=/media/conference/videos/tutto-il-testing-possibile-su-android.mp4&amp;poster=/wordpress/wp-admin/" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="true" /><embed width="540" height="361" type="application/x-shockwave-flash" src="http://www.rainbowbreeze.it/wordpress/wp-includes/js/tinymce/plugins/media/moxieplayer.swf" flashvars="url=/media/conference/videos/tutto-il-testing-possibile-su-android.mp4&amp;poster=/wordpress/wp-admin/" allowfullscreen="true" allowscriptaccess="true" /></object><br />
</video>
</div>
<p>Qui il <a title="Download del video dell'intervento" href="http://www.bettersoftware.it/media/conference/videos/tutto-il-testing-possibile-su-android.mp4">link diretto al file video</a>, mentre di seguito le slide.</p>
<div id="__ss_8445830"><strong style="display: block; margin: 12px 0 4px;"><a title="Testing in Android: automatici, di integrazione, TDD e scenari avanzati" href="http://www.slideshare.net/rainbowbreeze/testing-in-android-automatici-di-integrazione-tdd-e-scenari-avanzati" target="_blank">Testing in Android: automatici, di integrazione, TDD e scenari avanzati</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8445830" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/rainbowbreeze" target="_blank">Alfredo Morresi</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/tutto-il-testing-possibile-per-android-bettersoftware-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.bettersoftware.it/media/conference/videos/tutto-il-testing-possibile-su-android.mp4" length="179840391" type="video/mp4" />
		</item>
		<item>
		<title>Conflitti nella UX delle Google Android App</title>
		<link>http://www.rainbowbreeze.it/google-ux-conflict/</link>
		<comments>http://www.rainbowbreeze.it/google-ux-conflict/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 14:29:50 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1269</guid>
		<description><![CDATA[Magari ingenuamente, uno si puo&#8217; anche aspettare che le applicazioni fatte da Google per Android seguano una UX comune e, tra loro, abbiano una buona coerenza nell&#8217;interfaccia. E invece ecco cosa capita oggigiorno. Google Shopper: spunta una Navigation Bar in basso, in pieno stile iPhone TabBar, mai vista in altre app Google. Google Music: Nel [...]]]></description>
			<content:encoded><![CDATA[<p>Magari ingenuamente, uno si puo&#8217; anche aspettare che le applicazioni fatte da Google per Android seguano una UX comune e, tra loro, abbiano una buona coerenza nell&#8217;interfaccia. E invece ecco cosa capita oggigiorno.</p>
<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_shopper.png"><img class="size-medium wp-image-1270 alignnone" style="margin-top: 2px; margin-bottom: 2px; margin-left: 4px; margin-right: 4px;" title="Google Shopper" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_shopper-180x300.png" alt="Google Shopper" width="180" height="300" /></a><a title="Google Shopper" href="http://googlemobile.blogspot.com/2011/07/finding-great-deals-is-easier-with.html" target="_blank">Google Shopper</a>: spunta una <strong>Navigation Bar</strong> in basso, in pieno stile iPhone TabBar, mai vista in altre app Google.</p>
<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_music.jpg"><img class="alignnone size-medium wp-image-1271" title="Google Music" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_music-300x225.jpg" alt="Google Music" width="300" height="225" /></a><a title="Google Music" href="http://music.google.com" target="_blank">Google Music</a>: Nel secondo screenshot il <strong>menu&#8217; contestuale</strong> dell&#8217;elemento e&#8217; completamente diverso da come appare nei contatti e da come avevano caldamente consigliato al Google IO del 2010. L&#8217;<strong>Action Bar</strong> e&#8217; assente e spunta una <strong>Navigation Bar</strong> in alto, a scorrimento orizzontale, che ricorda molto l&#8217;interfaccia Panorama di WP7, dove per indicare che c&#8217;e&#8217; qualcosa a destra e a sinistra si lascia, appunto, troncato il titolo di quello che c&#8217;e&#8217; ai lati.</p>
<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_plus.png"><img class="alignnone size-medium wp-image-1272" title="GooglePlus" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_plus-180x300.png" alt="GooglePlus" width="180" height="300" /></a><strong>Google+</strong> utilizza l&#8217;<strong>Action Bar</strong>, mentre la <strong>Navigation Bar</strong> appena sotto e&#8217; molto diversa da quanto visto fino ad oggi. Difficile da leggere e da navigare al tocco, conta comunque sullo swipe delle schermate verso destra e verso sinistra, indicando con delle freccine che ci sono ancora contenuti ai quali accedere ai lati della vista su cui si e&#8217; focalizzati.</p>
<p><span id="more-1269"></span><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_docs.jpg"><img class="size-medium wp-image-1274" title="Google Docs" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_docs-180x300.jpg" alt="Google Docs" width="180" height="300" /></a><strong>Google Docs</strong> utuilizza la stessa <strong>Navigation Bar</strong>  di Google+, pero&#8217; ha un differente <strong>menu&#8217; contestuale</strong> degli elementi rispetto a Google Music.</p>
<p><a href="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_market.png"><img class="alignnone size-medium wp-image-1273" title="Android Market" src="http://www.rainbowbreeze.it/wordpress/wp-content/uploads/2011/07/googleux_market-180x300.png" alt="Android Market" width="180" height="300" /></a>Anche il nuovo <a title="New Android Market" href="http://googlemobile.blogspot.com/2011/07/new-android-market-for-phones-with.html" target="_blank">Android Market</a> non scampa a qualche incoerenza con le altre app made-in Mountain View. <strong>Action Bar</strong> con navigazione incorporata (la freccia a sinistra), e appena sotto un panel che duplica la sezione dove siamo, con nessuna opzione di navigazione possibile.</p>
<p>Non sono un designer, ma se mi accorgo io di tutte queste macroscopiche incoerenze, figuriamoci l&#8217;occhio allenato di chi lo fa per mestiere. Tra l&#8217;altro, e&#8217; anche difficile prendere a modello qualcosa per poi seguirla e riprodurla nelle proprie applicazioni!</p>
<p>Qualche sito utile sul tema: <a title="Android UI Design Patterns" href="http://www.androiduipatterns.com/">Android UI Design Patterns</a>, <a title="Android Patterns" href="http://www.androidpatterns.com/" target="_blank">Android Patterns</a>, <a title="Top Tips for Android UIs - Getting the Magic on Tablets" href="http://www.slideshare.net/motodev/top-tips-for-android-uis-getting-the-magic-on-tablets">Top Tips for Android UIs &#8211; Getting the Magic on Tablets</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/google-ux-conflict/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Settembre, un mese di hackathon alle porte!</title>
		<link>http://www.rainbowbreeze.it/settembre-un-mese-di-hackathon-alle-porte/</link>
		<comments>http://www.rainbowbreeze.it/settembre-un-mese-di-hackathon-alle-porte/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 12:26:49 +0000</pubDate>
		<dc:creator>Alfredo</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Hackathon]]></category>
		<category><![CDATA[Hackitaly]]></category>
		<category><![CDATA[overtheair]]></category>

		<guid isPermaLink="false">http://www.rainbowbreeze.it/?p=1267</guid>
		<description><![CDATA[Il fatto che sia un appassionato di hackathon e&#8217; cosa risaputa. Che pero&#8217; a Settembre ce ne saranno ben due a cui partecipero&#8217;, e&#8217; una piacevole novita&#8217; anche per me. HackItaly, 17 Settembre, Milano. Max Ciociola e Stefano Bernardi tornano (stavolta sembra per davvero) con il secondo hackathon organizzato da HackItaly. Abbastanza generalista, probabilmente incentrato [...]]]></description>
			<content:encoded><![CDATA[<p>Il fatto che sia un appassionato di <strong>hackathon</strong> e&#8217; cosa risaputa. Che pero&#8217; a <strong>Settembre ce ne saranno ben due</strong> a cui partecipero&#8217;, e&#8217; una piacevole novita&#8217; anche per me.</p>
<p><a title="HackItaly" href="http://hackitaly.org/" target="_blank">HackItaly</a>, 17 Settembre, Milano. <a title="Max Ciociola su Twitter" href="http://m.twitter.com/maxciociola" target="_blank">Max Ciociola</a> e <a title="Stefano Berdardi" href="http://twitter.com/stefanobernardi" target="_blank">Stefano Bernardi</a> tornano (stavolta sembra per davvero) con il secondo hackathon organizzato da <a title="HackItaly" href="http://www.twitter.com/hackitaly" target="_blank">HackItaly</a>. Abbastanza generalista, probabilmente incentrato su API per la musica e altri servizi simili. Non c&#8217;e&#8217; vincolo di piattaforma o di tecnologia, anche se a quello precedente ho visto molte creazioni web, e qualcosa per mobile.</p>
<p><a title="OverTheAir hackathon" href="http://overtheair.org/blog/2011/07/24/4-years-of-hack-a-thons/" target="_blank">OverTheAir</a>, 30 Settembre e 1 Ottobre, Londra. Appuntamento imperdibile per tutti gli appassionati del mobile, caratterizzato dall&#8217;hackathon notturno, tra venerdi&#8217; e sabato mattina, tutto incentrato su smarphone e tablet. Questa sara&#8217; il terzo anno che mi vedra&#8217; presente, ed ogni volta ho sempre avuto modo di &#8220;assaggiare&#8221; un uso fantastico delle tecnologie piu&#8217; particolari: Android quando ancora era alle prime luci, LBS e caccie al tesoro via GPS quando ancora Foursquare non era nato, utilizzo di acceleromentri quando ancora l&#8217;n95 era uno dei pochi telefoni ad esserne equipaggiato. Insomma, vale la pena solo guardarsi lo showcase di applicazioni presentate per capire molti dei trending topic dei prossimi 1-2 anni.</p>
<p>Al solito, se potete partecipate e, se volete, facciamo qualcosa assieme. Io codero&#8217; cose su Android, per il resto sono al vostro servizio! ;)</p>
<p>E non e&#8217; detto che, come <a title="WhyMCA Hackathon" href="http://www.whymca.org/evento/whymca-hackathon-maggio-2011" target="_blank">WhyMCA</a>, non riproporremo anche noi qualcosa di simile intorno a Novembre-Dicembre.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rainbowbreeze.it/settembre-un-mese-di-hackathon-alle-porte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

