Pagine

martedì 20 luglio 2010

Twitter; di tutto e di più...


Premessa

Talvolta mi capita di sentire alcune persone, i giornali o qualche radio citare la parola twitter.
Alcuni ne parlano come un sistema di istant messaging, altri come una piattaforma di blog ma twitter non è nè l'una nè l'altra cosa o forse entrambe.
Scopo di questo post è raccontare cosa sia twitter, come ha fatto a raccogliere più di un milione di utenti in tutto il mondo ed i possibili utilizzi dello stesso.


Twitter in breve

Il nome "Twitter", rispecchia una usanza molto anglosassone di dare nomi onomatopeici. Questo termine, infatti, ricorda il verbo inglese to tweet che significa "cinguettare".

Twitter è stato creato nel marzo 2006 dalla Obvious Corporation di San Francisco ed è un servizio di social network e microblogging che fornisce agli utenti una pagina personale, chiamato anche profilo personale, aggiornabile tramite messaggi di testo lunghi al massimo 140 caratteri.
Gli aggiornamenti possono essere effettuati direttamente tramite il sito, via SMS, con programmi di messaggistica istantanea, e-mail, oppure tramite varie applicazioni basate sulle API di Twitter. Gli aggiornamenti sono mostrati istantaneamente nella pagina di profilo dell'utente (che apparirà, dunque, come una sorta di diario) e comunicati agli utenti che si sono registrati per riceverli.
Ovviamente posso anche decidere di rendere uno o più messaggi privati.


Terminologia: Social network, blog, post, followers

Sebbene questa sia una piattaforma estremamente semplice da usare, risente della dominanza di molti termini inglesi.
Mi è sembrato importante, dunque, chiarire alcune parole a beneficio di coloro che non le hanno mai sentite o che non ne conoscono il significato:
  • Social network: significa letterlamente rete sociale. Qualsiasi legame tra persone sia esso di tipo sociale, conoscitivo, lavorativo o hobbistico che si manifesta sotto forma di sito web, mailing list, forum o qualsiasi altra forma di comunicazione, rappresenta un social network.
  • Blog: Il termine blog rappresentava, originariamente, una sorta di "diario di bordo" ovvero un insieme di articoli dove l'autore pubblicava argomenti di varia natura o specifici; si spaziava dalle opinioni personali ad articoli giornalistici, da argomenti informatici al giardinaggio...
  • Post: un post è, genericamente, un messaggio. Quando un utente spedisce una mail ad una mailing list, o su un forum, manda un "post". Un blog, ad esempio, è un insieme di posts.
  • Followers: letterelamente significa "coloro che seguono". In un social network una o più persone seguono i post di uno o più autori.
    In questo modo costoro sono definiti followers.
    Tutte le volte che un post viene pubblicato da un autore seguito, il sistema avvisa il follower dell'accaduto secondo i mezzi da lui scelti (email, sms....).
    Ogni utente decide chi seguire creando un network [rete ndr.] personale.
    La maggior parte di utenti hanno tra i 10 e 100 followers ma possono esserci i twitters di radio o servizi che possono contare anche migliaia di followers.

  • Blocking: è l'azione che si effettua nei confronti di quei followers troppo invadenti che scrivono di continuo e contenuti poco interessanti.
    Non è interessante sapere che pippo è andato in bagno, pippo sta facendo bollire l'acqua per la pasta e così via... In tal caso basta bloccare l'utente per non vedere più i suoi post.
  • Pubblico o direct message: sono le due modalità di comunicazione su tweeter. Se rispondo pubblicamente ad un twit allora questo apparirà come twit sul mio profilo e chiunque potrà leggerlo creandosi, a volte, anche un dibattito.
    Se mando un direct message, invece, solo l'utente interessato leggerà quello che ho da dire e a sua volta potrà rispondermi in via privata.


Per cosa posso usare Twitter?

A questo punto ti starai chiedendo... twitter può essermi utile? Vediamo alcuni dei modi in cui può essere utilizzato questo servizio.

  1. Servizio news: Vuoi tenere aggiornati amici, parenti, clienti di nuovi incontri, promozioni, eventi in tempo reale? Crea un profilo twitter! Tutti coloro che vi si abbonano riceveranno le informazioni al volo...
  2. Sistema di informazione: sei un viaggiatore che ha a che fare con il traffico di tutta Italia o Europa? Postale su twitter. Sei esperto in informatica o di elettronica o di.... ? Crea un canale su twitter e rispondi agli utenti che vi si abbonano!
    Se il tuo canale inizia ad essere molto seguito potresti anche farti un nome nel social network e poi... chissà?
  3. Aggregatore di informazioni: hai un accont su flickr dove metti le tue foto... un blog dove inserisci articoli... un account ebay dove vendi oggetti.... Aggrega tutto sul tuo profilo twitter!
    I tuoi amici così come le persone che non conosci personalmente saranno aggiornate e fruire dei tuoi contenuti.
  4. Servizio per viaggiatori o conferenze: Alcuni twits estremamente interessanti che ho visto in rete sono quelli che raccontano dei viaggi.
    Informazioni su monumenti visti, sul tipo di aeroporto nel quale si è stato visto da parte degli utenti e non dei tour operator.
    Un altro uso analogo anche se in ambito diverso è espresso dai partecipanti di una conferenza che inseriscono le proprie impressioni in tempo reale!
  5. Twitter per parlare: puoi anche usare questo servizio semplicemente per fare una chat uno a molti. Scambiare battute, impressioni..... cazzeggiare :-)


Alcuni consigli

Di seguito alcuni consigli....

  1. Prima di tutto consiglio di iscriversi a questo servizio tramite questo link premendo su "Registrati Ora". Prima però pensa che tipo di twits vuoi mettere sul tuo profilo? Personali, riflessioni, materiale informatico. Più il tuo profilo sarà a "tema" più sarà seguito. Eventualmente puoi crearti più di un profilo su twiteer da associare a tipologie differenti di post.
  2. Puoi linkare il tuo profilo twitter sul tuo sito web, sul tuo blog, la firma nella tua mail. Per fare questo puoi usare i Feed Rss, una tecnologia di cui ho parlato in questo articolo alcuni mesi fa. Per esempio puoi usare il feed del mio twitter.
  3. Usa il tuo profilo per pubblicare link a siti interessanti ma... i link sono lunghi... Puoi quindi abbreviarli usando servizi come TinyUrl o SnipUrl.
  4. Invia i tuoi tweet tramite il sito ma... impara a farlo anche con il tuo cellulare, il palmare o tramite la posta elettronica; esistono svariati metodi per aggiornare il proprio profilo!
    Io ad esempio uso un AddOn di Firefox: Power tweeter.


Per finire

Se sei arrivato fino a qui... ecco il mio profilo Twitter!
In questo profilo parlo delle mie scoperte informatiche e tecnologiche, di programmazione con python, della scheda elettronica Arduino, di Linux e di internet... Insomma tutto ciò che quotidianamente utilizzo e che fa parte del mondo informatico o elettronico.

martedì 22 giugno 2010

Windows API

API e Windows

API è un acronimo che sta per "applications programming interface" ovvero "interfaccia alla programmazione di applicazioni".
Le Windows Api chiamate anche WinAPI o Win32API sono quindi delle librerie che forniscono, al programmatore, un'interfaccia verso il sistema operativo.
In questo modo sarà facile copiare un file, aprire una finestra di dialogo o spegnere il computer perchè basterà connettersi alla funzione della giusta libreria per ottenere il risultato voluto.

Le Windows API

Le funzionalità offerte dalle API di Windows possono essere racchiuse in otto categorie:
  • Servizi di base: sono gestiti dal kernel.exe o librerie affini nelle varie versioni di windows (come kernel32.dll). Sono le funzionalità di base come la gestione degli errori, l'accesso ai dischi o al file system, la gestione dei processi e/o dei thread.
  • Servizi avanzati: sono gestiti da advapi32.dll. Sono funzionalità avanzate come la gestione degli utenti, l'accensione o spegnimento del PC, l'accesso al registro del sistema.
  • Interfaccia al device grafico: è gestita da gdi32.dll. Funzionalità su monitor, stampanti e affini.
  • Interfaccia utente: è gestita da user32.dll. Gestisce funzionalità di interazione con l'utente come l'input da tastiera o mouse, interazione con la interfaccia grafica
  • Libreria delle finestre di dialogo: gestita da commdlg32.dll. Gestisce le finestre di dialogo di comune utilizzo come quella di salvataggio o apertura di un file, scelta di un colore o di un font.
  • Libreria dei controlli: gestita da comctl32.dll. Fornisce l'accesso a controlli avanzati da parte del sistema operativo come la barra di stato, le schede nelle finestre di dialogo, le progress bar...
  • Windows shell: gestita da shell32.dll. Fornisce l'accesso a funzionalità offerte dalla shell di windows.
  • Servizi di rete: fornisce l'accesso a diversi controlli di rete.

Oltre a queste otto categorie esistono altre librerie che corrispondono ad altrettante API.
Esistono funzionalità legate al web o per il multimediale ed ognuna di esse è gestita da una libreria specifica.
Le windows API, quindi, rappresentano un ottimo strumento per ottenere il massimo dalle proprie applicazioni senza dover "reinventare" di continuo la ruota.
Si pensi, infatti, al salvataggio di un file.
Se si crea una applicazione e si vuole salvare il file prodotto da essa non sarà necessario "creare" la finestra di salvataggio del file ma basterà interfacciarsi alla libreria apposita con notevole risparmio di tempo.

Le API di windows sono fornite dal Platform SDK ovvero una serie di strumenti per lo sviluppo del software e di documentazione molto corposo.

Termino questo articolo dicendo che innumerevoli linguaggi di programmazione hanno la possibilità di interfacciarsi alle API di windows.
Oltre, ovviamente, ai linguaggi proprietari come Visual Basic e .NET anche linguaggi open source come perl, e python hanno questa possibilità.
E' mia intenzione, nel prossimo futuro, approfondire questo tema.

lunedì 21 giugno 2010

feed parser e leggere gmail in python

Feed RSS

Questa tecnologia raccontata in breve, permette di avere un elenco cronologico dei post o articoli pubblicati su un determinato sito (ad esempio il feed rss di questo blog) o delle mail mandate ad un determinato account sottoforma di lista.
Il vantaggio di questa tecnologia è che se si "da in pasto" il feed rss ad un programma specifico come Thunderbird o Outlook, questi articoli appaiono come se fossero mail.
Questo comporta che l'utente non è più costretto a consultare il sito per vedere se ci sono stati aggiornamenti ma riceve un messaggio simile ad una mail.
La filosofia che governa questa tecnologia, dunque, è che sono gli aggiornamenti ad arrivare dall'utente e non il viceversa.
Tempo fa ho già parlato della tecnologia denominata feed RSS e se qualcuno fosse interessato ad approfondire può leggere questo articolo.
Molti sono i software che riescono a leggere agevolmente i feed: tra questi ho già citato Thunderbird ma esistono anche molti linguaggi di programmazioni che hanno dei moduli o delle librerie atte a questo scopo.
Oggi vi propongo feedparser, una libreria per python che serve proprio a leggere agilmente un feed rss.

Feedparser per python

Feedparser è un modulo python che può essere scaricato da questa pagina.
L'installazione non avviene tramite binari ma con il classico setup.py install.
La home page del progetto è piena di esempi pratici e vale la pena seguirli per comprendere la potenza di questo modulo in pochissimo tempo...
In questo esempio vi propongo una soluzione per vedere se sono arrivate nuove mail nel nostro account di posta elettronica gmail.
Il programma di seguito, dunque, una volta specificato il nome utente e password del nostro account gmail, è capace di leggere la lista delle ultime 20 mail e stampare a video il mittente e l'oggetto.
Ovviamente questo codice può essere la base per lo sviluppo di ulteriori funzionalità.

import feedparser

username="username@gmail.com" # modifica username con tuo user
password="password" # modifica la password con quella gmail
protocol="https://"
server="mail.google.com"

path="/gmail/feed/atom"
feedmail = feedparser.parse(protocol + username + ":" + password + "@" + server + path)


for i in xrange(len(feedmail.entries)):
print ""
print feedmail.entries[i].author_detail.email
print feedmail.entries[i].title

giovedì 17 giugno 2010

Python: inserire numeri formattati

Premessa

Ho deciso che alcuni "algoritmi" utilizzati in fase di programmazione per risolvere singoli problemi sono da salvare....
E quale miglior posto se non il proprio blog?

Problema e soluzione

  • Input: numero con decimali segnati con un punto es 1333.434
  • Output: numero in cui il punto indica il separatore delle migliaia e senza decimali
  • Codice:

#Il codice commentato seguente serve nel momento in cui si trova
# un numero con un punto.
#In questo momento prende il numero, lo divide in tre cifre per volta,
# mette un punto e cancella i decimali.
# Quindi: 1333444.22 ==> 1.333.444
# Si suppone il numero sia nella variabile "stringa" sottoforma,
#appunto di stringa.

s=string.find(stringa,'.')
if s >= 0:
j=len(stringa)
stringa=stringa[0:s]
b=''
k=0
for k in range(len(stringa)-3,0,-3):
b='.'+stringa[k:j]+b
j=k
b=stringa[:k]+b
stringa=b

martedì 15 giugno 2010

Tabelle LaTeX su più pagine

Premessa

Lavorando con LaTeX, può capitare di dover trattare tabelle molto lunghe.
Queste tabelle, se gestite come visto in un mio precedente articolo, non possono essere ripartite su più pagine e questo porta dei problemi di impaginazione:
  • LaTeX porterà la tabella sempre su una pagina nuova nella speranza che, avendo maggiore spazio, la tabella sia interamente visualizzabile.
  • La tabella, se eccede la lunghezza fisica della pagina, non riuscirà ad essere comunque visualizzata.
Il risultato con tabelle molto lunghe e frequenti (si pensi ad esempio ad un report sulla produzione regione per regione di una azienda) è quindi molto scadente.
A fronte di questa premessa, oggi vi parlerò del modulo LaTeX denominato longtable.

Longtable

Questo modulo serve per inserire tabelle molto lunghe nei propri documenti generati con LaTeX. Queste tabelle verranno ripartizionate su più pagine in maniera molto pratica e funzionale.
La caratteristica che ho gradito maggiormente è che in questo modo l'oggetto rimane li dove tu lo vuoi e non risulta flottante.
Se desideri una tabella sotto un titolo o un determinato paragrafo, dopo la compilazione la ritrovi proprio li... Questo è un lusso che se si trattano le tabelle in maniera tradizionale, raramente si può gustare.
Il documento di riferimento, in inglese di questo modulo è questo.
Personalmente, però, ho trovato estremamente utile un pdf in italiano di Lorenzo Pantieri: L'Arte di ripartire una tabella su più pagine con LaTeX.
Questo documento, oltre ad essere nella nostra lingua ci dona alcuni esempi pratici dai quali prendere spunto e, a parer mio, è da tenere sempre presente se si lavora con LaTeX.
Un ringraziamento quindi a Lorenzo per i suoi contributi su questo tema sempre preziosi.

Doxygen, sistema di documentazione codice


Premessa

Finalmente ci siamo... dopo settimane se non mesi passati a programmare ecco che il software che avevi pensato tempo fa e al quale hai dato forma nel tempo pronto per il suo debutto...
Lo fai girare, lo osservi mentre legge la configurazione e... tutto sembra funzionare.
A quel punto, dopo la soddisfazione iniziale arriva l'incubo del programmatore: documentare il proprio codice per fare in modo che se qualcun altro o tu stesso fra due anni devi modificare il programma, sappia cosa faceva quella specifica funzione...
A questo scopo sono a presentarvi Doxygen, un sistema di documentazione del codice molto semplice e potente.

Doxygen

Doxygen è un software che legge uno o più file contenenti del codice di programmazione.
Analizza i commenti presenti e, se formattati adeguatamente, genera della documentazione fruibile.
Detto in altre parole, basta inserire commenti nel proprio codice che spieghino in modo dettagliato le funzioni, le variabili, le classi (pratica di solito sempre auspicabile) e Doxygen farà il resto...
Questo software multipiattaforma (gira su Linux, Windows e Mac) è nato per la documentazione del codice in C ma oggi riconosce codice in Java, python, perl, php e molti altri.
La cosa più interessante di questo software è la semplicità d'uso: dopo aver aperto una utility grafica che aiuta nella creazione di un file di configurazione, basta lanciare l'eseguibile doxygen e, come per magia, vedrete apparire la documentazione nella cartella specificata.
Una caratteristica affasciante sono gli output disponibili in questo software: la documentazione, infatti, può essere generata in un gradevole formato HTML (estremamente configurabile con CSS) pronto da pubblicare su un sito web o una intranet, in formato RTF o LaTeX (e quindi PDF).
Insomma, per chi sta cercando un modo semplice e veloce per documentare il proprio codice, Doxygen è un ottimo punto di partenza, semplice, veloce, estremamente configurabile, multipiattaforma e multilinguaggio. In poche parole è solo da provare!

lunedì 14 giugno 2010

Graphviz, grafi automatici professionali

Premessa

In alcuni ambiti lavorativi, i grafi possono essere estremamente utili.
Si pensi al mondo della programmazione, quando si vuole visualizzare la relazione tra gli oggetti creati in un programma.
Un altro esempio è rappresentato da un organigramma aziendale quando si desidera vedere la gerarchia organizzativa che parte dal consiglio di amministrazione e scende diramandosi fra direzioni, servizi e così via.
Copiando la definizione da wikipedia del termine Grafo: "I grafi sono strutture matematiche discrete che rivestono interesse sia per la matematica che per un'ampia gamma di campi applicativi. In ambito matematico il loro studio, la teoria dei grafi, costituisce un'importante parte della combinatoria; i grafi inoltre sono utilizzati in aree come topologia, teoria degli automi, funzioni speciali, geometria dei poliedri, algebre di Lie. I grafi si incontrano in vari capitoli dell'informatica (ad esempio per schematizzare programmi, circuiti, reti di computer, mappe di siti). Essi inoltre sono alla base di modelli di sistemi e processi studiati nell'ingegneria, nella chimica, nella biologia molecolare, nella ricerca operativa, nella organizzazione aziendale, nella geografia (sistemi fluviali, reti stradali, trasporti), nella linguistica strutturale, nella storia (alberi genealogici, filologia dei testi)."
Esistono decine se non centinaia di software che permettono di creare grafi. Alcuni semplici, altri complessi; alcuni automatici e a riga di comando, altri visuali.
Oggi vorrei presentarvi un software che mi ha rapito per la flessibilità e la capacità di generare grafi di ottima qualità. Sto parlando di Graphviz.

Graphviz

Graphviz è un software coperto dalla Common Public License Ver 1.0.
Questo significa che è possibile scaricarlo ed installarlo liberamente.
Come quasi tutti i software da me trattati è multipiattaforma: esso, infatti, gira su Linux, Windows e Mac.
Il software è utilizzabile a riga di comando e usufruisce di un semplice linguaggio di programmazione che "spiega" le relazioni fra i blocchi all'interprete: basta scrivere un semplice file di testo con le relazioni, darlo in pasto all'interprete e questo genererà il grafo.
Questa è la parte più interessante perchè il grafo creato con Graphviz è estremamente personalizzabile; si può infatti definire la forma di ciascun blocco, il colore di sfondo, il tipo di freccia e la sua consistenza.
Il sito web è pieno di molti esempi e la documentazione specifica non manca.
I formati di output del grafo sono molteplici: Graphviz, infatti, può generare immagini jpg, gif, png utili per presentazioni o documenti in generale ma anche il prezioso formato eps per essere importato in LaTeX.
Diversi sono i linguaggi di programmazione che si interfacciano nativamente a questo software. Personalmente ho utilizzato con soddisfazione pydot, l'interfaccia python a graphviz ma la risorse collegate a questo programma sono molteplici.
In definitiva, per tutti coloro che hanno bisogno di generare grafi in modo più o meno automatico, consiglio vivamente l'utilizzo di Graphviz. I risultati saranno sicuramente all'altezza delle aspettative!