Piwik – Web Analytics

Piwik è un software open source con una notevole velleità: battere Google Analytics.

Piwik si basa sulla tecnologia PHP/MySQL; il software è rilasciato con licenza GPL versione 3 e ha diverse caratteristiche interessanti che riporto dal sito:

  1. Reports sulle statistiche web in tempo reale: in Piwik, i reports sono generati in tempo reale per default. Nel caso di siti web ad alto traffico, puoi scegliere la frequenza con cui generare i reports. (Non è necesario attendere il giorno dopo per vedere ciò che è successo oggi, anche se esiste la funzionalità Live anche per GA).
  2. Le features di Piwik sono nei plugins: puoi aggiungere nuove features ed eliminare quelle di cui non hai bisogno. Se sei uno sviluppatore, puoi velocemente creare i tuoi plugins per le statistiche web.
  3. tu gestisci i tuoi dati: perché Piwik è istallato sul tuo server, i dati sono archiviati nel tuo database e puoi ottenere tutte le statistiche usando le API pubbliche (pubblicando i dati in numerosi formati: xml, json, php, csv). Non diamo i dati al fornitore del servizio ma ce li teniamo in pancia: sono nostri.
  4. L’ interfaccia utente è completamente customizzabile: puoi usare il drag and drop dei widgets che preferisci per visualizzare e creare un report personalizzato per te.

Per ulteriori informazioni: http://www.piwik.org

L’annuncio di Tim Berners Lee sulla nascita di WWW

Cercando notizie su USENET ho trovato questo post meraviglioso che mi ha fatto tornare ai primordi del Web.

Un piccolo estratto:

                WorldWideWeb – Executive Summary

The WWW project merges the techniques of information retrieval and hypertext to
make an easy but powerful global information system.

The project started with the philosophy that much academic information should
be freely available to anyone. It aims to allow information sharing within
internationally dispersed teams, and the dissemination of information by
support groups.

Reader view

The WWW world consists of documents, and links.  Indexes are special documents
which, rather than being read, may be searched. The result of such a search is
another (“virtual”) document containing links to the documents found.  A simple
protocol (“HTTP”) is used to allow a browser program to request a keyword
search by a remote information server.

… 6 Ago 1991, 22:37

Ma leggetelo tutto, che bella idea il web!

Thunderbird e la rubrica

Ho dovuto reinstallare Thunderbird in una partizione del disco per motivi che non sto a ricordare.

Ho tutta la posta sul server remoto, uso IMAP come protocollo per cui nessun problema per quanto riguarda i messaggi. Per recuperare la rubrica invece, che è in locale, ho dovuto importarla. Come si fa?

La rubrica è contenuta nel file

~/.thunderbird/eawvwa8a.default/abook.mab

La cartella dal nome “esotico” eawvwa8a.default viene creata con un nome diverso per ogni installazione di Thunderbird, quindi non vedrete esattamente quella cartella nel vostro file system, ma, sotto la cartella .thunderbird/,una cartella con il suffisso .default c’è: state sicuri che è quella! Il file abook.mab contiene i contatti in formato testo.

Ho copiato questo file dalla directory della vecchia installazione alla directory della nuova installazione

$ cd .thunderbird/eawvwa8a.default/
$ cp <old_tb_directory>/abook.mab .

e ho riavviato Thunderbird.

C’est tout.

Info interessanti su Thunderbird: nel forum di Mozilla

Una nota: non so quante persone usino ancora i client di posta, vista la diffusione dei siti di webmail del calibro di Gmail. Penso siano ancora parecchie. Io continuo a trovarlo più comodo della webmail, anche se spesso le intranet bloccano la porta 25 per cui non si può spedire la posta, e quindi la via più breve è usare la mail via web.

Altre novità in Volunia

Presto sarà aperto a nuovi Power User. Nuova grafica, funzionalità migliorate e, secondo me, bellissimo da usare!

Il comunicato dello staff di oggi:

Ancora aggiornamenti in atto. Come anticipato nel post del 21 Maggio, da oggi Volunia mette a disposizione nuove funzionalità.

È inoltre nostro dovere tenere in considerazione tutte le critiche ed i reclami ricevuti dalle persone che non hanno avuto ancora accesso a Volunia. Il nostro team ha lavorato alacremente per poter accreditare tutti, soprattutto in vista della fase finale di Testing. Dal giorno 4 Giugno 2012 riprenderemo il processo di attivazione di tutti gli utenti che in questi mesi ne hanno fatto richiesta.

Realizzare un web service con Mirth

Finora ho realizzato applicazioni Mirth che leggevano da servizi web. E’ interessante anche sapere che i web service si possono fare con Mirth. Il contesto è questo: un’azienda “periferica” produce una informazione (ad esempio: un laboratorio che produce l’analisi di un campione di sangue) e il dato deve essere trasmesso all’azienda “madre” perché lo registri nel suo gestionale. L’azienda madre realizza un servizio web che verrà chiamato dal laboratorio il quale spedirà al servizio il referto con un messaggio HL7. All’arrivo del messaggio l’azienda madre esegue il parsing del messaggio e salva i dati nel gestionale (un database relazionale).

Nella fattispecie il messaggio viene “affettato” a righe e viene salvata una intestazione e una serie di dettagli collegati, uno per ogni riga del messaggio.

L’impianto è questo:

Il source

Il source è un SOAP listener che risponde con un WDSL che Mirth stesso genera e che mette a disposizione un metodo standard detto acceptMessage() (teniamo d’occhio ma per il momento soprassediamo sulla casella di selezione Respond from)

Le destination

Le destination sono parecchie perché la lavorazione del messaggio è piuttosto laboriosa: devo capire il tipo di messaggio (che leggo nell’intestazione del messaggio stesso) e a seconda di questo compiere diverse operazioni: per messaggi di un tipo estraggo dal file HL7 un file PDF che salvo nel NAS, e poi, in ogni caso, devo salvare in una tabella Oracle una intestazione e in una tabella figlia tutte le righe del messaggio numerandole e collegandole alla testata con un vincolo di chiave esterna:

Mirth2_destination
Mirth2_destination

Un passetto in più: lo script

Per questo tipo di applicazione devo personalizzare lo script che viene eseguito una volta eseguita l’applicazione del canale: con questo personalizzo la risposta del web service al programma che lo ha chiamato. Nelle figure precedenti si possono vedere questi punti in ciascuna delle 4 tab superiori.

Anche se ci sono diversi prodotti già attivi all’interno di Mirth per eseguire ognuna di queste operazioni atomiche, per convenienza o per forza alcune cose me le sono dovute scrivere a mano in JavaScript utilizzando classi embedded di Mirth, come la classe DatabaseConnectionFactory. Per esempio mi serviva eseguire una lettura di Oracle in una delle destinazioni, ma nelle destination non si può selezionare il tipo di connettore DatabaseReader che invece si può richiamare dal source. Quindi me lo sono fatto a mano. Inoltre, pur essendo possibile selezionare dei tipi di connettori standard che sono anche semplici da usare (ad esempio: FileWriter: gli passo la directory, il nome del file e il contenuto e lui me lo scrive dentro il filesystem), alcuni tipi di connettori dovevano comportarsi in modo non standard, ma Mirth è programmabile! per cui ho potuto estendere le funzionalità scrivendo i programmi a mano.

Per me, che non sono tanto in confidenza con il Java, scrivere in JavaScript (che è un po’ meno rigido del Java) in modo così approfondito è stata comunque un’esperienza formativa.

Alla fine di questo lavoro – salvare i dati – bisogna rispondere al software che ha chiamato il servizio e: come si fa? Non lo so.

Ho usato per la prima volta la quarta TAB (Scripts). Ho selezionato “Postprocessor” nella select Script in alto (vedi figura), ho definito una serie di variabili e una istruzione di scrittura nel log, e poi se la variabile di canale error è valorizzata (e, se succede qualcosa, la valorizzo nelle destinazioni precedenti – esse vengono eseguite nell’ordine una alla volta), istanzio un tipo di risposta altrimenti un’altra.

Il cuore di tutto è l’oggetto di Mirth responseMap che mi permette di modificare quel messaggio di risposta del metodo di default acceptMessageResponse che avevamo lasciato in sospeso nel primo punto. Il valore che questa variabile può assumere non è una stringa ma un oggetto che viene inizializzato dal metodo ResponseFactory.getSuccessResponse(ack) in caso di OK, oppure dal metodo ResponseFactory.getFailureResponse(ko) in caso di KO (ack e ko invece sono due stringhe che definisco io all’inizio dello script). La presenza dell’istruzione responseMap.put() in questo script mi fa comparire la voce acceptMessageResponse nella tendina di selezione Respond from del source! Il tutto è riportato in figura:

Mirth3_script
Mirth3_script

Come ultimo passaggio ecco come si presenta la chiamata al WS fatta da soapUI (a sinistra) e la response del servizio (a destra):

SoapUI MSG
SoapUI MSG

Di soapUI ne parlo più avanti. Buona questa risposta nel forum di Mirth

Bottiglia di Klein

Un oggetto curioso, come il nastro di Möbius che è una varietà di dimensione 2 non orientabile: sul nastro di Möbius una formica che parte da un certo punto del nastro, cammina cammina e si ritroverà nello stesso punto (perché il nastro è chiuso) ma dall’altra faccia del nastro.

Come farsi un nastro di Möbius in casa, stile ArtAttack: prendete un foglio di carta A4, un paio di forbici e della “colllla vinilica”. Tagliate una strisciolina larga 5 cm nel senso della lunghezza. Fatto? Bene! Prendete in mano la strisciolina tenendola per i lati corti e fate ruotare un lato di mezzo giro come quando si scartano le caramelle. Fatto? Bene! Adesso unite i due lembi e attaccateli con la “colllla vinilica”, ed avrete il vostro nastro di Möbius fatto in casa! 🙂

La bottiglia di Klein è un oggetto simile ma un po’ più complicato. Il filmato spiega bene come ci si possa costruire una bottiglia di Klein in casa, ma non bastano carta, forbici e colla vinilica. Si parte da un cilindro che però deve autointersecarsi vivendo noi in uno spazio a 3 dimensioni. Se fossimo in uno spazio a 4 dimensioni potremmo anche farlo senza che si autointersechi, ma questo è Universo 2.0.

La stranezza di questa bottiglia, dotata di una auto-intersezione, è che non ha un dentro ed un fuori. Mentre la distinzione tra dentro e fuori, nello spazio tridimensionale, è supportata dall’esperienza – normalmente sappiamo distinguere tra il dentro ed il fuori di un pallone da calcio: se vogliamo entrarci dentro, dobbiamo fare un buco -, essa invece non è così chiara in questo oggetto, visto che con continuità possiamo passare dall’esterno all’interno senza dover bucare la superficie.

Questa animazione al computer (quanta grazia i computer in queste cose! Fossero vivi Klein e Poincaré…) spiega come si costruisca una bottiglia di Klein a partire da un cilindro elastico (sulla indicazione dello stesso Felix Klein).

Inoltre, sezionando la bottiglia di Klein, si passa per deformazione continua (diffeomorfismo) ad un nastro di Moebius. Oppure, incollando due nastri si ottiene la bottiglia. Anche la bottiglia di Klein è una superficie (una varietà) di dimensione 2 non orientabile. Tutto visibile nell’animazione.

Novità in Volunia

 Dal 18 maggio Volunia si è presentato ai suoi power user con alcune novità.

Nel comunicato del team, si sono spiegati i motivi del silenzio stampa degli ultimi mesi e sono stati ringraziati gli utenti che hanno testato il sistema fornito una messe di segnalazioni. Sulla base di queste si sono decisi tre passi innovativi:

  1. l’integrazione con un motore di ricerca commerciale per consentire un uso più estensivo delle funzionalità seek & meet, pur continuando a sviluppare il proprio motore di ricerca;
  2. è stata rinnovata la grafica, resa meno grezza, anzi decisamente più accattivante, dalle segnalazioni degli utenti
  3. è stato migliorato l’aspetto comunicativo aprendo un blog in cui lo staff riferirà regolarmente sugli sviluppi e sono stati precisati i documenti riguardanti termini e condizioni dell’uso del servizio e sul trattamento della privacy.

Il team di Volunia sta lavorando “con solerzia” per aprire a tutti il sito di ricerca sociale il 14 giugno 2012.

Yii reloaded

logo Yii

Yii è il frameword MVC del momento, lo sto studiando e mi sono preso la libertà di ripensare un po’ al pattern di sviluppo MVC secondo un contesto che mi ha aiutato a chiarire alcune cose sul suo funzionamento. Ho scritto questo articoletto per ricordarmi che questo modo di vedere le cose me le ha fatte capire un po’ meglio. E, magari, può servire a qualcuno.

Un altro modo di pensare al pattern MVC.

JDK vs JRE

Sempre nell’ambito della guerra degli acronimi, un dubbio lecito che può venire quando qualche software ci richiede Java a bordo (lecito visto che lo mettono in evidenza nel sito dell’Oracle quando si vuole scaricare un ambiente di sviluppo o di esecuzione) è:

Ho bisogno di JDK o di JRE?

Qui la semplice risposta dell’Oracle:

“What Java Do I Need?” You must have a copy of the JRE (Java Runtime Environment) on your system to run Java applications and applets. To develop Java applications and applets, you need the JDK (Java Development Kit), which includes the JRE.

Il sito di Oracle con le pagine di download.

Earth Day 2012

22 aprile 2012

Earth Day 2012

WikipediaGoogleEarth day networkYouTube