Cerca nel blog
10 gennaio 2012
Da Python a PHP
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:
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.
Con Google App Engine dovresti poter riuscire a far girare le tue applicazioni python on-line gratuitamente.
RispondiEliminaDacci un occhiata...
http://code.google.com/intl/it-IT/appengine/
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.
RispondiEliminaOvviamente 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.
Io non l'ho ancora provato, ma ne ho sentito parlare molto bene.
RispondiEliminaLa 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à...
sto lavorando a questo progetto:
RispondiEliminahttp://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?
wow, mi sembra un lavorone!
RispondiElimina