<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7583067994184332516</id><updated>2011-11-27T16:52:55.409-08:00</updated><category term='linux'/><category term='firefox'/><category term='firefox 4.0'/><category term='android'/><category term='java'/><category term='ogg'/><category term='html5'/><category term='browser'/><category term='informatica'/><category term='codec'/><category term='ecosostenibilità'/><category term='programmazione'/><category term='smartphone'/><category term='JavaScript'/><category term='energie rinnovabili'/><title type='text'>Blogsostenibile.ch</title><subtitle type='html'>Software libero, ambiente, energie rinnovabili e altro</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blogsostenibile.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blogsostenibile.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jak</name><uri>http://www.blogger.com/profile/16448635336654227432</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-VSU7JYjSN4/S_fXJFpO34I/AAAAAAAAACM/y-YAXaoIQNU/S220/blogger-small.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7583067994184332516.post-6461329688586047308</id><published>2010-07-11T02:37:00.000-07:00</published><updated>2010-07-11T03:22:32.231-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>foreach() in JavaScript</title><content type='html'>Qualche tempo fa il mio collega Jak aveva postato come creare un foreach in Java. Questo tipo di for esiste anche in JavaScript (anche se molti non lo chiamano foreach ma for in). L'idea di fondo è sempre la stessa e può funzionare con qualsiasi tipo di oggetto, non solo arrays:&lt;div&gt;for(var object in objects){&lt;/div&gt;&lt;div&gt;     //fai qualcosa con object&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;Object è chiaramente uno degli oggetti in objects, quindi il for itera lungo il contenuto di objects.&lt;/div&gt;&lt;div&gt;Il problema in JavaScript è che l'enumerazione in questo caso contiene anche funzioni e proprietà del prototype che è presente in JavaScript (per chi non lo sapesse, una specie di superclasse di Java con diverse proprietà). Per filtrare questi valori è necessario aggiungere un paio di controlli:&lt;/div&gt;&lt;div&gt;for(var object in objects){&lt;/div&gt;&lt;div&gt;     if(typeof objects[object] !== 'function'){&lt;/div&gt;&lt;div&gt;          //fai qualcosa con object&lt;/div&gt;&lt;div&gt;     }&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;Ricordiamoci però che con il foreach non abbiamo garanzie sull'ordine degli oggetti all'interno dell'oggetto objects. Per averli estratti in ordine bisognerà utilizzare un for normale.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope it helps ;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583067994184332516-6461329688586047308?l=blogsostenibile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogsostenibile.blogspot.com/feeds/6461329688586047308/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://blogsostenibile.blogspot.com/2010/07/foreach-in-javascript.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/6461329688586047308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/6461329688586047308'/><link rel='alternate' type='text/html' href='http://blogsostenibile.blogspot.com/2010/07/foreach-in-javascript.html' title='foreach() in JavaScript'/><author><name>Masiar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583067994184332516.post-7590684763658079705</id><published>2010-06-26T05:35:00.000-07:00</published><updated>2010-07-11T02:37:56.221-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Anatomia di un'applicazione Android</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Ho pensato di scrivere questo post perchè nonostante sia da qualche tempo che lavoricchio dietro Android, non mi sono mai interessato veramente a quale sia l'anatomia di un'applicazione.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Dunque, ci sono quattro principali blocchi per la costruzione di un'applicazione per Android. Essi sono:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Activity&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Intent Receiver&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Service&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Content Provider&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="color: rgb(204, 204, 204);   line-height: 18px; font-family:'Lucida Grande', 'Trebuchet MS', Verdana, Helvetica, Arial, sans-serif;font-size:12px;"&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style=" line-height: 26px;"&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Chiaramente non tutte le applicazioni hanno bisogno di averle tutte e quattro, ma di norma le applicazioni sono una combinazione di queste.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style=" line-height: 26px;"&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Una volta che si è deciso quali componenti sono necessari per l'applicazione, vanno scritti nel file AndroidManifest.xml. Questo è un file (in formato XML) dove sono dichiarati tutti i componenti delle applicazioni ed i loro requisiti.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style=" line-height: 26px;"&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;&lt;span class="Apple-style-span" style="line-height: 26px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Activity&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Le activity sono i blocchi più comuni per la creazione di applicazioni. Di norma un'activity è uno schermo singolo dell'applicazione. Ogni activity è implementata in una singola classe che estende la classe Activity e mostra la user interface composta da Views e risponde agli eventi. Molte applicazioni chiaramente consistono di schermi multipli. Per esempio un'applicazione per mandare SMS potrebbe avere uno schermo che mostra la lista di contatti per scegliere il destinatario di un messaggio, un secondo schermo per scrivere il messaggio al contatto ed altri schermi per vedere i messaggi già mandati. Ognuno di questi schermi deve essere implementato come Activity. Muoversi da uno schermo all'altro si esegue semplicemente startando una nuova activity. In alcuni casi un'activity può ritornare dei valori all'activity precedente. Per esempio un'activity che sceglie una foto dalla library ritornerà all'activity precedente la foto scelta.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Quando un nuovo schermo si apre, lo schermo precedente si mette in pausa ed è messo su una stack history. L'user può comunque navigare indietro, in schermi precedentemente aperti. Gli schermi possono anche essere eliminati dalla stack history quando non sono più necessari. Android mantiene la stack history per ogni applicazione lanciata.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Intent and Intent Filters&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Android usa una classe speciale chiamata Intent per muoversi da schermo a schermo. Un intent descrive cosa un'applicazione vuole che venga effettuato. Le due parti più importanti della struttura dell'intent sono l'azione e i dati su dove deve agire. I tipici valori per l'azione sono MAIN (la principale per l'activity), VIEW, PICK, EDIT, ecc. I dati sono espressi come URI. Per esempio per vedere le informazioni di una persona (attraverso il contatto nella rubrica), bisogna creare un intent che con l'azione VIEW e con il data settato come URI che rappresenta quella persona. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;C'è una classe legata all'intent che è l'IntentFilter. Mentre l'intent è l'effettiva richiesta di fare qualcosa, l'intent filter è una descrizione di quali intenti un'activity è capace di manipolare. Un'activity che mostra le informazioni di contatto di una persona pubblicherà un IntentFilter che mostrerà che è capace di manipolare l'azione VIEW quando applicata su un dato che rappresenta una persona. Le activity pubblicano i loro IntentFilters nel file AndroidManifest.xml.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="color: rgb(0, 0, 0);  line-height: normal;  font-family:Georgia, serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Navigare da schermo a schermo è compiuto risolvendo intenti. Per navigare in avanti, un'activity chiama startActivity(myIntent). Il sistema quindi cerca gli intent filters per tutte le applicazioni installate e prende l'activity per l'acquale l'intent filter combacia meglio con myIntent. La nuova activity è informata dell'intent e la lancia. Il processo di risolvimento di intent avviene in run time quando startActivity è chiamato, il che offre due benefici:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Le activity possono riutilizzare funzionalità di altri componenti semplicemente facendo una richiesta nella forma di un intent&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Le activity possono essere rimpiazzate in qualsiasi momento da una nuova activity con un IntentFilter equivalente&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Intent Receiver&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;L'IntentReceiver è usato quando si vuole far eseguire qualcosa all'applicazione in reazione ad un evento esterno. Per esempio, quando il telefono suona, o quando c'è una rete a cui collegarsi, o quando è mezzanotte. Gli intent receivers non hanno una UI, ma possono usare il NotificationManager per avvertire l'utente se qualcosa di interessante è successo. Anche gli intent receivers sono registrati nell'AndroidManifest.xml, ma si possono anche registrare dal codice usando Context.registerReceiver(). L'applicazione che lancia l'intent receiver non deve star per forza runnando per fare in modo che l'intent receiver sia chiamato: il sistema starterà da solo l'applicazione se necessario quando un intent receiver è eseguito. Le applicazioni possono anche mandare i propri intent ad altre applicazioni attraverso Context.broadcastintent().&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Due parole sui Service: un service è un codice che runna senza UI. Un buon esempio è un media player che sta riproducendo delle canzoni da una playlist. In un media player ci saranno una o più activities che permettono all'utente di scegliere le canzoni e farle riprodurre. In ogni caso la musica si suona continuerà a suonare anche se l'utente naviga altrove (in altre applicazioni per esempio), questo perche l'activity del media player può lanciare un service usando Context.startService() in background per fare in modo che la musica continui. La musica continuerà a suonare finchè non finisce. Un'altra cosa interessante è che ci si può connettere ai services attraverso Context.bindService(). Quando connesso ad un service, si può comunicare attraverso un'interfaccia esposta da quest'ultimo. Nell'esempio del media player, questo servizio potrebbe permettere all'utente di fermare o far ricominciare la musica.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Content Provider&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Le applicazioni possono conservare dati in files, database SQLite, o ogni altri tipo di meccanismo che ha senso. Un content provider è utile quando si vuole condividere le informazioni di un'applicazione con altre applicazioni. Un content provider è una classe che implementa un set di metodi standard per lasciar depositare e ritirare informazioni dalle altre applicazioni. Per avere più informazioni riguardo al content provider comunque, consiglio di riferirsi all'API di Android sotto Accessing Content Providers.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" style="text-align: left;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;color:#000000;"&gt;&lt;span class="Apple-style-span" style="line-height: normal; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Hope it helps ;).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583067994184332516-7590684763658079705?l=blogsostenibile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogsostenibile.blogspot.com/feeds/7590684763658079705/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://blogsostenibile.blogspot.com/2010/06/anatomia-di-unapplicazione-android.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/7590684763658079705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/7590684763658079705'/><link rel='alternate' type='text/html' href='http://blogsostenibile.blogspot.com/2010/06/anatomia-di-unapplicazione-android.html' title='Anatomia di un&apos;applicazione Android'/><author><name>Masiar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583067994184332516.post-1926913403719727498</id><published>2010-06-15T01:58:00.000-07:00</published><updated>2010-06-15T02:48:01.388-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programmazione'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='informatica'/><title type='text'>Ubuntu LTS e Virtualbox: ambiente di sviluppo perfetto</title><content type='html'>Visto che ogni sei mesi Canonical rilascia una nuova versione di Ubuntu, e che di solito ogni versione porta con se numerose novità (oltre alle versioni aggiornate di tutti i pacchetti), di fatto si è costretti a fare un avanzamento di versione ogni volta, o per chi non si fida (come me), una reinstallazione.&lt;br /&gt;&lt;br /&gt;Un pc di sviluppo però dovrebbe essere il meno soggetto possibile a cambiamenti, soprattutto se lo usiamo per lavoro (dove il tempo ha un costo preciso) ma anche se programmiamo per hobby, dato che è un'attività nella quale si investono molte ore. Come far convivere quindi la comodità di software sempre aggiornato per un normale utilizzo desktop, con la necessità di un ambiente di sviluppo stabile e sempre funzionante?&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Ci vengono in aiuto &lt;span style="font-weight: bold;"&gt;Virtualbox&lt;/span&gt; (installabile tramite il Software Center) e la recente versione con &lt;span style="font-weight: bold;"&gt;supporto a lungo termine&lt;/span&gt; 10.04 di Ubuntu.&lt;br /&gt;&lt;br /&gt;Una macchina guest con Ubuntu 10.04 è di fatto un unico file contenente un ambiente desktop con &lt;span style="font-weight: bold;"&gt;aggiornamenti di sicurezza e bugfix garantiti per 3 anni&lt;/span&gt;, facilmente portabile ed &lt;span style="font-weight: bold;"&gt;eseguibile ovunque&lt;/span&gt; sia installato Virtualbox. Per quanto riguarda gli IDE, come ad esempio Eclipse e Netbeans, possono essere installati prelevandoli direttamente dai repository di Ubuntu, o scaricandoli dalle pagine ufficiali. In questo caso tramite il sistema di aggiornamento integrato possiamo avere installata sempre l'ultima versione.&lt;br /&gt;&lt;br /&gt;I vantaggi di un approccio di questo tipo sono molti. Innanzitutto, installando le Guest Additions nella macchina guest potremmo usarla praticamente senza renderci conto di trovarci in una virtual machine.&lt;br /&gt;Avere tutto in un unico file poi permette di eseguire backup semplici e sicuri (i più paranoici potrebbero cifrare il file della virtual machine, per esempio).&lt;br /&gt;Per avere a disposizione i propri progetti anche al di fuori della macchina di sviluppo, ci si può appoggiare a &lt;a href="https://www.dropbox.com/"&gt;Dropbox&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ci ho installato Eclipse con l'ambiente di sviluppo di Android e devo dire che non ci si accorge della differenza!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583067994184332516-1926913403719727498?l=blogsostenibile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogsostenibile.blogspot.com/feeds/1926913403719727498/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://blogsostenibile.blogspot.com/2010/06/ubuntu-lts-e-virtualbox-ambiente-di.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/1926913403719727498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/1926913403719727498'/><link rel='alternate' type='text/html' href='http://blogsostenibile.blogspot.com/2010/06/ubuntu-lts-e-virtualbox-ambiente-di.html' title='Ubuntu LTS e Virtualbox: ambiente di sviluppo perfetto'/><author><name>Jak</name><uri>http://www.blogger.com/profile/16448635336654227432</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-VSU7JYjSN4/S_fXJFpO34I/AAAAAAAAACM/y-YAXaoIQNU/S220/blogger-small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583067994184332516.post-1555896973019226486</id><published>2010-06-10T06:42:00.000-07:00</published><updated>2010-06-15T02:49:49.678-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programmazione'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='informatica'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Cambiare le dimensioni di un'immagine in Android</title><content type='html'>Ultimamente ho deciso di testare un po' l'API di Android, così ho scaricato il plugin per Eclipse e mi sono messo a scrivere un semplice solitario simile a quello di Windows. Appena cominciato a lavorare sull'interfaccia grafica ho avuto subito un problema: le immagini delle carte erano troppo grandi.&lt;div&gt;Ho cercato un modo semplice semplice per ridurre le dimensioni di un'immagine, ma non sono riuscito a trovare nulla. Alla fine ho scritto un metodo che lo facesse per me:&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;    public void resize(){&lt;br /&gt;      int width = img.getWidth();&lt;br /&gt;      int height = img.getHeight();&lt;br /&gt;&lt;br /&gt;      int newWidth = 40;&lt;br /&gt;      int newHeight = 60;&lt;br /&gt;&lt;br /&gt;      // calculate the scale&lt;br /&gt;      float scaleWidth = (float) newWidth / width;&lt;br /&gt;      float scaleHeight = (float) newHeight / height;&lt;br /&gt;&lt;br /&gt;      // create a matrix for the manipulation&lt;br /&gt;      Matrix matrix = new Matrix();&lt;br /&gt;&lt;br /&gt;      // resize the bit map&lt;br /&gt;      matrix.postScale(scaleWidth, scaleHeight);&lt;br /&gt;&lt;br /&gt;      // recreate the new Bitmap&lt;br /&gt;      Bitmap resizedBitmap = Bitmap.createBitmap(img, 0, 0,width, height, matrix, true);&lt;br /&gt;      img = resizedBitmap;&lt;br /&gt;  }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Mi scuso per i commenti in inglese, ma sono ormai abituato. Il codice semplicemente all'inizio prende la grandezza attuale dell'immagine, poi setta in due variabili le nuove width/height e scala il tutto. In seguito creo una matrice che conterrà il bitmap ridimensionato, poi creo l'oggetto Bitmap e lo risetto nella variabile che conteneva la mia immagine troppo grande.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Spero che questo post sia utile a qualcuno ;).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583067994184332516-1555896973019226486?l=blogsostenibile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogsostenibile.blogspot.com/feeds/1555896973019226486/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://blogsostenibile.blogspot.com/2010/06/cambiare-le-dimensioni-di-unimmagine-in.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/1555896973019226486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/1555896973019226486'/><link rel='alternate' type='text/html' href='http://blogsostenibile.blogspot.com/2010/06/cambiare-le-dimensioni-di-unimmagine-in.html' title='Cambiare le dimensioni di un&apos;immagine in Android'/><author><name>Masiar</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583067994184332516.post-6520895905237081675</id><published>2010-06-10T04:31:00.000-07:00</published><updated>2010-06-10T07:58:30.625-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programmazione'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='informatica'/><title type='text'>foreach() in Java</title><content type='html'>Oggi ho scoperto con piacere che in Java è possibile usare qualcosa di molto simile al foreach() di PHP.&lt;br /&gt;Sono io che ero male informato oppure questa non è una caratteristica molto conosciuta?&lt;br /&gt;&lt;br /&gt;In ogni caso, la sintassi è la seguente:&lt;br /&gt;&lt;blockquote&gt;for (Object single_object : objects_arraylist) {&lt;br /&gt;    casted_object = (OriginalClass)single_object;&lt;br /&gt;    [...]&lt;br /&gt;}&lt;/blockquote&gt;&lt;a name='more'&gt;&lt;/a&gt;per fare un esempio:&lt;br /&gt;&lt;blockquote&gt;        ArrayList numeri = new ArrayList(200);&lt;br /&gt;        int i;&lt;br /&gt;&lt;br /&gt;        for(i = 0; i &lt; 200; i++){&lt;br /&gt;            numeri.add(new Integer(i));&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        for (Object numero : numeri){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;            temp = (Integer)numero;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;            System.out.println(temp.toString());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        }&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;è indubbiamente comodo dato che permette di non dover ogni volta memorizzare in una variabile il valore di .size() e usare un contatore.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583067994184332516-6520895905237081675?l=blogsostenibile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogsostenibile.blogspot.com/feeds/6520895905237081675/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://blogsostenibile.blogspot.com/2010/06/foreach-in-java.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/6520895905237081675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/6520895905237081675'/><link rel='alternate' type='text/html' href='http://blogsostenibile.blogspot.com/2010/06/foreach-in-java.html' title='foreach() in Java'/><author><name>Jak</name><uri>http://www.blogger.com/profile/16448635336654227432</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-VSU7JYjSN4/S_fXJFpO34I/AAAAAAAAACM/y-YAXaoIQNU/S220/blogger-small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583067994184332516.post-1371019621039477432</id><published>2010-06-07T06:46:00.000-07:00</published><updated>2010-06-10T04:57:50.884-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='informatica'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Le meraviglie del multiprocesso di Internet Explorer</title><content type='html'>Questa vale la pena raccontarla.&lt;br /&gt;&lt;br /&gt;Oggi, dopo un sacco di tempo ho fatto il boot di Windows 7. Ebbene, avvio internet explorer (mai usato, tant'è che è comparso il popup di benvenuto) e apro google translate... il browser si congela per sei o sette secondi per poi chiedermi di installare flash player...???&lt;br /&gt;&lt;br /&gt;Ora invece sto scrivendo questo post da una revisione minefield di mozilla (3.7a5pre, per la precisione) e tutto procede senza intoppi : D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583067994184332516-1371019621039477432?l=blogsostenibile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogsostenibile.blogspot.com/feeds/1371019621039477432/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://blogsostenibile.blogspot.com/2010/06/le-meraviglie-del-multiprocesso-di.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/1371019621039477432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/1371019621039477432'/><link rel='alternate' type='text/html' href='http://blogsostenibile.blogspot.com/2010/06/le-meraviglie-del-multiprocesso-di.html' title='Le meraviglie del multiprocesso di Internet Explorer'/><author><name>Jak</name><uri>http://www.blogger.com/profile/16448635336654227432</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-VSU7JYjSN4/S_fXJFpO34I/AAAAAAAAACM/y-YAXaoIQNU/S220/blogger-small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583067994184332516.post-3722680168091790094</id><published>2010-06-04T13:34:00.000-07:00</published><updated>2010-06-10T04:57:32.065-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smartphone'/><category scheme='http://www.blogger.com/atom/ns#' term='informatica'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Samsung Galaxy S, da subito anche in Europa e Svizzera</title><content type='html'>Il maginifico Galaxy S, il terminale di Samsung presentato a Zurigo il 4 giugno, sarà reso disponibile in 110 nazioni contemporaneamente, stando a quando sostiene &lt;a href="http://www.koreaittimes.com/story/9083/galaxy-s-will-be-available-110-countries"&gt;Korea IT Times&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Gli operatori europei fin qui accertati sono Orange, la quale opera in molti paesi del continente (tra i quali Francia, Inghilterra e &lt;span style="font-weight: bold;"&gt;Svizzera&lt;/span&gt;) e Deutsche Telecom, ma ve ne sono molti altri.&lt;br /&gt;Non sorprende che Samsung abbia pianificato un lancio in grande stile per il suo ultimo terminale: possiede tutte le potenzalità per imporsi sul mercato, in special modo quello europeo dove molti dei migliori smartphone quasi certamente non arriveranno (come HTC Evo 4G e HTC Incredibile, per esempio).&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Le caratteristiche tecniche sono a dir poco strabilianti. La parte più evidente è sicuramente il &lt;span style="font-weight: bold;"&gt;display Super AMOLED da 4"&lt;/span&gt;, che regala un'immagine davvero lumionsa e ben definita.&lt;br /&gt;Ma le novità di rilievo sono soprattutto sotto il cofano: la nuova &lt;span style="font-weight: bold;"&gt;piattaforma Hummingbird&lt;/span&gt; &lt;i style="font-style: italic;"&gt;(cpu Cortex-A8 e gpu PowerVR &lt;/i&gt;&lt;span style="font-style: italic;"&gt;SGX540&lt;/span&gt;&lt;i&gt;)&lt;/i&gt; a detta del produttore sarà in grado di processare &lt;span style="font-weight: bold;"&gt;90 milioni di triangoli al secondo.&lt;/span&gt; Nexus One e iPhone 3GS si fermano a 22 e 28 mentre Wii e &lt;span style="font-weight: bold;"&gt;Playstation 3&lt;/span&gt; a 100 e rispettivamente &lt;span style="font-weight: bold;"&gt;250&lt;/span&gt;, il salto prestazionale è sorprendente.&lt;br /&gt;Sicuramente otterrà enormi benefici dall'update 2.2 Froyo di Android, che ha introdotto il compilatore JIT per il codice Java.&lt;br /&gt;&lt;br /&gt;Per quanto riguarda il comparto video finalmente anche noi europei potremo &lt;span style="font-weight: bold;"&gt;registrare video in 720p a 30fps&lt;/span&gt;, con un'ampia scelta di codec tra cui i migliori sicuramente Xvid e H.264, mentre non viene menzionato quale sia o quali siano i codec audio disponibili.&lt;br /&gt;Sarebbe una bella cosa trovare il supporto a WebM in una delle prossime versioni di Android.&lt;br /&gt;Per i più curiosi, è disponibile anche una &lt;a href="http://galaxys.samsungmobile.com/specification/spec.html?ver=high"&gt;lista ufficiale&lt;/a&gt; delle caratteristiche tecniche.&lt;br /&gt;&lt;br /&gt;A proposito dello schermo, si nota con piacere che i problemi di Nexus One e Desire non affliggono lo smarthphone di Samsung:&lt;br /&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hVlsRCMltDg&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6&amp;amp;hd=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/hVlsRCMltDg&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6&amp;amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="340" width="560"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Chi ha avuto occasione di provarlo parla di un touchscreen fluido e reattivo.&lt;br /&gt;&lt;br /&gt;Finalmente un terminale Android con tutte le carte in regola disponibile in tutto il mondo!&lt;br /&gt;Per i più impazienti, è già possibile &lt;a href="http://www.expansys.com/d.aspx?i=198072"&gt;effettuare un preordine&lt;/a&gt; ma trattandosi della versione sbloccata il costo è alto, personlamente consiglio di aspettarlo in abbinamento a un contratto (che è esattamente quello che farò io).&lt;br /&gt;Samsung ha confermato la sua &lt;span style="font-weight: bold;"&gt;disponibilità per il mese di luglio&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583067994184332516-3722680168091790094?l=blogsostenibile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogsostenibile.blogspot.com/feeds/3722680168091790094/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://blogsostenibile.blogspot.com/2010/06/samsung-galaxy-s-da-subito-anche-in.html#comment-form' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/3722680168091790094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/3722680168091790094'/><link rel='alternate' type='text/html' href='http://blogsostenibile.blogspot.com/2010/06/samsung-galaxy-s-da-subito-anche-in.html' title='Samsung Galaxy S, da subito anche in Europa e Svizzera'/><author><name>Jak</name><uri>http://www.blogger.com/profile/16448635336654227432</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-VSU7JYjSN4/S_fXJFpO34I/AAAAAAAAACM/y-YAXaoIQNU/S220/blogger-small.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583067994184332516.post-2759898843321381216</id><published>2010-05-23T17:50:00.000-07:00</published><updated>2010-06-10T04:57:11.286-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ecosostenibilità'/><category scheme='http://www.blogger.com/atom/ns#' term='energie rinnovabili'/><title type='text'>Fusione nucleare: l'energia del futuro</title><content type='html'>Le &lt;span style="font-weight: bold;"&gt;centrali &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;a fusione nucleare&lt;/span&gt; rappresentano indubbiamente la ricerca più ambiziosa e promettente nel campo della produzione di energia.&lt;br /&gt;&lt;br /&gt;Permetterebbero di produrre &lt;span style="font-weight: bold;"&gt;grandi quantità di energia&lt;/span&gt; (il processo è della stessa categoria di quello che &lt;span style="font-weight: bold;"&gt;alimenta il&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Sole&lt;/span&gt;) usando poche, facilmente reperibili materie prime.&lt;br /&gt;&lt;br /&gt;Gli unici requisiti di partenza sono infatti &lt;span style="font-weight: bold;"&gt;Deuterio&lt;/span&gt; e &lt;span style="font-weight: bold;"&gt;Litio&lt;/span&gt;, il primo è praticamente inesauribile (è un isotopo stabile dell'idrogeno che si trova ogni &lt;span style="font-weight: bold;"&gt;3 atomi su 20000&lt;/span&gt;, pensate alla quantità inimmaginabile di H che compone le molecole d'acqua degli oceani) e il secondo è un &lt;span style="font-weight: bold;"&gt;metallo abbondante&lt;/span&gt;.&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Come &lt;span style="font-weight: bold;"&gt;unico prodotto di scarto&lt;/span&gt; della fusione viene prodotto &lt;span style="font-weight: bold;"&gt;Elio&lt;/span&gt; (He), un gas assolutamente &lt;span style="font-weight: bold;"&gt;inerte&lt;/span&gt; (4He è considerato il nucleo più stabile in assoluto) che non avrebbe quindi &lt;span style="font-weight: bold;"&gt;alcun impatto sull'amosfera&lt;/span&gt;, sempre che non venga &lt;span style="font-weight: bold;"&gt;immagazzinato e rivenduto&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Lo schema della reazione è il seguente:&lt;br /&gt;&lt;br /&gt;D + T → &lt;sup&gt;4&lt;/sup&gt;He (3.5 MeV) + n (14.1 &lt;span class="mw-redirect"&gt;MeV&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;Come si può notare la fusione richiede anche del &lt;span style="font-weight: bold;"&gt;Trizio&lt;/span&gt; (T), un isotopo radioattivo dell'idrogeno (con tempo di dimezzamento troppo breve -12,33 anni- per lo stoccaggio) che però potrebbe essere prodotto direttamente nel reattore (tramite un "mantello triziogeno" ) sfruttando i neutroni liberati dalle reazioni stesse, secondo la reazione:&lt;br /&gt;&lt;sup&gt;&lt;br /&gt;6&lt;/sup&gt;Li + n → &lt;sup&gt;4&lt;/sup&gt;He + &lt;sup&gt;3&lt;/sup&gt;T&lt;br /&gt;&lt;br /&gt;L'obiettivo della reazione, l'energia liberata (&lt;span style="font-weight: bold;"&gt;14,1 MeV&lt;/span&gt;), scalderebbe un liquido (non un liquido convenzionale, vengono attualmente valutati sia la lega metallica Pb-17Li sia addirittura l'Elio) che facendo girare diverse turbine produrrebbe energia elettrica; il solito vecchio sistema della turbina insomma.&lt;br /&gt;&lt;br /&gt;Il problema è che le scadenze non sono proprio ravvicinate: il primo reattore non sperimentale -&lt;span style="font-weight: bold;"&gt;DEMO&lt;/span&gt;- è previsto per il 2050. Probabilmente mancano gli investimenti, 10 miliardi di dollari per un progetto di questa portata personalmente mi sembrano un pò pochi, probabilmente 50 sarebbero stati più adeguati. Trovarli non credo che sarebbe difficile, considerando chi finanzia la ricerca: UE, Stati Uniti, Russia, Cina, Giappone, ecc...&lt;br /&gt;&lt;br /&gt;Una cosa però è sicura: non possiamo più andare avanti a produrre energia &lt;span style="font-weight: bold;"&gt;bruciando carbone &lt;/span&gt;(cosa &lt;span style="font-weight: bold;"&gt;fuori luogo nel 2010&lt;/span&gt;, per usare un eufemismo) o le conseguenze o le conseguenze sul clima potrebbero essere irreversibili.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583067994184332516-2759898843321381216?l=blogsostenibile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogsostenibile.blogspot.com/feeds/2759898843321381216/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://blogsostenibile.blogspot.com/2010/05/fusione-nucleare-lenergia-del-futuro.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/2759898843321381216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/2759898843321381216'/><link rel='alternate' type='text/html' href='http://blogsostenibile.blogspot.com/2010/05/fusione-nucleare-lenergia-del-futuro.html' title='Fusione nucleare: l&apos;energia del futuro'/><author><name>Jak</name><uri>http://www.blogger.com/profile/16448635336654227432</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-VSU7JYjSN4/S_fXJFpO34I/AAAAAAAAACM/y-YAXaoIQNU/S220/blogger-small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583067994184332516.post-457790788745625663</id><published>2010-05-23T05:56:00.000-07:00</published><updated>2010-06-10T04:56:20.986-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ogg'/><category scheme='http://www.blogger.com/atom/ns#' term='informatica'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='codec'/><title type='text'>Theora "Ptalarbvorm": non solo VP8 contro H.264</title><content type='html'>Come tutti sappiamo, Google questo mese ha annunciato il rilascio del codec VP8, pagato 123 milioni di dollari, sotto licenza BSD-style.&lt;br /&gt;&lt;br /&gt;Tra esultazioni, polemiche e FUD su ipotetiche violazioni di brevetti, sono convinto che solo fra qualche tempo, quando le specifiche saranno ben definite e le implementazioni mature  si potrà parlare di comparazioni: VP8 fino a poco tempo fa era codice chiuso e ne esisteva una sola implementazione, quella di On2.&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;E riguardo alla questione brevetti sbandierata da MPEG-LA, cito Mike Jazayeri, Google product manager:&lt;br /&gt;&lt;blockquote&gt;"We have done a pretty through analysis of VP8 and On2 Technologies prior to the acquisition and since then, and we are very confident with the technology and that's why we're open sourcing."&lt;/blockquote&gt;ovvero, grossomodo:&lt;br /&gt;&lt;blockquote&gt;"Abbiamo effettuato un'analisi approfondita di VP8 e di On2 Technologies prima dell'acquisizione e da quello che abbiamo concluso, riponiamo molta fiducia nella tecnologia e per questo la stiamo rendendo opensource."&lt;br /&gt;&lt;/blockquote&gt;Oltretutto la logica ci dice che una società come Google, prima di spendere 123 milioni di dollari muove tutti i programmatori e avvocati necessari per accertarsi di quello che sta comprando.&lt;br /&gt;&lt;br /&gt;Conclusa questa parentesi, eccoci finalmente al tema del post: la futura versione -attualmente in sviluppo- &lt;span style="font-weight: bold;"&gt;1.2&lt;/span&gt; di Theora, chiamata (in modo impronunciabile) &lt;span style="font-weight: bold;"&gt;Ptalarbvorm&lt;/span&gt; e della quale iniziano a girare i primi video e immagini di paragone.&lt;!-- more --&gt;&lt;br /&gt;Una consiglio: il modo migliore per notare la differenza fra due immagini è aprirle in nuove tab e switchare ripetutamente fra le due.&lt;br /&gt;&lt;br /&gt;Il primo confronto riguarda un video, nel primo caso codificato &lt;a href="http://myrandomnode.dyndns.org:8080/%7Egmaxwell/ytcompare/bbb_youtube_h264_499kbit.mp4"&gt;da Youtube&lt;/a&gt; mentre nel secondo &lt;a href="http://people.xiph.org/%7Egreg/video/ytcompare/bbb_theora-ptalarbvorm-r16852_376kbit.ogv"&gt;con la versione di sviluppo di Theora&lt;/a&gt;; per chi avesse fretta, di questi video sono disponibile anche due screenshots della medesima scena, rispettivamente &lt;a href="http://people.xiph.org/%7Egreg/video/ytcompare/bbb_youtube_h264_499kbit_366.png"&gt;qui&lt;/a&gt; per il primo e &lt;a href="http://people.xiph.org/%7Egreg/video/ytcompare/bbb_theora-ptalarbvorm-r16852_376kbit-noaudio_366.png"&gt;qui&lt;/a&gt; per il secondo.&lt;br /&gt;&lt;br /&gt;Ammetto di non essere un esperto di codifica video ma oggettivamente la qualità di &lt;span style="font-weight: bold;"&gt;Theora mi sembra superiore&lt;/span&gt; a quella di H.264 di Youtube anche per un occhio inesperto, oltretutto &lt;span style="font-weight: bold;"&gt;ad un bitrate di 376 kbit/s contro i 499 kbit/s di H.264&lt;/span&gt;.&lt;br /&gt;Il codec del progetto Ogg distacca visibilmente quest'ultimo specialmente in scene ricche di colore.&lt;br /&gt;&lt;br /&gt;Il secondo confronto rimane invece "in casa": si tratta di due video codificati con la versione stabile di Theora, &lt;a href="http://people.xiph.org/%7Egreg/video/ptalarbvorm/360p25_parkrun_thusnelda_2000.ogv"&gt;Thusnelda&lt;/a&gt; e rispettivamente &lt;a href="http://people.xiph.org/%7Egreg/video/ptalarbvorm/360p25_parkrun_ptalarbvorm_2000.ogv"&gt;Ptalarbvorm&lt;/a&gt;.&lt;br /&gt;Mentre nel primo video si presentano molte zone sfuocate (specialmente per gli alberi, o anche per l'acqua) e una generale -leggera ma visible- &lt;span style="font-weight: bold;"&gt;sfocatura&lt;/span&gt; dell'intera immagine, nel secondo si può notare che &lt;span style="font-weight: bold;"&gt;questo problema sembra risolto&lt;/span&gt;.&lt;br /&gt;Anche in questo caso sono disponibili alcuni &lt;a href="http://people.xiph.org/%7Egreg/video/ptalarbvorm/"&gt;screenshots&lt;/a&gt; dei video.&lt;br /&gt;&lt;br /&gt;Lo sviluppo di Theora ultimamente è decisamente accelerato e come conseguenza è migliorato parecchio (sono sicuro che confrontando queste immagini con la versione 1.0 del progetto la cosa sarebbe ancora più evidente), io penso che ci possa essere posto anche per questo codec in HTML5.&lt;br /&gt;&lt;br /&gt;Magari, per esempio, al posto di VP8 per lo &lt;span style="font-weight: bold;"&gt;streaming a basso bitrate&lt;/span&gt; (dove se la cava piuttosto bene, mantenendo comunque una qualità d'immagine più che accettabile) il quale piuttosto può essere impiegato per la trasmissione ad alta qualità.&lt;br /&gt;&lt;br /&gt;Non penso sia un caso che Google abbia recentemente finanziato lo sviluppo di TheorARM, un decoder Theora ottimizzato per processori ARM.&lt;br /&gt;Che finisca su Android prima o poi?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583067994184332516-457790788745625663?l=blogsostenibile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogsostenibile.blogspot.com/feeds/457790788745625663/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://blogsostenibile.blogspot.com/2010/05/theora-ptalarbvorm-non-solo-vp8-contro.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/457790788745625663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/457790788745625663'/><link rel='alternate' type='text/html' href='http://blogsostenibile.blogspot.com/2010/05/theora-ptalarbvorm-non-solo-vp8-contro.html' title='Theora &quot;Ptalarbvorm&quot;: non solo VP8 contro H.264'/><author><name>Jak</name><uri>http://www.blogger.com/profile/16448635336654227432</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-VSU7JYjSN4/S_fXJFpO34I/AAAAAAAAACM/y-YAXaoIQNU/S220/blogger-small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7583067994184332516.post-6479293816553635647</id><published>2010-05-22T10:13:00.000-07:00</published><updated>2010-06-10T05:19:57.681-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='informatica'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='codec'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Le novità di Firefox 4.0</title><content type='html'>&lt;style type="text/css"&gt;  &lt;!--   @page { margin: 0.79in }   P { margin-bottom: 0.08in }  --&gt;&lt;/style&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Dopo averci pensato e  ripensato, mi sono finalmente deciso ad aprire un blog: la voglia di  condivedere pensieri e informazioni è tanta, spero di riuscire  nell'intento e di attirare la curiosità di qualche lettore!&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Come post di apertura  quindi,  vorrei dedicare un'analisi approfondita delle caratteristiche che troveranno  spazio all'interno della futura versione 4.0 del noto browser  opensource, Firefox.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in; text-align: center;" lang="it-IT"&gt;&lt;object id="__sse4041936" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=firefoxroadmap20100510-100510155953-phpapp01&amp;amp;stripped_title=firefox-roadmap-2010-0510"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed name="__sse4041936" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=firefoxroadmap20100510-100510155953-phpapp01&amp;amp;stripped_title=firefox-roadmap-2010-0510" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Lo slideshow &lt;/span&gt; è stato segnalato da molti blog e testate online nella nostra  lingua ma molte delle interessantissime novità non sono  state esaminate, o lo sono state superficialmente.&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Le novità di rilievo che riguardano l'&lt;span style="font-weight: bold;"&gt;interfaccia&lt;/span&gt; e l'&lt;span style="font-weight: bold;"&gt;esperienza utente&lt;/span&gt; sono molte:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;una &lt;span style="font-weight: bold;"&gt;nuova GUI&lt;/span&gt;: sulla falsariga di Chrome e Opera anche Firefox ridurrà sensibilmente lo spazio "sprecato" dall'interfaccia utente (slide 10)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;nuovo e intuitivo sistema per il &lt;span style="font-weight: bold;"&gt;controllo della privacy&lt;/span&gt; e le preferenze relative a un sito web: all'occorrenza verrà visualizzato un piccolo popup vicino alla barra degli indirizzi, limitatamente alla tab che lo rigurda (slide 11)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;tramite un menù sarà poi possibile personalizzare ulteriormente le policy (slide 14)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;scorciatoie&lt;/span&gt; ai siti più usati: nella zona dei tab sarà possibile posizionare bottoni per l'apertura di tab personalizzate, similmente a quanto si vedeva nei primi video di Chromium OS  (slide 12)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;l'&lt;span style="font-weight: bold;"&gt;addons manager&lt;/span&gt; è stato interamente rivisto: si presenterà semplificato, migliorato e graficamente più accattivante (slide 16)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;supporto al &lt;span style="font-weight: bold;"&gt;multitouch&lt;/span&gt; (slide 18)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Per quanto riguarda invece il &lt;span style="font-weight: bold;"&gt;comprato tecnico&lt;/span&gt;, anche qui cambiamenti e miglioramenti sono molti e profondi:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;architettura multiprocesso&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;compatibilità con il nuovo standard nascente HTML5: implementazione del tag &lt;span style="font-weight: bold;"&gt;&amp;lt;video&amp;gt;&lt;/span&gt; migliorata (incluso il supporto a &lt;span style="font-weight: bold;"&gt;WebM&lt;/span&gt;, contenitore &lt;span style="font-weight: bold;"&gt;VP8/&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Voribs&lt;/span&gt;), &lt;span style="font-weight: bold;"&gt;WebSockets&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;CSS3&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;WebGL&lt;/span&gt;, ecc... (slide 18-19)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;nuovi e interessanti tools per gli &lt;span style="font-weight: bold;"&gt;sviluppatori&lt;/span&gt; (slide 21)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;nuovo engine javascript &lt;span style="font-weight: bold;"&gt;JägerMonkey&lt;/span&gt;: miglioramenti nelle performances generali, threads separati e garbage collection (slide 23)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;supporto ufficiale ai sistemi operativi a &lt;span style="font-weight: bold;"&gt;64bit&lt;/span&gt; (slide 23)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;rendering tramite GPU anche su host Windows tramite &lt;span style="font-weight: bold;"&gt;Direct2D&lt;/span&gt; (slide 25)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;integrazione più profonda con Aero e OSX (slide 25)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Insomma, quelli di Mozilla devono essersi finalmente accorti del livello raggiunto dalla concorrenza e aver deciso di darsi davvero da fare per rivoluzionare Firefox. Sono sicuro che sapranno fare un ottimo lavoro, personalmente non vedo l'ora di poterlo provare!&lt;br /&gt;&lt;br /&gt;La &lt;span style="font-weight: bold;"&gt;prima &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;beta&lt;/span&gt; è stata fissata per fine del prossimo mese di &lt;span style="font-weight: bold;"&gt;giugno&lt;/span&gt;, mentre il &lt;span style="font-weight: bold;"&gt;rilascio finale&lt;/span&gt; dovrebbe avvenire &lt;span style="font-weight: bold;"&gt;fra settembre e ottobre&lt;/span&gt;. Mozilla spera di raccogliere un alto numero di feedback durante quella che è stata pensata come una beta aperta al pubblico, oltre che agli addetti ai lavori.&lt;br /&gt;&lt;br /&gt;Oltre allo &lt;a href="http://www.slideshare.net/beltzner/firefox-roadmap-2010-0510?from=ss_embed"&gt;slideshow&lt;/a&gt;, è disponibile anche un &lt;a href="http://videos.mozilla.org/serv/air_mozilla/firefox4.ogg"&gt;video&lt;/a&gt; di presentazione.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7583067994184332516-6479293816553635647?l=blogsostenibile.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blogsostenibile.blogspot.com/feeds/6479293816553635647/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://blogsostenibile.blogspot.com/2010/05/le-novita-di-firefox-40.html#comment-form' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/6479293816553635647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7583067994184332516/posts/default/6479293816553635647'/><link rel='alternate' type='text/html' href='http://blogsostenibile.blogspot.com/2010/05/le-novita-di-firefox-40.html' title='Le novità di Firefox 4.0'/><author><name>Jak</name><uri>http://www.blogger.com/profile/16448635336654227432</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-VSU7JYjSN4/S_fXJFpO34I/AAAAAAAAACM/y-YAXaoIQNU/S220/blogger-small.png'/></author><thr:total>0</thr:total></entry></feed>
