Introduzione al Perl Object Environment (POE)/2

L’articolo che segue è la seconda e ultima parte di questa introduzione al Perl Object Environment. La prima parte è disponibile a questo link.

Wheel e componenti

La prima classe di oggetti che possono aiutare a sviluppare più rapidamente le nostre applicazioni con POE sono chiamate Wheel. Si tratta di insiemi di event handler, che possono essere iniettati all’interno di una sessione per istruirla a reagire ad un più ampio insieme di stimoli senza dover faticare troppo. Un esempio semplice da seguire é quello che adopera la classe POE::Wheel::FollowTail. Si tratta di una wheel che aiuta a creare applicazioni che, come il comando UNIX tail, seguono l’evolversi di un file specificato.

[Read more…]

Introduzione al Perl Object Environment (POE)/1

Se vi siete sempre cimentati con script di shell, applicazioni web o semplici CGI — e questa è una sorte comune a molti programmatori Perl — allora siete probabilmente abituati a concepire i vostri programmi come una sequenza di operazioni che avvengono l’una dopo l’altra in maniera lineare, o al più pilotate dallo stato del sistema e dall’input fornito al programma.

Ci sono però tanti casi in cui un simile approccio non va bene: ad esempio tutto l’insieme delle applicazioni GUI, che devono essere reattive alle azioni dell’utente, e per le quali di conseguenza non è possibile individuare a priori una sequenza di operazioni da svolgere: l’impredicibilità dell’agire dell’utente, e la quantità di attori che devono modificare il proprio stato in base ad esse, impedisce — o rende molto difficile — usare il medesimo approccio che normalmente governa i programmi tradizionali. Altra categoria che può trarre beneficio da un approccio ad eventi è quella dei software che devono implementare protocolli di comunicazione con agenti esterni, come quelli di networking.

[Read more…]

Summer of Code 2009 alla partenza

Anche quest’anno è arrivato il momento di un’altra Summer of Code (già vista qui su stacktrace), l’iniziativa di Google che permette a studenti di lavorare su progetti Open Source d’estate in cambio della rispettabile cifra di 5000 dollari, di cui 500 per l’organizzazione mentoring e 4500 per l’applicante.

[Read more…]

Programmare multi processi facilmente con Twisted Matrix /2

Nell’ultima
puntata
ci siamo fatti le ossa nella gestione di sottoprocessi
utilizzando Twisted
Matrix
e un semplicissimo protocollo di comunicazione tra il
processo padre e ciascun processo figlio. Come abbiamo anticipato
però, se utilizziamo processi heavy-weight, specialmente
in Python, dobbiamo anche concentrarci nell’ammortizzare il costo
della loro creazione riutilizzandoli il più possibile, vedremo
però che per garantire la salute degli worker process
sono necessari numerosi controlli e molta intelligenza nella loro
gestione.

[Read more…]

Common Lisp Macro/3

In quest’ultima puntata della miniserie daremo uno sguardo ad una serie di tipologie di macro meno comuni ma che ci permettono di costruire dei costrutti molto versatili e potenti. Cercheremo di capire infine quando è preferibile non utilizzare una macro per astrarre pattern di codice del nostro software.

[Read more…]

Call for papers per Pycon Italia

Logo di Pycon Italia Tre Tra meno di tre mesi si terrà a Firenze la terza edizione della conferenza Pycon Italia, dedicata alla programmazione Python. Gli organizzatori, alcuni dei quali collaborano con Stacktrace.it, hanno lanciato una call for papers per coloro che fossero interessati a partecipare all’evento come speaker. Ne riporto qui il testo integrale con le istruzioni del caso.

[Read more…]

Introduzione a Sinatra

Il logo di SinatraNegli ultimi anni c’è stato un generale proliferare di framework dedicati allo sviluppo web scritti in Ruby. Il più celebre è senza dubbio Ruby on Rails, che si distingue sia per numero di utenti sia per la sua maturità e completezza.

Una delle principali ragioni di esistere per questi framework è che garantiscono lo sviluppo di applicazioni web in maniera rapida e pragmatica. Questo è possibile grazie al gran numero di funzionalità offerte e alle astrazioni che permettono al programmatore di concentrare gli sforzi sul proprio progetto senza doversi preoccupare di tutte quelle attività di basso livello, necessarie, ma che non hanno nulla a che vedere con la logica dell’applicazione (parsing delle richieste HTTP, controllo delle route, gestione degli errori, eccetera).

[Read more…]

Le Nuove Avventure di un Pythonista in Schemeland

Qualche tempo fa si è concluso il secondo ciclo delle “Avventure di un Pythonista in Schemeland”. Scrivevo nell’editoriale che annunciava la fine del ciclo: “Per darvi il tempo di riflettere e di assorbire le puntate pubblicate finora, conto di lasciare una breve pausa tra la fine di questo ciclo e l’inizio del prossimo”. La “breve pausa” si è allungata a cinque mesi, un pò per le due trilogie di articoli su Python che sono apparsi nel frattempo, un pò per le vacanze estive e un pò per esigenze personali (vi dice qualcosa la parola matrimonio? 😉 Inoltre, in questi mesi ho un pò ripensato la strategia di pubblicazione delle “Avventure”.

[Read more…]

Django 1.0

Powered by Django.

Il grande momento è finalmente arrivato: la versione 1.0 di Django, popolare framework per lo sviluppo di applicazioni web, è stata rilasciata.

Scritto in Python dai geniali Adrian Holovaty, Simon Willison, Jacob Kaplan-Moss e Wilson Miner, è stato inizialmente creato dagli sviluppatori dell’americana World Online nel 2003, dipartimento web di un giornale di Lawrence, una piccola città del Kansas.

Nel 2005 è stato rilasciato al pubblico sotto licenza BSD, riscuotendo un inaspettato consenso da parte di molti entusiasti sviluppatori web e non solo.

Il rilascio di questa ultima versione è destinato a far riscuotere a Django un ulteriore successo, dimostrando ai più timorosi di avere a che fare con un prodotto solido, stabile e maturo, adatto quindi ad essere utilizzato in ambienti di produzione.

Il contributo della comunità Django è stato fondamentale per raggiungere questo obiettivo: a distanza di un anno dall’ultimo rilascio ufficiale molti sviluppatori hanno contribuito utilizzando costantemente la versione in sviluppo, segnalando bug, inviando patch e partecipando allo sviluppo di numerose funzionalità.

La documentazione è stata notevolmente perfezionata, offrendo agli inesperti una guida completa al framework e fornendo tutte le informazioni necessarie agli sviluppatori che desiderano migrare i propri progetti all’ultima versione disponibile.

Non ci resta che consigliarvi caldamente il download e augurarvi buon divertimento!

I pericoli della programmazione con i mixin/3

Dagli articoli precedenti dovrebbe essere ampiamente chiaro che io non amo i
mixin, ma vale la vena di spiegare esattamente cos’è che mi dà così
tanto fastidio. Tutti noi sappiamo che il modo migliore di
risolvere un problema complesso è quello di spezzarlo in sottoproblemi più
piccoli disaccoppiati, secondo la massima del dividi et impera. La
cosa fastidiosa dei mixin è che questo principio viene applicato all’inizio (il
problema viene scomposto in pacchetti disgiunti di funzionalità) ma
alla fine tutte le funzionalità separate vengono rimescolate insieme
in un calderone unico, che è il namespace della classe figlia. Che
l’iniezione avvenga direttamente come in Ruby o indirettamente tramite
l’ereditarietà come in Python, il risultato non cambia: alla fine
l’utente della classe figlia si trova a dover gestire centinaia di
metodi tutti assieme e non ha un modo ovvio per capirne la
provenienza.

Overpopulation.jpg

Il problema del sovraffollamento

[Read more…]