Una REST API che adatta le sue risposte al MIME Media-Type delle richieste HTTP

Da qualche tempo sto lavorando alla implementazione di una REST API. In linea generale e semplificando, una API è un servizio che espone alcune funzionalità, è accessibile via internet più o meno liberamente ed è, infine, utilizzabile non solo da persone fisiche ma anche e soprattutto da altre applicazioni. Un esempio di API è quella di Facebook, che consente a chiunque di creare applicazioni che interagiscono con gli utenti e le pagine Facebook. Già, se non ci fosse la API non esisterebbero i terribili giochini Facebook… Una delle specifiche REST più importanti vuole che un servizio RESTful sia in grado di fornire dati in più formati, in modo tale da soddisfare il maggior numero possibile di utenti/applicazioni. Immaginiamo un servizio che fornisce i risultati delle partite del campionato di calcio. Supponiamo che arrivino tre richieste successive per lo stesso risultato: la prima potrebbe chiedere una risposta in formato XML, la seconda in JSON e la terza in HTML. Il nostro servizio deve rispondere a tutte e tre le richieste, adattando il flusso di dati della risposta al formato di ognuna. Nel mio caso la API che sto implementando supporta XML, JSON, HTML e testo puro. E’ scritta in Python (ma va!) e si appoggia all’eccellente Flask micro web framework. Per risolvere in maniera elegante il problema delle risposte multi-formato ho deciso di usare i decorator, una delle caratteristiche più interessanti di Python. Dopo un po’ di lavoro in proprio ho scoperto che qualcuno aveva già risolto il problema, per giunta con la stessa tecnica. MimeRender di Martin Blech è un’ottima soluzione, solo che è specifica per web.py (un altro web framework). La mia soluzione non disponeva di alcune opzioni interessanti che MimeRender include; ho deciso allora di scrivere un port di MimeRender per Flask, e di metterlo a disposizione del pubblico. ...

February 3, 2012 · Nicola Iarocci

Il Piccolo Libro di MongoDB

Update: il Piccolo Libro di MongoDB, Edizione Italiana è ora disponibile online. Ho cominciato a lavorare alla traduzione autorizzata dell’ottimo The Little MongoDB Book di Karl Seguin. Ho scovato il libro di Karl mentre raccoglievo la documentazione per un nuovo progetto super-segreto (!) a cui sto lavorando. Lo ritengo un’ottima introduzione al mondo NoSQL in generale e naturalmente al fantastico MongoDB. Il titolo italiano sarà Il Piccolo Libro di MongoDB. La traduzione prosegue costante ma a piccoli passi perché purtroppo o per fortuna di tempo libero ne ho poco. Al momento sono tradotti più o meno grossolanamente l’introduzione e il primo capitolo. Mi farebbe comodo un po’ di aiuto, in particolare per quanto riguarda la revisione del testo. Se qualcuno vuol dare una mano è il benvenuto: potete fare delle pull request direttamente su GitHub (metodo preferibile), oppure mandarmi le correzioni via mail. In cambio vi prometto una menzione d’onore e l’eterna gratitudine dei futuri cultori italiani di MongoDB! ...

January 26, 2012 · Nicola Iarocci

Imparare a Programmare… Pensando da Informatico

Chi mi segue da tempo sa che l’educazione è un argomento che mi sta particolarmente a cuore ed è forse per questo motivo che spesso le persone mi chiedono consigli su come imparare a programmare. Gli articoli più letti di questo sito sono senz’altro le guide alla programmazione; Impara Python in 10 minuti e la serie sulle Regular Expression sono vere e proprie Hit, ma certo non sono adatte ai principianti. L’ultima mail è di pochi giorni fa: Mirko chiedeva qual’è il modo migliore per avvicinarsi all’affascinante mondo della programmazione. ...

January 20, 2012 · Nicola Iarocci

JavaScript come Primo Linguaggio

JavaScript non è mai la prima scelta di un aspirante programmatore. Spesso si finisce per usarlo all’occorrenza, per giochetti AJAX o per manipolare il DOM. Google, copia & incolla, e JavaScript è servito. Prima o poi l’abbiamo fatto tutti. E’ un vero peccato perché JavaScript merita di ben altra attenzione. A spiegarlo al mondo è stato naturalmente Douglas Crockford in JavaScript: The Good Parts, un libretto di 172 intensissime pagine in cui si ha costantemente la sensazione che l’autore intenda demolire il linguaggio mentre, in realtà, non fa altro che esaltarne le doti. JavaScript è il linguaggio più usato al mondo, e non a caso: è l’unico supportato da qualunque browser del pianeta. La recente affermazione di Node lato server ne dimostra l’indiscussa attualità. Ciò nonostante JavaScript rimane un linguaggio inadatto al programmatore neofita. O forse no. ...

January 10, 2012 · Nicola Iarocci

Identità Digitale e Personal Branding per studenti del liceo

In questo periodo sono impegnato come docente nel progetto “Internet non (solo) per gioco”. Si tratta di una serie di lezioni tenute al liceo. L’obiettivo è sensibilizzare i ragazzi circa il ruolo che la rete può svolgere nello sviluppo delle loro abilità personali e professionali. La settimana scorsa si è conclusa la prima parte, quella più teorica, e approfitto della pausa festiva per proporvi le slide e raccontarvi come è andata. ...

December 27, 2011 · Nicola Iarocci

Branching di successo per Git

Git è di gran lunga la tecnologia più significativa che il mio team ha introdotto negli ultimi tempi. Grazie a Git la nostra produttività è migliorata a tal punto che davvero non passa giorno senza che mi chieda come abbiamo potuto farne a meno così a lungo. Git è un sistema di controllo versione ideato da Linus Torvald (quello di Linux). E’ gratuito, multi-piattaforma, distribuito e soprattutto talmente veloce che sembra aggiungere un pizzico di magia al processo produttivo. Git è una macchina del tempo con cui spostarsi avanti e indietro tra le versioni del codice. E’ l’ideale sia per progetti individuali che per gruppi di lavoro numerosi e distribuiti. L’integrità del codice e la preservazione delle versioni sono garantite da un efficiente – e veloce! – sistema di branching e merging. Se non avete mai usato prima un sistema di controllo versione (e magari ricorrete ancora a copie manuali del codice tra una release e l’altra) gioite, perché Git vi cambierà la vita. Se venite da altri sistemi (Subversion, Team Foundation Server) sappiate che Git adotta un approccio fondamentalmente diverso: niente copie differenziali. In Git ogni repository è un mirror integrale della codebase; è quest’accorgimento ciò che rende Git così veloce. ...

December 9, 2011 · Nicola Iarocci

Python nella scuola italiana. Si può.

Mia moglie è docente nel liceo artistico della nostra città. L’anno scorso era coinvolta in un progetto che vedeva studenti e professori impegnati nella progettazione di un monumento da installare nella sede dell’Autorità Portuale. Il soggetto scelto dal team erano le onde del mare e ben presto si pose il problema di rappresentarle realisticamente. Un insegnate di Matematica suggerì di ricorrere alla teoria dei frattali. Idea brillante che offriva l’opportunità di un approfondimento didattico piuttosto insolito per un liceo artistico. ...

November 25, 2011 · Nicola Iarocci

Come guadagnare $19.000 sul App Store imparando a programmare

Nathan Barry si è messo in testa di scrivere Apps per iPad e venderle sul App Store. Non sapendo nulla né di Objective-C né di sviluppo mobile mette in conto un bel po’ di gavetta e tante notti insonni. Un anno e mezzo dopo si ritrova con una solida esperienza, $19.000 in banca e un lavoro in proprio. Fa bene ogni tanto leggere queste storielle a lieto fine:

November 23, 2011 · Nicola Iarocci

Microsoft Silverlight e Adobe Flash verso la resa. Comincia l’era di Re HTML5

Silverlight 5 è in dirittura d’arrivo. L’ultimo aggiornamento del plug-in Microsoft sarà ultimo in tutti i sensi dato che a quanto pare non ne seguiranno altri. A sostenerlo è ZD-Net per bocca di Mary-Jo Foley, di solito sempre ben informata su quel che succede nei corridoi del gigante di Seattle. Diversi partner e clienti mi hanno detto di aver saputo da fonti Microsoft che Silverlight 5 è l’ultima versione di Silverlight che Microsoft rilascerà. Riferiscono di non sapere se verranno rilasciati Service Pack, né per quanto tempo Microsoft supporterà Silverlight 5 Si tratta solo di voci ma la fonte è autorevole. Proprio l’altro giorno Adobe ha annunciato lo stop allo sviluppo di Flash Player Mobile per concentrarsi su HTML5. Il vice presidente Adobe Danny Winokur ha dichiarato Questa novità ci permetterà di aumentare l’impegno su HTML5 continuando a innovare Flash nei settori in cui può avere più impatto: advanced gaming e premium video. Non so voi ma io in queste righe io leggo qualcosa di più del semplice abbandono della versione mobile di Flash. Ci vedo la ricollocazione di Flash in settori di nicchia e la contestuale adozione di HTML5 come soluzione universale per il Web. Una onorevole resa delle armi, insomma. ...

November 11, 2011 · Nicola Iarocci

Python Tools per Visual Studio per accedere a Kinect SDK ed Excel via Python

E’ uscita ieri la versione 1.1 Alpha dei Python Tools per Visual Studio, il plug-in open source per programmare in Python con Visual Studio 2010. Migliorie e molte nuove features per la IDE ma la novità più interessante sono senz’altro PyKinect e Pyvot, due librerie che consentono rispettivamente di lavorare col Kinect SDK e di interagire con Excel via Python. ...

November 4, 2011 · Nicola Iarocci