Cerca nel blog

Loading

10 gennaio 2012

Da Python a PHP

Guardate il grafico qui a lato, non è mio, ma trovato sul profilo Google+ di Bruno Oliveira. Rappresenta l'approccio ad un problema informatico ripetitivo da parte di un utente normale e di un cosiddetto geek. Immaginate, per esempio, di dover sostituire tutti i punti con delle virgole in un file excel, ma solo nelle celle che contengono numeri. Entrambe le tipologie di utenti iniziano allo stesso modo: ovvero cominciano a mano a cambiare i punti in virgole, ma dopo due minuti il geek si è già bello che rotto e inizia a smanettare con il search & replace. Ci vuole qualche minuto di test, qualche altro per correggere gli errori prodotti, ma se il problema è sufficientemente lungo da risolvere a mano, questo tempo perso verrà ampiamente ripagato dalla velocità con cui poi lo strumento sviluppato eseguirà le operazioni ripetitive. Oltre a questo c'è l'effetto soddisfazione nel vedere il computer fare tutte quelle operazioni al posto vostro. Impagabile per il geek, totalmente trascurabile per il normal-user. 


Quando affronto un compito ripetitivo, la mia pazienza arriva a saturazione dopo mezzo minuto e mi butto a pesce a scrivere uno script che faccia il lavoro al posto mio. In genere il primo tentativo è di scrivere da linea di comando dal terminale linux una sequenza più o meno articolata di istruzioni bash. Ma non sempre è tutto così semplice e spesso ripiego a scrivere uno script vero e proprio. In tal caso la mia scelta cade quasi sempre su Python, non tanto perché lo considero il miglior scripting language disponibile, ma perché è decisamente quello che conosco meglio di tutti avendoci lavorato parecchio in passato.

Così quando con Valeriano abbiamo iniziato ad importare i dati della contaminazione alimentare in Giappone all'interno del nostro database (al momento quasi 91mila records!), ho preparato uno script in python che eseguisse tutte le necessarie operazioni per archiviare i dati. Ovviamente dopo una prima fase in cui ha subito frequenti cambiamenti, lo script è successivamente entrato nella sua maturità funzionando a dovere e senza intoppi sia su Linux sia su Windows, ma era decisamente troppo toto-centrico, nel senso che nonostante i miei sforzi di renderlo valido in generale, difficilmente qualcun altro sarebbe stato in grado di usarlo.

L'idea

La soluzione era dietro l'angolo, un po' come scopare la polvere sotto il tappeto, volevo creare una pagina di amministrazione e far girare lo script direttamente sul server della webapp. Il piano era fin troppo semplice, se non fosse che il nostro fornitore di spazio e servizi web (000webhost) nella sua offerta gratuita non supporta l'esecuzione di script in python, ma solo PHP. E così le cose si sono un po' complicate.

Innanzitutto mi sono dovuto riscrivere tutto il codice da Python a PHP che è un po' come passare dal C++ al C e già che c'ero ho integrato lo script con il database mysql disponibile sul server anziché utilizzare dei semplici file di testo per archiviare i dati. Il passo successivo è stato rendere interattive quelle operazioni che di solito io faccio a mano, perché in generale troppo rare per rendere necessario la preparazione di uno script ad hoc. Poi sono entrato in modalità debug, dove di fatto mi trovo ancora, e per verificare che tutto funzioni a dovere inclusa la gestione degli imprevisti (!) sto usando sia la versione python sia quella PHP e confrontando i dati in uscita prima di aggiornare il database. Se tutto procederà come previsto entro una settimana, la nuova versione dello script potrà diventare operativa, e potrò passare allo sviluppo della versione mobile, in cui l'intera gestione amministrativa della webapp potrà essere fatta dal cellulare. E poi sto pensando di guardare come si fa un'app per Android che potrebbe essere il prossimo passo per la webapp...

La conclusione

Torniamo indietro un momento al grafico di apertura... L'approccio geek vince rispetto ma se e solo se  il geek è sufficientemente furbo da capire che non è sempre necessario fare l'upgrade dello script già pronto e aggiungere nuove funzionalità. Cosa ci volete fare... siamo fatti così!

Chiunque può lasciare commenti su questo blog, ammesso che vengano rispettate due regole fondamentali: la buona educazione e il rispetto per gli altri.

Per commentare potete utilizzare diversi modi di autenticazione, da Google a Facebook e Twitter se non volete farvi un account su Disqus che resta sempre la nostra scelta consigliata.

Potete utilizzare tag HTML <b>, <i> e <a> per mettere in grassetto, in corsivo il testo ed inserire link ipertestuali come spiegato in questo tutorial. Per aggiungere un'immagine potete trascinarla dal vostro pc sopra lo spazio commenti.

A questo indirizzo trovate indicazioni su come ricevere notifiche via email sui nuovi commenti pubblicati.

Related Posts Plugin for WordPress, Blogger...