lunedì 26 novembre 2007

Work-trash-pop art


Work-trash-pop art, inserito originariamente da Pietro Bonanno.

L'altro giorno rovesciai per errore il cestino dei rifiuti. Il tutto mi sembrò assumere un disegno, una certa perfezione. Come se avessi completato un quadro aggiungendo l'ultimo ritocco, così ho deciso di immortalarlo.
Nessun animale è stato maltrattato durante le riprese.


PS: Per i curiosi, l'immagine su Flickr è zeppa di note...

martedì 13 novembre 2007

Strano ma vero

Se vi capite di aprire un video e vederlo capovolto, non girate il monitor, né guardatelo a testa in giù. Semplicemente scaricate l'ultima versione di ffdshow e fategli gestire i formati DivX (Video configuration>Codecs>alle voci DivX il valore va cambiato in libavcodec).
Se vi funziona, accettatelo per fede come ho fatto io.

giovedì 8 novembre 2007

Alla ricerca del Santo Graal - Reprise

Riprendo un argomento che mi interessa molto, e su cui sto facendo un bel pò di ricerche. Chiunque usi Java per realizzare applicazioni web vi dirà che attualmente non esiste Lo Strumento. Esistono decine (sul serio) di framework, e anche filtrando per stabilità, supporto e dimensioni della comunità ne rimangono almeno una decina: Struts, Struts 2 (che è molto diverso), Stripes, RIFE, Click, Tapestry, Echo2, Thinwire, Grails, GWT, ZK, Sitemesh, Cocoon, JSF e sicuramente ne sto dimenticando qualche altro.

Leggendo un pò, ho capito che esistono principalmente due modelli: il classico, celebre, inossidabile MVC (o Model 2) detto anche Action Oriented e il Page Oriented/Component Oriented.
Il commento a una domanda postata su TheServerSide è una dei migliori e più precisi riassunti che abbia letto su questo argomento.

Io paragono il modello MVC a un approccio procedurale del problema: si individuano i flussi dei dati e si realizzano, nei controller, i metodi che li eseguono. Magari poi il modello, i controller eccetera sono realizzati col paradigma OO, però il flusso dell'applicazione è governato dalle action, ovvero da procedure in senso lato.
Il modello Page/Component Oriented invece lo paragono ad un approccio ad oggetti: ogni pagina web è un'oggetto, ha dei metodi ed è essa stessa a governare l'applicazione in base ai metodi invocati (attraverso l'URL).
E la differenza, a mio parere, è analoga a quella tra i due paradigmi di programmazione: il modello MVC (procedurale) è immediato da capire e da imparare, si comporta bene quando l'applicazione è governata da flussi di dati (per esempio l'acquisto di un e-ticket), ma mostra i suoi limiti all'aumentare della complessità del problema. Ad un certo punto diventa ingovernabile.
Il modello Page Oriented, come l'OOP, invece è arduo da governare, richiede una revisione dei processi mentali con cui immaginiamo la soluzione a un problema, però paga sul lungo periodo. Supponiamo di avere un'applicazione ricca di dati, annidati, con diversi casi particolari in base alle configurazioni di questi. Il modello Page Oriented è sicuramente il migliore perchè è un divide and conquere più efficace.
Ho scelto essenzialmente quattro framework che applicano questi due modelli:
  • Grails e Stripes sono action framework
  • Click e Wicket sono Page/Component Oriented
Gli altri non li esclusi perchè siano peggiori, tutt'altro. RIFE, Tapestry, Thinwire, sono anche migliori.
Ma io sono pigro :-)
Di conseguenza voglio strumenti agili, immediati per le cose immediate e capaci in ogni caso di reggere l'aumento di complessità in maniera lineare. RIFE, per esempio, è strepitoso ma date un'occhiata all'esempio del blog. Ad un certo punto non si capisce più nulla, anche se la sensazione è che l'autore abbia sbagliato approccio educativo.

Grails e Stripes sono invece degli ottimi esempi di comunicazione: c'è un approccio graduale alle caratteristiche, molti esempi, molti approfondimenti ben scritti. La sensazione che si ha è che le cose funzionino bene perchè l'idea alla base è semplice e pratica.

Di Click avevo parlato male, ma faccio pubblica ammenda. Utilizzando HTML puro e Velocity, la produttività è enorme. Si può buttare giù un'applicazione mentre ancora si sta imparando il framework.
Il sito è stracolmo di esempi, ben fatti, la documentazione è limpida.

Wicket alle prime stranisce. Sembra quasi che gli autori chiedano un atto di fede a chi vuole iniziare, lasciandolo completamente in balìa del framework. Non rimane che andarsi a guardare gli esempi.
Ma dopo un pò si capisce che il pargolo promette bene. L'approccio è il più puro che abbia mai visto, non una traccia di logica nella presentazione, non una traccia di presentazione nella logica.
Però è facile mettere in piedi la prima applicazione. Non facile quanto Click, ma abbastanza facile.
Andando avanti, si trovano esempi in abbondanza (qui c'è un bel pò di roba). L'unico difetto è la necessità di dovere associare una classe Java a una pagina Web per qualsiasi cosa, fosse pure un semplice messaggio di notifica.

E' stupido ribadirlo, ma non c'è e non può esserci il framework web Java. La scelta dipende innanzitutto dal problema da affrontare, e conseguente scelta dell'approccio (action/component). All'interno dei due possibili, ci sono diverse soluzioni e, per esempio, non opterei Click per una webmail Ajax-based, così come non userei Wicket per il portale dell'agenzia di viaggi.
Grails copre molte esigenze, ma se esiste già del codice Java da usare o se si prevede di interfacciarlo con altre applicazioni in Java, diventa un problema. E' possibile sicuramente, ma si perdono molti dei vantaggi nell'usare Groovy.
Stripes invece sarebbe più adatto, ma se non si hanno questi vincoli è meno "divertente".

Spero comunque che questo post aiuti perlomeno a sfoltire la rosa di scelte. In ogni caso, la discussione è aperta :-)

mercoledì 7 novembre 2007

Altro che coltellino svizzero

Come ho scritto in un altro post, sono assolutamente soddisfatto del mio Nokia N80, a parte il problemi delle prestazioni che tarpa di fatto un prodotto quasi perfetto nel rapporto qualità/prezzo.

Dopo un salutare aggiornamento del software, con l'installazione della versione Internet Edition (in breve, l'ultimo aggiornamento ufficiale di Nokia trasforma i normali N80 in N80 Internet Edition, che gestiscono un pò meglio VOIP e poco altro), ho risistemato i software installati e da installare.
Spippolando un pò in rete sono giunto infine a una configurazione di cui sono fiero, e che quindi sfoggio qui :-) :


Ho installato:
  • Il tema Field Of Colours, freeware, bellissimo
  • Calcium, freeware, una semplice calcolatrice che ha proprio il vantaggio di essere semplice
  • Screenshot 2, freeware, per prendere lo screenshot di cui sopra
  • Mr Lock, freeware, il blocco tastiera automatico che ho sempre bramato. Blocca i tasti dopo una certa pausa con varie opzioni per le eccezioni (per esempio, non si attiva se c'è una certa applicazione in esecuzione, o se non si è nello schermo di standby). Imperdibile.
  • WLan Wizard, freeware, da Nokia per il wardriving estremo :-D
  • GMail, freeware, chi non ha al giorno d'oggi un account GMail? :-)
  • Panoman, shareware, indispensabile per chi vive in Sicilia :-) . Consente di creare panoramiche perfette ruotando la fotocamera attorno a sè stessi. Costa $5,95, un prezzo ridicolo, e ancora più ridicolo se consideriamo il cambio sull'Euro. Alcuni esempi dei risultati nel loro photoblog.
  • Papyrus, shareware, qui il discorso è un pò articolato. Sul Symbian non ho ancora trovato un calendario con gestione degli eventi lontamente paragonabile a quello sul mio Tungsten T3 che ho ormai venduto. Non ho un'esigenza estrema di gestire eventi, appuntamenti, ma tendo a dimenticare così ho preso l'abitudine di segnarmi le scadenze burocratiche, le revisioni delle auto, i compleanni, le ricorrenze ecc.
    Il calendario fornito da Nokia è molto limitato. Tanto per dirne una, non considera i compleanni segnati sulla Rubrica...
    I PIM, ahimé a pagamento, che ho trovato per il Symbian sono Papyrus, Aqua Calendar e Handy Calendar. Mentre i primi due permettono di sincronizzare l'agenda con i compleanni della Rubrica, quest'ultimo non lo fa quindi lo escludo a priori (costa anche $39,95, non ne capisco la ragione). Aqua Calendar è strapieno di funzioni ma è confuso e lento, così alla fine ho scelto Papyrus. Entrambi costano $19,95, al cambio €13,63.
Un suggerimento finale per chi, come me, usa Ubuntu e dispone del Bluetooth sul PC: trasferire file col cavetto non è cosa semplice. Se collegate il cavo USB e selezionate "Archivio di massa" (cioè il normale storage via USB), viene montato il disco ma non si riesce ad aprire. Non ho trovato soluzioni rapide, così mi affido al Bluetooth. Per installare un'applicazione scaricata sul PC, basta selezionare il file .sis, o .sisx, e spedirlo al cellulare tramite Nautilus (occorre installare il pacchetto gnome-bluetooth e poi tasto destro, Invia a, OBEX push). Il cellulare lo riceve come messaggio con allegato e basta selezionarlo per avviare l'installazione.