J’étais présent au Forum PHP, conférence organisée par l’AFUP à l’hôtel Marriot Rive Gauche les 26 et 27 octobre.

Ces deux jours ont été très riches en rencontres et découvertes. C’était d’autant plus important que j’étais un des conférenciers de cette édition. Une super expérience qui donne envie de recommencer ? !

Cet article reprend les conférences que j’ai pu voir pendant le premier jour du forum avec les liens vers joind.in et mon avis.

PHP 7.2

La nouvelle version de notre langage préféré va bientôt pointer le bout de son nez. Une version GA est prévue pour le 30 novembre 2017, il est temps de se préparer à migrer.

Rémi Collet, qui est un des « release manager » de cette version, nous a présenté les différentes modifications apportées. Il a insisté sur les fonctionnalités dépréciées et les ajout comme le support de l’algorithme de hashage Argon2. L’extension mcrypt est aussi supprimée du cœur de PHP et déplacée dans le dépôt PECL.

Pas de grand surprises, après tout il s’agit d’une version mineure ! La migration ne doit pas être complexe.

Rémi a aussi réexpliqué le cycle de vie des versions de PHP. Il faut savoir PHP 7.0 ne sera plus en « support actif » à partir de décembre 2017.

Je n’ai pas vraiment découvert de nouvelles choses, mais il est toujours intéressant de se tenir à jour sur les différentes versions du langage. C’est le genre de conférence qui me permet de trouver les bons arguments pour convaincre mes clients de migrer, merci Rémi !

La génération de dates en PHP

Kevin Nadin, a présenté la gestion de date en PHP de manière très accessible en parcourant les différentes fonctions et objets intégrés dans le langage. Il a aussi repris quelques pièges de la fonction strtotime avec les formats supportés et la « magie » qu’il y a derrière.

Bien que non exhaustive et très axée débutant, c’était une présentation intéressante. J’ai quand même eu du mal à voir ou Kevin voulait nous emmener.

Software management lessons from the 60s

C’est un des talks que j’ai préféré, présenté par Larry Garfield qui nous a fait l’honneur de sa présence au forum !

Il a repris les leçons décrites dans un livre écrit pendant les années 1970 par un des employés d’IBM, Frederick Brooks : The Mythical Man-Month.

Un retour très intéressant qui permet de se poser pas mal de questions sur la structure d’un logiciel et la collaboration entre les développeurs. Il a aussi beaucoup appuyé sur l’importance de l’open source dans l’amélioration de la fiabilité et la réutilisation des briques logicielles.

Une image vaut mieux que mille mots, je reprends ce qui m’a le plus marqué dans les slides de Larry :

Pour construire un produit, il faut qu’il soit viable dès les premières itérations. Dès le départ il faut donc :

  • Maîtriser les choix techniques ;
  • Découpler le code métier du framework utilisé ;
  • Autoriser les ingénieurs à prendre des décisions.

Signaux, Process Id et PHP

Disclaimer : Les fonctions présentées ne sont pas compatibles sur Windows.

Une conférence technique présentée par Alexandre Balmes sur la gestion de process Unix. Il en a eu marre de voir chez ces clients une mauvaise gestion des scripts CLI en PHP et a voulu montrer comment bien maîtriser ce type d’application.

En effet on a souvent tendance à sous-estimer ce type de code, les « petits » qui permettent de nettoyer, optimiser… Il s’agit souvent de tâches critiques qui sont lancées dans des crons ou à la main, il ne faut pas les prendre à la légère.

Nous avons trop l’habitude d’utiliser un CTRL+C ou un kill -9 PID pour arrêter un script lancé. Alexandre nous a présenté de façon très pratique comment interagir avec les processus longs. Il utilise le composant Process de Symfony et PHP mais toutes les explications sont valables dans tous les langages.

Ce qu’il faut retenir :

  • Il existe 17 signaux utilisables dans un processus pour communiquer avec lui ;
  • PHP est bien équipé (avec PCNTL) pour écouter et gérer ces signaux même si le code à écrire s’inscrit dans une logique proche de l’Event Loop ;
  • Il faut créer des fichiers PID et des fichiers de lock et ne plus jamais tuer sauvagement un process.

J’étais déjà travaillé sur les processus mais c’est toujours intéressant d’avoir un retour d’autres développeurs. En plus les exemples très concrets m’ont permis de mieux saisir certains aspects, il ne reste plus qu’à implémenter et à sensibiliser mes clients !

Le Streaming d’API : pourquoi ? comment ?

Audrey Neveu nous fait un retour d’expérience sur la gestion du temps réel au sein d’une application web. Aujourd’hui il existe différentes technos pour implémenter ce temps réel mais laquelle est la plus adaptée ?

Elle nous a présenté les WebHooks, technique utilisée sur des plateformes comme GitHub ou Gitlab pour être « informé » quand il se passe quelque chose. C’est une approche assez simple à mettre en place, mais qui ne fonctionne pas pour tout le monde.
L’abonné doit forcément disposer d’un point d’entrée public. Comment gérer lorsqu’un message ne passe pas, comment éviter les attaques DDOS qui peuvent être déclenchées par le client directement, … ?

J’ai découvert WebSub, qui est un système de WebHooks sous stéroides et une recommandation W3C. C’est une approche un peu plus complexe que les WebHooks. Elle est utilisé par des plateforme de blogging (par exemple WordPress.com), des sites de news ou des réseaux sociaux.
Certaines lacunes des WebHooks sont corrigées (possibilité de définir une durée de vie à l’abonnement, sécurité et vérification de l’abonnement, …) mais ce n’est encore pas idéal pour du vrai temps réel.

Audrey termine en nous présentant les « vraies » technos temps réel : WebSockets et Server-sent Events. J’ai déjà utilisé la première et ne connaissais pas la seconde.
Après une petite démonstration, je découvre que Server-sent Events est un peu plus structuré. De plus, il ne s’agit pas d’une communication bi-directionnelle, c’est bien adapté lorsque le client souhaite simplement être informé.

Petit bémol, ce protocole n’est pas implémenté par Internet Explorer ou Edge à l’heure actuelle… Il existe quand même des polyfills pour quand même pouvoir jouer sur la plupart des plateformes ?.

Un talk super intéressant ponctué d’exemples concrets. J’ai découvert un nouveau protocole et j’ai été sensibilisé aux lacunes et contraintes du temps réel aujourd’hui. Merci à Audrey pour ce partage, ça donne envie d’essayer des choses !

Climbing the Abstract Syntax Tree

James Titcumb, consultant chez Roave nous vient d’Angleterre pour nous parler d’AST. Cet Abstract Syntax Tree qui est intégré dans PHP depuis la version 7.0 permet d’avoir une vision différente du langage et de son interprétation.

Cette présentation ne parle pas directement de PHP même s’il y a beaucoup de référence. James présente ce qu’est un AST et à quoi est-ce que ça peut servir. Il nous montre à travers la construction d’un petit langage arithmétique ce que sa manipulation peut apporter. Beaucoup d’optimisation sont possibles dans PHP autour de cet arbre.

Je n’ai pas appris grand chose pendant ce talk, mais il était bien rythmé. J’ai rafraîchi ma mémoire sur ce concept.

Développer plus rapidement avec Symfony 4

Kevin Dunglas, créateur d’API Plateform et membre de la core team Symfony nous présente à travers un exemple les nouveautés de Symfony 4 et ses bénéfices. Personnellement j’utilisais de moins en moins Symfony à cause de son côté trop « usine », peut être à tord… Je m’étais tourné vers Laravel et des micro framework plus spécifiques.

La présentation de Kevin montre les efforts faits par la core team et la communauté à propos de la philosophie de l’outil et me donne vraiment envie de m’y remettre.
Avec Symfony 4 et Flex, on sort du mode monolithe lourd pour se rapprocher d’un outil à composer soi-même. La coquille de base est très minimaliste, c’est d’ailleurs le MicroKernelTrait qui est utilisé par défaut. J’aime particulièrement la nouvelle structure de répertoire sans Bundle et la séparation des dossiers.

Il s’attarde aussi un peu sur Flex, qui est un outil d’installation de « bundles » avec configuration et initialisation automatique (utilisant un système de recette). Je pense que je vous en parlerai dans un prochain article…

Je crois complètement dans cette nouvelle philosophie qui permet de n’utiliser que ce qu’il faut pour répondre au besoin. Un peu plus de réflexion en amont, mais les projets vont devenir plus simple à maintenir et à faire évoluer.

Il faut savoir que toutes ces nouveautés sont compatibles avec la version 3.4 et la version 4.0 qui vont sortir d’ici la fin du mois.

Pour finir

Une conférence surprise, non technique avait été ajoutée au programme. Elle a permis d’aborder un thème très important : la diversité.
Haikel Guemar de chez Red Hat nous a fait une présentation bien rythmée : C’est quoi être différent dans l’IT. Ce talk fait le point sur les discriminations, la compréhension des autres et le harcèlement. Chacun a sa propre sensibilité et il faut essayer d’être attentif aux autres, nous avons tous à y gagner !

Une série de présentations rapide (lighting talks) a aussi été faite à la fin de cette journée. Une approche intéressante pour balayer beaucoup de sujets différents…

Un premier jour très riche, les conférences étaient variées et très intéressantes. Un petit passage à l’apéro communautaire organisé dans un bar à proximité de l’hôtel pour se détendre et bien terminer cette belle journée. Je ne me suis pas trop attardé, je présentait ma conférence le vendredi matin…

Découvrez la suite dans l’article détaillant le deuxième jour de la conférence !