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.

5 commenti:

  1. Con Google App Engine dovresti poter riuscire a far girare le tue applicazioni python on-line gratuitamente.

    Dacci un occhiata...

    http://code.google.com/intl/it-IT/appengine/ 

    RispondiElimina
  2. Grazie @9bb9fc6d87e75fd167061d488bb94b98 mi aono registrato su Google App qualche mese fa con l'intenzione di provarlo, poi mi ha preso il solito dilemma: framework o non framework. L'app engine ti mette a disposizione tutto il framerok di google che è decisamente un vantaggio quando vuoi fare un bel prodotto e specie quando già lo conosci. Se vuoi fare qualcosa di estremamente semplice, allora puoi benissimo fare a meno dei tutto il valore aggiunto.

    Ovviamente si può usare il Google App Engine senza usare il codice google, ma mi sono fatto prendere dalla tentazione e ho provato a seguire il tutorial proposto. Risultato, dopo qualche ora mi sono detto: ok, per il momento faccio il lavoro sporco ma subito con PHP e poi torno indietro a studiare questo.

    Sai cosa mi piace da morire dell GAE? La possibilità di fare girare le tue app in prova sul tuo PC, mentre per come lavoro io con 000webhost faccio tutto su una cartella temporanea direttamente sul webserver, quando sono soddisfatto la copio al posto di quella vecchia di produzione.

    Hai ragione, la prossima volta che mi viene in mente qualcosa da fare sul web metto alla prova Google anche sotto questo aspetto.

    RispondiElimina
  3. Io non l'ho ancora provato, ma ne ho sentito parlare molto bene.

    La cosa interessante è che google ti mette a disposizione la sua infrastruttura, quindi sostanzialmente hai un uptime del 100% e una possibilità di scalare all'infinito...  se domani avessi bisogno di piu' potenza, pagando, potresti averla, senza bisogno di migrare, ecc.

    Il massimo della flessibilità...

    RispondiElimina
  4. sto lavorando a questo progetto:


    http://sourceforge.net/projects/phpython/?source=directory


    si tratta di un interprete Python scritto interamente in PHP


    lo spirito e quello di eseguire codice Python direttamente da un server web con PHP


    questo permetterebbe di installare Django o Zope direttamente sui domini in hosting economici come TopHost che supportano solo PHP e MySQL.


    Volevo sapere cosa ne pensate?

    RispondiElimina

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...