HTML.it ha seguito la International PHP Conference 2010 di Mainz. Ecco un resoconto delle giornate a cura di Daniel Londero.
L'International PHP Conference è la conferenza internazionale di riferimento per il panorama PHP a livello europeo svoltasi dal 9 al 12 ottobre a Mainz, in Germania. La conferenza è arrivata alla sua undicesima edizione e come ormai da qualche anno viene proposta in accoppiata con la WebTechConference.
Sono 69 gli speaker che in questi quattro giorni si sono alternati nelle 6 sale a disposizione nel centro congressi Rheingoldhalle offrendo ad oltre 500 partecipanti 95 talk così divisi:
- 2 workshop in inglese
- 2 workshop in tedesco
- 38 session in inglese
- 48 session in tedesco
- 1 keynote in tedesco
- 3 keynote in inglese
- 1 evento PHPopstar in tedesco
Rispetto all’edizione 2010 ho notato da subito una contrazione dell’offerta in lingua inglese. Si è passati infatti dal 51% (2010) al 45% (2011) sul totale dei talk (workshop, session e keynote) che per una conference internazionale inizia ad essere un valore un po’ troppo basso nonostante la qualità offerta sia comunque molto alta.
Due possono essere le ragioni principali di questa flessione:
- la prima è sicuramente rappresentata dalla vicinanza temporale di altre conferenze sia in Europa ( PHPNW di Manchester) che negli Stati Uniti (ZendCon a Santa Clara) che possono aver spinto alcuni speaker a selezionare gli eventi a cui inviare le proprie proposte;
- la seconda invece è relativa alla necessità di favorire un certo ricambio di temi e speaker da parte dell’organizzazione per cercare di offrire contenuti sempre nuovi.
Da precisare che l’International PHP Conference non è una fiera in cui le aziende presentano i propri prodotti ma rappresenta l'incontro delle persone e delle aziende stesse più influenti del panorama internazionale di PHP pronte a condividere la propria esperienza su argomenti di interesse generale e spesso relativi a temi emergenti.
Anche in questa edizione molto spazio è stato dedicato ad esperienze reali condivise con i presenti al fine di diffondere le best practice come testing, refactoring e metodologie agili oltre che avere la possibilità di confrontarsi per capire cosa migliorare nei processi aziendali della routine quotidiana. Infatti nonostante alcuni concetti possano essere anche già stati analizzati non c’è cosa migliore che vederli applicati in realtà simili alla nostra. Il vantaggio è quello di sentire pro e contro incontrati durante l’applicazione e l’utilizzo di questi concetti.
Su joind.in sono già disponibili le slide di alcune presentazioni (le altre dovrebbero arrivare a breve) per farsi un’idea di ciò di cui si è parlato.
CouchDB for PHP Developers - Jan Lehnardt (workshop 4 ore)
Partendo da un’introduzione di base si è passati a vedere come interrogare il db, spingendosi infine ad analizzare i vantaggi offerti dalla replica messa a disposizione da CouchDB. Strumento sicuramente molto interessante che può sicuramente dare il massimo in situazioni in cui i dati possono essere distribuiti e sincronizzati tra di loro quando in presenza di connessione. CouchDB fa parte del movimento NoSQL che ormai da un paio d’anni è molto in voga tra gli sviluppatori. Vengono meno i vincoli imposti dal modello relazione a cui siamo abituati ed in prima istanza l’impatto con una soluzione NoSQL può non essere semplice perché richiede appunto un approccio a cui non siamo abituati. Dopo una prima fase iniziale e dopo aver preso confidenza ed aver recepito i vantaggi offerti da questi strumenti il feeling sarà sempre maggiore.
HTML5 for Developers - Thorsten Rinne (workshop 4 ore)
Una carrellata molto esaustiva di quelle che sono le novità introdotte da HTML5 (particolare attenzione per WebForm, Web Storage e Websockets) ricorrendo a molte demo su diversi browser per testimoniare lo stato di avanzamento degli stessi nel supportare il nuovo standard. Attualmente Chrome è il browser più avanti rispetto agli altri. Anche qui sono usciti spunti molto interessanti da iniziare magari a proporre in parallelo alle soluzioni attuali: tag video e canvas su tutti. È infatti possibile preparare soluzioni integrate per far sfruttare le novità agli utenti con i browser più avanzati continuando ad offrire soluzioni legacy a tutti gli altri.
Kanban Pizza Game – Ralf Kruse
Talk introduttivo all’utilizzo di Kanban attraverso il “Kanban pizza game” con i presenti per estrarre la teoria direttamente dalla pratica. Date un’occhiata a questo pdf molto esauriente Kanban kick-start example
10 Years of PHPUnit: What works, what doesn’t – Sebastian Bergmann
Dalla nascita dei primi strumenti di QA per PHP allo stato dell’arte attuale tracciando l’evoluzione degli stessi analizzando le cause di alcuni cambiamenti (vedi passaggio da Hudson a Jenkins). Presentate alcune novità riguardanti PHPUnit 3.6 che vedrà comparire cose come:
- notation per small, medium, large test
- notation per dipendenze (versione di PHP, versione di PHPUnit per esempio)
- notation per dipendenze
La qualità è un aspetto del software che non possiamo più permetterci di trascurare specialmente in progetti enterprise. Gli strumenti ci sono, utilizziamoli.
Geolocation and Maps with PHP – Derick Rethans
Web, PHP e mappe: non c’è solo Google! Rethans presenta alcune alternative per rispondere a diverse necessità che tirano in ballo l’utilizzo di mappe e di servizi di geolocalizzazione. Ampio spazio dedicato al progetto OpenStreetMap che tra i punti di forza ha quello di essere aggiornato dagli utenti che avranno sempre e comunque l’accesso ai dati che offrono. Un modo di porsi letteralmente diverso da tutti gli altri che i dati una volta raccolti non li mettono a disposizione se non attraverso le proprie API.
PHP Testing Tools – Sebastian Bergmann
Non solo PHPUnit. Tra soluzioni poco comode o solo parzialmente documentate risalta sicuramente Behat per il behavior driven development che offre un nuovo modo di presentare il testing rendendolo accessibile (il suo output) anche ai non tecnici.
Tre suggerimenti utili per quanto riguarda gli strumenti di profiling/benchmarking sono:
- gprof2dot. py che offre un migliore output per grafico rispetto a KCacheGrind (basandosi sul log di Xdebug)
- XHProf WebUI per comparare due sessioni di lavoro con la stessa codebase e verificare cambiamenti di performance rispetto ad attività di fine tuning
- Pylot per benchmarking con richieste parallele (ab è sequenziale)
Large-Scale Data Processing with Hadoop and PHP – David Zuelke
Hadoop e Map/Reduce in nostro soccorso per processare enormi moli di dati. Per la gran parte degli sviluppatori non sarà facile trovarsi a dover utilizzare strumenti del genere. Ma per quelli che invece i dati li hanno questo talk ha presentato una soluzione percorribile, raccomandata ed adottata da molti grandi player del settore.
Profiling PHP Applications – Derick Rethans
Dall’autore di Xdebug arriva un talk sul profiling delle applicazioni PHP. Per poter migliorare un’applicazione è necessario capirne il funzionamento (potrebbe essere stata sviluppata da altri) ed individuare quelle porzioni di codice che più di altre consumano tempo e risorse. Come? Attraverso alcuni strumenti come Xdebug, XHprof, Inclued, KCacheGrind…
How the Web Evolves with Hypermedia – David Zuelke
Keynote sull’evoluzione del web grazie all’utilizzo dell’hypermedia: REST, HATEOAS e Uniform interface al centro dell’argomentazione. Il web ha preso questa direzione e sappiamo che dobbiamo seguirla. Assolutamente da vedere, attendiamo il video.
Designing HTTP Interfaces and RESTful Web Services – David Zuelke
Non dire di avere un’API REST se non hai rispettato i principi fondamentali stabiliti da Fielding. Regole e best practice da ricordare e rispettare durante lo sviluppo per partire con il piede giusto.
Symfony2 by Code – Lukas Smith
Concetti principali alla base di Symfony2 seguendo quello che è il flusso dell’applicazione dall’arrivo della richiesta al front controller al rendering della pagina. Presentati alcuni dei bundle più utili allo sviluppatore per il lavoro di tutti i giorni: FOSUserBundle, FOSRestBundle, FOSFacebookBundle.
Scalable high-performance Architectures – Stefan Priebsch
Parlare di scalabilità di architetture ad alte prestazioni nel campo della ristorazione come parallelo per i problemi che incontriamo in campo IT: caso specifico un fast food. Singolare quanto i processi ed i possibili colli di bottiglia possano essere mappati su una tipica infrastruttura IT a cui siamo tanto abituati. Diversi approcci per portare alla luce pro e contro di soluzioni diverse.
Doctrine and NoSQL – Benjamin Eberlei
Si riparla di NoSQL e di strumenti che facilitano l’utilizzo di questi nuovi strumenti. Interessante presentazione dell’ODM di Doctrine2 per sfruttare quanto offerto nell’area NoSQL da CouchDB e da MongoDB. Ovviamente in alcuni casi questi due prodotti NoSQL non sono ancora raccomandabili: si pensi a contesti in cui le transazioni sono necessarie o casi in cui ‘lintegrità referenziale non può essere demandata all’applicazione. Non ci si deve far sopraffare dalla moda, le soluzioni vanno studiate ed adottate per massimizzare la resa del progetto.
This Way or the other Way? – Stefan Priebsch
Experiment Driven Development, ovvero prendere decisioni basate su dati empirici ricavati da test piuttosto che basandosi su ipotesi che spesso si rivelano errate. Una semplice demo in cui i concetti di Factory e Dependency Injection sono alla base della soluzione adottata per poter sostituire intere classi in base a particolari dati che ci permettono di decidere a quali utenti od in quali situazione presentare un risultato (pensate ad una nuova pagina del profilo) piuttosto che un altro. Importante raccogliere dati utili alla valutazione delle due soluzioni (votazione da parte degli utenti) per capire con dati alla mano se la modifica introdotta ha riscosso successo oppure no.
One Click Deployment with Jenkins – Thorsten Rinne
Presentazione del flusso di lavoro e del processo di deploy di una delle più grandi realtà tedesche nel campo dello sviluppo di applicazioni PHP basato su Jenkins ma non solo. Automatizzare i processi è fondamentale per non dover perdere tempo in tutte le attività ripetitive che non aggiungono valore al progetto e rubano tempo a ciò che invece il valore lo crea.