La critique est aisée, mais l’art est difficile

A force de vous le répéter, je pense que vous savez tous maintenant que je m’ocupe de l’AFUP Lyon.

Nous sommes 3, Adrien Gallou, Sarah Haïm-Lubczanski et moi-même, à prendre chaque jour sur notre temps personnel pour vous proposer des événements de tout type : apéroPHP, ateliers, conférences.
Et, pour certains événements, nous faisons appel à d’autres bénévoles, qui sont moins impliqués, mais qui répondent présents lorsque nous avons besoin d’eux.

Tout ce travail est purement bénévole.

Tout ça pour vous dire que le but commun qui nous anime tous, c’est de proposer des événements techniques autour de PHP à Lyon, et permettre une émulation de notre petit monde dans notre ville, rien de plus.
Les seuls moments où nous parlons d’argent, c’est pour payer les frais engagés, rien de plus.

Alors, quand je vois un commentaire laconique, nous accusant d’avoir fait volontairement un plagiat, ça me touche beaucoup.
Je ne sais pas si c’est de la sur-sensibilité, mais j’ai lu « ah bah bravo les gars, vous faites pas chier, prenez le travail des autres sans trop vous embêter, c’est super intelligent les gars ».

Est-ce que cette personne a envisagée que nous ayons pu choisir ce logo sans savoir qu’une équipe de NFL l’avais choisi ? Est-ce que cette personne a pu envisager que nous n’avions pas de mauvaises pensées ?
Est-ce si dur de ne pas commencer en agressant les gens, mais en les avertissants ?

Et cette personne, qui nous met le nez dans nos déjections, est-ce qu’elle a fait une proposition pour corriger ?

Comme le disais Philippe Néricault Destouches :

La critique est aisée, mais l’art est difficile

AperoPHP, l’odyssée d’une refonte

Lors du PHP Tour Nantais, Mickael Perraud m’a fait la bonne surprise de mettre en production le nouveau site des apéros PHP.

Comme il s’agit d’une étape importante de ce travail qui aura débuté 10 mois plus tôt, je me suis dit que c’était l’occasion de faire un petit résumé de ce projet.

La génèse

Tout à commencé il y a bientôt 1 an, au début de l’antenne lyonnaise de l’AFUP, avec Geoffrey Bachelet et Sarah Haïm-Lubczanski, nous nous sommes dit que l’organisation d’une coding party était un bon moyen pour lancer l’association.
Nous avons cherchés un projet proche de l’AFUP, vieillissant sur lequel il était possible d’avoir la main, et le site des apéro PHP s’est rapidement mise en évidence.

Donc, le 21 janvier 2012, une petite équipe composée de Geoffrey Bachelet, Gautier Di Folco, Julien Fusco, Sarah Haïm-Lubczanski et moi-même nous sommes retrouvés pour commencer ce chantier.
La faute à un manque d’expérience, la préparation était insuffisante et, à la fin de la journée, le chantier n’était pas très avancé.
Fort heureusement, dans les mois qui ont suivi, Gautier et moi-même avons continués à travailler pour atteindre le MVP.

Le passage de relais

C’est à ce moment là que j’ai proposé le projet à l’AFUP, et il a été décidé de créer un compte Github AFUP pour héberger le projet, plutôt que de le laisser sur mon compte.
Cela apportait plusieurs avantages : le projet gagnait en visibilité, il était fortement marqué « open-source » en permettant à tout le monde de participer à son développement, et il devenait officiellement lié à l’AFUP.

A partir de ce moment, plusieurs personnes qui n’étaient pas présentes à la coding party initiale ont pris part au projet : Olivier Dolbeau a fait une grosse phase d’installation d’atoum et de rédaction des tests unitaires associés, puis Mickael Perraud a habillé proprement le site, puis à ensuite pris à charge la correction des issues importantes qui trainaient, mais également la migration des données de l’ancien site vers le nouveau.

La mise en production

Après tout ce travail, le site restait tout de même dans son carton, et l’ancienne version continuait de vivre.
Une démonstration a été installée, puis donnée en pâture au bureau de l’AFUP pour avoir les derniers retours, et Mickael Perraud a profité du PHP Tour pour migrer vers la nouvelle version.

Et maintenant

Cette mise en production n’est pas une fin en soit. Ce projet est utilisé, puisqu’il y a en moyenne 2 apéros par mois.
De plus, il reste des bugs/évolutions/… qui permettraient d’améliorer le fonctionnement du site.
Tout ça pour dire que je vais continuer à travailler sur ce projet, en tant que lead dev. Je vais donc travailler sur les évolutions, mais également relire et intégrer les Pull Request que vous ne manquerez pas de faire ;)

En quelques mots, voici la roadmap que je me fixe :

  • Corriger les bugs déclarés
  • Refactorer le code de base en Controller/Service
  • Créer les scénarios Behat pour les test

Cette liste n’est pas exhaustive, et reflète les envies que j’ai sur ce projet, mais je suis ouvert à toute proposition qui pourra être faite.

PHPTour Nantes 2012 – Composer, l’outil moderne de gestion de dépendances pour vos projets PHP

La fin de l’année 2012 est chargée pour moi, puisqu’en plus de la gestion de l’antenne lyonnaise de l’AFUP, et en sus de ma conférence à Paris Web, j’ai également été retenu pour donner une conférence lors du PHPTour 2012 qui aura lieu les 29 et 30 novembre 2012 à Nantes.

Lors de cette conférence, je vous parlerais de Composer, cet outil qui permet de gérer simplement les dépendances des projets PHP, à la sauce de npm ou Bundler, où je vous expliquerais la base de son fonctionnement et de son utilisation, puis un workflow pour l’utiliser au mieux.

Si cette conférence n’a pas encore suffit à vous convaincre de l’extrême nécessité de venir à cet évènement, je ne peux que vous inviter à consulter le programme complet qui est une mine de pépites, autant pour les techniciens que pour les DSI.

Maintenant que vous êtes convaincu, il faut vous dépêcher de réserver votre place, le lieu est un peu plus petit que d’habitude et les places partent vite !

PHPTour Nantes 2012 - J'y serais

[AFUP Lyon] Conférence présentation de Behat

Le mercredi 25 juillet prochain, à partir de 19h, Julien Bianchi (@jubianchi) et Gabriel Pillet nous présenteront Behat.
La conférence aura lieu dans les locaux de TEA, au 6 rue Pinton 69008 Lyon.

Pour laisser plus de chances à tout le monde de s’inscrire, les inscriptions ne seront ouvertes que le 17/07 à 17h (dommage qu’il n’y ait que 12 mois dans l’année ;)).

Behat est un outil permettant de rédiger des tests de validations qui sont un des garants du fonctionnement des méthodes agiles, tout particulièrement SCRUM.
Il permet de rédiger des scénarios de fonctionnement, en s’abstrayant complètement du code technique nécessaire pour que ces tests passent.

Voici un exemple de scénario Behat :
Scénario:
Etant donné que j'ai un compte bancaire
Et que le solde de mon compte est de "10" euros
Quand j'ajoute "5" euros sur mon compte
Alors mon solde doit être de "15" euros

Scénario:
Etant donné que j'ai un compte bancaire
Et que le solde de mon compte est de "10" euros
Quand je retire "50" euros sur mon compte
Alors je dois avoir le message d'erreur "vous n'avez pas le droit d'être à découvert"
Et mon solde doit être de "10" euros

[AFUP Lyon] Conférence présentation de atoum

En attendant l’intégration propre des sites des antennes locales de l’AFUP sur le site associatif, j’ai décidé d’utiliser mon propre site pour communiquer sur les actualités de l’antenne lyonnaise.

Ce soir, j’écris cet article pour vous annoncer la tenue de la prochaine conférence organisée par l’AFUP Lyon

Le mercredi 11 juillet 2012, Frédéric Hardy (@mageekguy) et Julien Bianchi (@jubianchi), vont nous présenter atoum.

Atoum est un framework de tests unitaires moderne, simple à mettre en oeuvre, qui simplifie l’écriture des tests unitaires et qui permet d’écrire des tests fiable, lisibles et clair (cf. README)

Dans un premier temps, Frédéric, son créateur, nous fera une présentation philosophique de cet outil ainsi que du développement piloté par les tests, et nous expliquera en quoi il est plus rapide, simple, et fiable d’écrire des test avec atoum plutôt qu’avec ses principaux concurrents, puis il continuera sur une présentation des principales fonctionnalités de cet outil.
Julien prendra ensuite la parole pour nous présenter son plugin Sonar pour atoum et nous faire une démonstration de l’utilisation d’atoum dans une optique d’intégration continue.

Comme dit en préambule, cette présentation aura lieu le mercredi 11 juillet à 19h, dans les locaux de la société Elao, au 26 Rue Louis Guérin, 69100 Villeurbanne.

Les places sont limitées, ne tardez pas à vous inscrire : http://www.eventbrite.fr/event/3817863332

Organisation de l’AFUP Lyon

Comme je vous l’annonçais dans un précédent billet, Sarah Haïm-Lubczanski et moi-même coordonnons les actions de l’antenne Lyonnaise de l’AFUP.

Jusque là, nous gérions tout, lancions les idées, les mettions en pratique, …
Toutefois, pour stabiliser le fonctionnement, il devient nécessaire de changer ce fonctionnement pour qu’il repose sur un groupe de personnes.

Quels chantiers ?

Dans cette idée, nous désirons mettre en place des groupes de travail pour les grands chantier :

ApéroPHP du 29

Nous sommes en cours de stabilisation de l’apéro du 29 : le réflexe du 29 de chaque mois commence à donner ses fruits, mais il reste plusieurs point à creuser :
- Travailler sur le lieu de RDV, puisque les essais au café Leffe Terreaux, puis au Ninkasi Sans-soucis et Kafé Berlin ne sont que partiellement convenables, et qu’il faudrait un lieu où il est possible de discuter avec plus de monde que ses voisins directs.
- Organiser chaque mois l’apéro (ajouter l’apéro sur le site, réserver le lieux, communiquer, …)

Ce n’est pas énormément de travail, et je pense que si plusieurs personnes sont partantes, il est même possible que ça ne demande qu’une paire de minute par mois.

Ateliers PHP

Suite au premier atelier qui fut une réelle réussite (guichet fermé, 99% d’inscrits présents, beaucoup de feed-back), il faut continuer dans cette voie.
Il y a déjà quelques idées et quelques contacts pour de futurs ateliers, et je pense qu’il faut au minimum un groupe de travail sur les ateliers (au sens général), quitte à monter un groupe par atelier si nécessaire.

Pour continuer dans cet atelier, les tâches sont les suivantes :
- Prévoir une roadmap des futurs ateliers
- Rechercher des salles, en fonction du nombre de personnes que l’on veut accueillir
- Annoncer les prochains ateliers, gérer les réservations

Conférences

La différence entre Atelier et Conférence réside avant tout dans la taille de l’évènement.
Nous travaillons actuellement à faire venir la conférence « Performance PHP » sur Lyon. Les choses démarrent, mais il semble que cela soit possible.

Il faut donc un groupe de travail pour l’organisation de cette conférence, et c’est le point qui me semble le plus urgent.

Pour réussir à organiser cet évènement, il nous faut désormais :
- Trouver une salle permettant d’accueillir une centaine de personnes
- Gérer la communication et les réservations
- Monter une demande de budget pour le bureau de l’AFUP

Conclusion

Maintenant que nous avons réussi à donner de l’élan à notre antenne locale, il faut continuer sur cette lancée, et s’ouvrir de nouveaux horizons et pour cela, il faut des bonnes âmes.
Comme vous venez de le voir, plusieurs chantiers sont en cours, avec plusieurs types de travail, et je ne doute pas que vous trouverez une occupation qui corresponde à ce que vous savez/pouvez faire.
Nous comptons donc désormais sur vous pour nous épauler dans la vie de l’AFUP Lyon

Activité de l’antenne lyonnaise de l’AFUP

En aout dernier, sous l’impulsion de quelques personnes telles que Geoffrey Bachelet, Romain Pouclet, Sarah Haim ou encore votre serviteur, Lyon a créé la première antenne locale de l’AFUP (communiqué officiel)
Geoffrey ayant eu besoin de prendre du recul, j’ai récupéré, en compagnie de Sarah Haim, le rôle de coordinateur local.

Voici les actions menées depuis :

L’apéroPHP du 29

Tout les 29, un apéroPHP est organisé. Cette régularité permet d’augmenter la visibilité de ces évènements, et attirer de plus en plus de monde.
Pour le moment, il n’y a pas de lieu de fixe, nous essayons. Je suis toujours à la recherche d’un lieu qui permet de boire un coup, de discuter, de prendre la parole devant tout le monde pour présenter les actions, … mais je n’ai pas encore trouvé la perle rare.

Refonte du site aperophp.net

Tout le monde a dû, à un moment où à un autre, se dire que le site aperophp.net devrait subir un petit lifting.
Eh bien nous avons pris le taureau par les cornes, et le 21 janvier dernier, quelques courageux se sont réunis pour lancer les bases du nouveau site.
Julien Fusco et Gautier Di Folco continuent de travailler sur le site, et le project leader, Martin Supiot, de l’AFUP Nantes, devrait pouvoir annoncer sa mise en ligne d’ici la fin du mois de mars.

Les ateliers PHP

Sur l’exemple de ce que peuvent faire l’AFUP centre, Lille ou Bordeaux, nous démarrons le principe des ateliers PHP.
Le but est de faire une mini-conférence (1h) pour présenter un sujet, déclencher des échanges ou récupérer des retours d’expérience.

Le premier atelier PHP lyonnais aura lieu le 29 février prochain, juste avant l’apéro PHP.
Vous trouverez toutes les informations ici : source officielle

De l’intérêt de la micro-optimisation

Il y a quelques jours, sur Nexen, je tombais sur un article portant sur la micro-optimisation, et peu de temps après, sur une « réponse » de Zenprog.

Comme je trouve le sujet intéressant et que j’ai un avis complémentaire, bien que différent, je me permet dont d’écrire cet article pour l’exposer.

Différence entre temps d’exécution et temps de rendu

Pour ma part, je trouve la micro-optimisation assez peu intéressante dans le sens où elle est micro. Cette optimisation se base en tout et pour tout sur le temps d’exécution brut d’un script PHP, en se demandant si je peux gagner 10% en remplaçant tout mes echo par des print, ou alors en utilisant des  » au lieu de ‘.

Sauf que, dans la vie d’une application web, ce temps n’est rien. Pour enfoncer une porte ouverte, le fonctionnement du web se décompose en plusieurs phases :

  1. Envoi d’une requête : interroger les serveurs DNS, trouver le serveur et ouvrir une connexion avec lui.
  2. Génération de la réponse : le temps d’exécution
  3. Téléchargement du résultat : le temps que le HTML généré par le PHP reviennent sur le client
  4. Interprétation du résultat : le temps que le navigateur interprète le HTML, découvre les ressources nécessaire au rendu
  5. Chargement des ressources annexes (assets) : pour chaque ressource, on repart du début (requête, réponse, téléchargement et interprétation)

Le temps de rendu est l’ensemble des temps nécessaires pour réaliser toutes ces phases.

Prenons l’exemple, au hasard, d’un moteur de recherche bien connu, et analysons le chargement de la page d’accueil :

Analyse du chargement de la homepage

Voici ce que l’on peut apprendre de cette analyse :

  • le temps complet de chargement de la page est de 964ms
  • la requête initiale (requête, génération, téléchargement du résultat) prend 110ms (95ms de génération du résultat)

Il est donc clair que le temps de rendu (le temps nécessaire pour que l’utilisateur puisse utiliser la page) est 9 fois plus important que le temps d’exécution du script sur le serveur. Du coup, gagner 10% sur le temps d’exécution ne fait gagner que 1% sur le temps de rendu.
Et je parle ici de la page d’accueil de Google, qui optimise beaucoup ses chargements, mais pour d’autres sites, moins optimisé, c’est encore pire dès que le nombre de CSS, de JS ou d’images croît.

Optimisez vos chargements

Pour agir de façon drastiquement efficace sur votre temps de rendu, tant que le temps d’exécution est inférieur à 75% du temps de rendu, c’est du côté du chargement qu’il faut chercher.

Pour agir sur le chargement, j’utilise 2 outils : Page Speed et Yslow. Ces outils se basent sur une liste d’optimisations de chargement de pages web.
Je vous conseille de ne pas chercher à atteindre la perfection sur tout les points, mais c’est une bonne base de travail. Je vous conseille également de travailler avec les 2 outils en parallèle, car ils ne sont pas toujours d’accord, et cela permet de pondérer les conseils de chacun.

Micro-optimisation vs. macro-optimisation

Sur ce point, je suis totalement d’accord avec ZenProg : commencer par ce qui apporte réellement un gain de performance à vos sites !

Par expérience, je sais que lorsqu’un script PHP est lent, il faut commencer par traquer les causes suivantes :

  1. Requêtes non optimisées
  2. Schéma de base de données non optimisé
  3. Requêtes dans des boucles
  4. Boucles non optimisées

Requêtes non optimisées

Faire un EXPLAIN PLAN est un minimum vital pour des requêtes un minimum complexe. Dans de (trop) nombreux cas, 80% du temps d’exécution du script est l’oeuvre d’une requête non optimisée qui bloque le PHP

Schéma de base de données non optimisé

Comme le dit ZenProg, un index bien pensé (un index sur le(s) champ(s) sur lequel/lesquels se base les requêtes les plus fréquentes) permet de gagner beaucoup de temps, pour la même raison que pour le point précédent.

Requêtes dans une boucle

L’une des plus grosses fautes de développement, selon moi, c’est de ne pas contrôler les requêtes générées par son code source. Il est très facile de se retrouver dans un cas de figure où une requête est exécutée dans une boucle, surtout avec les frameworks MVC.
Contrôler le nombre de requêtes générées, et travailler sur des données de test réalistes (des dizaines d’enregistrement minimum) permettent donc de se rendre compte quand le nombre de requêtes d’une page semble trop important pour le travail réalisé, et donc se rendre compte qu’on a des requêtes inutiles.

Boucles non optimisées

Je vois trop souvent des algos qui, suite à plusieurs évolutions, se retrouvent avec plusieurs parcours d’un même tableau.
Au final, c’est du temps perdu lors des milliers/millions d’exécution de l’algo, juste parce le développeur n’a pas voulu « perdre » quelques minutes à prendre du recul sur son algo.

La lisibilité du code

Je sais que je sors un peu du sujet, mais je trouve qu’on y perd plus lorsque la micro-optimisation d’un code source rend sa lecture difficile

L’optimisation hors script

Je ne pouvais pas finir cet article portant sur l’optimisation sans parler de l’optimisation que j’appelle « hors site ».
J’entends par là qu’il y a des optimisations qui sont applicables sans se pencher sur un script, mais qui améliorent drastiquement son temps d’exécution :

  • Mettre en place un cache d’Opcode (APC, …)
  • Mettre en place un cache de rendu

Conclusion

Pour moi, bencher si print est plus efficace que echo, c’est de la masturbation intellectuelle pour la plupart des développeurs web que nous sommes.
Après la démonstration que je viens de vous faire, je pense que le jour où vous en serez réduis à remplacer vos print par des echo dans votre code source pour l’optimiser, c’est que vous aurez des besoins en performance très particulier, et que vous aurez déjà éculé les optimisations que je vous ai listées.

Création de l’antenne Lyonnaise de l’AFUP

Comme vous en avez certainement déjà entendu parlé, l’AFUP crée sa première antenne locale, sur Lyon.

Sous l’impulsion de Geoffrey Bachelet, il y a une équipe de motivé, dont je fais parti, qui est composé d’une dizaine de personnes.

Nous sommes en phase de création, on se cherche un peu, mais nous avons déjà de bonnes idées, et des mises en pratique vont suivre dès la rentrée.
Au programme, nous avons :

  • Coding party pour recoder le site aperophp.net
  • Organisation d’une conférence technique à la rentrée
  • Déposer une candidature pour le PHP Tour 2012

Un leitmotiv que nous allons tenter de suivre va être l’ouverture aux autres technologies. Et dans cette voie, nous avons participé il y a quelques temps au Barcamp Lyon 2011, avec des devs Java, JS, Ruby, Microsoft, …
De cet évènement sont ressortis quelques contacts intéressants qui annoncent des collaborations intéressantes. Affaire à suivre ;)

Je suis très content qu’une communauté de développeurs PHP se mette enfin en place sur Lyon je suis très motivé par cette association, et je compte donc m’investir autant que possible dans son activité.

Je suis très heureux que ça bouge enfin

Appelez moi « Expert certifié Zend PHP 5.3″

Eh oui, depuis mercredi 16 mars 2011, je suis officiellement un expert certifié Zend PHP 5.3.

Ma société, Prestaconcept, m’a donné l’occasion de passer la certification Zend PHP 5.3 cette année, principalement pour des raisons commerciales, mais j’ai accepté avec plaisir.
Nous étions 2 de ma société, puisque j’ai passé l’examen avec mon collègue Christophe Dolivet.

Ne sachant pas le niveau attendu, et comme je ne m’estime pas non plus le 1er venu en PHP, nous avons décidé de la passer en candidat libre, juste en révisant à l’aide de la documentation Zend et du manuel PHP.

Et bien, malgré mes doutes, JE L’AI EU

Bon, côté des points noirs, maintenant que je l’ai passé, je suis moins ébloui par cette certification, puisqu’il vaut mieux connaitre le manuel sur le bout des doigts que de savoir organiser un code, ou savoir mettre en pratique une factory ou un visiteur.
Mais bon, comme cette nouvelle ligne sur mon CV semble être reconnue, je ne vais pas m’en plaindre ;)