Da oggi posso definitivamente dire addio agli script sviluppati in CGI; posso dire basta ai caricamenti lenti e a tutta quella serie di cose che hanno reso CGI un sistema obsoleto dopo qualche anno dalla sua nascita. Il tutto è cominciato dopo che ho deciso di fare il porting di un'applicazione web da PHP a Python: nell'indecisione su quale sistema utilizzare tra mod_python, cgi o soluzioni personalizzate, ho optato per il secondo, con discreti risultati se non fosse per le performance veramente pessime. Per puro caso mi sono ritrovato a dover installare l'ambiente di sviluppo e di testing anche sul mio iBook, e, durante l'installazione del necessario, mi sono imbattuto in una semplicissima guida per l'installazione di FastCGI su Apache (la guida spiega anche come aggiungere il supporto a Rails). Non avevo mai provato FastCGI, ma devo dire che la soluzione è veramente ottima! I tempi di caricamento vengono ridotti di moltissimo dato che il protocollo utilizzato da FastCGI permette di avviare l'applicazione una sola volta comunicando successivamente con questa attraverso un socket. Mi ha veramente soddisfatto ... qualcuno vuole spezzare qualche lancia a favore di un altro sistema ?

Continua a leggere Addio, buon vecchio CGI

Categoria: PHP e Open Source

Forse sono l'ultimo a saperlo, ma spulciando il codice di Mediawiki mi sono accorto che utilizza memcached per il caching di alcune operazioni molto dispendiose. Per chi non ne fosse a conoscenza, memcached è un sistema client-server molto interessante per il caching dei dati. La libreria originale è scritta in C, ma si possono trovare wrapper per PHP, Python e molti altri linguaggi in giro per la rete. Diversamente da altri sistemi di cache, che salvano i dati elaborati in memoria o su disco sul computer locale, memcached propone una struttura diversa e molto efficace: l'architettura si compone di un server che alloca una porzione fissa di memoria contigua da utilizzare come deposito per i dati in cache. A questo server si connettono dei client da computer remoti (solitamente contenuti all'interno della stessa rete locale) che attraverso semplici comandi salvano e recuperano stringhe binarie di dati più o meno ampie. Queste stringhe vengono salvate in memoria e restituite quando richieste, a meno che non siano scadute. Questo sistema che potrebbe creare qualche dubbio, in realtà  è ottimo perchè: permette di condividere la cache tra host remoti differenti risparmiando spazio e memoria; permette di mettere il sistema di cache su un altro computer, ottimizzando la distribuzione della ram e del carico di lavoro; oltretutto risulta più efficente di molti sistemi di caching dei dati integrati con i database (vedasi la cache di MySQL) dato che questi eliminano la cache ogni volta viene effettuato un update, mentre memcached permette di mantenere comunque i dati. Un ottimo sistema veramente.

Continua a leggere Mediawiki e memcached

Categoria: PHP e Open Source

Python 2.5

13 Apr

Avevo perso la notizia causa alcuni impegni, ma da ormai una settimana è stata rilasciata la versione alpha di Python 2.5. Le aggiunte stanno portanto Python verso l'attesa versione 3, che porterà  notevoli innovazioni a questo linguaggio che si appresta a diventare punto fondamentale per lo sviluppo in ambiente opensource e non solo. Sono state introdotte molte novità  sintattiche, oltre ad aggiornamenti e modifiche ai moduli inclusi nella libreria standard. Espressioni condizionali Prima d'ora in Python non erano presenti delle espressioni condizionali inline, quelle che in PHP o altri linguaggi vengono specificate utilizzando gli operatori ? e : $a = ($b == true) ? $b : NULL Ora, dopo le forti pressioni della comunità , Guido Van Rossum ha deciso di aggiungere questa feature anche in Python anche se ha optato per una sintassi leggeremente differente e più pythonica: a = ('vero' if b else 'falso') Come possiamo notare i valore da restituire nel caso l'espressione risulti vera va posizionato all'inizio dell'espressione, e successivamente va aggiunto il controllo di verità  e, dopo l'else, il valore da specificare nel caso in cui la condizione non risulti vera. (more...)

Continua a leggere Python 2.5

Categoria: PHP e Open Source

Tags:

Leggendo alcuni post della discussione precedente ho saputo dell'esistenza di TurboGears, un sistema molto simile a Ruby on Rails, scritto in Python, che espone una serie di funzionalità  utili per lo sviluppo web appoggiandosi su altri strumenti opensource ben testati e documentati.Dopo essermi scaricato il video che spiega come sviluppare un semplice wiki in circa venti minuti e dopo essermi letto la documentazione allegata ai sorgenti, mi sono inbattuto nel template engine Kid.Kid è un template engine basato su XML con funzionalità  molto simili a TAL (il template linguage utilizzato da Zope ed implementato anche per altre tecnologie, vedasi PHPTAL) che utilizza la sintassi di python all'interno delle proprie espressioni. Avevo provato PHPTAL tempo fa e non ne ero rimasto entusiasto per via della sintassi che alcune volte risultava eccessivamente prolissa. Con Kid invece possiamo scrivere template compatte ed altamente leggibili senza incorrere in problemi di interpretazione. Per esempio la specifica degli attributi utilizzando dei dizionari permette operazioni interessantissime che risulterebbero veramente complicate usando TAL. Purtroppo non ho ancora avuto modo di utilizzarlo seriamente, ma mi pare interessante. Altre news in seguito.

Continua a leggere Kid template engine

Categoria: PHP e Open Source

Tags: , ,

Ci ho pensato tante volte, ma non sono mai andato oltre la pura teoria e qualche prova con Zope: sviluppare siti internet ed applicazioni web in Python potrebbe essere un guadagno in termini di rendimento e produttività  oppure solamente una speranza mal spesa?Vedendo come si sta evolvendo ultimamente il web, comincio a preoccuparmi del futuro di PHP ... a mio parere c'è il rischio che rimanga indietro tecnologicamente e, a causa di una disorganizzazione nel processo di evoluzione e sviluppo, diventi con il passare del tempo obsoleto o mal supportato. Forse esagero, ma il fatto che ci siano in produzione due versioni alternative, che la versione 5 non sia praticamente supportata da nessun hoster anche se uscita da tre anni e che ci sia già  in cantiere da un po' di tempo php 6 mi fanno perdere tante speranze. Torniamo però a parlare di Python su web: tempo fa provai Zope, un application server che ritengo fantastico e potentissimo. Purtroppo non lo trovo adatto a qualunque situazione ... in questo periodo ho dato un po' più di corda alle mie idee ed ho installato mod_python sul mio webserver per fare qualche esercizio di prova. Non sono andato oltre allo sviluppo di un template engine (devo ammetterlo, sviluppare template engine e linguaggi di scripting è un po' la mia fissazione anche se a volte rischio di buttare tempo per niente :P) però devo dire che la differenza tra sviluppare web o desktop si sente veramente poco. Sarà  il sistema con cui è stato progettato mod_python che permette di differenziare di molto la parte web dalla parte prettamente funzionale, ma ho avuto un'ottima impressione. Purtroppo non ho la minima idea di cosa voglia dire sviluppare in Python un progetto grande e complesso, né so quanti sono effettivamente gli hoster che supportano mod_python (i CGI sono veramente troppo lenti ...). Qualche informazione in più a proposito ?

Continua a leggere Sviluppo web con Python

Categoria: PHP e Open Source

Leggevo un post sul blog di Guido Van Rossum in cui l'inventore di Python parla di come verranno implementate le interfacce nella terza versione di questo linguaggio.Di tutto il post, quello che mi ha lasciato più stupito è la notizia che in Python 3000 aggiungeranno il supporto opzionale per i tipi di dato accettati e restituiti dalle funzioni. Il type checking verrà  effettuato ovviamente a runtime e permetterà  di sfruttare pienamente le interfacce in tutta la loro utilità . Questa decisione mi ha fatto venire in mente una domanda: ha senso che tutti i linguaggi di scripting si evolvano così tanto (vedasi PHP e Python stesso) indirizzandosi verso strutture sintattiche e logiche molto più vicine ai linguaggi di programmazione come Java o C? (more...)

Continua a leggere Alcune considerazioni su PHP e Python

Categoria: PHP e Open Source

Per chi ama Python e, come me, segue con piacere gli sforzi fatti da Google per promuovere questo linguaggio e la comunità  open source creatasi al suo seguito, la notizia è più che entusiasmante: Google ha assunto Guido Van Rossum, che, per chi non lo sapesse, è il creatore del linguaggio Python e presidente della Python Software Foundation. A mio parere la notizia è più che positiva, e fa ben sperare noi sviluppatori dato che sicuramente Google, vedendo l'interesse verso questo linguaggio, supporterà  pienamente Guido Van Rossum nello sviluppo delle nuove versioni e nell'evoluzione del linguaggio verso la terza versione. Il supporto di una società  così grande e con a carico così tanti progetti interessanti non potrà  che giovare all'evoluzione di questo linguaggio che sempre più sta prendendo piede tra gli sviluppatori. C'è però chi non è convinto di questo fatto, e pensa che Google indirizzerà  lo sviluppo di Python in base alle proprie esigenze portando pochi benefici alla comunità  opensource. Non ci rimane altro che aspettare (fiduciosi) e vedere cosa accade ...

Continua a leggere Google prende anche Guido Van Rossum

Categoria: PHP e Open Source

Tags: ,

Ogni linguaggio ha un campo ottimale nel quale riesce ad esprimenre il massimo delle funzionalità  e della completezza. PHP non fa differenza, basti guardare il successo avuto nello sviluppo web e lo scarso seguito dell'estensione PHP-GTK. E questo non è un caso: lo stesso Python, che ritengo uno dei migliori linguaggi in circolazione per la risoluzione della maggior parte dei problemi, risulta poco utilizzato sul web. (more...)

Continua a leggere Cooperazione tra linguaggi

Categoria: PHP e Open Source

Per chi non lo sapesse (penso moltissime persone) uno dei campi che mi attraggono di più dell'informatica è quello dello sviluppo di compilatori o interpreti. In questi anni ho sviluppato qualche semplicissimo linguaggio di scripting per diletto, ed ho avuto modo di testare e studiare moltissimi linguaggi di programmazione (o presunti tali!).Per qualche tempo ho avuto il piacere di interloquire via email con Marco Pantaleoni, uno sviluppatore che ha inventato qualche anno fa un linguaggio di programmazione chiamato ElastiC. Il linguaggio ha delle feature interessantissime, prese dai linguaggi più interessanti presenti in circolazione (si vedano Python o C) e viene distribuito con un bel po' di librerie interessanti, tra cui una versione di yacc con target il linguaggio stesso ed un porting delle librerie GTK.Il progetto non rilascia più versioni ufficiali da un po' di tempo (la data dell'ultima versione rilasciata sul sito internet risale a qualche anno fa!) ma il progetto su CVS è ancora vivo. Spero non cada nel dimenticatio come moltissimi altri progetti validi. Purtroppo non sono più in contatto con l'autore, ma ritengo il linguaggio veramente interessante e potente, da provare anche solo a livello hobbystico.Se continuerà  a crescere e se riceverà  il supporto che si merita, sono sicuro acquisità  prestigio nel mondo informatico. Io ogni tanto lo utilizzo e mi ci trovo molto bene, se qualcuno fosse interessato penso che l'autore accetterebbe un aiuto o qualche consiglio. In caso di altre novità  vi faccio sapere ...

Continua a leggere Elastic, un altro linguaggio nel futuro informatico?

Categoria: PHP e Open Source

Tags: , ,

Ieri sera ero in pizzeria con un amico che ha iniziato a programmare molto prima che io decidessi di dedicarmi a questa attività . Tra i vari argomenti di cui abbiamo dibattuto quello affrontato più frequentemente riguardava l'utilizzo di editor testuali per lo sviluppo di codice oppure l'utilizzo di IDE.La discussione è nata dopo la lettura degli articoli di DEV che preannunciavano le feature della nuova versione di Visual Studio che, a quanto pare, integrerà  in un'unica suite una serie di strumenti necessari a coprire in modo più o meno completo l'intero processo di sviluppo di un software. Secondo gli ingegneri Microsoft (cosa con cui mi trovo parzialmente d'accordo) il software attualmente non si può più permettere lunghi periodi di sviluppo, altrimenti rischia di essere obsoleto al momento del rilascio. Per questo motivo, a loro parere, un IDE dovrebbe integrare una serie di strumenti che facilitino l'organizzazione e la produzione e, di conseguenza, diminuiscano i tempi di ricerca e sviluppo. (more...)

Continua a leggere Ide o editor ?

Categoria: PHP e Open Source