<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUEESHY_cSp7ImA9WhRUFEw.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510</id><updated>2012-01-24T15:00:09.849+01:00</updated><category term="cellulare" /><category term="web intranet" /><category term="mail" /><category term="web" /><category term="apple" /><category term="latex" /><category term="perl" /><category term="skype" /><category term="tecnologia" /><category term="codici a barre" /><category term="youtube" /><category term="ebook" /><category term="firefox" /><category term="personale" /><category term="tesi" /><category term="nokia" /><category term="opensource" /><category term="python" /><category term="shell" /><category term="ATMEGA" /><category term="internet" /><category term="debian" /><category term="windows" /><category term="hardware" /><category term="social network" /><category term="database" /><category term="backup" /><category term="linux" /><category term="arduino" /><category term="NSLU2" /><category term="musica" /><category term="codice" /><category term="client/server" /><category term="Thunderbird" /><category term="sqlite" /><category term="informatica" /><category term="masterizzare" /><category term="MP3" /><category term="programmazione" /><category term="bash" /><category term="sistema operativo" /><category term="software" /><category term="twitter" /><category term="bicicletta" /><category term="server" /><category term="Torino" /><category term="lyx" /><category term="recensione libro" /><category term="ubuntu" /><category term="songbird" /><title>Vittorio Zuccalà</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://zuccala.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>89</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/VittorioZuccal" /><feedburner:info uri="vittoriozuccal" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D04CQ3w9eyp7ImA9WhRVGUU.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-4109680340253547606</id><published>2012-01-19T16:12:00.000+01:00</published><updated>2012-01-19T16:12:42.263+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-19T16:12:42.263+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="social network" /><category scheme="http://www.blogger.com/atom/ns#" term="internet" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><title>Cosa sono e come usare liste twitter</title><content type="html">&lt;h3&gt;


Premessa&lt;/h3&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Parlando con amici o colleghi, alcune persone mi hanno chiesto a cosa servono le liste su twitter. Lo scopo di questo post, dunque, è cercare di fare un po' di chiarezza su questo utile quanto poco conosciuto &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;strumento di&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt; twitter.&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;h3&gt;

Le liste&lt;/h3&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Non mi dilungherò su come si fa a creare una lista o su come inserire utenti al loro interno.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-ibreFVdhBRI/TxghkLSMwNI/AAAAAAAAAo0/ubxdDGL5CxA/s1600/liste.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="272" src="http://1.bp.blogspot.com/-ibreFVdhBRI/TxghkLSMwNI/AAAAAAAAAo0/ubxdDGL5CxA/s320/liste.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;A questo proposito potete leggere il &lt;a href="https://support.twitter.com/articles/261175-come-usare-le-liste-di-twitter" target="_blank"&gt;documento ufficiale&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Ciò che mi interessa mettere in luce in questo post, al contrario, è l'aspetto "social" delle liste e di come aiutino a mantenere ordinato il proprio account donandogli nel contempo valore aggiunto ed aiutandoci ad aumentare i nostri followers grazie alla distinzione dei contenuti.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Ma facciamo una premessa fondamentale: una lista può essere creata da un utente e seguita da altri...&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Nel primo caso essa serve essenzialmente per "dividere" a livello logico le persone/argomenti; nel secondo caso aiutano ad aumentare l'eco di ciò che condividiamo. In questo modo si creano velocemente "comunity" a tema perchè se so che "tizio" segue la lista "cucina" creata da "caio" saprò implicitamente non solo che anche "caio" si interessa alla cucina ma anche tutti i contatti contenuti nella lista da lui creata e denominata "cucina". Posso quindi decidere di seguire la lista di tizio consapevole che troverò persone con le quali condividere la mia passione ed alle quali inviare messaggi che hanno, come argomento, la "cucina".&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Le liste dunque hanno, a mio avviso, questo duplice scopo:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;associare un utente ad uno o più argomenti (liste appunto) e ciò comporta:&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;manifestare rapidamente agli altri utenti quali sono i nostri interessi&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;ordinare a livello logico le informazioni da noi condivise&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;dare maggiore visibilità a ciò che condividiamo nel momento in cui altre persone seguono una nostra lista&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;In realtà, con il tempo, ho iniziato ad apprezzare le liste anche per un altro motivo: dato che il numero dei miei follower sta crescendo in modo lineare, il numero dei post nella mia timeline cresce in modo esponenziale!!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Parimenti il tempo che riesco a dedicare al social networking è molto scarso e si concentra in pochi momenti durante l'arco della giornata. In questi momenti consulto twitter soprattutto tramite il mio smartphone più che con il PC e questo comporta (per via dello schermo piccolo e il fatto che lo consulto in mobilità) che non posso materialmente leggere tutti i post di tutti i follower.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Ecco quindi che le liste si sono rivelate (a mio avviso) utili anche per un altro scopo: coloro che mi interessa davvero seguire li inserisco in 3 o 4 liste principali che sono quelle che leggo più spesso.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;I componenti delle altre liste, al contrario, li seguo più sporadicamente e questo, non lo nascondo, mi fa risparmiare un sacco di tempo :-)&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;h3&gt;
Alcuni consigli&lt;/h3&gt;
&lt;span style="font-size: small;"&gt;Passiamo adesso ad alcuni consigli su come usare le liste al meglio....&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;Cosa&lt;/b&gt;&lt;/i&gt;: la prima attività da fare è cercare di scoprire cosa cercano o di cosa desiderano leggere i miei follower. A questo punto il lettore potrebbe anche domandarsi come fa a saperlo... Bhe, solitamente il numero di retweet o di risposte ad un determinato post fa comprendere gli interessi dei propri follower... Da questi le liste seguiranno di conseguenza. E' più facile che un utente che ama la "cucina" segua una mia lista denominata "ricette" o "ristoranti" piuttosto che "informatica" o "finanza"&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;Descrizione&lt;/b&gt;&lt;/i&gt;: aggiungi una descrizione a ciascuna lista. L'utente che decide di visitare la pagina delle nostre liste deve sapere cosa/chi raccoglie la lista "notizie"..&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;Focalizza&lt;/b&gt;&lt;/i&gt;: certo non è sempre facile inserire una persona in una lista perchè spesso costui/costei divaga dall'argomento ma... cerca di focalizzare l'argomento maggiormente trattato da un individuo ed inseriscilo nella lista migliore ricordandoti che puoi inserirlo anche in più di una lista.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;Parla alla lista&lt;/b&gt;&lt;/i&gt;: parla con le tue liste o le liste altrui. Ecco si, un aspetto importante e social è proprio questo ma... non esagerare!! &lt;br /&gt;Per contattare una lista basta che scrivi @utente/lista ed il tweet verrà diffuso a tutti coloro che fanno parte della "lista" di "utente".&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;Risalto&lt;/b&gt;&lt;/i&gt;: se hai un sito, un blog o una pagina su internet, ingloba tramite un widget la lista più interessante all'interno di esso per dargli maggiore visibilità; questo ti aiuterà ad aumentare le visite al sito o dal sito al tuo account twitter&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-size: small;"&gt;Conclusione: le liste sono uno strumento relativamente nuovo di twitter e sono state riprese da Google+ con le cerchie.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Sono una opportunità ancora da scoprire e gli utilizzatori potrebbero aver trovato altri utilizzi che in questo momento probabilmente ignoro.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Se siete arrivati a leggere fino a qui e volete suggerire qualche utilizzo differente potete farlo nei commenti!&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-4109680340253547606?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EGPGsAEbg4ZWT0UKuTAlECuY-A4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EGPGsAEbg4ZWT0UKuTAlECuY-A4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EGPGsAEbg4ZWT0UKuTAlECuY-A4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EGPGsAEbg4ZWT0UKuTAlECuY-A4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/KgB5Y_MFA9E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/4109680340253547606/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2012/01/cosa-sono-e-come-usare-liste-twitter.html#comment-form" title="9 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/4109680340253547606?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/4109680340253547606?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/KgB5Y_MFA9E/cosa-sono-e-come-usare-liste-twitter.html" title="Cosa sono e come usare liste twitter" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-ibreFVdhBRI/TxghkLSMwNI/AAAAAAAAAo0/ubxdDGL5CxA/s72-c/liste.gif" height="72" width="72" /><thr:total>9</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2012/01/cosa-sono-e-come-usare-liste-twitter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08EQns5cSp7ImA9WhRQGU0.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-826976986031688075</id><published>2011-12-14T23:30:00.000+01:00</published><updated>2011-12-14T23:30:03.529+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-14T23:30:03.529+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="social network" /><category scheme="http://www.blogger.com/atom/ns#" term="internet" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><title>Servizi per il mondo Twitter</title><content type="html">&lt;h3&gt;








Premessa&lt;/h3&gt;
&lt;div style="text-align: justify;"&gt;
Twitter è un social network estremamente dinamico e flessibile.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Per chi volesse delle informazioni su di esso, ho pubblicato qualche tempo fa un articolo introduttivo con il titolo&amp;nbsp;&lt;a href="http://zuccala.blogspot.com/2010/07/twitter-di-tutto-e-di-piu.html"&gt;Twitter, di tutto e di più&lt;/a&gt;. &lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Qualche mese fa, inoltre, soprii anche un database di applicazioni e recensii le più interessanti nell'articolo &lt;a href="http://zuccala.blogspot.com/2011/11/database-applicazioni-twitter.html"&gt;Database di applicazioni Twitter&lt;/a&gt;.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Oggi sono a parlarvi di applicazioni più strutturate che fanno parte del mondo e della comunità di twitter.&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;





Mentionapp&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: justify;"&gt;
&lt;a href="http://1.bp.blogspot.com/-N9BhxpcYjmY/Tuciq06dYzI/AAAAAAAAAoE/kTOD6Sjyeos/s1600/mentionapp.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="267" src="http://1.bp.blogspot.com/-N9BhxpcYjmY/Tuciq06dYzI/AAAAAAAAAoE/kTOD6Sjyeos/s400/mentionapp.gif" width="400" /&gt;&lt;/a&gt;&lt;a href="http://mentionmapp.com/" target="_blank"&gt;Mentionapp&lt;/a&gt; è una applicazione simpatica ed utile che permette di tracciare una sorta di mappa mentale con la lista dei contatti e degli #hashtag di un determinato utente..&lt;/div&gt;
E' estremamente facile utilizzarla: basta connettersi al proprio account dalla Home Page del servizio e nella casellina di ricerca inserire il nome dell'utente del quale si stanno cercando informazioni.&lt;br /&gt;
In pochi secondi viene presentata una figura come quella a destra.&lt;br /&gt;
Ovviamente se si clicca su un determinato utente o un #hashtag viene espanso il grafico relativo dandoci una idea del network sviluppato intorno ad esso.&lt;br /&gt;
Ogni blocchetto è collegato agli altri con linee di differente spessore che indicano una maggiore o minore affinità all'utente. I blocchetti/linee di colore grigio specificano affinità molto basse o di secondo livello.&lt;br /&gt;
L'account è gratuito.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;





SocialBrio e Twitsprout&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-U1_526339YA/TudnDJwm6gI/AAAAAAAAAoM/KiO_4eZI8FQ/s1600/socialbrio.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="267" src="http://4.bp.blogspot.com/-U1_526339YA/TudnDJwm6gI/AAAAAAAAAoM/KiO_4eZI8FQ/s400/socialbrio.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://www.socialbro.com/" target="_blank"&gt;SocialBrio&lt;/a&gt; è un tool davvero impressionante che permette la gestione della propria comunity twitter in maniera estremamente rapida e compatta; fornisce moltissime informazioni sui propri contatti, follower e followings, liste, la provenienza, le mode, gli #hastag più utilizzati e mille altre informazioni.&lt;br /&gt;
E' un programma multipiattaforma che si può scaricare su Windows, Mac, Linux ma anche come plugin di Google Chrome. &lt;br /&gt;
Come si può vedere dalla immagine riportata a destra viene utilizzato da molte società quali IBM, TomTom, Smart, Mastercard per analizzare le tendenze e le mode dei propri clienti. Insomma per chi usa twitter per lavoro questo è uno strumento al quale, secondo me, non si può rinunciare. Per tutti coloro che usano twitter per lo svago ed il tempo libero permette una visione più a tutto tondo della comunity che si sta costruendo intorno a sè. Ad ogni buon conto è un tool da provare assolutamente!&lt;br /&gt;
L'account gratuito è pienamente utilizzabile ed interessante ma vi è la possibilità di fare un upgrade a pagamento con delle feature aggiuntive.&lt;br /&gt;
Un servizio simile e molto gradevole nel look è &lt;a href="http://twitsprout.com/" target="_blank"&gt;Twitsprout&lt;/a&gt;.&lt;br /&gt;
&lt;h3&gt;



 BufferApp&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-4M0T0kBXZyk/TuhudMGYeKI/AAAAAAAAAoU/b6ZXP5aSg3Y/s1600/bufferapp.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="258" src="http://2.bp.blogspot.com/-4M0T0kBXZyk/TuhudMGYeKI/AAAAAAAAAoU/b6ZXP5aSg3Y/s320/bufferapp.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://www.bufferapp.com/" target="_blank"&gt;Bufferapp&lt;/a&gt;&amp;nbsp;ha essenzialmente due scopi. &lt;br /&gt;
Il primo è di creare una sorta di buffer (pensatelo come un cestino dove depositate i post) che viene svuotato ad orari prestabiliti dall'utente. In sostanza quando si vuole condividere una pagina web o qualsiasi contenuto, si aggiunge il post al buffer e questo verrà pubblicato al momento deciso dall'utente. Questa feature è particolarmente utile, a mio avviso, in due casi: utilizzando strumenti come SocialBrio (descritto sopra...) si nota quali siano gli orari di maggiore utilizzo twitter da parte degli utenti. In questo modo l'utente può programmare l'invio dei propri post in modo che siano facilmente leggibili e ricondivisibili. D'altro canto se si lavora in un ufficio è possibile programmare l'invio dei post ad orari non... incriminabili....&lt;br /&gt;
Il secondo compito di Bufferapp è conteggiare tutti i click, i mentioning e i reply effettuati dagli altri utenti twitter. In sostanza si può tenere traccia di quanto "successo" o "fallimento" in termini di "audience" raccolgono i nostri post.&lt;br /&gt;
Esistono plugin per Chrome, Firefox, cellulari e molti servizi sul web.&lt;br /&gt;
L'account gratuito è pienamente utilizzabile ed interessante ma vi è la possibilità di fare un upgrade a pagamento con delle feature aggiuntive.
&lt;br /&gt;
&lt;h3&gt;
Storify&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-xLRGEsViTFg/Tuh-DB3IAeI/AAAAAAAAAoc/iPX4UboW3mI/s1600/storify.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="338" src="http://4.bp.blogspot.com/-xLRGEsViTFg/Tuh-DB3IAeI/AAAAAAAAAoc/iPX4UboW3mI/s400/storify.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://storify.com/" target="_blank"&gt;Storify&lt;/a&gt; è una applicazione interessantissima che permette di creare delle "storie" attraverso links, post in twitter, pubblicazioni. Sostanzialmente permette di raccogliere in una unica pagina l'evoluzione di un discorso che si snoda tra social networks differenti. Un aggregatore insomma ma pubblico.&lt;br /&gt;
Ovviamente si possono raccogliere anche clip audio e video per rendere maggiormente incisiva la "storia".&lt;br /&gt;
Si tenga conto che un recente studio di &lt;a href="http://bit.ly/"&gt;bit.ly&lt;/a&gt;, uno dei servizi che servono per accorciare gli indirizzi web, ha dichiarato che la vita media di un link non supera le 2.8h prima di passare nell'oblio.&lt;br /&gt;
Lo stesso twitter, dopo due settimane, rende i post non più disponibili sul profilo dell'utente se non con ricerche specifiche.&lt;br /&gt;
Ecco come in questo scenario, un servizio come Storify può essere estremamente utile.&amp;nbsp;Si veda un esempio qui delle&amp;nbsp;&lt;a href="http://t.co/ZnAT8GDu"&gt;mie pubblicazioni podcast access&lt;/a&gt;&amp;nbsp;presso l'Università Popolare di Torino.
&lt;br /&gt;L'account gratuito è pienamente utilizzabile ed interessante ma vi è la possibilità di fare un upgrade a pagamento con delle feature aggiuntive.&lt;br /&gt;
&lt;h3&gt;
Form-u-list&lt;/h3&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-R8r93QQtQJU/TuiFkInQ-bI/AAAAAAAAAok/_rrOgcmlQzc/s1600/form_u_list.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="262" src="http://4.bp.blogspot.com/-R8r93QQtQJU/TuiFkInQ-bI/AAAAAAAAAok/_rrOgcmlQzc/s320/form_u_list.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://formulists.com/" target="_blank"&gt;Form u list&lt;/a&gt; è un servizio che permette di creare delle liste in maniera automatica al verificarsi di un evento...&lt;br /&gt;Alcuni esempi: le persone con le quali scambio più messaggi, quelle che mi menzionano, quelle che fanno il retweet dei miei post e così via...&lt;br /&gt;Questo comportamento ci permette di aggiungere/togliere profili dalle nostre liste donando al nostro profilo estrema dinamicità ma anche inserendo o togliendo le persone in base ad eventi.&lt;br /&gt;
L'account gratuito è pienamente utilizzabile. Già nella versione base da un assaggio di cosa possa fare. Purtroppo, però, permette la gestione di sole due liste. Se si vuole creare un numero maggiore di liste sarà necessario passare alla versione Premium.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-826976986031688075?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1Hn9qUPuv7bvdokVlVNsiNERg1A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1Hn9qUPuv7bvdokVlVNsiNERg1A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1Hn9qUPuv7bvdokVlVNsiNERg1A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1Hn9qUPuv7bvdokVlVNsiNERg1A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/ESkDd523dTU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/826976986031688075/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/12/servizi-per-il-mondo-twitter.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/826976986031688075?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/826976986031688075?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/ESkDd523dTU/servizi-per-il-mondo-twitter.html" title="Servizi per il mondo Twitter" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-N9BhxpcYjmY/Tuciq06dYzI/AAAAAAAAAoE/kTOD6Sjyeos/s72-c/mentionapp.gif" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>14019 Villanova d&amp;#39;Asti AT, Italia</georss:featurename><georss:point>44.9422334 7.9376888</georss:point><georss:box>44.8972769 7.8587248 44.9871899 8.0166528</georss:box><feedburner:origLink>http://zuccala.blogspot.com/2011/12/servizi-per-il-mondo-twitter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYERXc_fyp7ImA9WhRQFE8.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-1397041212506905283</id><published>2011-12-08T15:43:00.000+01:00</published><updated>2011-12-09T09:41:44.947+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-09T09:41:44.947+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="database" /><title>Python ed i CSV</title><content type="html">&lt;h3&gt;






Premessa&lt;/h3&gt;
&lt;br /&gt;
I CSV sono semplicissimi files di testo e sono un primo esempio di database sebbene con delle limitazioni.
L'acronimo significa Comma Separated Value ovvero "Valori Separati da una Virgola".
In sostanza un file CSV si può aprire con qualsiasi editor di "testo semplice" in qualsiasi sistema operativo e si presenta come qualcosa del genere:&lt;br /&gt;
&lt;script src="http://friendpaste.com/6UKBciLFxJhUA1bbx6AXb.js"&gt;
&lt;/script&gt; &lt;br /&gt;
Essi, come detto prima, sono un primo esempio di database sebbene la struttura non possa essere complessa data la natura del supporto. &lt;br /&gt;
&lt;h3&gt;

&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;

Vantaggi e svantaggi nell'uso dei CSV&lt;/h3&gt;
&lt;br /&gt;
&lt;div style="color: #ad0000; font-size: 21px; font-weight: bold;"&gt;
&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span style="color: #7b003d;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;I database ma anche un semplice foglio di calcolo, offrono performance, personalizzazioni, decisamente maggiori rispetto ai CSV.&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #ad0000; font-size: 21px; font-weight: bold;"&gt;
&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span style="color: #7b003d;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;Per questi motivi molte persone pensano, a torto, che il sistema CSV, data la sua semplicità intrinseca sia ormai obsoleto.&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #ad0000; font-size: 21px; font-weight: bold;"&gt;
&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span style="color: #7b003d;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;Ma allora chi usa e perchè viene usato questo formato?&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #ad0000; font-size: 21px; font-weight: bold;"&gt;
&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span style="color: #7b003d;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;I CSV, a mio avviso, hanno due enormi vantaggi.&lt;br /&gt;
Da una parte permettono di immagazzinare quantità abnormi di dati: un foglio di Excel, ad esempio, ha un limite numerico di righe e colonne mentre CSV non soffre di questo limite: esso può immagazzinare "virtualmente" infinite colonne ed infinite righe.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #ad0000; font-size: 21px; font-weight: bold;"&gt;
&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span style="color: #7b003d;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;Ovviamente il limite esiste ma dipende dalla memoria RAM e dal file system e non dal supporto in sè.&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #ad0000; font-size: 21px; font-weight: bold;"&gt;
&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span style="color: #7b003d;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;L'altro vantaggio è la portabilità del formato: la maggior parte dei fogli di calcolo (si pensi MS Excel) e server sql (si pensi ad AS400 o MS SQLServer) sono proprietari e girano su uno o pochi sistemi operativi; i CSV, al contrario, essendo file di testo possono essere letti e scritti da qualsiasi software su qualsiasi sistema operativo: questo fattore li rende degli alleati insostituibili che permettono il dialogo tra sistemi anche estremamente differenti tra loro.&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="color: #ad0000; font-size: 21px; font-weight: bold;"&gt;
&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span style="color: #7b003d;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;Facciamo, dunque, uno schemino in breve dei vantaggi/svantaggi.&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-weight: bold;"&gt;
&lt;span style="border-collapse: separate; font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="border-collapse: separate; font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;Partiamo ad evidenziarne gli svantaggi:&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;non gestisce le relazioni fra tabelle&lt;/li&gt;
&lt;li&gt;non permette la creazione di viste, stored procedure e tutte le altre facilitazioni proprie dei server sql&lt;/li&gt;
&lt;li&gt;non permette la gestione della multiutenza: può accedere solo un programma/persona per volta.&lt;/li&gt;
&lt;/ul&gt;
E, successivamente i vantaggi:
&lt;br /&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;formato universale: si possono leggere e scrivere file CSV con qualsiasi software su qualsiasi sistema operativo&lt;/li&gt;
&lt;li&gt;permette di gestire "infinite" quantità di dati senza limiti di colonne (campi) e/o righe (record).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h3&gt;

&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;

Dialetti&lt;/h3&gt;
&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span style="color: #7b003d;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;Ciascun CSV può differenziarsi per il "dialetto" utilizzato.&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div style="color: #ad0000; font-size: 21px; font-weight: bold;"&gt;
&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span style="color: #7b003d;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="border-collapse: separate; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;Un dialetto viene identificato, prevalentemente da tre parametri:&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;il separatore tra un campo e l'altro: in America è di default la virgola (,) e da qui il nome "Comma". Nei paese non anglosassoni, Italia inclusa, poichè la virgola è il separatore tra le cifre decimali di un numero, si utilizza il punto e virgola (;) come nell'esempio precedente.&lt;/li&gt;
&lt;li&gt;il separatore tra un record e l'altro: solitamente ogni volta che si va a capo, si identifica un nuovo record. Questa scelta generalmente accettata da tutti può, all'occorrenza, essere modificata con un altro carattere. Si ricorda che il carattere a capo è identificato da "\n" su linux/unix e da "\r\n" sui sistemi windows.&lt;/li&gt;
&lt;li&gt;il quoting: ci si riferisce alle virgolette singole (') o le virgolette doppie ("); vengono utilizzate per racchiudere un testo. Sono particolarmente utili quando si pensa di voler utilizzare all'interno di un campo anche il separatore.&lt;/li&gt;
&lt;/ol&gt;
Una delle prime cose da fare, dunque, quando si lavora con i CSV in python è definire il dialetto che viene utilizzato.&lt;/div&gt;
&lt;div&gt;
Il modulo CSV ha già un paio di dialetti preimpostati che sono quelli utilizzati da excel ma, all'uopo, se ne può impostare di personalizzati.&lt;/div&gt;
&lt;h3&gt;

&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;

Script di esempio&lt;/h3&gt;
Prima di creare questo script devi creare il file dati.csv e dati2.csv con le seguenti righe.&lt;br /&gt;
&lt;b&gt;Dati.csv&lt;/b&gt;:&lt;br /&gt;
&lt;script src="http://friendpaste.com/4dTCEQdRASy6qDqvLW1cnj.js"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Dat2.csv&lt;/b&gt;&lt;br /&gt;
&lt;script src="http://friendpaste.com/5pCiAiptbWphjcuttD4xXu.js"&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ed infine lo script&lt;/b&gt;:&lt;br /&gt;
&lt;script src="http://friendpaste.com/iSoHtCYMcsNAy0I07IuOy.js"&gt;
&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-1397041212506905283?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZIVMvSLqy8kb7KL1N8kW5eIWclo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZIVMvSLqy8kb7KL1N8kW5eIWclo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZIVMvSLqy8kb7KL1N8kW5eIWclo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZIVMvSLqy8kb7KL1N8kW5eIWclo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/-0DTAHiMPE8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/1397041212506905283/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/12/premessa-i-csv-sono-semplicissimi-files.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/1397041212506905283?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/1397041212506905283?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/-0DTAHiMPE8/premessa-i-csv-sono-semplicissimi-files.html" title="Python ed i CSV" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>14019 Villanova d&amp;#39;Asti AT, Italia</georss:featurename><georss:point>44.9422334 7.9376888</georss:point><georss:box>44.8972769 7.8587248 44.9871899 8.0166528</georss:box><feedburner:origLink>http://zuccala.blogspot.com/2011/12/premessa-i-csv-sono-semplicissimi-files.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYBRHs8cCp7ImA9WhRQFE8.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-4178978554154552688</id><published>2011-11-17T11:21:00.001+01:00</published><updated>2011-12-09T09:42:35.578+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-09T09:42:35.578+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="social network" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><title>Database applicazioni Twitter</title><content type="html">&lt;h3&gt;

Database applicazioni Twitter&lt;/h3&gt;
Qualche tempo fa ho scoperto che esiste un sito che raccoglie le applicazioni che appartengono al mondo di twitter. Si chiama twtbase e si può raggiungere tramite il link seguente: &lt;a href="http://www.twtbase.com/"&gt;http://www.twtbase.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-z3NI2JyURXA/TsTgdle44JI/AAAAAAAAAn4/LubR4gDozpg/s1600/twtbase.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="351" src="http://4.bp.blogspot.com/-z3NI2JyURXA/TsTgdle44JI/AAAAAAAAAn4/LubR4gDozpg/s400/twtbase.gif" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Il sito è ricco di applicazioni orientate a questo socialnetwork che possono essere usate su desktop e mobile e riguardando l'interfacciamento con browser, cellulari e dispositivi di qualsiasi altro genere.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Di seguito vado ad elencare alcune delle applicazioni che ho visto in questo sito e che ritengo interessanti...&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://filetweetapp.com/"&gt;filetweet&lt;/a&gt; e &lt;a href="http://twitdom.com/filetwt/"&gt;twitdom&lt;/a&gt;: sono metodi estremamente veloce per caricare un file e inviarlo ad un utente di twitter o anche ad un indirizzo email. La grandezza massima è di 2Gb. Molto molto onesto! Non richiede iscrizione.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://textsave.de/"&gt;textsave&lt;/a&gt;: per memorizzare testi ben più lunghi di 140 caratteri messi a disposizione di twitter. Non richiede iscrizione.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://whendidyoujointwitter.appspot.com/"&gt;when did you join twitter?&lt;/a&gt;: Se vuoi sapere quando una persona si è iscritta a twitter puoi usare questa applicazione. Non richiede iscrizione.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.twibes.com/"&gt;twibes&lt;/a&gt;: permette di gestire e creare gruppi su twitter. Richiede iscrizione.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://twitpic.com/"&gt;twitpic&lt;/a&gt;:&amp;nbsp; permette il caricamento di video e foto anche da cellulare da condividere su twitter. Non richiede iscrizione.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.morsetweet.com/"&gt;morsetweet&lt;/a&gt;: genera e traduce codice morse. Non richiede iscrizione.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.tvox.fr/"&gt;tweetvox&lt;/a&gt;: permette di caricare e condividere file audio/podcast. Richiede iscrizione ed eventualmente a pagamento per maggiore richiesta di spazio.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://twtpoll.com/"&gt;twtpoll&lt;/a&gt;: per creare sondaggi da condividere. Richiede iscrizione e pagamento.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://twtvite.com/"&gt;twtvite&lt;/a&gt;: per creare eventi e gestire le iscrizioni. Richiede iscrizione e servizio a pagamento.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://thetwittertagproject.com/botdb-data.php?f=H"&gt;twitter tag project&lt;/a&gt;: una lista dei bot disponibili per questo social network. Non richiede iscrizione.&lt;/li&gt;
&lt;/ul&gt;
E' da notare, inoltre, che molti di questi servizi hanno anche una app sui dispositivi mobili quali Android e/o iOS e per questo sono estremamente appetibili poichè si possono usare sia quando siamo seduti davanti la nostra scrivania sia con i nostri dispositivi mobili.&lt;br /&gt;
Vi invito a segnalarmi eventuali altre interessanti applicazioni per twitter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-4178978554154552688?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XwWztYhcXrE__FS2Qx5ux0CikZg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XwWztYhcXrE__FS2Qx5ux0CikZg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XwWztYhcXrE__FS2Qx5ux0CikZg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XwWztYhcXrE__FS2Qx5ux0CikZg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/6QnNDkg5zks" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/4178978554154552688/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/11/database-applicazioni-twitter.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/4178978554154552688?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/4178978554154552688?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/6QnNDkg5zks/database-applicazioni-twitter.html" title="Database applicazioni Twitter" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-z3NI2JyURXA/TsTgdle44JI/AAAAAAAAAn4/LubR4gDozpg/s72-c/twtbase.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/11/database-applicazioni-twitter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIBRXw_eyp7ImA9WhdSEE0.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-3096210743957867763</id><published>2011-07-18T17:14:00.005+02:00</published><updated>2011-07-18T17:55:54.243+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-18T17:55:54.243+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sqlite" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="database" /><title>Python: importare CSV in SQLite</title><content type="html">&lt;h3&gt;Premessa&lt;/h3&gt;Dopo aver:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Introdotto il sistema di &lt;a href="http://zuccala.blogspot.com/2010/12/sqlite-libreria-sql-in-200kb.html"&gt;database SQLite&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Visualizzato alcuni comandi a &lt;a href="http://zuccala.blogspot.com/2011/02/sqlite-da-riga-di-comando-1.html"&gt;riga di comando per la gestione di questo sistema &lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Approfondito &lt;a href="http://zuccala.blogspot.com/2011/07/sqlite-da-riga-di-comando-2.html"&gt;la riga di comando&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;Vediamo come interagire con python, CSV e SQLite&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Importazione di un file csv con python in sqlite&lt;/h3&gt;Nel seguente esempio ci connettiamo ad un database sqlite (se non esiste viene creato) e creiamo una tabella.&lt;br /&gt;Successivamente andiamo a leggere un file CSV (che abbia come separatore il ";") e lo importiamo nella tabella appena creata.&lt;br /&gt;Per facilità non viene fatto alcun controllo.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="font-style: italic;"&gt;import csv&lt;br /&gt;import sqlite3&lt;br /&gt;&lt;br /&gt;con = sqlite3.Connection('fileprova.sqlite')&lt;br /&gt;cur = con.cursor()&lt;br /&gt;cur.execute('CREATE TABLE "nominativi" ("Cognome" varchar(20), "Nome" varchar(20));')&lt;br /&gt;&lt;br /&gt;f = open('nominativi.csv')&lt;br /&gt;csv_reader = csv.reader(f, delimiter=';')&lt;br /&gt;&lt;br /&gt;cur.executemany('INSERT INTO nominativi VALUES (?, ?)', csv_reader)&lt;br /&gt;cur.close()&lt;br /&gt;con.commit()&lt;br /&gt;con.close()&lt;br /&gt;f.close()&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-3096210743957867763?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gDuo6msU1rIUQR9vu2iEV7Ow-Ko/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gDuo6msU1rIUQR9vu2iEV7Ow-Ko/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gDuo6msU1rIUQR9vu2iEV7Ow-Ko/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gDuo6msU1rIUQR9vu2iEV7Ow-Ko/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/CDTsCHMSb78" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/3096210743957867763/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/07/python-importare-csv-in-sqlite.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/3096210743957867763?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/3096210743957867763?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/CDTsCHMSb78/python-importare-csv-in-sqlite.html" title="Python: importare CSV in SQLite" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/07/python-importare-csv-in-sqlite.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcEQ3cyeCp7ImA9WhdTFkk.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-5260024879545689570</id><published>2011-07-14T11:32:00.003+02:00</published><updated>2011-07-14T14:53:22.990+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-14T14:53:22.990+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sqlite" /><category scheme="http://www.blogger.com/atom/ns#" term="database" /><title>SQLite da riga di comando (2)</title><content type="html">&lt;h3&gt;Premessa&lt;/h3&gt;Dopo una veloce carrellata dei comandi di SQLite visti nell'articolo precedente denominato &lt;a href="http://zuccala.blogspot.com/2011/02/sqlite-da-riga-di-comando-1.html"&gt;SQLite da riga di comando (1)&lt;/a&gt;, in questo articolo andremo un pochino più nei dettagli sebbene non è scopo di questo articolo, essere una guida al linguaggio SQL..&lt;br /&gt;&lt;h4&gt;Creiamo/modifichiamo un database&lt;/h4&gt;Dopo aver scaricato e scompattato SQLite, la prima cosa da fare è modificare un database o, se questo non esiste, dobbiamo crearlo:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 153); font-style: italic;"&gt;sqlite3 prova.db&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;A questo punto ci verrà presentata la shell già vista nel precedente articolo. Per essere sicuri di lavorare sul database sopra citato possiamo digitare il comando .database con relativo output in rosso.&lt;br /&gt;&lt;blockquote&gt;sqlite- &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;.database&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;seq name  file&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;---  -----   -------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;  0    main  j:\sqlite\prova.db&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h4&gt;Creiamo una tabella&lt;/h4&gt;Come ho già detto, dato che si parla di comandi SQL, rimando ad una&lt;a href="http://www.sqlite.org/lang.html"&gt; guida più esaustiva&lt;/a&gt;. In questa sede si vuol solo dare una idea di massima. La prima cosa da fare, però, è proprio la costruzione di una tabella dove immagazzinare i nostri dati. A titolo di esempio, pensiamo ad un elenco di prodotti.&lt;br /&gt;&lt;blockquote&gt;sqlite- &lt;span style="color: rgb(0, 0, 153);"&gt;CREATE TABLE Prodotti (IDProdotto INTEGER PRIMARY KEY, Colore varchar(25), Prezzo double);&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Il programma non ci restituirà alcun output che significa che tutto è andato a buon fine.&lt;br /&gt;Quando un numero intero (integer) è dichiarato chiave primaria come nell'esempio, sqlite lo identifica come autoincrementale.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Viste ed indici&lt;/h4&gt;Le viste sono come tabelle virtuali. Permettono di vedere le singole tabelle o più tabelle in join, con criteri differenti tipo "due campi di A, 1 campo di B e 3 di C come se fossero un'unica tabella".&lt;br /&gt;Gli indici, al contrario, sono dei campi privilegiati. Essi, se interrogati, hanno dei tempi di risposta decisamente minori.&lt;br /&gt;In altre parole se chiedete tutti gli abitanti di una città e il campo città è indicizzato, la ricerca su vasta scala sarà decisamente più veloce.&lt;br /&gt;La differenza non si nota con qualche centinaio di record ma con migliaia o milioni di record...&lt;br /&gt;Vediamo un esempio di vista e di indice:&lt;br /&gt;&lt;blockquote&gt;sqlite- &lt;span style="color: rgb(0, 0, 153);"&gt;CREATE VIEW vistaRosso AS select Colore, Prezzo from Prodotti where Colore="Rosso";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;sqlite- &lt;span style="color: rgb(0, 0, 153);"&gt;CREATE INDEX indiceProva on Prodotti (IDProdotto);&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h4&gt;Elenco tabelle, viste, indici, schema&lt;br /&gt;&lt;/h4&gt;Può essere necessario "ricordarsi" la lista degli oggetti elencati nel sottotitolo. Di seguito i comandi con i relativi output in rosso. Una nota di riguardo allo schema: è il termine con il quale SQLite indica gli schemi di creazione degli oggetti come tabelle, viste.&lt;br /&gt;&lt;blockquote&gt;sqlite- &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;.tables&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Prodotti&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;sqlite- &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;.tables P%&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;Prodotti&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;sqlite- &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;.indices&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;indiceProva&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;sqlite-&lt;span style="color: rgb(0, 0, 153); font-style: italic;"&gt; .indices Prodotti&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;indiceProva&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;sqlite- &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;.schema&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;CREATE TABLE Prodotti (IDProdotto INTEGER PRIMARY KEY, Colore varchar(25), Prezzo double);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;CREATE VIEW vistaRosso AS select Colore, Prezzo from Prodotti where Colore="Rosso";&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;CREATE INDEX indiceProva on Prodotti (IDProdotto);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h4&gt;Inserimento record&lt;/h4&gt;A questo punto è arrivato il momento di inserire un po' di record.&lt;br /&gt;Nel precedente articolo ho già fatto vedere come si fa ed ho anche evidenziato l'opportunità di importare dei files di testo (CSV) creati in Excel o OpenOffice Calc. &lt;a href="http://zuccala.blogspot.com/2011/02/sqlite-da-riga-di-comando-1.html"&gt;Rimando quindi all'articolo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Visualizzare i dati&lt;/h4&gt;La parte più affascinante è senza dubbio l'interrogazione del database. Anche qui rimando ad&lt;a href="http://www.sqlite.org/lang.html"&gt; un manuale più esaustivo&lt;/a&gt; per la sintassi del comando SELECT nel linguaggio SQL.&lt;br /&gt;&lt;blockquote&gt;sqlite- &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;SELECT * FROM Prodotti;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;1|Rosso|44.55&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;2|Rosso|33.33&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;3|Giallo|34.33&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Eventualmente si può rendere più gradevole l'ouput si possono utilizzare delle opzioni come &lt;span style="font-style: italic;"&gt;mode&lt;/span&gt; e/o &lt;span style="font-style: italic;"&gt;headers&lt;/span&gt;. Personlamente, prima del select, consiglio le seguenti opzioni:&lt;br /&gt;&lt;blockquote&gt;sqlite- &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;.headers on&lt;/span&gt;&lt;br /&gt;sqlite- &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;.mode column&lt;/span&gt;&lt;br /&gt;sqlite- &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;SELECT * FROM Prodotti;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;IDProdotto Colore Prezzo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;-----------  ------  -------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;1                   Rosso   44.55&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;2                   Rosso   33.33&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;3                   Giallo    34.33&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;h4&gt;Esportare/Importare i dati&lt;/h4&gt;Una possibilità molto interessante è la possibilità di esportare il database o anche solo una tabella in formati differenti.&lt;br /&gt;&lt;blockquote&gt;sqlite- &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;.output fileoutput.sql&lt;/span&gt;&lt;br /&gt;sqlite- &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;.dump&lt;/span&gt;&lt;br /&gt;sqlite- &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;.output stdout&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;In questo modo verrà creato un file con le istruzioni SQL per la creazione delle tabelle, inserimento dati.&lt;br /&gt;Tale file può quindi essere un backup a tutti gli effetti, importabile in un secondo momento come segue:&lt;br /&gt;&lt;blockquote&gt;sqlite- &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;.read fileoutput.sql&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h3&gt;SQLite da shell di sistema&lt;br /&gt;&lt;/h3&gt;La feature più interessante di tutte, a mio avviso, è la possibilità di dare i medesimi comandi non da shell interattiva ma da shell di sistema.&lt;br /&gt;Questo ci da modo di creare degli script di sistema (file.bat in windows, script in linux e MacOS) in maniera estremamente agevole e veloce.&lt;br /&gt;Non mi dilungherò troppo ma mi limiterò a fare tre esempi:&lt;br /&gt;&lt;blockquote&gt;1) Selezione: &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;sqlite3 -header -column  prova.db 'select * from Prodotti;'&lt;/span&gt;&lt;br /&gt;2) Visionare lo schema: &lt;span style="color: rgb(0, 0, 153); font-style: italic;"&gt;sqlite3 prova.db '.schema'&lt;/span&gt;&lt;br /&gt;3) Inserire un record: &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;sqlite3 prova.db 'insert into Prodotti values (NULL, "Giallo", 33.55)&lt;/span&gt;&lt;br /&gt;4) Fare il backup: &lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;sqlite3 prova.db '.dump' &amp;gt; fileoupt.sql&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h3&gt;Conclusioni&lt;/h3&gt;SQLite è, senza dubbio, un sistema di database molto interessante; per degli approfondimenti rimando ad un mio precedente articolo: &lt;a href="http://zuccala.blogspot.com/2010/12/sqlite-libreria-sql-in-200kb.html"&gt;sqlite, libreria sql in 200kb&lt;/a&gt;.&lt;br /&gt;Personalmente lo reputo un alleato estremamente potente ed utile nella vita "informatica" di tutti i giorni come memorizzatore di log ma anche come aiuto nella operatività giornaliera.&lt;br /&gt;Ovviamente non va bene se si intende utilizzarlo come sistema multiutente ma saprà donare moltissime soddisfazioni in tutti quei contesti monoutente dove è richiesta rapidità, semplicità d'uso e poco ingombro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-5260024879545689570?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z0NYEBDX74LZSlvw7N8ga1oePuk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z0NYEBDX74LZSlvw7N8ga1oePuk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z0NYEBDX74LZSlvw7N8ga1oePuk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z0NYEBDX74LZSlvw7N8ga1oePuk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/iEvg9_lDle0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/5260024879545689570/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/07/sqlite-da-riga-di-comando-2.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5260024879545689570?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5260024879545689570?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/iEvg9_lDle0/sqlite-da-riga-di-comando-2.html" title="SQLite da riga di comando (2)" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/07/sqlite-da-riga-di-comando-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08FRXo4eip7ImA9WhdTE0Q.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-5501304551003866457</id><published>2011-07-11T14:05:00.002+02:00</published><updated>2011-07-11T17:56:54.432+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-11T17:56:54.432+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bicicletta" /><category scheme="http://www.blogger.com/atom/ns#" term="arduino" /><title>bikeComputer con Arduino</title><content type="html">&lt;h3&gt;Premessa&lt;/h3&gt;Finalmente è arrivata l’estate e con essa il caldo; la voglia di uscire e stare all’aria aperta si fa sentire ogni giorno con maggiore forza e, talvolta, nei pigri pomeriggi cittadini, nelle assolate domeniche fuori porta o sulla passeggiata del lungo mare decidiamo di abbandonare la tanto amata automobile per tornare a mezzi di locomozione più tradizionali: le nostre gambe ma, soprattutto, la bicicletta.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm6.static.flickr.com/5075/5909718602_59e4133d83_z.jpg"&gt;&lt;img style="float:center; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 512px; height: 382px;" src="http://farm6.static.flickr.com/5075/5909718602_59e4133d83_z.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I più curiosi, in queste occasioni, vorrebbero sapere quanti chilometri riescono a percorrere, quale sia la velocità di punta toccata e quante pedalate riescono a fare in un minuto; magari per vantarsi con gli amici :-). E’ per far fronte a queste esigenze che io ed Enkel abbiamo pensato di progettare il bikeComputer con Arduino. In questo articolo vi racconterò come abbiamo fatto.&lt;br /&gt;&lt;br /&gt;L'immagine che vedete qui sopra è il prototipo funzionante che abbiamo avvolto nello scotch sul manubrio della bici di Enkel per fare il test "su strada" :-)&lt;br /&gt;Potete trovare tutte le immagini del progetto in &lt;a href="http://is.gd/1bAKSY"&gt;questa pagina&lt;/a&gt;.&lt;br /&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;L'idea&lt;/h3&gt;&lt;div&gt;L’idea è semplice: tramite &lt;a href="http://arduino.cc/en/Main/ArduinoBoardUno"&gt;arduino&lt;/a&gt; si visualizza la velocità di punta e la velocità media su un&lt;a href="http://www.google.it/search?sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=display+lcd+16x2#q=display+lcd+16x2&amp;amp;hl=it&amp;amp;prmd=ivns&amp;amp;source=univ&amp;amp;tbm=shop&amp;amp;tbo=u&amp;amp;sa=X&amp;amp;ei=2PAZTo3jFYO1hAfMrNjMBQ&amp;amp;ved=0CDgQrQQ&amp;amp;bav=on.2,or.r_gc.r_pw.&amp;amp;fp=35dabb06b99fa8d3&amp;amp;biw=1138&amp;amp;bih=540"&gt; display 16X2&lt;/a&gt;.&lt;br /&gt;Per contare i giri della ruota abbiamo utilizzato un &lt;a href="http://en.wikipedia.org/wiki/Reed_switch"&gt;reed switch&lt;/a&gt;. Questo sensore si comporta come un interruttore: esso rimane normalmente aperto (e quindi non passa corrente); arduino lo vede come un segnale digitale LOW.&lt;br /&gt;Quando passa un magnete vicino (posizionato sui raggi della ruota), il sensore si chiude facendo passare corrente; in questo modo restituisce un HIGH digitale ad arduino riconosce il passaggio del magnete; il tempo trascorso tra un passaggio e l’altro ci permette di calcolare la velocità istantanea (e successivamente quella media) e, conoscendo il raggio della ruota, si può calcolare il numero di metri percorsi.&lt;/div&gt;&lt;div&gt;Analogo discorso si può fare per contare le pedalate piazzando il magnete sulla corona della bicicletta ed un secondo reed switch sul telaio della bicicletta.&lt;/div&gt;&lt;div&gt;Per ragioni di compattezza abbiamo utilizzato uno schermo LCD 16x2 ma abbiamo meditato l’uso di un 20x4 in modo da vedere tutte le informazioni contemporaneamente.&lt;/div&gt;Ciò che ci interessava molto, però, era anche la possibilità di poter fruire dei dati dopo aver terminato la scampagnata (si pensi ad una gita: vado in un luogo in bici, mangio, gioco a freesbie e riprendo la bici fino a casa dove voglio analizzare le mie performance); per questo motivo abbiamo usato uno shield microSD con memoria da 1Gb.&lt;br /&gt;La memoria ha un duplice scopo: l'utente dovrà inserire un file da denominare config.txt (qualsiasi operativo può creare un file di testo semplice) dove inserisce un numero di 4 cifre che esprime il diametro della ruota della propria bicicletta in mm (serve per il calcolo della distanza percorsa); dal canto suo arduino aggiorna il file log.txt.&lt;br /&gt;Tale file sarà creato ed alimentato da arduino con tante righe quanti sono i passaggi del magnete; ogni riga contiene il numero di millisecondi passati dall’accensione di arduino (tramite la funzione millis()) nel momento in cui si rileva il passaggio del magnete vicino al reed (da questi è poi semplice ricavarsi tutto il resto magari effettuando un grafico con Processing).&lt;br /&gt;L’alimentazione del sistema è stata affidata ad un pacco batterie composto da 4 pile in serie. Conteggiando circa 1.2-1.5V per ciascuna si arriva ad una tensione di alimentazione di 4.8-6V che abbiamo inserito direttamente nel pin Vin per evitare inutili dispersioni di energia.&lt;br /&gt;Per quanto riguarda il “case” ci siamo appoggiati al FabLab di Torino (nelle immagini non è ancora presente ma è "coming soon") grazie all’aiuto di Davide G. ed Enrico C. che ci hanno aiutato con il laser-cutter a progettare un adeguato alloggiamento per il sistema.&lt;br /&gt;Una esigenza con la quale ci siamo scontrati, inoltre, era il desiderio di rendere indipendente il reed sensor e il “case” con arduino dentro: l’idea è quella di arrivare a destinazione (magari davanti un supermarket per fare la spesa) e poter staccare tutto il sistema (per non lasciarlo in balia di occhi indiscreti e mani disoneste); a questo proposito è stata ingegnosa l’intuizione di Enkel che ha pensato di riutilizzare delle vecchie cuffie stereo per walkman: abbiamo tagliato gli auricolari dai quali prelevare due fili (massa e segnale); dall’altra estremità il jack da 3.5mm era già pronto per essere inserito durante l’utilizzo ed estratto a destinazione.&lt;div&gt;&lt;h3&gt;Schema&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;Seguono lo schema di connessione sulla breadboard e lo schema elettrico. Entrambi realizzati con fritzing.&lt;/div&gt;&lt;div&gt;Schema sulla breadboard:&lt;br /&gt;&lt;a href="http://farm6.static.flickr.com/5116/5909647700_7046915a8c_o.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 1021px; height: 812px;" src="http://farm6.static.flickr.com/5116/5909647700_7046915a8c_o.png" alt="" border="0" /&gt;&lt;/a&gt;Schema elettrico:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://farm7.static.flickr.com/6022/5909648176_1e0977491a_o.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 1028px; height: 832px;" src="http://farm7.static.flickr.com/6022/5909648176_1e0977491a_o.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;h3&gt;Codice&lt;/h3&gt;Di seguito il codice utilizzato&lt;br /&gt;&lt;pre  style="background:#ffffff;color:#000000;"&gt;&lt;span style=" ;color:#696969;" &gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;////////////////////////////////////////////////&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt; [ Arduino Cycle Computer ] Version A0.2&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt; &amp;gt;&amp;gt; Original written by Adam O'Hern&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt; &amp;gt;&amp;gt; Modified by Alexdlp for Instructables 2011&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt; &amp;gt;&amp;gt; Modified by Enkel Bici&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt; &amp;gt;&amp;gt; and Vittorio Zuccala' for Wired.it 2011&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt; ////////////////////////////////////////////////&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt; */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" ;color:#004a43;" &gt;#&lt;/span&gt;&lt;span style=" ;color:#004a43;" &gt;include &lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;&amp;lt;&lt;/span&gt;&lt;span style=" ;color:#40015a;" &gt;LiquidCrystal.h&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;//#include &amp;lt;LcdBarGraph.h&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// initialize the library with the numbers of the interface pins&lt;/span&gt;&lt;br /&gt;LiquidCrystal lcd&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;7&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;6&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;5&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;4&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;3&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;2&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" ;color:#004a43;" &gt;#&lt;/span&gt;&lt;span style=" ;color:#004a43;" &gt;include &lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;&amp;lt;&lt;/span&gt;&lt;span style=" ;color:#40015a;" &gt;SD.h&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;File myFile&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;//byte lcdNumCols = 15; // -- number of columns in the LCD&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;//LcdBarGraph lbg(&amp;amp;lcd, lcdNumCols);  // -- creating&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;int&lt;/span&gt; LED &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;13&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;                    &lt;span style=" ;color:#696969;" &gt;//pin for the LED&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;int&lt;/span&gt; SensorPin &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;15&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;              &lt;span style=" ;color:#696969;" &gt;//input for REED SensorPin (analog 0 as digital) &lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;int&lt;/span&gt; rim &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;2035&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;                  &lt;span style=" ;color:#696969;" &gt;//circumference of wheel in mm (28" rim)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;int&lt;/span&gt; val &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;                     &lt;span style=" ;color:#696969;" &gt;// used to store input value&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;int&lt;/span&gt; previousVal &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;             &lt;span style=" ;color:#696969;" &gt;// lets not be too repetitious&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;int&lt;/span&gt; debounce &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;10&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;               &lt;span style=" ;color:#696969;" &gt;// the debounce time, increase if the output flickers&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;int&lt;/span&gt; cycles &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;1&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;                  &lt;span style=" ;color:#696969;" &gt;// total number of revolutions&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;float&lt;/span&gt; currentSpeed &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;          &lt;span style=" ;color:#696969;" &gt;// current speed in MPH&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;float&lt;/span&gt; averageSpeed &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;          &lt;span style=" ;color:#696969;" &gt;// average speed since "newRide" was true&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;unsigned&lt;/span&gt; &lt;span style=" font-weight:bold; color:#800000;" &gt;long&lt;/span&gt; revTimer&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;          &lt;span style=" ;color:#696969;" &gt;// create a timer that tells us how long we go between pulses,&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;unsigned&lt;/span&gt; &lt;span style=" font-weight:bold; color:#800000;" &gt;long&lt;/span&gt; serialTimer&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;       &lt;span style=" ;color:#696969;" &gt;// and one for how long it's been since we sent anything over serial&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;unsigned&lt;/span&gt; &lt;span style=" font-weight:bold; color:#800000;" &gt;long&lt;/span&gt; rideTimer&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;         &lt;span style=" ;color:#696969;" &gt;// total time since "newRide" was true&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;boolean activeRiding &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; false&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;    &lt;span style=" ;color:#696969;" &gt;// is the bike moving?&lt;/span&gt;&lt;br /&gt;boolean activityChange &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; true&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;   &lt;span style=" ;color:#696969;" &gt;// just a way of keeping track of how long we're inactive&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;long&lt;/span&gt; inactivityTimer&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;            &lt;span style=" ;color:#696969;" &gt;// millis() on which we began inactivity&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;long&lt;/span&gt; activeRidingOffset &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;     &lt;span style=" ;color:#696969;" &gt;// time subtracted from total riding time when calculating average speed&lt;/span&gt;&lt;br /&gt;boolean newRide &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; true&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;          &lt;span style=" ;color:#696969;" &gt;// true if we haven't moved in half an hour or more&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;float&lt;/span&gt; rideDistance &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;          &lt;span style=" ;color:#696969;" &gt;// total distance traveled since "newRide" was true&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;void&lt;/span&gt; setup&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;begin&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;16&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;2&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;pinMode&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;LED&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; OUTPUT&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;           &lt;span style=" ;color:#696969;" &gt;// tell arduino LED port is an output,&lt;/span&gt;&lt;br /&gt;pinMode&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;SensorPin&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; INPUT&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;         &lt;span style=" ;color:#696969;" &gt;// and SensorPin port is input&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;setCursor&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;print&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;Init SD...&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;setCursor&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;1&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;!&lt;/span&gt;SD&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;begin&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;8&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;print&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;Init failed!&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;delay&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;20000&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;return&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;else&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;delay&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;2000&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;print&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;Init OK!!&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;delay&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;10000&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;clear&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;myFile &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; SD&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;open&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;setup.txt&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;myFile&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;setCursor&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;print&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;wheel:&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;setCursor&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;1&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;char&lt;/span&gt; c&lt;span style=" ;color:#808030;" &gt;[&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;5&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;]&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;int&lt;/span&gt; count&lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// read from the file until there's nothing else in it:&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;while&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;myFile&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;available&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;c&lt;span style=" ;color:#808030;" &gt;[&lt;/span&gt;count&lt;span style=" ;color:#808030;" &gt;]&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt;myFile&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;read&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;count&lt;span style=" ;color:#808030;" &gt;+&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;+&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// close the file:&lt;/span&gt;&lt;br /&gt;myFile&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;close&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;delay&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;2000&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;rim&lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;                          &lt;span style=" ;color:#696969;" &gt;//reset the wheel diameter&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;for&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;count&lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;count&lt;span style=" ;color:#808030;" &gt;&amp;lt;&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;4&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;count&lt;span style=" ;color:#808030;" &gt;+&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;+&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;    &lt;span style=" ;color:#696969;" &gt;//it supposes the diameter is expressed in mm and composed of 4 characters written in a text file on the sd card&lt;/span&gt;&lt;br /&gt;rim&lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt;rim&lt;span style=" ;color:#808030;" &gt;+&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;c&lt;span style=" ;color:#808030;" &gt;[&lt;/span&gt;count&lt;span style=" ;color:#808030;" &gt;]&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;-&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;48&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;*&lt;/span&gt;pow&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;10&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;3&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;-&lt;/span&gt;count&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;  &lt;span style=" ;color:#696969;" &gt;//each character reappresents a number. 0 is equal 48 in ascii code. From then on you add 1 to get the next numbers. &lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;rim&lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt;rim&lt;span style=" ;color:#808030;" &gt;+&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;1&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;    &lt;span style=" ;color:#696969;" &gt;//magic number&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;print&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;rim&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;delay&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;2000&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;else&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// if the file didn't open, print an error:&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;print&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;error reading...&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;delay&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;20000&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Serial&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;begin&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;9600&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;             &lt;span style=" ;color:#696969;" &gt;// start a serial session&lt;/span&gt;&lt;br /&gt;revTimer &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; millis&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;            &lt;span style=" ;color:#696969;" &gt;// start pulse timer&lt;/span&gt;&lt;br /&gt;serialTimer &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; millis&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;         &lt;span style=" ;color:#696969;" &gt;// start serial timer&lt;/span&gt;&lt;br /&gt;rideTimer &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; millis&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;           &lt;span style=" ;color:#696969;" &gt;// start ride timer&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;void&lt;/span&gt; loop&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;!&lt;/span&gt;activeRiding&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;activityChange&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;inactivityTimer &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; millis&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;activityChange &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; false&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;else&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;activityChange&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;activeRidingOffset &lt;span style=" ;color:#808030;" &gt;+&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; millis&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;-&lt;/span&gt; inactivityTimer&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;activityChange &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; false&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;val &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; digitalRead&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;SensorPin&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;val&lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt;LOW&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;                 &lt;span style=" ;color:#696969;" &gt;// check whether input is LOW (magnet is NOT in range of reed SensorPin)&lt;/span&gt;&lt;br /&gt;digitalWrite&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;LED&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; LOW&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;       &lt;span style=" ;color:#696969;" &gt;// turn LED off&lt;/span&gt;&lt;br /&gt;previousVal &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; LOW&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;            &lt;span style=" ;color:#696969;" &gt;// allow the next "pulse" to be counted&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;else&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;digitalWrite&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;LED&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; HIGH&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;     &lt;span style=" ;color:#696969;" &gt;// turn LED off&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;setCursor&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;1&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;         &lt;span style=" ;color:#696969;" &gt;// Set cursor to the top right of LCD&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;print&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;*&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;              &lt;span style=" ;color:#696969;" &gt;// Print a blank character or 'space'&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;//delay(100);                // debounce timer&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;setCursor&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;1&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;         &lt;span style=" ;color:#696969;" &gt;// Set cursor to the top right of LCD&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;print&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt; &lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;              &lt;span style=" ;color:#696969;" &gt;// Print a blank character or 'space'&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;previousVal &lt;span style=" ;color:#808030;" &gt;!&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; HIGH &lt;span style=" ;color:#808030;" &gt;&amp;amp;&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;&amp;amp;&lt;/span&gt; millis&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;-&lt;/span&gt; revTimer &lt;span style=" ;color:#808030;" &gt;&amp;gt;&lt;/span&gt; debounce&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt; &lt;span style=" ;color:#696969;" &gt;// we've got a pulse!&lt;/span&gt;&lt;br /&gt;pulse&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;previousVal &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; HIGH&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;             &lt;span style=" ;color:#696969;" &gt;// (in case the magnet is in range of the SensorPin while sitting still)&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// if it's been too long since the last pulse, assume we're not moving.&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;millis&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;-&lt;/span&gt;revTimer &lt;span style=" ;color:#808030;" &gt;&amp;gt;&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;2000&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;currentSpeed &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;sendStats&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;activeRiding&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;activityChange &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; true&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;activeRiding &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; false&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// if it's been more than fifteen minutes...&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;millis&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;-&lt;/span&gt; revTimer &lt;span style=" ;color:#808030;" &gt;&amp;gt;&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;15&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;*&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;60&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;*&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;1000&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// we'll assume it's a new riding session &amp;amp; zero everything out at next pulse.&lt;/span&gt;&lt;br /&gt;newRide &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; true&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;     &lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;void&lt;/span&gt; pulse&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;newRide&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;clear&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;cycles &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;averageSpeed &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;rideTimer &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; millis&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;rideDistance &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;//log data to file&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// open the file. note that only one file can be open at a time,&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// so you have to close this one before opening another.&lt;/span&gt;&lt;br /&gt;File dataFile &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; SD&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;open&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;log.txt&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; FILE_WRITE&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// if the file is available, write to it:&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;dataFile&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;dataFile&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;print&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;newride&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;dataFile&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;println&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;,&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;dataFile&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;close&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// print to the serial port too:&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;//Serial.println("newride");&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// if the file isn't open, pop up an error:&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;else&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;setCursor&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;1&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;println&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;can't write&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;cycles&lt;span style=" ;color:#808030;" &gt;+&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;+&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;                                             &lt;span style=" ;color:#696969;" &gt;// The wheel has obviously turned another revolution&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;rideDistance &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;float&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; rim&lt;span style=" ;color:#808030;" &gt;*&lt;/span&gt;cycles&lt;span style=" ;color:#808030;" &gt;/&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;1000&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;               &lt;span style=" ;color:#696969;" &gt;// distance in meters, &lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;//rideDistance = rideDistance * 0.000621371192;       // converted to miles&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;currentSpeed &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;float&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;millis&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;-&lt;/span&gt; revTimer&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;*&lt;/span&gt;&lt;span style=" ;color:#008000;" &gt;0.001&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;   &lt;span style=" ;color:#696969;" &gt;// Convert time elapsed to milliseconds to seconds&lt;/span&gt;&lt;br /&gt;currentSpeed &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; rim&lt;span style=" ;color:#808030;" &gt;/&lt;/span&gt;currentSpeed&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;                      &lt;span style=" ;color:#696969;" &gt;// S = d/t: Rim circumference divided by time elapsed&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;//currentSpeed = currentSpeed*0.002237;               // MPH Conversion: 1 mm/s = 0.001 m/s * 3600 s/hr * 1 mile / 1609 m = 0.002237 &lt;/span&gt;&lt;br /&gt;i&lt;span style=" ;color:#808030;" &gt;/&lt;/span&gt;hr&lt;br /&gt;currentSpeed &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; currentSpeed&lt;span style=" ;color:#808030;" &gt;*&lt;/span&gt;&lt;span style=" ;color:#008000;" &gt;0.0036&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;                     &lt;span style=" ;color:#696969;" &gt;// 1Km/hr Conversion: 1 mm/s = 0.001 m/s * 3600 s/hr * 1Km/1000m  = 0,0036 Km/hr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// time ridden since "newRide", in hours, not including inactive time&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;unsigned&lt;/span&gt; &lt;span style=" font-weight:bold; color:#800000;" &gt;long&lt;/span&gt; activeRidingMillis &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; millis&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;-&lt;/span&gt; rideTimer &lt;span style=" ;color:#808030;" &gt;-&lt;/span&gt; activeRidingOffset&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;//float activeRidingHours = (float) activeRidingMillis/1000/60/60; // convert to hours&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;float&lt;/span&gt; activeRidingSeconds &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;float&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; activeRidingMillis&lt;span style=" ;color:#808030;" &gt;*&lt;/span&gt;&lt;span style=" ;color:#008000;" &gt;0.001&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt; &lt;span style=" ;color:#696969;" &gt;// convert to hours&lt;/span&gt;&lt;br /&gt;averageSpeed &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; rideDistance &lt;span style=" ;color:#808030;" &gt;/&lt;/span&gt; activeRidingSeconds&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;averageSpeed &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; averageSpeed&lt;span style=" ;color:#808030;" &gt;*&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;3&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;6&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;revTimer &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; millis&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;       &lt;span style=" ;color:#696969;" &gt;// remember the current moment for speed calculations next time around&lt;/span&gt;&lt;br /&gt;sendStats&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;               &lt;span style=" ;color:#696969;" &gt;// Tell Processing what's going on&lt;/span&gt;&lt;br /&gt;newRide &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; false&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;!&lt;/span&gt;activeRiding&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;         &lt;span style=" ;color:#696969;" &gt;//if you start from standin still &lt;/span&gt;&lt;br /&gt;activityChange &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; true&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;activeRiding &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; true&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;//log data to file&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// open the file. note that only one file can be open at a time,&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// so you have to close this one before opening another.&lt;/span&gt;&lt;br /&gt;File dataFile &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; SD&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;open&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;log.txt&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; FILE_WRITE&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// if the file is available, write to it:&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;if&lt;/span&gt; &lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;dataFile&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;dataFile&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;print&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;revTimer&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;dataFile&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;println&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;,&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;dataFile&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;close&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// print to the serial port too:&lt;/span&gt;&lt;br /&gt;Serial&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;println&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;revTimer&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;// if the file isn't open, pop up an error:&lt;/span&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;else&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;setCursor&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;1&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;println&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;can't write&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" font-weight:bold; color:#800000;" &gt;void&lt;/span&gt; sendStats&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt; &lt;span style=" ;color:#800080;" &gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;  Serial.print("rideDistance=");&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;   Serial.print(rideDistance,2);&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;   Serial.print("&amp;amp;currentSpeed=");&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;   Serial.print(currentSpeed,1);&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;   */&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;setCursor&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;0&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;1&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;print&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;Speed = &lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;setCursor&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;9&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;1&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;print&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;currentSpeed&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;1&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;setCursor&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#008c00;" &gt;13&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;,&lt;/span&gt; &lt;span style=" ;color:#008c00;" &gt;1&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;lcd&lt;span style=" ;color:#808030;" &gt;.&lt;/span&gt;print&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#0000e6;" &gt;kmh&lt;/span&gt;&lt;span style=" ;color:#800000;" &gt;"&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;//lbg.drawValue(currentSpeed, 35);&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;/*&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;  Serial.print("&amp;amp;averageSpeed=");&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;   Serial.print(averageSpeed,2);&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;   &lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;   // send a linefeed character, telling Processing that we're done transmitting.&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;   Serial.print(10,BYTE);     &lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#696969;" &gt;   */&lt;/span&gt;&lt;br /&gt;serialTimer &lt;span style=" ;color:#808030;" &gt;=&lt;/span&gt; millis&lt;span style=" ;color:#808030;" &gt;(&lt;/span&gt;&lt;span style=" ;color:#808030;" &gt;)&lt;/span&gt;&lt;span style=" ;color:#800080;" &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=" ;color:#800080;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-5501304551003866457?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_nNCPkBNuAoe9ey-gqWflN4vFPM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_nNCPkBNuAoe9ey-gqWflN4vFPM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_nNCPkBNuAoe9ey-gqWflN4vFPM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_nNCPkBNuAoe9ey-gqWflN4vFPM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/IKNbhT-lLT0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/5501304551003866457/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/07/bikecomputer-con-arduino.html#comment-form" title="16 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5501304551003866457?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5501304551003866457?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/IKNbhT-lLT0/bikecomputer-con-arduino.html" title="bikeComputer con Arduino" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://farm6.static.flickr.com/5075/5909718602_59e4133d83_t.jpg" height="72" width="72" /><thr:total>16</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/07/bikecomputer-con-arduino.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUENR30-fCp7ImA9WhZUGUg.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-1949656631356462550</id><published>2011-06-13T11:10:00.003+02:00</published><updated>2011-06-13T11:34:56.354+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-13T11:34:56.354+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="skype" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>Webcam su Skype Linux</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-lh3uBcB60Ms/TfXUTNk44YI/AAAAAAAAAmI/EHK3vFwo6lA/s1600/tux_skype1.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 168px; height: 200px;" src="http://4.bp.blogspot.com/-lh3uBcB60Ms/TfXUTNk44YI/AAAAAAAAAmI/EHK3vFwo6lA/s200/tux_skype1.png" alt="" id="BLOGGER_PHOTO_ID_5617629536741548418" border="0" /&gt;&lt;/a&gt;&lt;h3&gt;Premessa&lt;/h3&gt;Ieri sera sono andato da un amico per aiutarlo ad installare ed usare la webcam su skype sul suo computer Linux.&lt;br /&gt;Il PC utilizza una Ubuntu 11.04 e la webcam è una Creative Live! Cam.&lt;br /&gt;&lt;h3&gt;Utilizzo&lt;/h3&gt;Salto i passaggi sul riconoscimento della webcam.&lt;br /&gt;Nel nostro caso erano necessari i driver gspca riconosciuti al volo senza problemi.&lt;br /&gt;A tal proposito, per testare la webcam, vi consiglio l'installazione da synaptic di "&lt;span style="font-weight: bold; font-style: italic;"&gt;Camorama&lt;/span&gt;": è un ottimo programmino che vi permette di testare al volo se l'apparecchio funziona o meno.&lt;br /&gt;&lt;br /&gt;A questo punto vediamo l'utilizzo con skype.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Aprire una shell&lt;/li&gt;&lt;li&gt;Andare nella directory con l'eseguibile di skype: /usr/bin o /usr/local/bin. Io ipotizzerò il primo!&lt;/li&gt;&lt;li&gt;Cambiare il nome skype in skype.real&lt;/li&gt;&lt;li&gt;Creare uno script denominato skype&lt;/li&gt;&lt;li&gt;Inserire le istruzioni per avviare skype.real&lt;/li&gt;&lt;/ol&gt;Vediamo in pratica i passaggi dopo aver aperto la shell:&lt;br /&gt;&lt;blockquote style="color: rgb(0, 0, 153); font-style: italic;"&gt;cd /usr/bin&lt;br /&gt;sudo mv skype skype.real&lt;br /&gt;sudo touch skype&lt;br /&gt;sudo chmod 755 skype&lt;br /&gt;sudo gedit skype        &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;In questo modo entriamo nell'editor e aggiungiamo le seguenti righe:&lt;br /&gt;&lt;blockquote style="color: rgb(255, 0, 0); font-style: italic; font-weight: bold;"&gt;#!/bin/bash&lt;br /&gt;export XLIB_SKIP_ARGB_VISUALS=1&lt;br /&gt;LD_PRELOAD=/usr/lib32/libv4l/v4l1compat.so skype&lt;br /&gt;skype&lt;br /&gt;exit&lt;/blockquote&gt;&lt;br /&gt;A questo punto si potrebbero avere problemi di luminosità.&lt;br /&gt;E' possibile risolverli come segue:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Modificare le opzioni della colorazione RGB&lt;/li&gt;&lt;li&gt;Fare un reboot della macchina&lt;/li&gt;&lt;/ol&gt;Vediamo nella pratica questi passaggi. Sempre dalla console:&lt;br /&gt;&lt;blockquote style="color: rgb(0, 0, 153); font-style: italic;"&gt;sudo gedit /etc/modprobe.d/options&lt;/blockquote&gt;&lt;br /&gt;Aggiungiamo le seguenti righe:&lt;br /&gt;&lt;blockquote style="font-style: italic; color: rgb(255, 0, 0);"&gt;options gspca gamma=4&lt;br /&gt;options gspca GRed=350&lt;br /&gt;options gspca GGreen=350&lt;br /&gt;options gspca GBlue=350&lt;/blockquote&gt;&lt;br /&gt;Riavviamo:&lt;br /&gt;&lt;blockquote style="color: rgb(0, 0, 153); font-style: italic;"&gt;reboot&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-1949656631356462550?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZTTTBVG1TiOAxcZfD-GcNatn9EM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZTTTBVG1TiOAxcZfD-GcNatn9EM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZTTTBVG1TiOAxcZfD-GcNatn9EM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZTTTBVG1TiOAxcZfD-GcNatn9EM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/DFRI4JjALHE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/1949656631356462550/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/06/webcam-su-skype-linux.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/1949656631356462550?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/1949656631356462550?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/DFRI4JjALHE/webcam-su-skype-linux.html" title="Webcam su Skype Linux" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-lh3uBcB60Ms/TfXUTNk44YI/AAAAAAAAAmI/EHK3vFwo6lA/s72-c/tux_skype1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/06/webcam-su-skype-linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IEQXg7fip7ImA9WhZWGE4.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-5891119656738714330</id><published>2011-05-19T22:05:00.000+02:00</published><updated>2011-05-19T22:05:00.606+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-19T22:05:00.606+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="recensione libro" /><title>LIBRO: recensione In viaggio con l'asino</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-shBTCE8aJrU/Tck4qhZHE6I/AAAAAAAAAls/WUfwJ49Dxpo/s1600/viaggioasino2392_img.gif"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 206px; height: 278px;" src="http://1.bp.blogspot.com/-shBTCE8aJrU/Tck4qhZHE6I/AAAAAAAAAls/WUfwJ49Dxpo/s320/viaggioasino2392_img.gif" alt="" id="BLOGGER_PHOTO_ID_5605073514408645538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;TITOLO:&lt;/span&gt; In viaggio con l'asino&lt;a href="http://4.bp.blogspot.com/-pn9fIf2MW58/Tb-tdhBIWrI/AAAAAAAAAk4/trkZiotFwJY/s1600/formicai.jpg"&gt;&lt;br /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;SOTTOTITOLO:&lt;/span&gt; nessuno&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;GENERE:&lt;/span&gt; Racconto&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;PAGINE: &lt;/span&gt;173 non troppo fitte&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;AUTORE:&lt;/span&gt; Andrea Bocconi e Claudio Visentin&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;EDITORE:&lt;/span&gt; Guanda&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;E' il racconto di un quartetto di persone (due professori ed i rispettivi figli) che decidono di prendersi una vacanza dalla vita di tutti i giorni e conoscersi meglio.&lt;br /&gt;Non scelgono le solite spiagge al mare in agosto e nemmeno mete esotiche che fanno chic.&lt;br /&gt;Decidono di passare una settimana in compagnia di un animale straordinario per assaporarne le abitudini e, anche se per poco tempo, tornare alle origini.&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;Ed è così che quattro umani e quattro ciucci si mettono in moto partendo da Tagliacozzo ed arrivando a Celano (entrambe città in Abruzzo) ma lentamente.... molto lentamente.&lt;br /&gt;Il passo lo impongono gli asini con la loro andatura sempre decisa ma pacata, con le loro abitudini ignote ai più ed il loro carattere docile, curioso e un po' dispettoso.&lt;/p&gt;&lt;p style="margin-bottom: 0cm"&gt;E' un libro interessante, raccontato in prima persona con spunti di riflessione sulla società moderna, sul correre quotidiano, sulla qualità della vita. Tra i passaggi che mi hanno colpito maggiormente è ciò che l'autore descrive all'arrivo da una tappa: “&lt;span style="font-style: italic;"&gt;La televisione è naturalmente spenta e Pietro e Martina ascoltano tranquilli i discorsi dei grandi si chiacchiera fino a tardi......[]... Non abbiamo parlato molto eppure ci conosciamo di più e siamo più vicini di prima.&lt;/span&gt;”&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;Sull'asino invece dice: “&lt;span style="font-style: italic;"&gt;Non c'è dubbio infatti che l'asino sia una besta intelligente. Per esempio ricorda molto bene i percorsi(qualcuno dice anche i torti subiti) e ritrova sempre la via di casa. E' astuto d ingegnoso: al bisogno è abilissimo nel procurarsi quel che desidera, magari rubandolo, e diabolico nel liberarsi, anche se deve aprire una sbarra con i denti, o sollevare un chiavistello. E' piuttosto determinato e non cambia facilmente idea. E' coraggioso (ha meno timore del fuoco rispetto ad un cavallo) ma non temerario. E' curioso, ama condividere col padrone quel che fa, e spesso metterà il muso (alla lettera) nelle vostre faccende, per esempio quando si preparano i bagagli. E' molto affettuoso col padrone che lo tratta bene, dal quale ama ricevere attenzioni e complimenti&lt;/span&gt;”&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;Personalmente ho molto apprezzato l'argomento di questo libro.&lt;br /&gt;Tuttavia ho trovato noioso e tedioso il continuo ricorrere a riferimenti letterari ad altri autori che hanno raccontato esperienze analoghe.&lt;br /&gt;Trovo tipico della mentalità italiana in generale e di quella umanistica in particolare ritenere che facendo riferimenti a opere del passato si aumenti il valore delle proprie idee.&lt;br /&gt;L'autore non riesce a scrivere più di tre pagine senza far riferimento ad opere francesi, inglesi o italiane del secolo scorso con un appesantimento della lettura.&lt;br /&gt;Personalmente ritengo che se leggo il tuo libro non voglio sapere cosa c'è scritto in altre opere ma desidero sapere cosa hai provato lavorando con gli asini.&lt;br /&gt;Qualche accenno va bene ma... il troppo storpia.&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;Consiglio questo libro? In generale si: dona una prospettiva diversa di viaggio, mette in luce un animale ormai sconosciuto e fa riflettere sull'importanza di riappropiarci del nostro territorio pieno di bellezze natuali. Peccato per la pesantezza nell'esposizione anche se, lo ribadisco, è un mio parere personale e conosco almeno un paio di persone che la pensano molto diversamente.&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;Una curiosità: l'organizzazione che ha affittato gli asini all'autore si chiama la Boscaglia. Facendo una ricerca su internet risulta ormai chiusa (sito di riferimento: &lt;a href="http://www.boscaglia.it/"&gt;http://www.boscaglia.it/&lt;/a&gt;)&lt;br /&gt;Vengono però proposti diversi siti molto interessanti di "vacanze alternative" con persone qualificate che propongono camminate in mezzo alla natura ed attività in generale orientate a riscoprire il nostro straordinario territorio nazionale.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-5891119656738714330?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WDiMaj7FefoDBa-OasP6W70jAAE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WDiMaj7FefoDBa-OasP6W70jAAE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WDiMaj7FefoDBa-OasP6W70jAAE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WDiMaj7FefoDBa-OasP6W70jAAE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/I3SdKlEMPNQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/5891119656738714330/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/05/libro-recensione-in-viaggio-con-lasino.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5891119656738714330?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5891119656738714330?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/I3SdKlEMPNQ/libro-recensione-in-viaggio-con-lasino.html" title="LIBRO: recensione In viaggio con l'asino" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-shBTCE8aJrU/Tck4qhZHE6I/AAAAAAAAAls/WUfwJ49Dxpo/s72-c/viaggioasino2392_img.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/05/libro-recensione-in-viaggio-con-lasino.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ICSH89eip7ImA9WhZWFUs.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-7206500088547976879</id><published>2011-05-11T23:08:00.001+02:00</published><updated>2011-05-16T17:59:29.162+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-16T17:59:29.162+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="recensione libro" /><title>LIBRO: recensione Abbaiare Stanca</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-k5pC_ONDAZM/TcqmtvwtpyI/AAAAAAAAAl0/E2yAdvmXZrE/s1600/abbaiare-stanca.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 320px;" src="http://4.bp.blogspot.com/-k5pC_ONDAZM/TcqmtvwtpyI/AAAAAAAAAl0/E2yAdvmXZrE/s320/abbaiare-stanca.jpg" alt="" id="BLOGGER_PHOTO_ID_5605475991061112610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;TITOLO&lt;/span&gt;: Abbaiare stanca&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;SOTTOTITOLO&lt;/span&gt;: Nessuno&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;GENERE&lt;/span&gt;: Racconto&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;PAGINE&lt;/span&gt;: 190 scritte con caratteri media&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;AUTORE&lt;/span&gt;: Daniel Pennac&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;EDITORE&lt;/span&gt;: Salani&lt;br /&gt;&lt;br /&gt;Se avessi un figlio, gli leggerei questa storia tutti gli anni a partire dal sesto anno di età.&lt;br /&gt;&lt;br /&gt;Il protagonista di "Abbaiare stanca" è "Il Cane", un piccolo quadrupede che nella sua vita, lunga 190 pagine, ha modo di conoscere la vita nei suoi lati più brutti e in quelli più belli. Il Cane nasce in una discarica e presto impara a vivere di espedienti fino ad arrivare in città. Qui trova una ragazzina di nome Mela, la sua futura e giovane padroncina, con cui creerà un rapporto bellissimo.&lt;br /&gt;Certo, la strada per ottenere questo obiettivo sarà lunga e travagliata.&lt;br /&gt;Gli umani sono "imprevedibili" dirà "Il Cane" più volte... ed a ragione!&lt;br /&gt;&lt;br /&gt;La piccola, ma speciale Mela, nonostante i genitori non amino quel quadrupede per casa, lotterà per tenerlo con sé e il Cane la "ammaestrerà" come ogni animale fa con il proprio proprietario.&lt;br /&gt;&lt;br /&gt;Un'amicizia unica, una strada tortuosa verso l'amore e il calore di una casa, un percorso di conoscenza dell'uomo attraverso gli occhi di chi lo guarda senza condizionamenti e con affetto disinteressato, ma che bisonga sapersi guadagnare.&lt;br /&gt;&lt;br /&gt;Se leggerai questo libro ti occuperà un paio di giornate ma ti donerà, senza dubbio, una bella sensazione e se hai un cane non potrai che guardare con occhi diversi questa splendida creatura.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-7206500088547976879?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nPTb1Yh3W5pM5Jq94l-2vuCASQs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nPTb1Yh3W5pM5Jq94l-2vuCASQs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nPTb1Yh3W5pM5Jq94l-2vuCASQs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nPTb1Yh3W5pM5Jq94l-2vuCASQs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/2lHDMq6by5A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/7206500088547976879/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/05/libro-recensione-abbaiare-stanca.html#comment-form" title="2 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/7206500088547976879?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/7206500088547976879?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/2lHDMq6by5A/libro-recensione-abbaiare-stanca.html" title="LIBRO: recensione Abbaiare Stanca" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-k5pC_ONDAZM/TcqmtvwtpyI/AAAAAAAAAl0/E2yAdvmXZrE/s72-c/abbaiare-stanca.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/05/libro-recensione-abbaiare-stanca.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4HQXg7fip7ImA9WhZWEEw.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-7284819024886238042</id><published>2011-05-09T20:07:00.004+02:00</published><updated>2011-05-10T09:02:10.606+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-10T09:02:10.606+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ebook" /><title>Asus EA800 (eeenote)</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-DJ2QSi4tTRU/TcevOxdlyJI/AAAAAAAAAlk/2tT01eDy370/s1600/eeenote-ea800.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://2.bp.blogspot.com/-DJ2QSi4tTRU/TcevOxdlyJI/AAAAAAAAAlk/2tT01eDy370/s320/eeenote-ea800.jpg" alt="" id="BLOGGER_PHOTO_ID_5604640929616349330" border="0" /&gt;&lt;/a&gt;&lt;h3&gt;Premessa&lt;/h3&gt;Da alcuni mesi, ormai, stavo valutando l'acquisto di un ebook-reader (per chi non sapesse di cosa stiamo parlando rimando ad una esaustiva spiegazione su wikipedia cliccando su &lt;a href="http://it.wikipedia.org/wiki/EBook_reader"&gt;questa pagina&lt;/a&gt;). Il mercato offre moltissime alternative ed ogni produttore di hardware è dichiarato "non al passo con i tempi" se non si lancia al galoppo verso la produzione di almeno un dispositivo con funzioni da ebook-reader.&lt;br /&gt;Con un sistema di feedback positivo l'ebook e, di conseguenza l'ebook-reader, stanno iniziando ad affacciarsi sempre più prepotentemente sui siti di notizie informatiche e non solo.&lt;br /&gt;Lentamente ma inesorabilmente stanno emergendo modelli sempre più funzionali ed interessanti....&lt;br /&gt;In questa ottica dopo molteplici ricerche, il mese scorso, ho deciso di acquistare il mio primo dispositivo ebook-reader in occasione del mio compleanno (è sempre bello avere una scusa per farsi un regalo): l'&lt;a href="http://www.asus.it/Eee/Eee_Note/Eee_Note_EA800/"&gt;ASUS EEENote EA800&lt;/a&gt;. Ultimo nato della fortunata famiglia EEE, si colloca sul mercato come dispositivo per leggere ma anche e soprattutto per prendere appunti... E' stato inserito negli istituti scolastici di alcuni paesi orientali come supporto didattico. E mentre in Italia la associazione librai si ribella alla vendita di ebook scolastici, in Inghilterra, Giappone ed America prendono ogni giorno sempre maggiore risalto (si veda, come esempio, &lt;a href="http://punto-informatico.it/3149958/PI/News/ebook-lettura-all-inglese.aspx"&gt;questo articolo su Punto Informatico&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Asus eeenote EA800&lt;/h3&gt;Personalmente lo ritengo un dispositivo eccellente.&lt;br /&gt;La prima impressione che si prova nel vederlo è di eleganza: la sua custodia in pelle nera gli dona questo aspetto fin dalla prima occhiata.&lt;br /&gt;Il pennino wavcom posto sul "tetto" del dispositivo conferma l'eleganza del reader conferendogli un'aria molto professionale anche in ambito lavorativo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Hardware&lt;/span&gt;: Il dispositivo nasce con una memoria di 4Gb interna e la possibilità di equipaggiarlo con una scheda SD.&lt;br /&gt;Ovviamente la parte più importante del dispositivo è lo schermo. La dimensione da 8'' permette una buona visibilità dei contenuti sia in formato epub sia pdf.&lt;br /&gt;Avvalendosi della tecnologia touch screen, è possibile interagire con il dispositivo tramite il pennino e la sensibilità di questo strumento è davvero impressionante.&lt;br /&gt;La risoluzione di 2.450 DPI lo rende molto preciso ed i tempi di risposta sono incredibilmente brevi tanto che si ha quasi l'impressione di scrivere con una matita su un foglio di carta. Questo lo rende uno strumento ideale per prendere appunti (magari durante una riunione aziendale o una conferenza importante) senza avere mille fogli intorno... ma anche per scrivere annotazioni su files pdf!&lt;br /&gt;Nonostante gli innegabili pregi, lo schermo presenta anche un piccolo difetto: oltre a non essere anti-riflesso, spesso è necessario cercare una giusta angolazione per leggere agevolmente perchè lo sfondo, al contrario di un foglio di carta che è bianco, assume tonalità di grigio. Personalmente è l'unico difetto che mi sento di attribuire a questo prodotto.&lt;br /&gt;Esso inoltre, come tutti gli ebook-reader che si rispettino, non è retro-illuminato (retro-illuminati sono gli schermi dei cellulari o dei PC che quando si attivano si accedono e si possono leggere anche in una stanza buia) e quindi non si possono leggere di notte&lt;br /&gt;&lt;br /&gt;Per quanto riguarda il peso posso affermare che si tratta di un dispositivo estremamente leggero.&lt;br /&gt;Completa la dotazione un cavo per connetterlo al PC.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Software&lt;/span&gt;: Dal punto di vista software, il dispositivo è equipaggiato con sistema operativo Linux (che ben si presta ad hacking --ho già trovato in rete qualche sito interessante--).&lt;br /&gt;Come abbiamo detto, oltre alla applicazione per leggere ebooks, è possibile prendere appunti in maniera davvero impressionante.&lt;br /&gt;Il dispositivo, inoltre, è dotato di lettore mp3/ogg, di programma per scattare foto (tramite una fotocamera da 2Mpixel che, sebbene non sia eccezionale, permette di scattare foto da commentare), di una calcolatrice, di un dizionario, di Evernote per sincronizzare le note/appunti sull'omonimo sito e di un browser per navigare (ad esempio sui siti di rivendita libri).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Connessioni&lt;/span&gt;: è possibile connettere il dispositivo al PC grazie ad un cavo miniUSB ma dispone anche di una scheda WiFi che si può attivare all'uopo per navigare o per sincronizzare le note su Evernote. Essa si disattiva automaticamente al fine di risparmiare batterie nel momento in cui viene chiusa l'applicazione che la stava sfruttando.&lt;br /&gt;Per quanto riguarda la connessione al PC, il dispositivo si rivela a sorpresa trasformarsi in una  tavolozza grafica.&lt;br /&gt;Forte della sua "alta risoluzione", dispone di una applicazione che una volta collegato al PC traspone i nostri movimenti sullo schermo del EA800 sul computer!&lt;br /&gt;Devo dire che anche questo utilizzo mi ha favorevolmente colpito sebbene la vena artistica non mi sia mai stata donata :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Autonomia&lt;/span&gt;: personalmente l'ho usato per una settimana di fila (ovviamente non di continuo) per leggere e prendere appunti durante le riunioni. Tra standby ed utilizzo puro ritengo che l'autonomia non sia davvero un problema.&lt;br /&gt;&lt;h3&gt;Conclusioni&lt;/h3&gt;Per concludere consiglio vivamente, ad un eventuale lettore curioso che stia cercando informazioni su internet, l'acquisto di questo dispositivo.&lt;br /&gt;L'EA800 prosegue il successo della fortunata famiglia EEE di Asus e rappresenta un ottimo strumento per la scuola, il lavoro ma anche tempo libero (io lo uso ogni giorno in treno e in bus per leggere e durante le riunioni per prendere appunti).&lt;br /&gt;Unico difetto, lo ripeto, lo schermo non leggibilissimo in condizioni di luce particolari ma... in fin dei conti... chi si porta un ebook-reader in spiaggia?&lt;br /&gt;Infine mi preme specificare che non bisogna fare l'errore di paragonare questo prodotto con un iPad o prodotti simili. Esso serve per leggere e scrivere, non altro. Punto.&lt;br /&gt;Se lo si intende in tal senso saprà darvi soddisfazione altrimenti potrebbe rappresentare una delusione.&lt;br /&gt;Di seguito riporto alcuni links che mi sono serviti a valutarlo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.asus.it/Eee/Eee_Note/Eee_Note_EA800/"&gt;Sito di riferimento Asus&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eeepc.it/video-recensione-asus-eee-note-ea800/"&gt;Video recensioni su eeepc.it&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eeepc.it/asus-eee-note-ea800-prime-impressioni-utente/"&gt;Prime impressioni utente su eeepc.it&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.geekandchic.it/gadget/asus-eee-note-ea-800-taccuino-digitale/"&gt;Recensione du geekanchic.it&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-7284819024886238042?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hPBPpbGLWzmUEPg-h15uqJ8YHvI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hPBPpbGLWzmUEPg-h15uqJ8YHvI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hPBPpbGLWzmUEPg-h15uqJ8YHvI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hPBPpbGLWzmUEPg-h15uqJ8YHvI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/Nfyl-BYu2uk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/7284819024886238042/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/05/asus-ea800-eeenote.html#comment-form" title="6 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/7284819024886238042?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/7284819024886238042?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/Nfyl-BYu2uk/asus-ea800-eeenote.html" title="Asus EA800 (eeenote)" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-DJ2QSi4tTRU/TcevOxdlyJI/AAAAAAAAAlk/2tT01eDy370/s72-c/eeenote-ea800.jpg" height="72" width="72" /><thr:total>6</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/05/asus-ea800-eeenote.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YEQXszfyp7ImA9WhZXF0w.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-416609778496241316</id><published>2011-05-06T21:45:00.000+02:00</published><updated>2011-05-06T21:45:00.587+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-06T21:45:00.587+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="recensione libro" /><title>LIBRO: recensione Navi, puttane e lettere da casa</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-6UiM3U6V2vI/TcQQFk8BCkI/AAAAAAAAAlc/PIHb1uPw4vU/s1600/navi.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 143px; height: 216px;" src="http://2.bp.blogspot.com/-6UiM3U6V2vI/TcQQFk8BCkI/AAAAAAAAAlc/PIHb1uPw4vU/s320/navi.png" alt="" id="BLOGGER_PHOTO_ID_5603621524356532802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;TITOLO&lt;/span&gt;: Navi, puttane e lettere da casa&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;SOTTOTITOLO&lt;/span&gt;: Nessuno&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;GENERE&lt;/span&gt;: Piccole storie&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;PAGINE&lt;/span&gt;: 120 scritte con caratteri grandi&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;AUTORE&lt;/span&gt;: Pitton Fabrizio&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;EDITORE&lt;/span&gt;: Mursia&lt;br /&gt;&lt;br /&gt;Navi, puttane e lettere da casa è una collezione autobiografica di piccole storie con protagonisti i mariani e ciò che gira intorno a questo mondo sconosciuto ai più.&lt;br /&gt;&lt;br /&gt;Questo libro racconta le storie di marinai che troppo spesso iniziano la loro carriera in giovane età (l'autore si imbarca a 17 anni); la loro scuola sono il mare ed i colleghi veterani.&lt;br /&gt;Si parla di piccole imbarcazioni di carico/scarico che solcano il Mediterraneo e di enormi porta-container che affrontano traversate oceaniche; si parla degli equipaggi ma soprattutto di donne.&lt;br /&gt;Le prostitute che allietano le soste e con le quali i marinai intrecciano rapporti di varia natura: dalla storia di una notte, agli incontri periodici, dalle promesse di matrimonio al riscatto della dignità di poche fortunate che con un matrimonio riscoprono nuovi orizzonti; dai rapporti eterosessuali a quelli omosessuali.&lt;br /&gt;Ma si parla anche di famiglia e delle mogli che aspettano giorno dopo giorno i propri mariti prima con entusiasmo e poi, con il passar del tempo con malinconia ed infine con indifferenza.&lt;br /&gt;&lt;br /&gt;Le pagine si leggono di un fiato (io l'ho finito in meno di 4 ore) e per poche ore si sognano luoghi lontani ed esotici, donne belle e brutte ed una vita molto diversa da quella di un ufficio o di una fabbrica.&lt;br /&gt;&lt;br /&gt;Forse un po' troppo corto, forse a volte un po' troppo tecnico (non tutti conoscono i termini marinari che necessiterebbero di un glossario o di maggiori spiegazioni), il libro non scade mai nel banale e tanto meno nel volgare: non  troverete particolari scabrosi o i dettagli dei rapporti perchè  l'intento dell'autore è quello di raccontare cosa succede nelle città  portuali e le relazioni umane non ciò che succede nei letti dei bordelli  o dei giacigli improvvisati.&lt;br /&gt;&lt;br /&gt;L'atmosfera che si respira è molto malinconica ma avventurosa.  E' un libro che può allietare il lettore durante un weekend o nei viaggi in bus o treno mentre va al lavoro.&lt;br /&gt;Personalmente lo consiglio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-416609778496241316?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HredRFdOzjyysT27VLZPQb4x0gg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HredRFdOzjyysT27VLZPQb4x0gg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HredRFdOzjyysT27VLZPQb4x0gg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HredRFdOzjyysT27VLZPQb4x0gg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/Tr6j2b9CjQk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/416609778496241316/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/05/libro-recensione-navi-puttane-e-lettere.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/416609778496241316?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/416609778496241316?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/Tr6j2b9CjQk/libro-recensione-navi-puttane-e-lettere.html" title="LIBRO: recensione Navi, puttane e lettere da casa" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-6UiM3U6V2vI/TcQQFk8BCkI/AAAAAAAAAlc/PIHb1uPw4vU/s72-c/navi.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/05/libro-recensione-navi-puttane-e-lettere.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08MQHk4eyp7ImA9WhZXFUo.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-6973202261336007686</id><published>2011-05-04T22:45:00.002+02:00</published><updated>2011-05-05T09:18:01.733+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-05T09:18:01.733+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="skype" /><category scheme="http://www.blogger.com/atom/ns#" term="internet" /><title>Fring, skype, mobile chat</title><content type="html">&lt;h3&gt;Premessa&lt;/h3&gt;Da qualche tempo sto sfruttando il piano tariffario internet sul mio cellulare e per questo sto coltivando la mia passione per i sistemi di comunicazione alternativi agli sms e alle telefonate tradizionali con questo strumento.&lt;br /&gt;Qualche giorno fa ho parlato di &lt;a href="http://zuccala.blogspot.com/2011/05/whatsapp-chat-su-cellulare.html"&gt;WhatsApp&lt;/a&gt;.&lt;br /&gt;Oggi vi parlo di Fring e Skype, due sistemi di &lt;span style="font-style: italic;"&gt;istant messaging&lt;/span&gt;.&lt;br /&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;Fring e Skype&lt;/h3&gt;Ci sono molti programmi per utilizzare l'&lt;span style="font-style: italic;"&gt;istant messaging&lt;/span&gt; su cellulare. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-ahQe89HX3hU/TcFogQ3UZwI/AAAAAAAAAlM/AbgCx08f6b0/s1600/fring.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 240px; height: 216px;" src="http://1.bp.blogspot.com/-ahQe89HX3hU/TcFogQ3UZwI/AAAAAAAAAlM/AbgCx08f6b0/s320/fring.jpg" alt="" id="BLOGGER_PHOTO_ID_5602874314917701378" border="0" /&gt;&lt;/a&gt;Prima di tutto, però, può essere opportuno spiegare cosa si intende con questo termine: &lt;span style="font-style: italic;"&gt;istant messaging &lt;/span&gt;vuol dire messaggi istantanei, in tempo reale e spesso viene definito con il termine &lt;span style="font-style: italic;"&gt;chat&lt;/span&gt;...&lt;br /&gt;Mentre &lt;a href="http://www.whatsapp.com/"&gt;WhatsApp&lt;/a&gt; permette l'invio di sms e mms con annesso un certo ritardo dal momento dell'invio a quello di ricezione, l'&lt;span style="font-style: italic;"&gt;istant messaging&lt;/span&gt;, come dice il termine stesso avviene in tempo reale. La chat, infatti, è un metodo di comunicazione sincrono (a differenza degli sms che è asincrono): si prevede che l'interlocutore sia immediatamente disponibile e le risposte sono praticamente immediate.&lt;br /&gt;La differenza sostanziale tra &lt;a href="http://www.fring.com/"&gt;Fring&lt;/a&gt; e &lt;a href="http://www.skype.com/intl/it/get-skype/on-your-mobile/download/"&gt;Skype &lt;/a&gt;è il protocollo utilizzato.&lt;br /&gt;Entrambi possono essere utilizzati da cellulari di ultima generazione grazie ad un piano di traffico dati da attivare sul proprio cellulare. Entrambi si possono installare su cellulari Nokia con Symbian, iPhone con iOS, cellulari con sistema operativo Android e BlackBerry.&lt;br /&gt;&lt;a href="http://www.fring.com/"&gt;Fring&lt;/a&gt;, però sfrutta un protocollo libero denominato SIP, mentre &lt;a href="http://www.skype.com/intl/it/get-skype/on-your-mobile/download/"&gt;Skype&lt;/a&gt; utilizza un protocollo che, sebbene sia estremamente diffuso, è proprietario (della Skype stessa). Questo comporta che per avere dei contatti con un'altra persona tramite&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-k45o3hqetwk/TcForFB9geI/AAAAAAAAAlU/MVpWTWnwuLU/s1600/skype.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/-k45o3hqetwk/TcForFB9geI/AAAAAAAAAlU/MVpWTWnwuLU/s320/skype.jpg" alt="" id="BLOGGER_PHOTO_ID_5602874500719673826" border="0" /&gt;&lt;/a&gt; skype è necessario che questa persona abbia un account skype. Al contrario, per parlare con una persona tramite Fring basta che questa abbia un programma compatibile SIP (ve ne sono migliaia in giro da Epiphany, gtalk, pidgin, Erika...).&lt;br /&gt;Il vantaggio nell'utilizzo di questi programmi, comunque, è innegabile. Le comunicazioni avvengono tramite internet ed è possibile intraprendere con l'interlocutore, oltre alla classica &lt;span style="font-style: italic;"&gt;chat&lt;/span&gt; testuale anche conversazioni audio o audio/video.&lt;br /&gt;Personalmente li reputo due software che non possono mancare sul cellulare di chiunque abbia un traffico dati attivo sul proprio piano telefonico. A livello di interfaccia utente non sono molto diversi. Entrambi hanno l'elenco degli utenti "nostri amici" dei quali ci fa vedere lo stato (online, occupati, offline); entrambi permettono impostazioni di connessione e molte altre ancora.&lt;br /&gt;Se siete interessati ad un modo di comunicare diverso con i vostri amici o.... se utilizzare internet anche per lavoro.... questi programmi vi saranno senza dubbio molto molto comodi!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-6973202261336007686?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/M6oqLOeM7tsMld6iyPeMkU-W-DI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M6oqLOeM7tsMld6iyPeMkU-W-DI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/M6oqLOeM7tsMld6iyPeMkU-W-DI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M6oqLOeM7tsMld6iyPeMkU-W-DI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/rJIVYxmagDg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/6973202261336007686/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/05/fring-skype-mobile-chat.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/6973202261336007686?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/6973202261336007686?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/rJIVYxmagDg/fring-skype-mobile-chat.html" title="Fring, skype, mobile chat" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-ahQe89HX3hU/TcFogQ3UZwI/AAAAAAAAAlM/AbgCx08f6b0/s72-c/fring.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/05/fring-skype-mobile-chat.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQMRXo4eSp7ImA9WhZXFE0.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-6575173891479862827</id><published>2011-05-03T09:21:00.004+02:00</published><updated>2011-05-03T09:39:44.431+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-03T09:39:44.431+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="recensione libro" /><title>LIBRO: recensione Formicai, imperi, cervelli</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-VnUXSArWgXg/Tb-tlp4S2sI/AAAAAAAAAlA/q4i42rEszko/s1600/formicai.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 151px; height: 244px;" src="http://2.bp.blogspot.com/-VnUXSArWgXg/Tb-tlp4S2sI/AAAAAAAAAlA/q4i42rEszko/s400/formicai.jpg" alt="" id="BLOGGER_PHOTO_ID_5602387323880921794" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;TITOLO:&lt;/span&gt; Formicai, imperi, cervelli&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-pn9fIf2MW58/Tb-tdhBIWrI/AAAAAAAAAk4/trkZiotFwJY/s1600/formicai.jpg"&gt;&lt;br /&gt;&lt;/a&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;SOTTOTITOLO:&lt;/span&gt; Introduzione alla teoria della complessità&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;GENERE:&lt;/span&gt; Saggio&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;PAGINE: &lt;/span&gt;289 non troppo fitte&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;AUTORE:&lt;/span&gt; Alberto Gandolfi&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;EDITORE:&lt;/span&gt; Bollati Bolingeri&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-style: italic;"&gt;Formicai, imperi, cervelli&lt;/span&gt; è un saggio illuminante che parla della teoria della complessità ovvero di un nuovo approccio a tutto ciò che ci circonda: dalla ditta in cui lavoriamo, al pianeta che da centinaia di anni stiamo martoriando, da un termitaio alla economia mondiale. Tutto ciò che ci circonda è impermeato di complessità. Il libro analizza esempi ed ipotesi tradizionali con un approccio nuovo e rivoluzionario.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm"&gt;Il linguaggio è divulgativo ed alla portata di tutti. Non ci sono formule astruse o astratte e tutto è affrontato con estrema professionalità affiancata da candida semplicità nonostante il tenore dell'argomento. Ci si trova davanti ad un saggio nel quale, seguire lo sviluppo dei ragionamenti dell'autore, risulta gradevole se si è mossi da una curiosità che va oltre a ciò che ci viene insegnato nelle scuole.&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;Ma cosa è la complessità?&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;Secondo me il modo migliore per spiegare questo concetto è riportare il confronto tra un oggetto complesso ed uno complicato, al quale l'autore fa più volte riferimento: un termitaio, un cervello, un impero sono sistemi complessi ovvero sistemi che scambiano energia, materiali, informazioni con l'esterno ed all'interno, le eleborano grazie ad un complesso sistema di comunicazione tra gli elementi interni e resituiscono degli output. Questi sistemi sono in grado di modificarsi ed assorbire gli impulsi esterni in modo egregio. Si arriva ad un punto, però, in cui il numero di fattori interni ed esogeni associati alle modifiche interne del sistema diventano tali da provocare una evoluzione globale del sistema stesso: si arriva a ciò che l'autore definisce una "biforcazione". Non si conosce a priori l'esito della biforcazione ma solo che è destinata ad assestare il sistema in un altro stato di equilibrio apparente...&lt;br /&gt;Le leggi che governano questi sistemi sono di tipo non lineare e, se non si analizza l'insieme nel suo complesso è spesso, se non sempre, impossibile prevederne tutti o parte degli output a breve, medio e lungo termine.&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;Un sistema complicato, al contrario, è un sistema estremamente elaborato ma governato da leggi lineari: ad un input specifico, il sistema reagisce con un output definito. E' l'esempio di un computer o di un'auto. Come i sistemi complessi scambiano dati, energia ed informazioni con l'esterno, li elaborano e restituiscono degli output ma, a differenza dei primi, non sono capaci di evolvere, di affrontare "biforcazioni". Banalizzando il concetto, se si rompe il radiatore dell'auto questa è inutilizzabile mentre se una persona si rompe una caviglia o una gamba il sistema assorbe il malfunzionamento risolvendo il problema a medio/lungo termine.&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;Il libro non dà certezze ma mette il lettore nella condizione di pensare e di vedere ciò che lo circonda sotto una luce diversa. E nella diversità, come dice l'autore, ci può essere l'idea adatta a sopravvivere!&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;L'unica critica che posso muovere a questo libro è che mi è sembrato un pochino prolisso. Personalmente reputo 289 pagine troppe e alcuni concetti possono essere espressi in maniera più concisa.&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;A parte questo, lo consiglio vivamente a chiunque. Che siate amanti delle materie umanistiche o di quelle scientifiche, che amiate la matematica o la odiate, se vi ritenete abbastanza aperti di vedute da poter accettare qualcosa che va oltre a ciò che fino a ieri reputavate un dogma.... questo libro fa per voi.&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;Non è necessario essere dei matematici o degli ingegneri per poter gustare le pagine di questo volume perchè si parla anche di sociologia, rapporti umani, biologia, medicina, ecologia, elettronica ma sempre in tono molto divulgativo.&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;Non mi resta, dunque, che augurarvi buona lettura.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-6575173891479862827?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vQIQdU2o0XBjCZQCrdWmFKEzHPk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vQIQdU2o0XBjCZQCrdWmFKEzHPk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vQIQdU2o0XBjCZQCrdWmFKEzHPk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vQIQdU2o0XBjCZQCrdWmFKEzHPk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/rdwQShzGLy0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/6575173891479862827/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/05/libro-recensione-formicai-imperi.html#comment-form" title="3 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/6575173891479862827?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/6575173891479862827?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/rdwQShzGLy0/libro-recensione-formicai-imperi.html" title="LIBRO: recensione Formicai, imperi, cervelli" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-VnUXSArWgXg/Tb-tlp4S2sI/AAAAAAAAAlA/q4i42rEszko/s72-c/formicai.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/05/libro-recensione-formicai-imperi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08GQ3w7fip7ImA9WhZXEks.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-2345205838079562657</id><published>2011-05-01T16:30:00.003+02:00</published><updated>2011-05-01T16:57:02.206+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-01T16:57:02.206+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cellulare" /><title>WhatsApp, chat su cellulare</title><content type="html">&lt;a href="http://1.bp.blogspot.com/-3vs0s6gwaDc/Tb1vQeiA-oI/AAAAAAAAAko/LxGF-qtgtDs/s1600/whatsapp-android.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="float:right; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 261px; height: 210px;" src="http://1.bp.blogspot.com/-3vs0s6gwaDc/Tb1vQeiA-oI/AAAAAAAAAko/LxGF-qtgtDs/s400/whatsapp-android.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5601755840383089282" /&gt;&lt;/a&gt;&lt;a href="http://www.whatsapp.com/"&gt;WhatsApp&lt;/a&gt; è una applicazione che è possibile installare su qualsiasi cellulare di ultima generazione per l'invio di sms anche di tipo multimediale. Esso può funzionare su:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Symbian (sistema dei cellulari Nokia)&lt;/li&gt;&lt;li&gt;cellulari con sistema operativo Adroid&lt;/li&gt;&lt;li&gt;iPhone&lt;/li&gt;&lt;li&gt;Blackberry&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Non è necessaria alcuna iscrizione: basta scaricare l'applicativo ed installarlo. Al termine verrà richiesto soltanto il proprio numero di cellulare ed automaticamente il programma riconosce tutti i contatti in rubrica che già utilizzano &lt;a href="http://www.whatsapp.com/"&gt;WhatsApp&lt;/a&gt;. Da quel momento è possibile scambiare con loro sms tramite internet con &lt;a href="http://www.whatsapp.com/"&gt;WhatsApp&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Ne consegue che è auspicabile avere un contratto per l'utilizzo del traffico dati nel proprio piano tariffario telefonico. &lt;/div&gt;&lt;img src="http://1.bp.blogspot.com/-0I79STyQcPw/Tb1w7N1t1sI/AAAAAAAAAkw/15yEHazN8vk/s400/Whatsapp.jpg" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 300px; height: 400px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5601757674148320962" /&gt;&lt;div&gt;Tutti gli operatori, ormai, forniscono questa opzione che va dai 5€ ai 30€ al mese a seconda del tempo o dei Mb compresi nell'offerta...&lt;/div&gt;&lt;div&gt;Ma torniamo a questo programmino: le comunicazioni con questo applicativo appaiono come se fossero delle chat (si veda figura a fianco) e presenta diversi vantaggi. Il primo è che gli sms tramite WhatsApp non si pagano... Si perchè si sfrutta la connessione ad internet! Un altro enorme vantaggio è la possibilità di inviare file audio e video come allegato agli sms in maniera estremamente semplice. Qualcosa di simile agli MMS per intenderci. &lt;/div&gt;&lt;div&gt;La mia esperienza, però, mi ha sempre portato ad avere una pessima opinione sugli mms: se non c'è la copertura con tecnologia almeno UMTS non arrivano, sono lenti ed hanno enormi limiti in termini di kilobyte spedibili.&lt;/div&gt;&lt;div&gt;Al contrario gli allegati che possono essere inviati tramite WhatsApp possono anche arrivare alla decina di megabyte senza problemi.&lt;/div&gt;Un altro vantaggio è che posso installare questo applicativo su qualsiasi tipologia di cellulare di ultima generazione. &lt;div&gt;In questo modo è possibile comunicare anche con amici, famigliari o colleghi che abbiano un cellulare con sistema operativo differente dal nostro.&lt;/div&gt;&lt;div&gt;Non vi rimane, dunque, che installare questo applicativo.&lt;/div&gt;&lt;div&gt;Il sito di riferimento è questo &lt;a href="http://www.whatsapp.com/"&gt;http://www.whatsapp.com/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-2345205838079562657?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lD9GyqCLWEj_Trhwfx2GtTec1HQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lD9GyqCLWEj_Trhwfx2GtTec1HQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lD9GyqCLWEj_Trhwfx2GtTec1HQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lD9GyqCLWEj_Trhwfx2GtTec1HQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/GeTbfSEzIF4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/2345205838079562657/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/05/whatsapp-chat-su-cellulare.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/2345205838079562657?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/2345205838079562657?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/GeTbfSEzIF4/whatsapp-chat-su-cellulare.html" title="WhatsApp, chat su cellulare" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-3vs0s6gwaDc/Tb1vQeiA-oI/AAAAAAAAAko/LxGF-qtgtDs/s72-c/whatsapp-android.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/05/whatsapp-chat-su-cellulare.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08BQH8_cSp7ImA9WhdTFkk.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-7277215059776136338</id><published>2011-02-14T14:38:00.010+01:00</published><updated>2011-07-14T15:24:11.149+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-14T15:24:11.149+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sqlite" /><category scheme="http://www.blogger.com/atom/ns#" term="database" /><title>SQLite da riga di comando (1)</title><content type="html">&lt;a href="http://zuccala.blogspot.com/2011/07/sqlite-da-riga-di-comando-2.html"&gt;La seconda parte qui: SQLite da riga di comando (2)&lt;/a&gt;.&lt;br /&gt;&lt;h3&gt;Premessa&lt;/h3&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-pOjURdq1WWY/TVkwuqgKOuI/AAAAAAAAAjw/OYh1X-C4288/s1600/helpSQLITE.gif"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 387px;" src="http://4.bp.blogspot.com/-pOjURdq1WWY/TVkwuqgKOuI/AAAAAAAAAjw/OYh1X-C4288/s400/helpSQLITE.gif" alt="" id="BLOGGER_PHOTO_ID_5573539592088992482" border="0" /&gt;&lt;/a&gt;Come visto in unhttp://www.blogger.com/img/blank.gif &lt;a href="http://zuccala.blogspot.com/2010/12/sqlite-libreria-sql-in-200kb.html"&gt;precedente articolo&lt;/a&gt;, sqlite è un piccolo sistema di database embedded che è stato scelto da molti applicativi per le sue caratteristiche di leggerezza e duttilità come sistema di archiviazione delle informazioni. Giusto per fare qualche nome cito il browser &lt;a href="http://www.mozilla-europe.org/it/firefox/"&gt;Firefox&lt;/a&gt; e il visualizzatore di immagini  &lt;a href="http://f-spot.org/"&gt;F-Spot&lt;/a&gt; .&lt;br /&gt;SQLite ha diverse interfacce grafiche e via web (scritte in php) per la gestione ma, in questo articolo, vediamo come utilizzarlo da riga di comando.&lt;br /&gt;Personalmente trovo questa modalità estremamente comoda perchè permette di fare degli script in maniera estremamente rapida.&lt;br /&gt;Dopo averlo scaricato dalla &lt;a href="http://www.sqlite.org/download.html"&gt;pagina del download&lt;/a&gt; ed averlo scompattato è pronto per essere utilizzato.&lt;br /&gt;Su windows si può entrare nel prompt del MSDOS (Start-&amp;gt;Esegui... digitare cmd e premere invio) mentre su Linux si entra in una shell come gterm o xterm.&lt;br /&gt;A questo punto dobbiamo entrare nella cartella nella quale si è scompattato sqlite e digitando sqlite3 seguito da un invio si avvia la shell interattiva del programma come si può vedere nella immagine sopra.&lt;br /&gt;Vediamo alcuni comandi...&lt;br /&gt;&lt;h3&gt;Comandi per iniziare sulla shell interattiva&lt;br /&gt;&lt;/h3&gt;I comandi che iniziano con il punto sono propri di sqlite e non del linguaggio SQL. Tramite questi comandi si può dialogare con il sistema. Ad esempio digitando:&lt;br /&gt;&lt;blockquote style="color: rgb(0, 0, 153);"&gt;.help&lt;/blockquote&gt;&lt;br /&gt;si entra nell'help del programma e si vede la lista dei comandi come nella schermata riportata sopra.&lt;br /&gt;&lt;br /&gt;Supponiamo di voler fare una piccola rubrica personale.&lt;br /&gt;A questo proposito apriamo Excel o OpenOffice Calc e sulla cella A1 del Foglio1 scriviamo "Cognome", nella cella B1 "Nome", nella cella C1 "Telefono".&lt;br /&gt;Nelle celle sottostanti si scrivano una serie di cognomi, nomi, telefoni.&lt;br /&gt;A questo punto si salvi il file in formato CSV (è necessario, nella finestra del salvataggio file scegliere come tipo di file il formato CSV) nella medesima cartella nella quale c'è l'eseguibile di sqlite.&lt;br /&gt;La nostra base dati sarà pronta per essere importata.&lt;br /&gt;&lt;br /&gt;Per poter interagire con il programma è bene creare, prima di tutto una  tabella.&lt;br /&gt;Sulla shell, dunque, si digiti il comando:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;CREATE TABLE Nominativi (IDNominativo INTEGER PRIMARY KEY, Cognome VARCHAR(30), Nome VARCHAR(30), Telefono VARCHAR(15));&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;In questo modo abbiamo creato la tabella che conterrà i nostri dati.&lt;br /&gt;Non ci resta che inserire alcuni dati con l'apposita istruzione:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;INSERT INTO Nominativi (Cognome, Nome, Telefono) VALUES ('Rossi','Luca','333444555');&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Ovviamente le istruzioni di INSERT possono essere molte e consecutive. Se poi vogliamo importare la tabella creata precedentemente con Excel o Calc possiamo fare come segue:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Prima di tutto si imposta il separatore dei campi nel file CSV. Personalmente apprezzo maggiormente il ";" che viene scelto di default anche da Excel e OpenOffice. Al contrario gli americani preferiscono la virgola. Ad ogni buon conto meglio definire prima il simbolo di separazione&lt;/li&gt;&lt;li&gt;Importare il file csv&lt;/li&gt;&lt;/ul&gt;&lt;blockquote style="color: rgb(0, 0, 153);"&gt;.separator ";"&lt;br /&gt;.import file.csv tabella&lt;/blockquote&gt;&lt;br /&gt;L'effetto di questa operazione sarà l'aggiunta dei nominativi precedentemente inseriti e salvati in CSV nella tabella.&lt;br /&gt;&lt;br /&gt;Per salvare il proprio lavoro:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;.backup database.sqlite&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;NB: questa piccola guida non vuole essere una completa guida esplicativa dei comandi.&lt;br /&gt;Seguirà comunque a breve, un ulteriore approfondimento a questo argomento&lt;br /&gt;&lt;br /&gt;&lt;a href="http://zuccala.blogspot.com/2011/07/sqlite-da-riga-di-comando-2.html"&gt;La seconda parte qui: SQLite da riga di comando (2)&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-7277215059776136338?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/j4oEatSMNI0zDOILGeyQHMuvvnc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j4oEatSMNI0zDOILGeyQHMuvvnc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/j4oEatSMNI0zDOILGeyQHMuvvnc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j4oEatSMNI0zDOILGeyQHMuvvnc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/8uuCm1fgpcs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/7277215059776136338/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/02/sqlite-da-riga-di-comando-1.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/7277215059776136338?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/7277215059776136338?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/8uuCm1fgpcs/sqlite-da-riga-di-comando-1.html" title="SQLite da riga di comando (1)" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-pOjURdq1WWY/TVkwuqgKOuI/AAAAAAAAAjw/OYh1X-C4288/s72-c/helpSQLITE.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/02/sqlite-da-riga-di-comando-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkABRHg4fip7ImA9WhZaE0g.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-3323052362177792585</id><published>2011-01-20T16:21:00.008+01:00</published><updated>2011-06-29T14:32:35.636+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-29T14:32:35.636+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Thunderbird" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="client/server" /><category scheme="http://www.blogger.com/atom/ns#" term="windows" /><category scheme="http://www.blogger.com/atom/ns#" term="mail" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><title>Thunderbird con Exchange</title><content type="html">&lt;h3&gt;Premessa&lt;/h3&gt;Ieri mattina il mio amministratore di rete è entrato nel mio ufficio e con voce sommessa mi ha sussurrato che c'era qualcosa di cui voleva parlarmi: "Abbandoniamo Exim, il server di posta per Linux... Passiamo ad &lt;a href="http://it.wikipedia.org/wiki/Microsoft_Exchange"&gt;Exchange &lt;/a&gt;di Microsoft.... sai i &lt;a href="http://it.wikipedia.org/wiki/BlackBerry"&gt;BlackBerry&lt;/a&gt;... la sincronizzazione con ActiveDirectory... ed ho già guardato se il **tuo** Thunderbird supporta Exchange ma mi sa di no...."&lt;br /&gt;Ero sgomento: davanti a me si prospettavano 2 anni di posta da dimenticare e soprattutto addio al mio client di posta elettronica preferito!!!&lt;br /&gt;&lt;br /&gt;Exchange, lavora su un protocollo che si basa su una sorta di IMAP "modificato" per dialogare con autenticazione SSL. Ovviamente il protocollo non è standard ma proprietario e si chiama OWA: &lt;a href="http://www.stthomas.edu/irt/support/email/owa.html"&gt;Outlook Web Access&lt;/a&gt;!&lt;br /&gt;Questo protocollo non è gestito nativamente da Thunderbird ma soltanto dal client di Microsoft.&lt;br /&gt;Tuttavia il caro e vecchio Google mi ha aiutato ancora una volta suggerendomi &lt;a href="http://davmail.sourceforge.net/"&gt;DavMail&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In questo articolo, dunque, vedremo come fare ad interfacciare Thunderbird con Exchange tramite DavMail!&lt;br /&gt;&lt;h3&gt;Cosa è DavMail&lt;/h3&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://davmail.sourceforge.net/images/davmailArchitecture.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 550px; height: 364px;" src="http://davmail.sourceforge.net/images/davmailArchitecture.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://davmail.sourceforge.net/"&gt;DavMail &lt;/a&gt;è un gateway, ovvero una sorta di "ponte" che permette di utilizzare la posta elettronica ed il calendario tramite software che lavorano con protocolli standard (POP3/IMAP per ricevere posta, SMTP per inviare posta, CalDav per il calendario, LDAP per la rubrica) anche con il protocollo OWA di Exchange.&lt;br /&gt;In poche parole, come spiega anche l'immagine qui sopra, la posta viene inviata e ricevuta su localhost.&lt;br /&gt;Qui viene intercettata da DavMail che si pone come "server" tra Exchange ed il proprio client e "traduce" le richieste standard con il protocollo proprietario di Microsoft e viceversa.&lt;br /&gt;&lt;br /&gt;La cosa estremamente interessante è che data la sua natura (è scritto in Java), può funzionare sia su Windows ma anche e soprattutto su Linux e MacOSX mettendo a disposizione di questi due sistemi operativi la possibilità di accedere al protocollo proprietario Microsoft pur mantenendo il proprio sistema operativo preferito.&lt;br /&gt;&lt;br /&gt;L'installazione è semplice: per Windows si può seguire &lt;a href="http://davmail.sourceforge.net/windowssetup.html"&gt;questa guida&lt;/a&gt;, mentre su Linux &lt;a href="http://davmail.sourceforge.net/linuxsetup.html"&gt;questa pagina&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;E' possibile anche vedere la configurazione di Thunderbird in &lt;a href="http://davmail.sourceforge.net/thunderbirdmailsetup.html"&gt;questa pagina&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Aggiungo la configurazione del mio DavMail in base alla richiesta di Alessandro (come si può vedere dai commenti in fondo a questa pagina):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-rPTQUUSLkwA/TgrdOjugeoI/AAAAAAAAAmY/yA0L3oG2xpE/s1600/davmail.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 176px;" src="http://3.bp.blogspot.com/-rPTQUUSLkwA/TgrdOjugeoI/AAAAAAAAAmY/yA0L3oG2xpE/s200/davmail.gif" alt="" id="BLOGGER_PHOTO_ID_5623550326903700098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-SOfJ2YD7YVo/TgrdsLHqT_I/AAAAAAAAAmg/U-n9gajPM1Q/s1600/conf1.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 230px;" src="http://3.bp.blogspot.com/-SOfJ2YD7YVo/TgrdsLHqT_I/AAAAAAAAAmg/U-n9gajPM1Q/s320/conf1.gif" alt="" id="BLOGGER_PHOTO_ID_5623550835694391282" border="0" /&gt;&lt;/a&gt;Eventualmente sarà necessario abilitare la configurazione del proxy se ne usate uno in azienda.&lt;br /&gt;&lt;br /&gt;Di seguito la configurazione del mio client di posta in ufficio :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uW8K2hOt_y8/TThYq6ZeYRI/AAAAAAAAAjA/WKAQKRPsjQA/s1600/pop.gif"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 446px; height: 336px;" src="http://4.bp.blogspot.com/_uW8K2hOt_y8/TThYq6ZeYRI/AAAAAAAAAjA/WKAQKRPsjQA/s400/pop.gif" alt="" id="BLOGGER_PHOTO_ID_5564294833870102802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uW8K2hOt_y8/TThZBm4BJ-I/AAAAAAAAAjI/FX3p2Dttywo/s1600/smtp.gif"&gt;&lt;img style="float: left; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 282px; height: 310px;" src="http://2.bp.blogspot.com/_uW8K2hOt_y8/TThZBm4BJ-I/AAAAAAAAAjI/FX3p2Dttywo/s400/smtp.gif" alt="" id="BLOGGER_PHOTO_ID_5564295223766493154" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-3323052362177792585?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/h6QyWdwUOTaHfjInbiLxC4aHIxs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h6QyWdwUOTaHfjInbiLxC4aHIxs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/h6QyWdwUOTaHfjInbiLxC4aHIxs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h6QyWdwUOTaHfjInbiLxC4aHIxs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/PnfhOooPnQY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/3323052362177792585/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/01/thunderbird-con-exchange.html#comment-form" title="24 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/3323052362177792585?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/3323052362177792585?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/PnfhOooPnQY/thunderbird-con-exchange.html" title="Thunderbird con Exchange" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-rPTQUUSLkwA/TgrdOjugeoI/AAAAAAAAAmY/yA0L3oG2xpE/s72-c/davmail.gif" height="72" width="72" /><thr:total>24</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/01/thunderbird-con-exchange.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMNQ3o5eip7ImA9Wx9WFE8.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-5707974844556083919</id><published>2011-01-19T09:43:00.003+01:00</published><updated>2011-01-19T10:14:52.422+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-19T10:14:52.422+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>Nuova release XFCE 4.8</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.xfce.org/images/about/screenshots/4.8-2.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 653px; height: 488px;" src="http://www.xfce.org/images/about/screenshots/4.8-2.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sono passati due anni dall'ultima versione di questo ottimo Window Manager e finalmente oggi è uscito &lt;a href="http://www.xfce.org/about/news/?post=1295136000"&gt;XFCE 4.8&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Gli utenti di Windows e Mac, probabilmente non hanno idea di cosa sia un &lt;span style="font-style: italic;"&gt;window manager&lt;/span&gt; ma gli utenti linux, da sempre, quando installano il proprio sistema scelgono il tipo di interfaccia grafica con la quale vogliono "relazionarsi" con il sistema operativo.&lt;br /&gt;Le possibilità proposte dalle varie distribuzioni, solitamente, sono &lt;a href="http://www.gnome.org/"&gt;Gnome &lt;/a&gt;e &lt;a href="http://www.kde.org/"&gt;KDE&lt;/a&gt;. La loro caratteristica è di essere estremamente piacevoli alla vista e piene di funzionalità aggiuntive.&lt;br /&gt;Talvolta, però, proprio queste caratteristiche risultano pesanti da gestire da parte di computer non troppo performanti.&lt;br /&gt;&lt;br /&gt;In realtà i gestori di finestre in circolazione sono molti; purtroppo alcuni seguono uno sviluppo lento (come XFCE), altri sono ormai abbandonati, altri ancora consigliati soltanto in caso di computer particolarmente obsoleti...&lt;br /&gt;Personalmente ho sempre ammirato &lt;a href="http://windowmaker.org/gallery.php"&gt;WMaker&lt;/a&gt; ma anche XFCE è un ottimo &lt;span style="font-style: italic;"&gt;window manager&lt;/span&gt; degno di nota e la notizia che il suo sviluppo è ancora vivo non può che farmi piacere!&lt;br /&gt;&lt;br /&gt;Il lavoro da parte dei programmatori è stato davvero buono.&lt;br /&gt;Loro stessi, nel comunicato, appaiono essere estremamente soddisfatti del proprio lavoro.&lt;br /&gt;Hanno eliminato componenti come ThunarVFS, HAL, udev, ConsoleKit e PolicyKit per rendere l’ambiente desktop ancora più moderno.&lt;br /&gt;Adesso è possibile connettersi ad altre macchine o periferiche tramite diversi protocolli tra i quali SFTP, SMB e FTP.&lt;br /&gt;Anche il file manager, Thunar, è stato aggiornato e migliorato molto.&lt;br /&gt;Stesso miglioramento è toccato alle finestre, soprattutto quelle di dialogo che permettono di modificare le impostazioni.&lt;br /&gt;&lt;br /&gt;Insomma, questa release costituisce un vero e proprio rinnovamento più che un semplice miglioramento estetico.&lt;br /&gt;Vi lascio, dunque, alla &lt;a href="http://www.xfce.org/about/screenshots"&gt;galleria di immagini&lt;/a&gt; per ammirare gli screenshot di questo &lt;span style="font-style: italic;"&gt;windows manager&lt;/span&gt; e vi invito a provarlo sul vostro sistema al più presto!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-5707974844556083919?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yYhnUzA6ciea9H35RQ9OY01UbFU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yYhnUzA6ciea9H35RQ9OY01UbFU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yYhnUzA6ciea9H35RQ9OY01UbFU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yYhnUzA6ciea9H35RQ9OY01UbFU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/N2MHqzDL9vo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/5707974844556083919/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2011/01/nuova-release-xfce-48.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5707974844556083919?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5707974844556083919?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/N2MHqzDL9vo/nuova-release-xfce-48.html" title="Nuova release XFCE 4.8" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2011/01/nuova-release-xfce-48.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QNRnk6fyp7ImA9Wx9QF0U.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-5934080949823464473</id><published>2010-12-30T15:06:00.008+01:00</published><updated>2010-12-31T09:49:57.717+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-31T09:49:57.717+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sqlite" /><category scheme="http://www.blogger.com/atom/ns#" term="database" /><title>SQLite, libreria SQL in 200kb</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uW8K2hOt_y8/TRyTP-U0zOI/AAAAAAAAAig/JPMNHRgCRTQ/s1600/sqlite370_banner.gif"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 220px; height: 101px;" src="http://2.bp.blogspot.com/_uW8K2hOt_y8/TRyTP-U0zOI/AAAAAAAAAig/JPMNHRgCRTQ/s320/sqlite370_banner.gif" alt="" id="BLOGGER_PHOTO_ID_5556477942906014946" border="0" /&gt;&lt;/a&gt;&lt;h3&gt;Premessa&lt;/h3&gt;Qualche tempo fa, sempre su questo blog, ho scritto un articolo sui &lt;a href="http://zuccala.blogspot.com/2010/10/sistemi-di-database.html"&gt;sistemi di database&lt;/a&gt;.&lt;br /&gt;Tra i software citati, nel paragrafo denominato "librerie di database" ho fatto riferimento a &lt;a href="http://www.sqlite.org/"&gt;sqlite&lt;/a&gt;.&lt;br /&gt;L'articolo di oggi vuole approfondire la conoscenza di questo eccellente sistema ed in particolare fare una veloce panoramica che possa far venir voglia di utilizzarlo.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Cosa è sqlite e quando usarlo&lt;br /&gt;&lt;/h3&gt;&lt;a href="http://www.sqlite.org/"&gt;SQLite&lt;/a&gt; è una libreria che permette di gestire dei database anche molto corposi (fino a 2Tb circa!!!) con molti accessi contemporanei in lettura in maniera rapida.&lt;br /&gt;Esso non necessita di alcuna installazione (basta scaricarlo e si può iniziare ad usarlo!!) e non avvia alcun servizio.&lt;br /&gt;Nonostante questo, può essere utilizzato sia in ambiente Linux, Windows e Mac, gestisce le transazioni, l'utilizzo del linguaggio SQL, delle viste e dei triggers.&lt;br /&gt;&lt;br /&gt;Nella prima pagina del sito di riferimento, la cosa che colpisce subito sono gli sponsor che spingono all'uso di questo sistema. Sono aziende del calibro di Oracle, Symbian, Mozilla, Bloomberg e Adobe!&lt;br /&gt;&lt;br /&gt;La licenza è decisamente molto aperta e permette la libera copia, modifica, pubblicazione, utilizzo e rivendita sia del codice sia della compilazione per qualsiasi utilizzo commerciale o meno.&lt;br /&gt;&lt;br /&gt;SQLite crea un file dal quale legge e scrive direttamente i dati senza creare thread separati gestendo le code in maniera estremamente efficiente.&lt;br /&gt;Questo permette di creare un database su un singolo file, portarlo in giro con una chiavetta o spedirlo via posta ad un amico in spazi estremamente contenuti.&lt;br /&gt;Le dimensioni della libreria, infatti, variano dai 100kb ai 300kb (a seconda del sistema) e la memorizzazione dei dati è davvero contenuta.&lt;br /&gt;&lt;br /&gt;Per questi motivi SQLite è particolarmente utile nell'utilizzo all'interno di cellulari, lettori MP3 e  sistemi embedded in generale. Si presta ad immagazzinare i dati per siti web, analisi di dati e gestione di demo o piccoli database personali o aziendali.&lt;br /&gt;Al contrario non può essere utilizzato per database che richiedono alti carichi di lettura/scrittura, basi di dati superiori ai 2Tb (!!) o applicazioni che necessitano della tecnologia client/server.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Interfaccia per l'uso di SQLite&lt;/h3&gt;SQLite non è dotato nativamente di interfaccia grafica per la gestione dei dati.&lt;br /&gt;Esso fornisce una shell interattiva stile prompt di MSDOS dove è possibile inserire i comandi SQL come in &lt;a href="http://sqlite.awardspace.info/syntax/sqlitepg01.htm"&gt;questo esempio&lt;/a&gt; o dei comandi propri per l'impaginazione dei dati.&lt;br /&gt;Intorno a questo sistema, però, sono sorte moltissime interfacce di terze parti, alcune opensource, altre proprietarie.&lt;br /&gt;In una pagina del sito di riferimento c'è una &lt;a href="http://www.sqlite.org/cvstrac/wiki?p=ManagementTools"&gt;lista completa di software tra i quali si può scegliere&lt;/a&gt;.&lt;br /&gt;Personalmente utilizzo &lt;a href="http://sqliteadmin.orbmu2k.de/"&gt;SQLiteAdministrator&lt;/a&gt; e &lt;a href="http://sourceforge.net/dbimage.php?id=8251"&gt;SQLiteManager&lt;/a&gt; anche se il mio preferito è un plugin per &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/5817/"&gt;Firefox SQLite Manager AddOn&lt;/a&gt;.&lt;br /&gt;Tutti questi software permettono di gestire i dati di sqlite in maniera grafica se proprio non ci si vuole cimentare con la shell ed il linguaggio SQL.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Api e linguaggi di programmazione&lt;/h3&gt;La cosa più impressionante di sqlite è la quantità di linguaggi di programmazione che mettono a disposizione la possibilità di gestire un database con questo sistema.&lt;br /&gt;Python, C++, Java, php, perl, .NET sono solo alcuni di questi.&lt;br /&gt;Si può trovare l'elenco completo in questa pagina: &lt;a href="http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers"&gt;SQLite Wrappers&lt;/a&gt;.&lt;br /&gt;Come se non bastasse, sqlite mette a disposizione una shell non interattiva.&lt;br /&gt;Tramite il proprio eseguibile, ifnatti, è possibile lanciare dei comandi anche dal prompt di MSDOS o dalla shell di Linux che creano tabelle, database, inseriscono dati e quant'altro: tutto ciò rendeo questo sistema estremamente utile anche in piccoli script di sistema per il logging.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Conclusioni&lt;/h3&gt;Grazie alla sua estrema duttilità, alle sue dimensioni contenute, alla sua licenza permissiva ed ai linguaggi che ne permettono l'utilizzo, SQLite è il candidato ideale per lo sviluppo di molteplici progetti siano essi personali sia professionali.&lt;br /&gt;Nei prossimi articoli copriremo diversi aspetti di questo software.&lt;br /&gt;Per il momento non rimane che &lt;a href="http://www.sqlite.org/download.html"&gt;scaricarlo &lt;/a&gt;ed iniziare &lt;a href="http://www.sqlite.org/lang.html"&gt;ad utilizzarlo&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-5934080949823464473?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ScqO-IMxhNZYKT8b-56BX5bElhQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ScqO-IMxhNZYKT8b-56BX5bElhQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ScqO-IMxhNZYKT8b-56BX5bElhQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ScqO-IMxhNZYKT8b-56BX5bElhQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/x0dnYma46Xo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/5934080949823464473/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2010/12/sqlite-libreria-sql-in-200kb.html#comment-form" title="2 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5934080949823464473?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5934080949823464473?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/x0dnYma46Xo/sqlite-libreria-sql-in-200kb.html" title="SQLite, libreria SQL in 200kb" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_uW8K2hOt_y8/TRyTP-U0zOI/AAAAAAAAAig/JPMNHRgCRTQ/s72-c/sqlite370_banner.gif" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2010/12/sqlite-libreria-sql-in-200kb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMBR3Yyfyp7ImA9Wx9QF00.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-4776833008897921177</id><published>2010-12-30T11:12:00.006+01:00</published><updated>2010-12-30T12:27:36.897+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-30T12:27:36.897+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="personale" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><title>Emozioni informatiche e Duke Nukem 3D</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_uW8K2hOt_y8/TRxfBvE2n8I/AAAAAAAAAiY/DUzc2dzT3mU/s1600/dukenukem3d.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 267px; height: 320px;" src="http://3.bp.blogspot.com/_uW8K2hOt_y8/TRxfBvE2n8I/AAAAAAAAAiY/DUzc2dzT3mU/s320/dukenukem3d.jpg" alt="" id="BLOGGER_PHOTO_ID_5556420523689680834" border="0" /&gt;&lt;/a&gt;Quando ero giovine, alla tenera età di 16 anni anelavo senza limiti al motorino.&lt;br /&gt;I miei genitori, come tutti i genitori che non hanno avuto esperienze con le due ruote, in risposta alle mie spasmodiche preghiere... mi regalarono il mio primo computer...&lt;br /&gt;&lt;br /&gt;Iniziò allora la mia avventura nel mondo dell'informatica e a 17 anni fui iniziato da alcuni compagni di classe ai giochi per computer grazie a Duke Nukem 3D.&lt;br /&gt;Era uno sparatutto emozionante ed all'avanguardia per l'epoca che mi incollò per ore ed ore davanti allo schermo sia di giorno sia di notte.&lt;br /&gt;&lt;br /&gt;All'epoca non esistevano le console.&lt;br /&gt;Non si parlava ancora della guerra tra Wii, PS, XBOX e non esistevano le portatili PSP e DS...&lt;br /&gt;Era l'epoca dei PC ed io ero alle prese con il mio primo computer, un vecchio i386SX (senza coprocessore matematico) con un monitor da 14'' che emetteva più radiazioni di una centrale nucleare a pieno regime ed un modem esterno da 14.4Kb/s che si connetteva solo alle BBS ed era costato più dell'autoradio di mio padre.&lt;br /&gt;Il sistema operativo era il DOS con la sua suddivisione della memoria RAM in memoria bassa ed alta e si affacciava il windows 3.0 con le sue icone allegramente scopiazzate dall'Amiga.&lt;br /&gt;&lt;br /&gt;Su questo computer passai molte ore liete in compagnia di Duke Nukem 3D che mi permise, inconsapevolmente, di conoscere meglio il computer.&lt;br /&gt;Duke Nukem girava in memoria bassa ma, tipicamente, il DOS utilizzava questo spazio per caricare una serie di programmi residenti in memoria utili alla gestione del PC.&lt;br /&gt;Per questo motivo iniziai a studiare il sistema operativo, a conoscere i file di configurazione, a smanettare con l'help in linea e tutto per liberare la memoria bassa al fine di giocare...&lt;br /&gt;In questo modo conobbi l'autoexec.bat ed il config.sys e tutto ciò mi incuriosì non poco.&lt;br /&gt;Il passaggio successivo furono i primi passi verso il basic e gli script di configurazione automatica che mi permettevano il caricamento in fase di boot dei programmi a seconda dell'uso che dovevo fare del computer.&lt;br /&gt;&lt;br /&gt;Successivamente insieme a due amici decidemmo di usare Duke Nukem per giocare in rete.&lt;br /&gt;I computer non erano portatili e quindi si partiva da casa caricandosi a spalle il case, il monitor formato padellone e cavi ovunque.&lt;br /&gt;Si organizzavano le serate/weekend a casa di uno o dell'altro partendo il sabato sera, tirando fino a tardi, e a volte si dormiva nella stessa casa per ripartire con la domenica ludica...&lt;br /&gt;&lt;br /&gt;Router, cavi di rete, switch? All'epoca non ne conoscevamo l'esistenza o forse proprio non esistevano o probabilmente costavano troppo perchè potessimo prenderli in considerazione ed allora via di cavo seriale per connettere due PC tra di loro.&lt;br /&gt;Ma solo due per volta ed il terzo, a rotazione, stava a guardare :-)&lt;br /&gt;Ecco la nostra "rete".&lt;br /&gt;La connessione, però, nonostante i computer fossero solo due per volta era lentissima e dopo nottate a cercar di capire quale potesse essere il problema (internet non c'era e noi avevamo 17 anni!!), scoprimmo che la seriale è intrinsecamente lenta per questo genere di giochi che necessitano lo scambio di molte informazioni al secondo.&lt;br /&gt;&lt;br /&gt;Decidemmo quindi di passare alla porta parallela ed anche qui le serate passate insieme per far dialogare i computer non si contano...&lt;br /&gt;Tra coca cola, riavvii, perplessità varie riuscimmo anche in questa impresa: e si parla di windows 3.0!!&lt;br /&gt;L'emozione provata quando i due PC iniziarono a parlarsi è ancora viva dentro di me.&lt;br /&gt;&lt;br /&gt;Uno dei due miei amici, però, aveva un 486DX (con coprocessore matematico), un mostro di un altro pianeta rispetto al mio povero i386SX che soffriva di potenza di calcolo quando doveva elaborare oltre alla grafica anche la connessione.&lt;br /&gt;Un altro computer costava troppo (soprattutto all'epoca e dato il fatto che i soldi erano dei genitori e non miei...) ma ero intenzionato a giocare ad armi pari.&lt;br /&gt;Per questo motivo iniziai a comprendere cosa fosse una scheda madre, un coprocessore matematico, la RAM e tutte ste cosette...&lt;br /&gt;Ipotecando (presso i miei genitori) la paghetta dei successivi 6 mesi comprai, infine, un coprocessore e lo saldai sulla scheda madre insieme ad un amico perito (tra fioretti e preghiere rivolte a San Circuito che non mi facesse bruciare nulla....) e cambiai la memoria RAM aggiungendo un banco da 2Mb (!!!) duplicando la precedente RAM.&lt;br /&gt;&lt;br /&gt;Finalmente ero operativo e le serate si fecero molto più animate tra urla di gioia quando si vinceva e i fischi quando si perdeva, tra appostamenti virtuali e battaglie all'ultimo sangue con pugnali, bazooka, mitragliette e armi speciali!&lt;br /&gt;&lt;br /&gt;Se siete arrivati fino a qui a leggere, probabilmente vi starete chiedendo il motivo di questo post...&lt;br /&gt;Tutti questi ricordi sono venuti fuori quando ho letto, in questi giorni del  &lt;a href="http://is.gd/jLfvi"&gt;porting del gioco denominato Duke Nukem 3D&lt;/a&gt; su Linux...&lt;br /&gt;Mi son tornate alla mente le ore passare a fare i miei primi abbozzi di hacking, le ore di gioco davanti al monitor, i giorni insieme agli amici a fare le scoperte nel mondo dell'informatica che mi hanno condotto a utilizzare questi strumenti nella vita di tutti i giorni e nel mio lavoro.&lt;br /&gt;&lt;br /&gt;Insomma.... leggendo questo articolo mi sono tornate vecchie emozioni alla mente... emozioni informatiche incomprensibili e forse deprecabili da chi non ha vissuto le medesime esperienze ma pur sempre emozioni!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-4776833008897921177?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kOeFxbxAT7IEZvhuKDOBLx_WoQE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kOeFxbxAT7IEZvhuKDOBLx_WoQE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kOeFxbxAT7IEZvhuKDOBLx_WoQE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kOeFxbxAT7IEZvhuKDOBLx_WoQE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/eYjFWsnV7Ow" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/4776833008897921177/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2010/12/emozioni-informatiche-e-duke-nukem-3d.html#comment-form" title="4 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/4776833008897921177?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/4776833008897921177?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/eYjFWsnV7Ow/emozioni-informatiche-e-duke-nukem-3d.html" title="Emozioni informatiche e Duke Nukem 3D" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_uW8K2hOt_y8/TRxfBvE2n8I/AAAAAAAAAiY/DUzc2dzT3mU/s72-c/dukenukem3d.jpg" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2010/12/emozioni-informatiche-e-duke-nukem-3d.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEEQX4-fyp7ImA9Wx5UEE0.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-5570144868852944551</id><published>2010-10-13T23:50:00.001+02:00</published><updated>2010-10-13T23:50:00.057+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-13T23:50:00.057+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="database" /><title>Sistemi di Database</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uW8K2hOt_y8/TLRwne1p6gI/AAAAAAAAAiM/9LFjGI-ylXU/s1600/20100218122220aLaRa.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_uW8K2hOt_y8/TLRwne1p6gI/AAAAAAAAAiM/9LFjGI-ylXU/s320/20100218122220aLaRa.jpg" alt="" id="BLOGGER_PHOTO_ID_5527166466285758978" border="0" /&gt;&lt;/a&gt;&lt;h3&gt;Premessa&lt;/h3&gt;I &lt;span style="font-weight: bold;"&gt;Database&lt;/span&gt; sono da sempre la mia passione.&lt;br /&gt;&lt;br /&gt;Un database è, citando &lt;a href="http://it.wikipedia.org/wiki/Database"&gt;wikipedia&lt;/a&gt;, &lt;span style="font-style: italic;"&gt;"un archivio strutturato in modo tale da consentire l'accesso e la gestione dei dati stessi (l'inserimento, la ricerca, la cancellazione ed il loro aggiornamento) da parte di particolari applicazioni software  ad essi dedicate. Il database è un insieme di informazioni, di dati che vengono suddivisi per argomenti in ordine logico (tabelle) e poi tali argomenti vengono suddivisi per categorie (campi)"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;In poche parole si identifica con questo termine una serie di dati immagazzinati in un computer: per fare degli esempi, è un database dalla semplice rubrica telefonica alla gestione di un magazzino, l'elenco delle fatture, l'elenco dei clienti di un hotel, le informazioni sui passaggi di un automobilista sotto le barriere telepass.... e così via dicendo.&lt;br /&gt;Si può dire che il nostro mondo ormai non può più fare a meno dei sistemi di database!&lt;br /&gt;&lt;br /&gt;Negli anni il concetto di database è stato ampliato e sviluppato in categorie di sistemi software che consentono la creazione, la modifica e la gestione in genere di database. Questi sistemi vengono chiamati Database Management System (DBMS).&lt;br /&gt;&lt;h3&gt;Storia della organizzazione dei dati&lt;/h3&gt;Come risulta ovvio dalla premessa, le tecnologie che si sono sviluppate con gli anni dietro il concetto di database sono davvero molte.&lt;br /&gt;Il primo problema fu trovare un sistema per organizzare le informazioni.&lt;br /&gt;&lt;br /&gt;Inizialmente le applicazioni erano piuttosto semplici ed accedevano direttamente ai dati immagazzinati sul disco fisso secondo una logica pensata dal programmatore. Ovviamente ogni programmatore era libero di organizzare le informazioni come meglio credeva e questo creava molta etereogeneità e confusione nella gestione per la mancanza di standard.&lt;br /&gt;&lt;br /&gt;Ben presto nacquero i primi sistemi di database semplici. Il primo in assoluto fu &lt;a href="http://en.wikipedia.org/wiki/Dbm"&gt;dbm&lt;/a&gt; creato dalla AT&amp;amp;T che supportava una struttura molto semplice sebbene altrettanto funzionale..&lt;br /&gt;&lt;br /&gt;Tali strutture, però, crebbero in complessità in modo esponenziale e con essa il numero di persone che vi accedevano.&lt;br /&gt;L'accesso diretto ai dati si rivelò presto carente e nacquero i DBMS "Database Managment System" ovvero sistemi che vennerò  adibiti alla scrittura/lettura/modifica dei dati sul disco su richiesta di una o più applicazioni esterne.&lt;br /&gt;&lt;br /&gt;Le strutture nell'organizzazione dei dati utilizzate furono diverse e si sono evolute nel tempo [fonte wikipedia]: &lt;ol&gt;&lt;li&gt;gerarchica (rappresentabile tramite un albero e risalente agli anni sessanta),&lt;/li&gt;&lt;li&gt;reticolare (rappresentabile tramite un grafo e risalente agli anni 70),&lt;/li&gt;&lt;li&gt;&lt;a href="http://it.wikipedia.org/wiki/Modello_relazionale" title="Modello relazionale"&gt;&lt;/a&gt;relazionale (attualmente il più diffuso,  rappresentabile mediante tabelle e relazioni tra esse e risalente agli anni settanta),&lt;/li&gt;&lt;li&gt;ad oggetti (estensione alle basi di dati del paradigma "Object  Oriented", tipico della programmazione a oggetti e risalente agli anni ottanta),&lt;/li&gt;&lt;li&gt;semantica (rappresentabile con un grafo relazionale all'inizio del 2000).&lt;/li&gt;&lt;/ol&gt;Insieme alle strutture nacquero anche i linguaggi adibiti alla gestione delle stesse.&lt;br /&gt;Senza dubbio uno dei linguaggi più conosciuti e noti è lo "Struttured Query Language" SQL.&lt;br /&gt;&lt;h3&gt;Server di database, applicazioni database, librerie database&lt;/h3&gt;I sistemi di database ad oggi sono veramente molti.&lt;br /&gt;La scelta della tipologia da adottare si basa sullo studio delle caratteristiche del sistema:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;numero di utenti che deve supportare in lettura/scrittura,&lt;/li&gt;&lt;li&gt;numero di interrogazioni che avvengono contemporaneamente,&lt;/li&gt;&lt;li&gt;licenza utilizzata dal fornitore del sistema,&lt;/li&gt;&lt;li&gt;prezzo del sistema (nel caso di licenze proprietarie),&lt;br /&gt;&lt;/li&gt;&lt;li&gt;linguaggi che supportano il sistema,&lt;/li&gt;&lt;li&gt;richiesta o meno di personale specializzato,&lt;/li&gt;&lt;li&gt;esistenza o meno di applicazioni che sfruttano il sistema.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Queste caratteristiche devono esser prese in considerazione nel momento in cui si sceglie un sistema anzichè un altro. L'errore che spesso si commette, infatti è di comprare o comunque utilizzare un sistema sovradimensionato rispetto le proprie esigenze.&lt;br /&gt;&lt;br /&gt;Tipicamente le tipologie di database ad oggi si dividono in tre grandi categorie:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;librerie di database&lt;/span&gt;: sono singole librerie supportate da pochi o tanti linguaggi ed applicazioni. Di solito si possono scaricare gratuitamente da internet oppure le si può trovare nativamente in alcune applicazioni.&lt;br /&gt;Nella maggior parte dei casi  richiedono un carico in scrittura bassissimo (uno o due accessi contemporanei) sebbene possano spesso sopportare molte letture contemporanee. Estremamente agili e veloci, sono però carenti dal punto di vista della sicurezza e delle funzionalità.&lt;br /&gt;Esempi:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sqlite.org/"&gt;sqlite&lt;/a&gt;: un progetto davvero interessante, integrato in centinaia di applicazioni ed utilizzato da "grandi  nomi" quali Mozilla, Symbian ed Adobe. E' un progetto opensource.&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Dbm"&gt;dbm&lt;/a&gt;: una delle prime tecnologie pre-relazionali&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;applicazioni personali/ufficio&lt;/span&gt;: sono applicazioni che includono, oltre la gestione dei dati, anche un sistema di interfaccia, reportistica ed interrogazione molto variegato. Solitamente vengono utilizzati per piccoli database (qualche milione di righe al massimo) e piccoli carichi in lettura (10 o 20 al massimo) e scrittura (5 o 10 contemporanei). Hanno il vantaggio di integrare molti strumenti in un unico software sebbene la gestione dei dati lasci solitamente a desiderare. Questo permette, a fronte di un piccolo investimento, la possibilità di gestire piccoli basi dati in maniera estremamente efficiente.&lt;br /&gt;Esempi:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://it.wikipedia.org/wiki/Microsoft_Access"&gt;MS Access&lt;/a&gt;: senza dubbio è l'applicazione più interessante in questo campo. Estremamente completa, integra un sistema di gestione dei dati che, sebbene sia poco efficente, viene affiancata da strumenti di  creazione di maschere e report.&lt;br /&gt;Tutto ciò da la possibilità di progettare un'applicazione indipendente e un sistema di reportistica estremamente interessante.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.openoffice.org/product/base.html"&gt;OpenOffice Base&lt;/a&gt;: software opensource molto interessante. Sebbene sia nato per competere con MS Access, ad oggi sembra essere ancora molto lontano dal suo antangonista. E' comunque un progetto da tenere sotto occhio perchè promette bene.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;server database&lt;/span&gt;: sono applicazioni solitamente più articolare che integrano funzionalità avanzate (come i trigger o le stored procedure) e consentono l'accesso di centinaia se non milioni di accessi in lettura/scrittura contemporanei.&lt;br /&gt;Esempi:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fascia alta: &lt;a href="http://www.oracle.com/us/products/database/index.html"&gt;Oracle Db&lt;/a&gt; ed &lt;a href="http://www-03.ibm.com/systems/i/"&gt;IBM AS400&lt;/a&gt; sono tra i sistemi più performanti, completi, professionali che ci siano sul mercato. Sfortunatamente sono anche complessi (richiedono amministratori competenti e specializzati) e piuttosto costosi.&lt;/li&gt;&lt;li&gt;Fascia medio/bassa: &lt;a href="http://it.wikipedia.org/wiki/Microsoft_SQL_Server"&gt;MS SQL Server&lt;/a&gt;, &lt;a href="http://www.postgresql.org/"&gt;Postgres SQL&lt;/a&gt;, &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt; sono tre ottimi sistemi. Il primo proprietario mentre gli altri due open source. Tipicamente più semplici da utilizzare (sebbene una certa competenza sia auspicabile) sono l'ideale per la piccola/media impresa ma anche per il privato che vuole sviluppare una applicazione sicura con sistemi di backup efficienti.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;h3&gt;Conclusioni&lt;/h3&gt;Da questo articolo si evince che la scelta disponibile nell'utilizzo di un sistema di database è veramente ampia.&lt;br /&gt;Ci sono sistemi per ogni esigenza.&lt;br /&gt;Se si vuole creare una piccola rubrica o la gestione di un magazzino o della fatturazione di un piccolo ufficio è possibile utilizzare MS Access.&lt;br /&gt;Se si desidera creare un negozio online dove una o due persone aggiungono i prodotti e decine di persone li visionano quotidianamente si può scegliere sqlite o Mysql.&lt;br /&gt;Per applicazioni aziendali in società medio/grandi (400-2000 dipendenti) è auspicabile scegliere Postgres o SQLserver.&lt;br /&gt;Se al contrario si desidera supportare operativamente una grande struttura, una banca o una grossa fabbrica, la scelta obbligata ricadrà su Oracle o As400.&lt;br /&gt;&lt;br /&gt;Nei prossimi articoli scenderò un po' nel particolare nel favoloso mondo dei database ed in particolare mi dilungerò sulla mia ultima passione: sqlite!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-5570144868852944551?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QP72UfgWDBJb3q9rQR3wEe00n4Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QP72UfgWDBJb3q9rQR3wEe00n4Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QP72UfgWDBJb3q9rQR3wEe00n4Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QP72UfgWDBJb3q9rQR3wEe00n4Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/QHxzppdlnUs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/5570144868852944551/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2010/10/sistemi-di-database.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5570144868852944551?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5570144868852944551?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/QHxzppdlnUs/sistemi-di-database.html" title="Sistemi di Database" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_uW8K2hOt_y8/TLRwne1p6gI/AAAAAAAAAiM/9LFjGI-ylXU/s72-c/20100218122220aLaRa.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2010/10/sistemi-di-database.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIAQXY7fSp7ImA9Wx5VFEU.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-5080115413956234413</id><published>2010-10-07T22:49:00.001+02:00</published><updated>2010-10-07T22:49:00.805+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-07T22:49:00.805+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><title>twit4followers e accresci i tuoi followers Twitter</title><content type="html">&lt;h3&gt;Premessa&lt;/h3&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uW8K2hOt_y8/TK3alGhhDsI/AAAAAAAAAiE/W7HgIl7e1qE/s1600/twitter_bird.gif"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 78px; height: 72px;" src="http://1.bp.blogspot.com/_uW8K2hOt_y8/TK3alGhhDsI/AAAAAAAAAiE/W7HgIl7e1qE/s320/twitter_bird.gif" alt="" id="BLOGGER_PHOTO_ID_5525312648794672834" border="0" /&gt;&lt;/a&gt;Ho già parlato di Twitter questo anno in un &lt;a href="http://zuccala.blogspot.com/2010/07/twitter-di-tutto-e-di-piu.html"&gt;articolo piuttosto articolato&lt;/a&gt;.&lt;br /&gt;Successivamente ho anche raccontato come fare a collegarsi ad un account &lt;a href="http://zuccala.blogspot.com/2010/07/twitter-e-python.html"&gt;twitter tramite python&lt;/a&gt;.&lt;br /&gt;In generale sono tantissimi i servizi e le API che si interfacciano con Twitter ma ieri, cercando informazioni sul web, mi sono imbattuto su qualcosa di davvero inaspettato....&lt;br /&gt;&lt;h3&gt;twit4followers&lt;/h3&gt;Una delle preoccupazioni maggiori di alcuni utilizzatori di Twitter è quella di avere un elevato numero di "&lt;span style="font-style: italic;"&gt;followers&lt;/span&gt;" ovvero di persone che seguono il proprio account.&lt;br /&gt;Solitamente questo è sinonimo di "&lt;span style="font-style: italic;"&gt;popolarità&lt;/span&gt;".&lt;br /&gt;Ovviamente più i contenuti della tua pagina twitter sono interessanti maggiore sarà il numero dei tuoi followers...&lt;br /&gt;Ma cosa succede se pubblichi materiale interessante e le persone sembrano rimanere impassibili e quindi non ti seguono?&lt;br /&gt;E cosa dire, ancora, se la tua mania di popolarità sembra essere irriducibile nonostante i contenuti non ne siano all'altezza?&lt;br /&gt;Ebbene, ci ha pensato &lt;a href="http://www.twit4followers.info/?gohome116"&gt;twit4followers&lt;/a&gt;: un servizio che, a pagamento, ti assicura da un minimo di 100 followers (a $5) fino ad un massimo di 10.000 followers (a $450!!).&lt;br /&gt;Non c'è che dire... internet offre davvero tante possibilità di guadagno :-)&lt;br /&gt;Quello che mi chiedo è se esiste davvero qualcuno che sia disposto a sborsare anche solo 50$ per avere più followers.&lt;br /&gt;Nel frattempo, se non sapete cosa fare, abbonatevi al &lt;a href="http://twitter.com/#%21/VittorioZuccala"&gt;mio tweet&lt;/a&gt; :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-5080115413956234413?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0w6frMRyZ83vJf8FJidtmdIFVzE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0w6frMRyZ83vJf8FJidtmdIFVzE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0w6frMRyZ83vJf8FJidtmdIFVzE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0w6frMRyZ83vJf8FJidtmdIFVzE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/Acgwn6Qq_mI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/5080115413956234413/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2010/10/twit4followers-e-accresci-i-tuoi.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5080115413956234413?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/5080115413956234413?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/Acgwn6Qq_mI/twit4followers-e-accresci-i-tuoi.html" title="twit4followers e accresci i tuoi followers Twitter" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_uW8K2hOt_y8/TK3alGhhDsI/AAAAAAAAAiE/W7HgIl7e1qE/s72-c/twitter_bird.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2010/10/twit4followers-e-accresci-i-tuoi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUECQXg6cCp7ImA9Wx5VEk8.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-2566799181708119591</id><published>2010-10-04T22:21:00.001+02:00</published><updated>2010-10-04T22:21:00.618+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-04T22:21:00.618+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="firefox" /><title>Xmarks addio</title><content type="html">Nell'agosto del 2009, l'anno scorso, pubblicai &lt;a href="http://zuccala.blogspot.com/2009/08/plugin-per-firefox.html"&gt;un articolo dove parlavo dei plugin di Firefox&lt;/a&gt; e, al primo posto, citavo xmarks.&lt;br /&gt;Oggi, facendo l'aggiornamento periodico del mio browser preferito, mi appare &lt;a href="http://www.xmarks.com/firefox/upgrade/3.9.2"&gt;una pagina&lt;/a&gt; nella quale si viene avvertiti che xmarks è un progetto che verrà abbandonato anche se continuerà a funzionare fino a metà gennaio 2011.&lt;br /&gt;Nella medesima pagina si legge che in sua vece si può usare &lt;a href="http://www.mozilla.com/it/firefox/sync/"&gt;Firefox Sync&lt;/a&gt;, un servizio che sincronizza i bookmarks, le password e la cronologia.&lt;br /&gt;Se si desidera avere un qualcosa in più, viene consigliato il servizio &lt;a href="https://www.evernote.com/Registration.action?code=xmarks"&gt;EverNote&lt;/a&gt;.&lt;br /&gt;Non resta che disinstallare l'utilissimo Xmarks e provare uno dei due se non entrambi i servizi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-2566799181708119591?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Q54U1UQHNFYyxP18Bbur1UFha5s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q54U1UQHNFYyxP18Bbur1UFha5s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Q54U1UQHNFYyxP18Bbur1UFha5s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q54U1UQHNFYyxP18Bbur1UFha5s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/g-G8WM0mpb4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/2566799181708119591/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2010/10/xmarks-addio.html#comment-form" title="2 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/2566799181708119591?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/2566799181708119591?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/g-G8WM0mpb4/xmarks-addio.html" title="Xmarks addio" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2010/10/xmarks-addio.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcFRHwyfCp7ImA9Wx5TE08.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-2639813871955959648</id><published>2010-07-27T23:01:00.002+02:00</published><updated>2010-07-28T14:26:55.294+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-28T14:26:55.294+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="nokia" /><category scheme="http://www.blogger.com/atom/ns#" term="software" /><category scheme="http://www.blogger.com/atom/ns#" term="codici a barre" /><title>Barcode QR 2D</title><content type="html">&lt;h3&gt;Barcode o Codici a barre&lt;/h3&gt;I &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uW8K2hOt_y8/TE7ZLVY3mNI/AAAAAAAAAg4/JGd-d5HneCY/s1600/arte_codice_barre.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 181px; height: 152px;" src="http://1.bp.blogspot.com/_uW8K2hOt_y8/TE7ZLVY3mNI/AAAAAAAAAg4/JGd-d5HneCY/s320/arte_codice_barre.jpg" alt="" id="BLOGGER_PHOTO_ID_5498570983809194194" border="0" /&gt;&lt;/a&gt;codici a barre nascono nel 1948 all'università di Drexel con lo scopo di automatizzare le operazioni di cassa in una catena di prodotti alimentari.&lt;br /&gt;Oggi sono adottati in tutti i supermercati, nelle edicole, nei negozi di elettronica ed in generale in qualsiasi attività che necessiti della catalogazione di oggetti, della gestione di un magazzino, carico/scarico merci e quant'altro.&lt;br /&gt;&lt;br /&gt;Questi codici hanno goduto di una enorme diffusione grazie soprattutto alla intrinseca duttilità, alla facilità di lettura da parte dei lettori ottici e quindi da parte di un computer e alla capacità di essere stampati in spazi molto ristretti.&lt;br /&gt;Essi, però, hanno un limite piuttosto importante: la quantità di dati che può immagazzinare è alquanto limitata.&lt;br /&gt;Un codice a barre, infatti, può rappresentare una parola o un numero ma non un intera frase o un indirizzo web o, ancora, un testo.&lt;br /&gt;&lt;br /&gt;Esistono diversi "standard" in commercio. In Italia tra i più diffusi ci  sono l'&lt;span style="font-style: italic;"&gt;EAN &lt;/span&gt;ed il &lt;span style="font-style: italic;"&gt;Farmacode&lt;/span&gt;.&lt;br /&gt;&lt;h3&gt;&lt;br /&gt;Codici a barre 2D QR&lt;/h3&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mobilecodes.nokia.com/qr?DATA=nathanvi%20is%20a%20geek%21&amp;amp;MODULE_SIZE=4&amp;amp;name=&amp;amp;MARGIN=2&amp;amp;ENCODING=BYTE&amp;amp;type=text&amp;amp;MODE=TEXT&amp;amp;a=view"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 180px; height: 180px;" src="http://mobilecodes.nokia.com/qr?DATA=nathanvi%20is%20a%20geek%21&amp;amp;MODULE_SIZE=4&amp;amp;name=&amp;amp;MARGIN=2&amp;amp;ENCODING=BYTE&amp;amp;type=text&amp;amp;MODE=TEXT&amp;amp;a=view" alt="" border="0" /&gt;&lt;/a&gt;Nel 1994 la società giapponese &lt;a href="http://it.wikipedia.org/w/index.php?title=Denso-Wave&amp;amp;action=edit&amp;amp;redlink=1"&gt;Denso-Wave&lt;/a&gt; ha inventato un codice a barre a matrice e quindi in due dimensioni come la figura qui a fianco. Questo tipo di codici possono contenere molte più informazioni rispetto i codici a barre tradizionali.&lt;br /&gt;Nel 2000 la società rilasciò con licenza libera il &lt;span style="font-style: italic;"&gt;codice QR&lt;/span&gt; e questo permise a questo standard di diventare sempre più diffuso.&lt;br /&gt;Con il proliferare di cellulari smartphone e di palmari dotati di telecamere sono nate molte applicazioni per la lettura dei codici QR su tali apparecchi.&lt;br /&gt;In questo modo si possono memorizzare informazioni sul proprio cellulare in modo molto veloce ed agevole quali, ad esempio, ad una &lt;span style="font-style: italic;"&gt;VCARD&lt;/span&gt; (lo standard per i contatti nella rubrica), ad un indirizzo internet, ad un testo e molto altro ancora: basta puntare il codice a barre e il cellulare lo riconosce automaticamente e propone il salvataggio della lettura nella applicazione corretta.&lt;br /&gt;&lt;h3&gt;&lt;br /&gt;Applicazioni&lt;/h3&gt;Esistono molte applicazioni utili a generare e leggere codici a barre QR.&lt;br /&gt;In particolare, dato che adoro i cellulari Nokia serie N, voglio proporvi alcune informazioni che gravitano intorno a questo mondo.&lt;br /&gt;&lt;a href="http://mobilecodes.nokia.com/create.jsp"&gt;Crea un codice QR&lt;/a&gt; con il sito mobilcodes di Nokia. In questa pagina puoi scegliere se generare un link, un testo o una VCARD e il sito, oltre a generare il codice richiesto fornisce anche un URL da collegare sul proprio sito o blog come l'immagine riportata sopra da me.&lt;br /&gt;&lt;a href="http://mobilecodes.nokia.com/scan.htm"&gt;Scarica una applicazione&lt;/a&gt; seguendo uno dei link dal sito mobilcodes di Nokia. Personalmente mi trovo molto bene con &lt;span style="font-style: italic;"&gt;I-nigma Reader&lt;/span&gt; ma ho sentito parlare bene anche degli altri software.&lt;br /&gt;&lt;h3&gt;&lt;br /&gt;Conclusioni&lt;/h3&gt;Negli ultimi anni questi codici stanno davvero spopolando. Alcuni cartelloni pubblicitari su strada o sui mezzi di trasporto e campagne di marketing espongono codici 2D.&lt;br /&gt;Allo SMAU 2010 erano un ingrediente fisso in quasi tutti gli stand e mi è anche capitato di vederli sulle tovagliette personalizzate di alcuni bar della mia città.&lt;br /&gt;Penso che nei prossimi anni avranno una diffusione sempre maggiore ad oggi limitata solo dalla gioventù di questo standard che decreta ancora poca conoscenza da parte della maggior parte degli utenti.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-2639813871955959648?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aV3ZMyx7fCzpzydDK42KSabP10k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aV3ZMyx7fCzpzydDK42KSabP10k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aV3ZMyx7fCzpzydDK42KSabP10k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aV3ZMyx7fCzpzydDK42KSabP10k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/D0Xawt2mloQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/2639813871955959648/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2010/07/barcode-qr-2d.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/2639813871955959648?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/2639813871955959648?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/D0Xawt2mloQ/barcode-qr-2d.html" title="Barcode QR 2D" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_uW8K2hOt_y8/TE7ZLVY3mNI/AAAAAAAAAg4/JGd-d5HneCY/s72-c/arte_codice_barre.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2010/07/barcode-qr-2d.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MDQXkzeCp7ImA9WxFaF0w.&quot;"><id>tag:blogger.com,1999:blog-6222802296606446510.post-8127950837260458838</id><published>2010-07-21T15:22:00.000+02:00</published><updated>2010-07-21T15:37:50.780+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-21T15:37:50.780+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programmazione" /><category scheme="http://www.blogger.com/atom/ns#" term="social network" /><category scheme="http://www.blogger.com/atom/ns#" term="informatica" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="internet" /><category scheme="http://www.blogger.com/atom/ns#" term="twitter" /><category scheme="http://www.blogger.com/atom/ns#" term="web" /><title>Twitter e python</title><content type="html">&lt;h3&gt;Premessa&lt;/h3&gt;&lt;a href="http://www.twitter.com/"&gt;Twitter&lt;/a&gt; è un servizio di social network e microblogging del quale ho parlato in un &lt;a href="http://zuccala.blogspot.com/2010/07/twitter-di-tutto-e-di-piu.html"&gt;mio precedente post&lt;/a&gt;. Un aspetto molto interessante di questo servizio è la possibilità di poter aggiornare il proprio profilo &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_uW8K2hOt_y8/TEbu2jinQLI/AAAAAAAAAgo/B9s19CwAlVs/s1600/twitter.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 128px; height: 128px;" src="http://2.bp.blogspot.com/_uW8K2hOt_y8/TEbu2jinQLI/AAAAAAAAAgo/B9s19CwAlVs/s320/twitter.png" alt="" id="BLOGGER_PHOTO_ID_5496343016273035442" border="0" /&gt;&lt;/a&gt;in diversi modi: si può utilizzare direttamente il sito web oppure il proprio cellulare tramite SMS.&lt;br /&gt;Twitter però mette a disposizione delle API ("&lt;span style="font-style: italic;"&gt;applications programming interface&lt;/span&gt;"  ovvero "interfaccia alla programmazione di applicazioni" Ndr.) che permettono di sviluppare applicazioni con la capacità di accedere al proprio profilo o di integrare questa funzionalità all'interno di programmi già esistenti.&lt;br /&gt;Io, ad esempio per aggiornare &lt;a href="http://www.twitter.com/VittorioZuccala"&gt;il mio profilo su twitter&lt;/a&gt; utilizzo un AddOn di Firefox chiamato &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/9591/"&gt;Power Twitter&lt;/a&gt;.&lt;br /&gt;In questo articolo vi parlerò di come sia possibile accedere a twitter tramite il linguaggio di programmazione python.&lt;br /&gt;&lt;h3&gt;Python e Twitter&lt;/h3&gt;Esiste un modulo &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; che permette il collegamento ad un profilo su &lt;a href="http://www.twitter.com/"&gt;Twitter&lt;/a&gt;. Questo modulo ci permette di leggere i post di un qualsiasi account e, se si dispone di un proprio profilo, anche l'aggiornamento in maniera automatica.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_uW8K2hOt_y8/TEbu9ZUPXYI/AAAAAAAAAgw/mIppB28Go1U/s1600/twython.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 215px; height: 147px;" src="http://1.bp.blogspot.com/_uW8K2hOt_y8/TEbu9ZUPXYI/AAAAAAAAAgw/mIppB28Go1U/s320/twython.jpg" alt="" id="BLOGGER_PHOTO_ID_5496343133787479426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Per poter utilizzare questo modulo, prima di tutto è necessario scaricarlo ed installarlo. La pagina di riferimento è: &lt;a href="http://code.google.com/p/python-twitter/"&gt;http://code.google.com/p/python-twitter/&lt;/a&gt;.&lt;br /&gt;Personalmente ho trovato molti problemi con la versione 2.4 e 2.5 di python perchè viene richiesto un modulo supplementare per il parsing XML...&lt;br /&gt;Per questo motivo consiglio vivamente una versione 2.6 o successiva di python.&lt;br /&gt;Fatta questa premessa si può direttamente importare il modulo ed utilizzarlo (non mi dilungo sulla installazione che è pari a qualsiasi modulo per questo linguaggio di programmazione).&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Leggere dei post da un profilo&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="kn"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;twitter&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;twitter&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Api&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;latest_posts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetUserTimeline&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"yourusername"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;latest_posts&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4&gt;Aggiornare il proprio profilo&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="kn"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;twitter&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;twitter&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Api&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'yourusername'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'yourpassword'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PostUpdate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Primo messaggio su twitter da script python'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3&gt;Conclusione&lt;/h3&gt;Tramite gli spezzoni di codice sopra citati si può vedere quanto sia semplice leggere o aggiornare un profilo.&lt;br /&gt;I possibili usi sono davvero infiniti... Si potrebbe sviluppare una  applicazione che ogni volta che si verifica un evento (accensione del  PC, backup effettuato, connessioni ad internet, mancanza di spazio su  disco...) invii l'informazione su Twitter; oppure si potrebbe far  scattare una foto ad un panorama ogni 2 ore e postarle su twitter; o  ancora collegare il PC ad Arduino e postare l'utilizzo di questa  scheda...&lt;br /&gt;Insomma gli utilizzi possibili dipendono solo dalla  immaginazione del programmatore...&lt;br /&gt;E tu per cosa lo userai?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6222802296606446510-8127950837260458838?l=zuccala.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/k_H_JCh-nUd6QJla3nU8EUMwTg0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k_H_JCh-nUd6QJla3nU8EUMwTg0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/k_H_JCh-nUd6QJla3nU8EUMwTg0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k_H_JCh-nUd6QJla3nU8EUMwTg0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/VittorioZuccal/~4/fmmSgvhuVyc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://zuccala.blogspot.com/feeds/8127950837260458838/comments/default" title="Commenti sul post" /><link rel="replies" type="text/html" href="http://zuccala.blogspot.com/2010/07/twitter-e-python.html#comment-form" title="0 Commenti" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/8127950837260458838?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6222802296606446510/posts/default/8127950837260458838?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VittorioZuccal/~3/fmmSgvhuVyc/twitter-e-python.html" title="Twitter e python" /><author><name>Vittorio Zuccalà</name><uri>https://profiles.google.com/108596554216928277656</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/--2ngyfZK3JQ/AAAAAAAAAAI/AAAAAAAAAAA/PDkR_HtybjY/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_uW8K2hOt_y8/TEbu2jinQLI/AAAAAAAAAgo/B9s19CwAlVs/s72-c/twitter.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://zuccala.blogspot.com/2010/07/twitter-e-python.html</feedburner:origLink></entry></feed>

