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

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

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

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

Python per il Web

Python for the Web è una agile guida introduttiva per chi vuole accedere al Web via Python. Vengono presentate tre eccellenti librerie: Requests, simplejson e lxml. La prima consente di interagire facilmente coi siti Web da Python, la seconda serve a processare i flussi JSON e l’ultima è una fantastica risorsa per lo scraping (l’ho usata in un mio progetto, ve la consiglio senz’altro). L’ultimo argomento della guida è la creazione di siti web in Python attraverso il framework Django. ...

October 20, 2011 · Nicola Iarocci

Python Tools per Visual Studio 1.0

Dopo una breve e brillante Beta, con l’uscita della versione 1.0 il progetto open source Python Tools for Visual Studio entra nel novero delle estensioni ufficiali per Visual Studio 2010. Ne da notizia W. Somasegar sul suo weblog, con un articolo introduttivo in cui ci ricorda le caratteristiche salienti di PTVS: syntax highlighting, refactoring, debugging in tempo reale, interprete Python interattivo integrato e supporto per CPython, IronPython, JPython e PyPy. ...

August 30, 2011 · Nicola Iarocci

Python Tools per Visual Studio 2010 arriva la RC1

Prosegue senza intoppi il cammino di Python Tools per Visual Studio, il progetto open source targato Microsoft che consente di programmare in Python con Visual Studio 2010. Dopo il lancio ufficiale dello scorso marzo e la successiva Beta 2 di maggio, ieri è stata presentata la Release Candidate 1. ...

July 12, 2011 · Nicola Iarocci

Python Tools per Visual Studio ecco la Beta 2

Microsoft ha rilasciato la seconda beta di Python Tools per Visual Studio, il suo progetto open source che offre agli sviluppatori la possibilità di scrivere codice Python, CPython e IronPython nell’ambiente IDE di Visual Studio 2010. Il progetto è stato presentato al PyCon 2011 dal Microsoft Technical Computing Group ed è davvero ben fatto. Per tutti gli approfondimenti vi rimando al mio articolo Programmare in Python con Visual Studio 2010. ...

May 10, 2011 · Nicola Iarocci

Servire 500 milioni di utenti con Python e Django

A PyCon 2011, la conferenza mondiale sul linguaggio Python che si è conclusa da poco ad Atlanta, gli ingegneri di DISQUS hanno presentato una interessante relazione sulla loro infrastruttura hardware e software. DISQUS è un servizio di gestione dei commenti adottato da centinaia di migliaia di siti nel mondo. Tra i clienti figurano nomi importanti come CNN, MTV, IGN, Engadget, Mashable e tanti altri. Nel mese di marzo 2011 il network DISQUS ha gestito 500 milioni di visitatori unici. Questi volumi sono gestiti da una azienda che vanta 16 addetti, dei quali solo 8 (otto!) ingegneri software. Come è possibile tutto ciò? Gran parte del merito va attribuito al metodo produttivo adottato da DISQUS: metodologia agile, hardware in affitto e facilmente scalabile, grande fiducia nella capacità dei propri talenti: ognuno degli otto ingegneri è anche product manager. Secondo DISQUS tutto questo è stato possibile anche e soprattutto grazie a una scelta che si è rivelata determinante: l’adozione del linguaggio Python e del web framework Django. ...

April 20, 2011 · Nicola Iarocci

Programmare in Python con Visual Studio 2010

Python Tools per Visual Studio è un plugin gratuito e open source che consente di programmare in Python usando la IDE Microsoft. Nel corso della lunga gestazione di Visual Studio 2010 si era rumoreggiato di un possibile supporto nativo per il linguaggio Python. Qualcosa di vero doveva esserci visto che il progetto è appena stato presentato al PyCon 2011, la più importante conferenza Python al mondo, nientemeno che dal Microsoft Technical Computing Group. ...

March 14, 2011 · Nicola Iarocci