27th Novembre 2008

Recensione: The Definitive Guide to Plone

Nel 2003, insoddisfatto del modello di sviluppo web allora in voga (tutta la logica di applicazione nella pagina php/asp), scoprii l’application server Zope, una piattaforma web orientata agli oggetti e profondamente innovativa. Da allora ho inziato a studiare Zope che oggi, insieme al suo CMS di punta Plone, è divenuto la mia piattaforma di elezione. Purtroppo però non è tutto rose e fiori. Zope e Plone sono strumenti molto potenti, ma il loro difetto atavico è la mancanza di una documentazione per gli sviluppatori completa e omogenea. Con il passare degli anni questa lacuna è stata colmata, in particolare grazie ad alcuni libri. E’ proprio di un paio di questi libri, per me fondamentali nell’apprendimento e nell’affinamento della programmazione Zope/Plone, che voglio parlare in questo e nel prossimo post.

The Definitive Guide to Plone


Il primo libro fondamentale per la mia formazione è stato The Definitive Guide to Plone, di Andy McKay, edito da Apress. Pur essendo ormai un po’ datato (2004) è stato uno dei primi - e migliori - ad affrontare l’argomento Plone dal punto di vista del programmatore, in un panorama che all’epoca offriva molti libri (a volte davvero mediocri) rivolti soprattutto agli utenti finali. Plone però non è soltanto un CMS da mettere in mano agli utenti così com’è, ma una meravigliosa piattaforma per lo sviluppo di applicazioni complesse.

McKay inizia comunque con un’introduzione per i neofiti, toccando tematiche obbligate come l’installazione ed il primo utilizzo, fino alle più immediate personalizzazioni attraverso il web. Ma è con l’introduzione ai template, molto chiara e precisa, che il libro inizia ad essere veramente utile. Da questo punto in poi vengono sviscerati i concetti fondamentali della programmazione Zope e Plone: sicurezza, workflow, object database e ricerca degli oggetti. Importantissima la parte in cui si parla dello sviluppo dei prodotti (il gergo Zope per indicare i plugin) e del framework Archetypes per creare rapidamente nuovi tipi di contenuto. Il libro si conclude con un capitolo dedicato alla parte sistemistica di Zope (configurazione, ottimizzazione, scalabilità, ecc.), molto importante per avere un’infarinatura sul deploy della propria applicazione. Utile come reference l’appendice che riporta le API più importanti, anche se qualcuna sta diventando obsoleta.

Definitive Guide to Plone è un libro introduttivo alla programmazione Zope/Plone, ma non per questo meno approfondito. La prima parte fornirà il contesto a chi non conosce Plone, ma anche basi più solide a chi già lo conosce superficialmente, per affrontare al meglio i capitoli più corposi.

Potete trovare The Definitive Guide to Plone su Amazon. Al momento in cui scrivo il prezzo è di circa $36, che con il cambio favorevole e i costi di spedizione contenuti è davvero molto buono. Inoltre è in preparazione la seconda edizione, sicuramente aggiornata alle versioni più recenti di software e API, e che tra l’altro vede l’entrata dell’italiano Fabrizio Reale di Redomino fra gli autori.

posted in python, plone, zope, libri, recensioni | 0 Comments

26th Novembre 2008

Crap Code

Crap code è un termine volgare con cui gli anglofoni chiamano il codice scritto male. In questo articolo l’autore spiega cos’è - secondo lui - il crap code, chiedendo in chiusura anche il parere dei lettori. Quella che segue è la mia idea di crap code, tenendo presente che il concetto di codice buono è soggettivo. Ma fino ad un certo punto…

  1. Le infinite catene di if/else annidati sono tra le cose che più irritano il mio senso estetico. Una moltitudine di rami decisionali, uno dentro l’altro, che formano un groviglio inestricabile per la comprensione e sono impossibili da modificare.
  2. I metodi, le funzioni o le procedure più lunghi di 20 righe, inclusi i commenti, rendono difficile seguirne il filo logico, spesso sono poco coesi (fanno troppe cose) e di conseguenza scarsamente modificabili.
  3. Il codice non commentato è un danno per gli altri, ma anche per sé. Anche se fosse codice ben scritto, una descrizione di ciò che fa dà subito un’idea sommaria che ne aiuta la comprensione più profonda. Lo stesso autore, a distanza di tempo, non può ricordarsi le idee e i ragionamenti che hanno prodotto quel codice: un commento è un messaggio d’aiuto spedito a sé stessi nel futuro.
  4. L’utilizzo sbagliato o innaturale delle strutture di controllo, per cercare la creatività a tutti i costi. Usare gli idiomi nel modo consueto facilita agli altri la lettura del proprio codice, così che non debbano spremersi le meningi per capire che quel ciclo while scandisce soltanto gli elementi di una lista dal primo all’ultimo, o che quel try/catch non gestisce un errore, ma il flusso dell’applicazione.
  5. L’abuso di flag, che conduce spesso alle catene di if/else di cui sopra e ad espressioni logiche complesse quanto inutili.
  6. Le query SQL cablate nel codice e la scansione manuale dei risultati, magari utilizzando indici posizionali (0, 1, 2, …) invece dei nomi degli attributi. Perché non usare un ORM?

L’articolo inoltre enuncia una verità inconfutabile: il crap code è sempre quello degli altri. Voi che ne pensate?

posted in programmazione | 0 Comments

22nd Febbraio 2008

Programmare in Python/Qt - parte 3

Nella seconda parte abbiamo costruito un editor per poter immettere e modificare una sequenza di valori, utilizzando il framework model/view fornito dalle Qt4. In questo articolo sfrutteremo le funzioni definite nel modello applicativo per effettuare calcoli statistici sulle sequenze e visualizzarne i risultati sotto forma di tabella.

Read the rest of this entry »

posted in python, programmazione, qt | 0 Comments

21st Dicembre 2007

Programmare in Python/Qt - parte 2

Nella prima parte abbiamo definito un modello contenente la logica per una semplice calcolatrice statistica. Il modello consiste in un contenitore di valori (la lista nativa del Python) e una serie di funzioni che calcolano alcuni indici statistici, come il valore medio e la deviazione standard. In questo articolo getteremo le basi per costruire l’interfaccia utente.

Read the rest of this entry »

posted in python, programmazione, qt | 7 Comments

27th Novembre 2007

Open Source nelle imprese

Ieri ad Arezzo ho partecipato al convegno sull’Open Source organizzato dalla Confindustria locale, una tavola rotonda con IBM, Microsoft, CNIPA e operatori del settore. Il dibattito è stato un po’ fiacco, soprattutto per il basso profilo scelto da Valboni (Microsoft), ma non sono mancati gli spunti interessanti.

Mi ha colpito molto l’intervento “differito” di Ilario Nocentini, Assessore all’Innovazione del Comune di Arezzo. Raramente in un politico avevo visto idee chiare e ferrea determinazione su Software Libero, Open Source, formati aperti e condivisione della conoscenza. Altrettanto convinta e preparata Flavia Marzano del CNIPA, soprattutto sulla necessità e sul diritto dei cittadini di poter fruire dei documenti pubblici in formati aperti e standard come ODF. Due voci delle istituzioni che fanno ben sperare.

E poi un dato su cui riflettere: l’Italia vanta il maggior numero di imprese ICT in Europa, quasi tutte piccole o piccolissime. Un numero spropositato che disperde forze, satura il mercato e abbassa il livello qualitativo. Forse sarebbe il caso di iniziare a porre dei vincoli.

posted in open source, free software, imprese, convegno | 0 Comments

23rd Novembre 2007

Programmare in Python/Qt - parte 1

Il Python è un linguaggio di scripting moderno ed evoluto, dotato di librerie standard molto complete e numerosissime librerie di terze parti per fare praticamente di tutto. In virtù di ciò è possibile sviluppare applicazioni Python molto rapidamente e questo lo rende un linguaggio ideale, fra le altre cose, per la creazione di prototipi. Le Qt sono librerie C++ per la creazione di interfacce grafiche. Sono rilasciate con licenza GPL dalla Trolltech e sono le fondamenta del desktop manager KDE. Sono disponibili dei binding delle Qt per Python, chiamati PyQt, grazie ai quali è possibile usare Python e Qt insieme. Python e Qt sono disponibili su vari sistemi, inclusi GNU/Linux e Windows, e rappresentano perciò una vera soluzione multipiattaforma.

Per esplorare le potenzialità del binomio Python/Qt andremo a sviluppare un’applicazione didattica, una semplice calcolatrice statistica per calcolare gli errori sulle misurazioni di grandezze fisiche. Dato un insieme di valori, che rappresentano le misurazioni di una data grandezza, la nostra calcolatrice ci fornirà informazioni come media, deviazione standard, errore medio, ecc. Niente di trascendentale, ma abbastanza per usare Python e Qt in modo non banale. Nel prosieguo daremo per scontata una conoscenza dei concetti base sia del Python che delle Qt, che dispongono di ottima documentazione introduttiva qui e qui.

Read the rest of this entry »

posted in python, programmazione, qt | 0 Comments

24th Maggio 2007

Programmare la GP2X - parte 2

La volta scorsa avevamo scomposto la semplice simulazione della pallina che rimbalza in due classi principali, Ambiente e Corpo, che interagivano fra loro. Adesso faremo un po’ di refactoring e quindi inizieremo a trarre un po’ di vantaggi dal design object oriented.

Read the rest of this entry »

posted in programmazione, c++, sdl, gp2x | 1 Comment

18th Maggio 2007

Programmare la GP2X - parte 1

La GP2X è una splendida console portatile basata su standard aperti, in particolare GNU/Linux. Su gp2xdev.net è iniziata un’ottima serie di articoli sulla programmazione della GP2X in C con le librerie SDL. Nella lezione 1 vengono introdotti i rudimenti della programmazione SDL, corredati da un esempio volutamente semplice con la classica pallina che rimbalza ai quattro lati dello schermo. Raccogliendo l’invito degli autori a modificare i sorgenti e a sperimentare, ho voluto aggiungere un po’ di struttura individuando ed implementando alcune classi. Ho sfruttato così l’occasione anche per studiare un po’ di C++, provenendo io dal Java. Ovviamente una struttura del genere è superflua per un esercizio così semplice, ma diventa indispensabile con progetti appena più ambiziosi, o anche soltanto per estendere un po’ le funzionalità previste inizialmente dalla simulazione. Per quanto concerne l’installazione degli strumenti di sviluppo rimando alla lezione 0 della serie.

Read the rest of this entry »

posted in programmazione, c++, sdl, gp2x | 4 Comments

13th Aprile 2007

Pycon a Firenze

Il 9 e 10 giugno si terrà a Firenze la manifestazione PyCon, la prima conferenza italiana dedicata al linguaggio Python. Io conto di partecipare.

posted in python, eventi | 0 Comments

20th Febbraio 2007

Integrare del.icio.us in KDE

Una delle applicazione più utili della rete è senz’altro del.icio.us, portale di social bookmarking che permette di avere sempre disponibili in rete i propri segnalibri e di condividerli con altri. E’ possibile integrare facilmente del.icio.us nell’ambiente desktop KDE, in modo da accedere ai propri bookmark facilmente e velocemente.

Read the rest of this entry »

posted in kde, del.icio.us, kubuntu, service menu | 0 Comments