PHPday 2009, come è andata

Un piccolo sunto delle due giornate.

Dopo esattamente due mesi di silenzio, finalmente mi ricordo che ho anche un blog, e torno a scriverci per parlare un po’ di questo mio primo PHPday.

Complice la vicinanza e un’interesse crescente, dopo l’annuncio, su come potesse essere una giornata immerso tra i programmatori PHP, ho fatto la pazzia e mi sono iscritto, approfittando dell’offerta early bird. Arrivato lì in auto, la prima (e unica, direi) brutta sorpresa: l’hotel non aveva un parcheggio proprio, e i Carabinieri, coadiuvati da un carro attrezzi, stavano portando via auto in divieto lungo le strade. Per fortuna dopo 15-20 minuti ho trovato un buco anche abbastanza vicino.

Veloce passaggio alla registrazione, dove mi hanno riempito di gadget (maglietta, cappellino, portacellulare a forma di sedia/antistress, oltre al tesserino identificativo) che non sapevo dove infilare visto che avevo le mani impegnate dall’Eee e dall’ombrello, e poi l’attesa per l’inizio che, come nella migliore tradizione di tutte le conferenze, è partito con mezz’ora di ritardo. Un plauso agli organizzatori che in 30 secondi hanno condensato i saluti per cui era prevista una mezz’ora, per cui tutti i talk sono stati abbastanza in orario.

L’affluenza, nonostante i timori visto il prezzo di iscrizione, è stata molto buona.

Tranne uno, per cui mi aspettavo tutt’altro, tutti i talk sono stati interessantissimi, e mi è dispiaciuto veramente tanto doverne perdere 2 o 3 a causa delle sovrapposizioni (c’erano tre “percorsi” contemporanei).

Interessante l’intervento di Rasmus Lerdorf (di cui parlerò probabilmente in un altro post) riguardo lo sviluppo di PHP, anche se purtroppo era subito dopo pranzo e mi sono perso l’inizio.

Zend Italia ha inoltre organizzato una sessione straordinaria di esame per la certificazione in PHP5, ed ha offerto l’iscrizione gratuita ai primi 10 iscritti. Ne ho approfittato subito e mi è andata bene. Anche l’esame è andato bene, visto che ora sono Zend Certified Engineer. :D

L’unica nota dolente è che l’esame mi ha fatto perdere altri due talk che mi interessavano. Ma pazienza! ;)

I pranzi e i buffet sono stati un’ottima occasione per intavolare, nonostante la mia timidezza cronica, quattro chiacchiere con altri appassionati. Venerdì sono finito a pranzo con due relatori, tra cui il rappresentante di PayPal Italia…

“Incluso nel prezzo” c’era anche l’iscrizione al GrUSP, il Gruppo Utenti e Sviluppatori PHP italiani. Solo da ieri sono stato iscritto anche alla mailing list dei soci e mi ci sto ambientando, ma vista la chiacchierata fatta sabato sera in finale dei lavori tra i membri del gruppo e la cinquantina di persone rimaste, sembrerebbe una cosa molto interessante (tra sconti, contatti, collaborazioni, ecc.)

Approfitto per ringraziare gli organizzatori per l’ottimo lavoro svolto, e per salutare Cesare e Michele (se mai passeranno di qua).

Sul sito dell’evento ci sono i video registrati durante i vari talk, quindi se non ci eravate potete farvi un’idea di come è stata.

L’anno prossimo l’appuntamento è a Rimini (a meno di inconvenienti). Farò il possibile per esserci.

PHPday 2009, Verona, 15 e 16 maggio

L’evento italiano dedicato a PHP.

Il PHPday quest’anno si sposta a Verona, e cerca di dare un taglio ancora più ampio all’evento, allungando la durata a due giorni e introducendo il canale “community” per la presentazione di prodotti opensource. Ci saranno inoltre dei lightning talk, dei “dibattiti” improvvisati dai partecipanti.

Consultate il sito per il programma completo, tuttora non definitivo, ma già con diversi argomenti interessanti sul piatto, almeno per me. Inoltre sarà una buona occasione per incontrare sviluppatori preparati e competenti, merce abbastanza rara, purtroppo.

La novità mal recepita (al punto da generare un post molto risentito del presidente del GrUSP, il gruppo organizzatore) dai partecipanti, invece, è il prezzo di iscrizione, fissato in € 100 per la partecipazione a entrambe le giornate (60 per una sola), che aumenta a 160 (e 90) se ci si iscrive dopo il 16 aprile.

Secondo me, visto quello che viene offerto (soprattutto il pranzo e due buffet per ogni giornata) non è per niente alto, ma posso capire che, per chi è abituato a parteciparvi gratis dagli eventi precedenti, rappresenti un po’ un trauma.

Probabilmente l’affluenza sarà inferiore agli anni scorsi, ma di contro il pubblico sarà più mirato e interessato.

Credo che farò il possibile per partecipare.

Zend Framework 1.7.5

Nuova versione del framework, ma occhio all’aggiornamento!

Un paio di giorni fa è uscita la nuova versione dello Zend Framework, la 1.7.5.

L’ho testato con alcuni siti che ho realizzato con le versioni precedenti (1.5 e 1.6) e non ho riscontrato nessuna incompatibilità, ma c’è stata una modifica abbastanza importante nella gestione delle Zend_View, per evitare attacchi di tipo Local File Inclusion.

Vi rimando al post nel blog di Matthew Weier O’Phinney per i dettagli, ma vi anticipo che se usate dei path relativi  per risalire nel fs (quindi i vari /../ ) nella definizione del path a cui trovare gli script delle view, incorrerete nella nuova protezione, e il vostro sito non funzionerà più.

Il workaround è specificato nel post di cui sopra, ma io vi consiglio di rivedere il codice per evitare i path contenenti “..”, perché probabilmente nelle nuove versioni del framework (2.x e successive) il workaround verrà tolto. Inoltre comunque attivando il workaround state rischiando di introdurre una vulnerabilità nel vostro sito.

Meglio fare le cose per bene subito.

Il PHP(4) è morto. Viva il PHP(5)!

Ne danno l’annuncio i parenti e gli amici tutti…

Con la release 4.4.9, rilasciata il 7 agosto, si chiude la storia di PHP4. Era già stato annunciato un anno fa, e dall’8/8/8 (8 agosto 2008) la versione 4 di PHP non verrà più supportata né sviluppata. Non ci saranno nemmeno patch di sicurezza, se non da parte di terze parti (come Debian, che sicuramente lo supporterà almeno fino al 2010, visto che in lenny c’è ancora).

Era ora!

PHP4 ha segnato una discreta svolta rispetto a PHP3, con l’introduzione della programmazione a oggetti.

Ma PHP5 è su un altro pianeta. La programmazione a oggetti è enormemente migliorata rispetto al 4, e sono state deprecate diverse feature che rappresentavano enormi buchi di sicurezza o fonti di inefficienze o di mal di testa da parte dei programmatori, tra cui il maledetto register_globals, ma anche il safe mode, le magic_quotes, ecc.

Queste, con PHP6, spariranno del tutto. Quindi conviene iniziare subito a sistemare i propri software, e/o a disinstallare dai propri server i software che ne fanno uso. E con PHP6 (e 5.3) verranno introdotte altre novità tra cui i namespace e un maggior supporto a UTF-8.

Il problema finora è stata l’enorme mole di software scritti in PHP3, portati in PHP4 contando su queste caratteristiche, e mai aggiornati, per pigrizia o perché “finché funziona, non ripararlo”. Questo ha condizionato la diffusione di PHP5 che, dopo quasi 4 anni dall’uscita, è adottato ancora da solo il 30% dei provider a livello mondiale.

Chi glielo fa fare di installare PHP5 se nessuno sviluppa col 5, e chi ce lo fa fare di sviluppare in PHP5 se nessun provider ce lo fornisce?

Per fortuna diversi grossi progetti, tra cui Drupal, hanno deciso di abbandonare PHP4 per “costringere” i provider a fornire il 5, e questo ha convinto la Zend a dare l’annuncio della morte di PHP4.

Ora speriamo che i sysadmin vengano autorizzati all’upgrade al più presto, anche se ci saranno sicuramente milioni di utenti che si lamenteranno che il loro PHPNuke (una polveriera con la miccia già pronta) in PHP3 non gira più.

Aggiornate!

Zend Framework 1.5

Nuova versione del framework “ufficiale” per PHP, con numerose novità interessanti.

Assieme a un restyling del sito, che trovo molto meglio del precedente (almeno ora è fluido in verticale), anche se ha ancora qualche link rotto, è stata annunciata oggi la nuova versione di Zend Framework, la 1.5.

Le principali novità di questa versione sono Zend_Layout, che permette di avere un layout comune a tutte le pagine invece di doverlo ripetere per ogni View o di dover usare accrocchi per includere i pezzi in ogni View, e Zend_Form, che permette di creare dei form da passare alla View e di inglobare negli stessi le informazioni per la validazione dei campi oltre a permetterne la validazione al volo anche tramite AJAX (informando il browser tramite JSON sugli eventuali errori).

Ci sono moltissime altre novità, naturalmente, oltre a diversi bugfix.

Più veloce della luce Akrabat, che in contemporanea ha rilasciato la sua nuova versione (anche questa 1.5) del tutorial per Zend Framework, includendo già le informazioni su Zend_Layout e Zend_Form.

Trovo molto intelligente la sua scelta di categorizzare i vari form come Model, ma devo ancora vedere la documentazione ufficiale, se già lo prevedeva.

In realtà ad una prima occhiata avevo classificato Zend_Form come una feature utile al massimo per chi scrive CMS, perché rimuove dalla View le informazioni sul form, rendendo la vita difficile ai grafici/HTMListi quando si lavora in un ambiente misto, ma ora sto meditando se ricredermi. Forse lo proverò direttamente sul campo per vedere le reazioni.

Ho già installato il nuovo framework in parallelo al precedente 1.0 (che mantengo per non rischiare la compatibilità di alcune applicazioni già scritte) e nei prossimi giorni lo proverò sicuramente.

Zend Framework 1.0.4 e 1.5RC

Disponibili le nuove versioni del framework ufficiale Zend per PHP.

Sono state annunciate ieri le due nuove versioni dello Zend Framework.

La 1.0.4 è una maintenance release, che corregge un centinaio di bug. Sarò stato fortunato, o magari non uso ancora molte delle funzioni del framework, ma non mi è ancora mai capitato di incappare in un errore da quando ZF è alla versione 1.0.x. Ne ho trovati un paio mentre era in beta, corretti rapidamente.

La 1.5RC è la prima release candidate della nuova versione, che dovrebbe uscire in versione definitiva entro 1 mesetto. Qui le novità rispetto alla 1.0.x sono moltissime. La più importante, forse, è il nuovo modulo Zend_Layout che dovrebbe risolvere molti problemi dell’attuale modello di View in caso di siti con layout molto simile in molte pagine: la maggior parte, insomma. Altre innovazioni sono lo Zend_Form (che personalmente non mi piace molto perché sembra mischi la logica di Controller e View, ma dovrò approfondire) che supporta form potenziati da AJAX, nuovi helpers per Action e View per un migliore supporto AJAX, nuovi componenti per Advanced View, nuovi componenti per l’autenticazione tramite Information Card e OpenID, e miglioramenti importanti a Lucene (un “motore di ricerca” integrato nel framework, per indicizzare documenti di vari tipi), per la generazione di PDF (ora con supporto UTF-8) e ai web services (Technorati e Slide Share).

Entrambe richiedono almeno PHP 5.1.4 per funzionare, ma io consiglio di passare direttamente a PHP 5.2.

Spero solo di trovare un po’ di tempo per smanettare con la 1.5. Alcuni dei nuovi moduli sembrano molto interessanti.

Devo però muovere una critica agli sviluppatori: nella documentazione non si capisce da quale versione un certo modulo o una certa funzione sono state implementate, col risultato che ci si trova magari a cercare di usare con la 1.0.4 una funzione o una classe che esistono solo nella 1.5 e non si capisce dove sia l’errore finché non si va a vedere il sorgente del framework. Appena mi verrà attivato l’account nel bug tracker credo che aprirò una segnalazione a proposito.

PHP, CGI, APC

Oggi stavo cercando di abilitare APC in locale (prima di metterlo sul server) per due motivi: migliorare le prestazioni di PHP e abilitare la possibilità di monitorare gli upload via AJAX.

Purtroppo ho scoperto sulla mia pelle che APC non serve a niente se si usa PHP via CGI, perché tiene tutte le pagine precompilate in shared memory, che naturalmente viene liberata alla fine di ogni processo CGI.

Quindi se state usando PHP come CGI, lasciate perdere APC. eAccelerator funziona, perché salva i precompilati su disco oltre che in RAM, ma non supporta (che io sappia) il monitoraggio degli upload.

Dovrò decidermi prima o poi a passare PHP4 in CGI e promuovere PHP5 a modulo di Apache, ma servirà un po’ di tempo per verificare che funzioni tutto senza problemi.

I mali del mondo (secondo un sistemista/programmatore)

Ovvero le cose da evitare come la peste, le guerre, le carestie, la droga, ecc.

Quando una persona diventa programmatore o sistemista, la maggior parte delle volte viene affascinato da cose a cui non dovrebbe nemmeno pensare. Un cristiano potrebbe chiamarle “tentazioni demoniache”, un buddista “ricchezze terrene”, ecc. ecc. Invece sono da evitare il più possibile, e da abbandonare per poter raggiungere la Vera Illuminazione. Vediamone qualcuna. (continua…)

Zend Framework: qualche link

Zend FrameworkVediamo da dove partire per utilizzare questo ottimo framework.

Da qualche mese ormai uso Zend Framework per diversi siti, apprezzandone molto la flessibilità e la buona abitudine a non essere troppo invasivo. All’epoca la documentazione non era granché, ma sta migliorando molto col passar del tempo, e finalmente si vede qualcosa anche in italiano. Ho deciso quindi di raccogliere qualche link, sia per aiutare chi sta iniziando a usarlo per i propri siti, sia per avere un riferimento personale. (continua…)

PHP5: convertire gli errori in eccezioni

In PHP5 sono state introdotte le eccezioni. Perché continuare a ricevere errori e warning spesso ambigui?

Molto interessante il primo commento di questo post (che linka un post sul blog di Alex Netkachov) che spiega come convertire tutti gli errori di PHP (almeno versione 5) in eccezioni:

function errorHandler($errno, $errstr, $errfile, $errline) {
	throw new Exception($errstr, $errno);
}
set_error_handler('errorHandler');

In questo modo si ottiene anche un utile backtrace negli errori, in modo da scoprire, per esempio, dove è stata chiamata la funzione che ha generato l’errore, e i parametri passati.