Darkmira était au PHPTour 2018
Les 17 et 18 mai dernier, j’ai eu l’occasion d’assister à la dernière édition du PHPTour de l’AFUP à Montpellier. Dans cet article, je vous propose un résumé de l’expérience que j’en ai eu et de mes découvertes, avec des liens vers les vidéos des présentations !
Retrouvez-moi sur Twitter (@Darkmira1 ou @kevinjhappy) pour continuer la discussion et savoir où me croiser.
L’ambiance était au top sur les stands des sponsors, avec le Babyfoot de Kaliop, le blindTest de Deezer (où je me suis personnellement ridiculisé !), et l’accueil des autres qui a été exemplaire.
Entre développeurs, toujours de bonnes discussions, bien que l’enchaînement des conférences sur deux jours rend difficile de trouver la motivation pour des discussions techniques, car il est important de laisser le temps au cerveau d’absorber les nouvelles connaissances et de le laisser se reposer.
Retrouvez les conférences auxquelles j’ai assisté ci-dessous, chaque titre de conférence vous renvoie vers la vidéo correspondante sur la chaîne Youtube de l’AFUP
1er Jour
Tirer le maximum du moteur de PHP 7 — l’exemple de symfony
Nicolas Grekas nous présente les optimisations qu’il a pu faire dans le framework Symfony à la sortie de PHP 7.0, puis 7.1 et 7.2 pour faire le maximum de gain de performance.
Un exemple frappant de micro optimisation est l’utilisation des imports de fonctions dans des fichiers déclarant un namespace, par exemple \count() à la place de count().
D’autres optimisations, comme l’appel à une constante self::XXX est moins rapide que l’utilisation de la valeur directement, sont plus difficile à trouver et ont été détectée à l’aide de Blackfire.
Nombre de ces améliorations ont été permis grâce au share cache et à l’optimisation d’OPcache de PHP 7.
Designing test architecture that does not suck
Le design des architectures de tests unitaire n’est pas toujours des plus simples, et faire du Test Driven Development n’est pas toujours la méthode à adopter pour faire les tests unitaires les plus efficaces.
Un point sur les tests doubles est également fait : il ne faut pas tout mocker, mais bien se concentrer sur les services extérieurs au projet.
Des exemples de tests unitaire mal écrits ou n’ayant aucun sens sont proposés, et Michael prouve que ces tests passent toujours valides alors qu’ils passent à côté de la fonctionnalité à tester.
REX sur 5 ans de RabbitMQ
Ulric nous présente son expérience en utilisant RabbitMQ, avec ses ratés et ses réussites, en passant par une installation avec une seule queue et un seul serveur, les problèmes que cela a engendrés en matière de charge, ainsi que les problématiques rencontrées au niveau de l’ajout de ressources (2 queues avec 2 serveurs ne servent à rien si la charge ne peut pas être load-balancé par exemple).
Très intéressant pour quiconque ne connaît pas rabbitMQ, cela fait une belle entrée en matière, et pour les connaisseurs c’est une bonne vue d’expérience des solutions et de leurs avantages et inconvénients.
Tenter de gagner un peu sa vie avec un projet open source
Cette conférence est une bonne approche sur la manière de transformer son application, à la base faite pour le fun, en un moyen de gagner sa vie. Cela demande des sacrifices car il faut beaucoup de temps, ce qui engendre donc souvent une démission ou une autre redirection professionnelle, et il explique qu’après avoir décidé de consacrer du temps à son application, il a décidé de ne pas choisir de moyens comme les financements participatifs ou de sponsoring car il ne souhaitait pas avoir de contrainte de temps, d’engagement ou d’enfermement de son activité
100% asynchrone 0% callable
Cette conférence nous montre une installation classique d’application asynchrone en PHP, avec les problèmes récurrents que l’on rencontre généralement sur la synchronicité du projet.
Pour permettre à son application d’être asynchrone, le premier problème soulevé concerne les callables, qui ne sont pas si pratiques à appliquer, il nous enseigne donc l’utilisation des Promesses avec des Events Listeners pour limiter l’utilisation des callables.
Mais à cette étape ils ne sont pas encore tous éliminées, et les callable restant sont remplacés par des generator avec l’utilisation de yield.
Mais cela n’étant toujours pas assez, il nous montre la librairie Liber qui pourrait permettre de faire de l’asynchrone sans avoir à changer les fonctions qui s’échangent les données. La conférence est bien expliquée, les schémas et les exemples sont clairs, l’expérience des personnes de JoliCode transpire
Maîtrisez le composant de Serializer
Cette conférence est très détaillé sur le composant Serializer de Symfony, en revoyant tout ce qu’il est capable de faire avec le Serializer, les différences avec celui de PHP natif, comment envoyer des formats Json et récupérer des Objets, la conférence va vite et il y a beaucoup à retenir en 40 min, mais c’est très complet.
Kevin Dunglas étant contributeur symfony et travaillant chez API Platform utilisant énormément le Serializer, son expérience est complète et ses talks captivant
CQRS, Fonctionnel, Event Sourcing & Domain Driven Design
Arnaud Lemaire nous présente la configuration et l’organisation de ses applications en respectant les patterns de DDD et ce qui en découle, une conférence pleine de schéma bien expliqué qui en dit beaucoup sur les fondements de ces méthodes pour une personne non initiée à ces concepts. Cela permet de voir les bonnes approches à avoir lors de la conception d’un projet.
Éthiques et macarons
Laurent Chemla fait un débat ouvert avec la salle sur les problèmes de fake news, de sauvegarde de données, d’espionnage, etc. sur le web. Sa courte présentation se suit par une partie question réponse qui prends tout le temps restant alloué à la plage horaire, ce qui fut une bonne initiative car les questions ont été nombreuses.
C’est un sujet vaste et qui nous interpelle de notre point de vue de développeur web. Une conférence à revoir, et pour les gens sur place il y avait des boites de macarons à se partager :)
Lightning talks
Cette année comme tous les ans, les lightnings talks nous apporte pleins de micro sujet, ce qui m’ont le plus marqué sont :
- Les coquilles des développeurs, ma préférée est “j’ai oublié de manger ma barre sérialisée” et “c’est un bug très rare mais qui arrive souvent”
- Comment arriver à apprendre la programmation à des jeunes diplômés se dirigeant vers le développement, le lightning reste ouvert avec la question de priorité sur l’apprentissage des bonnes pratiques ou celle des bases de la stack technique ?
- L’histoire résumé de l’association AFUP, avec le premier pôle historique créé à Lyon, et l’annonce de l’AFUP Day en remplacement des phpTour
Le pot de la communauté (fin de la première journée)
Un pot vraiment agréable, j’ai rencontré beaucoup de personnes avec qui j’ai bien ris, par exemple le groupe de Kiboko est super sympa, j’ai pu discuter tranquillement avec Thomas Dutrion, Nicolas Grekas et Ulric, niveau ambiance on avait presque le bar pour nous, merci aux organisateurs de l’AFUP et principalement Muriel qui est resté à disposition toute la soirée pour donner les tickets de verres gratuits aux participants !
Une ambiance encore une fois au top, une belle tradition qui soude la communauté un peu plus chaque année :)
2eme jour
Rest ou GraphQL ? exemple avec api platform
Cette seconde conférence de Kevin Dunglas nous trace les différences entre ces deux modes de API call, en soulignant que graphQL commence à prendre de l’importance dans les communautés de développeurs car il est plus facile de récupérer des données déjà agrégée et jointe entre elles, comme par exemple récupérer les véhicules qu’un client donné possède se fait avec un seul appel, et de plus la manière d’envoyer les données que l’on souhaite récupérer est également simplifié.
Encore cette fois, la conférence est bourrée d’information, très complète et bien expliquée.
Caching with PSRs
Hannes Van De Vreken nous retrace toutes les nouvelles méthodes de cache, le lien avec PSR-6 et PSR-16 et le pourquoi de ces 2 PSR pour du cache.
Nous cachons notre application pour gagner en vitesse et exécuter des tâches lentes, mais surtout il faut bien se souvenir comme il le précise environ 274 fois dans sa conférence, si le cache fail, l’application ne doit pas fail, il est important que la gestion du cache ne soit pas dans le coeur de votre application
Un peu d’événement dans un monde linéaire
Cette conférence prend une approche non technique, en décrivant la suite d’événements que nous avons lors de la conception d’une application, en partant du point de départ de l’idée jusqu’à la mise en production, en utilisation des comparaisons dans l’univers cinématographique. La conférence est bien animée et l’analogie avec les films permet de bien comprendre les différentes étapes
Réussir en tant que communauté
Edouard Cunibil nous parle de la communauté Drupal, qui se répand dans le monde et qui est bien présente en Europe. Il nous indique quels sont les réflexes et les comportements à avoir lors des nouveaux arrivants dans la communauté, comme le fait de les intégrer, de les suivre, que la communauté marche bien si elle a des canaux dédiés pour l’entraide et la discussion, etc.
Décryptez votre contrat de travail !
Hélene Schapira nous fait une approche très amusante et intéressante du contrat de travail, le décomposer et le traduire en langage de programmation, avec telle entité qui est une classe principale (comme le code du travail), qui peut servir en héritage d’une autre classe s’appelant la convention collective de l’entreprise.
La conférence est rafraîchissante et permet de comprendre certains détails que l’on pensait comme acquis, alors que s’ils ne sont pas définis comme étant dans la convention collective, ils ne valent rien. Elle revient également sur le statut de cadre et les forfaits aux heures et jours, avec leurs particularités.
Merci de laisser ce code dans l’état dans lequel vous aimeriez le trouver
Cédric Spalvieri nous explique les bonnes pratiques en partant de cette phrase quelque peu connu “Code comme si la personne qui reprendra ton projet est un psychopathe qui connaît ton adresse”, en faisant attention aux commentaires, au nom des variables, à l’indexation, à la lecture facilitée, etc.
Des bonnes bases remisent à neuf et très bien expliquées, qui sont nécessaires de revoir régulièrement car ce n’est pas toujours le cas, il est important de faire du code propre, n’oublions pas qu’en tant que développeur nous passons en réalité 80% de notre temps à lire et 20% à coder.
La pire meilleure idée : faire du batch processing avec Doctrine
Romain Monceau nous explique les commandes qu’il a tenté de faire avec Doctrine pour compter des bières, et nous montre les surcharges d’information qu’il a dû traiter et comment y remédier, en nous indiquant par exemple d’augmenter la mémoire de php encore et encore n’est pas une solution pérenne. La conférence va assez loin dans les possibilités de Doctrine, et il est conseillé d’avoir de bonnes bases en Doctrine pour pouvoir convenablement la suivre.
Jouons tous ensemble à un petit jeu
Le quiz fait durant le super-apéro PHP a été refait, mais cette fois avec des questions absolument pas technique (style Burger Quiz) avec toutes les personnes présentes de la salle.
Il nous a ensuite expliqué les technologies qui ont été utilisés pour permettre de répondre à un quiz en direct avec des candidats utilisant leur smartphone, et en générant des tas de statistiques sur les temps de réponse. De plus il explique qu’un système anti-triche a été mis en place, les 4 réponses disponibles sont affichés dans un ordre aléatoire par smartphone pour empêcher de copier facilement son voisin.
Conclusion
J’ai beaucoup apprécié cet événement, la communauté est toujours accueillante et respectueuse, les conférences ont été intéressantes, j’aurais aimé en voir plus mais il faut malheureusement faire des choix. Heureusement les vidéos disponibles sur la chaîne Youtube de l’AFUP sont là pour rattraper le temps perdu
Merci à vous pour votre lecture, merci à l’AFUP et à Darkmira pour nous avoir offert l’opportunité d’assister à ces conférences, et à bientôt pour le Forum PHP 2018 ;)