Php Tour 2016

PHPTour 2016 – Jour 1

Par SynoLab le 23 mai 2016

 Lecture 10 minutes

Le PHPTour de l'AFUP, rendez-vous annuel des amoureux de PHP avait lieux ces 23 et 24 Mai, à Clermont-Ferrand.

C'était l'occasion de découvrir au redécouvrir de très nombreux aspects de notre passion, au fil des conférences. Nous avons essayé (Sylvain, Lilian, Cédric et Damien) de les couvrir au maximum afin de pouvoir vous les retranscrire au mieux.

php-tour-start

Grown-up MongoDB: Schema Design for Optimal Performance

Derick Rethans @derickr

Cette présentation autour de la notion de bases de données relationnelles par rapport aux bases de données schema-less a commencé par une analogie lexicale pour mieux comprendre le vocabulaire utilisé (Document vs Row, Collection vs Table/View, etc). Dans un deuxième temps Derick nous a donné quelques bonnes pratiques comme par exemple éviter les documents totalement différents en termes de structure dans une même collection. En effet, cela peut se révéler difficilement exploitable lorsque l'on souhaite effectuer une recherche sur l’ensemble des documents. Enfin cela c’est terminé avec une partie propre à MongoDB et notamment les APIs de la librairie PHP. Nours avons pu aborder, entre autres, les différents opérateurs possibles lors d’un appel à UpdateOne comme $set pour ajouter un attribut à un document. Nous avons également abordé $increment pour incrémenter une valeur dans un document, etc. Ou encore la nécessiter de mettre des slugs uniquement sur les documents qu’on veut mettre à jour. Enfin quelques nouveautés de MongoDB 3.2 nous ont été présentées comme les validateurs permettant de vérifier les formats de certains attributs d’un document lors de sa création ou sa mise à jour. Enfin Derick nous a rappeler les bonnes pratiques d'analyse de requête via le EXPLAIN.

PHP Meminfo ou la chasse aux memory leaks

Benoit Jacquemont @BJacquemont

Cette conférence très intéressante a commencé par une explication du traitement de la mémoire par PHP, et en particulier, son nettoyage. Benoit nous a d'abord parlé du Reference Counter. Ce dernier a pour but de compter les références aux objets et tableaux, et les effacer de la mémoire si le compte est à zéro. Cependant, le Reference Counter a ses limites dans le cadre des références Cycliques. C'est pourquoi, le Garbage Collector a été implanté. Il ne sert d'ailleurs qu'à pallier à ce manque. Une fois ce postulat établi, Benoit a insisté sur la complexité que pouvait représenter la gestion des Memory Leak dans ces conditions. Il nous a notamment exposé de nombreux scripts de tests présentant des fuites mémoire. Le problème mis en évidence était l'incapacité, sans outil viable, de tracer correctement les références mémoire à un objet. En effet, certains objets peuvent nous paraître "sans référence", mais dans le cadre de frameworks comme Symfony ou Zend, il peut être difficile d'en avoir la certitude. Heureusement Benoit nous propose un outil de sa conception, et permettant justement de tracer l'état des références en mémoire : PHPMeminfo (https://github.com/BitOne/php-meminfo). Il s'agit d'une extension PHP (surpuissante) répondant parfaitement à ce besoin.

Migrating your Database with Phinx

Rob Morgan @_rjm_ (http://www.slideshare.net/RobMorgan14/php-tour-2016-phinx-presentation)

Rob a commencé sa présentation par un rappel sur l’historique de Phinx qui existe depuis 2012 et compte maintenant plus de 1.2 millions de download. Phinx supporte PHP 5.4 à PHP7 sur 4 gestionnaires de base de données (MySQL, PostgreSQL, SQLite et SQL Server) ainsi que MySQL sur HHVM. Que fait Phinx ? Il permet, au travers de ligne de commande ou du code (utilisable via un Phar ou du composer) de créer ou mettre à jour des schémas de base de donnée ainsi que de l’alimentation de donnée de donnée. Une des particuliarité de Phinx est la notion de rollback qui permet d'annuler une mise à jour de schéma par exemple. Phinx peut aussi être exécuté via un conteneur Docker. De nouveaux supports de base de données devraient arriver dans les prochaines versions.

En route vers le multi-tâche !

Julien Bianchi @jubianchi (https://speakerdeck.com/jubianchi/en-route-vers-le-multi-tache)

PHP en Multi-tâche ? C'est possible ! Julien nous explique ses investigations autour de PHP et du multi-tâche. Il nous démontre la complexité de la plupart des solutions existantes. Qui ne s'est jamais arraché les cheveux sur la concurrence entre deux Workers ? Comment attendre un autre processus ? Julien met en évidence l'utilisation des générateurs PHP, et surtout, nous présente "async generator" (https://github.com/jubianchi/async-generator) qui permet d'implanter du multitâche de manière enfantine :

Nous n'avons donc plus d'excuse : Le multi-tâche est à portée de main grâce à cette superbe présentation.

Lancez-vous dans l'open source !

Matthieu Napoli @matthieunapoli (http://mnapoli.fr/presentations/phptour-open-source/)

Très bon retour d’expérience de Matthieu par rapport à ses différentes actions autours de librairies et applications open source. Cela nous a été présenté suivant 2 axes. Tout d’abord « Mon projet ne marche pas ». Dans ce cadre, il faut surtout s’axer sur une certaine structuration de son projet (d’ailleurs Matthieu met à disposition sur son compte Github un modèle de projet). Puis il faut trouver des utilisateurs et pour cela il faut communiquer dans les différentes communautés Open Source quitte à recevoir des commentaires pas toujours agréables. Cependant la réaction montre l’intérêt. De là on passe donc au deuxième problème « Mon projet marche ». A ce moment là il faut trouver rapidement des contributeurs et des relais pour traiter les demandes, le support, les améliorations, etc. afin surtout d’éviter le burnout d’une personne gérant seule sont projet, avoir des gardes fous afin de ne pas tout accepter en terme de contribution, etc. Bref lancez vous !

On a tué mon agilité !

Frédéric Bouchery @FredBouchery (http://fr.slideshare.net/FredericBouchery/on-a-tu-mon-agilit-phptour-2016)

Frédéric nous a fait part de son retour d’expérience dans la croissance de CCM Benchmark. Par exemple le galvaudage du mot « agilité » qui est apparut du fait du buzz autour de ce mot. Il nous a aussi parlé de la peur voir l’ignorance du changement : Pourquoi est-ce qu’on fait ça ? Car on a toujours fait comme ça ! Un des mots clés qui ressort est qu’il faut voir agilité au sens premier du terme c’est-à-dire l’adaptation.

Arrêtons de perdre du temps à débuguer !

Nastasia Saby @saby_nastasia

Il a été question ici plus de process que d’outillage. En effet Nastasia a évoqué ses expériences en TMA et en support sur des projets clients. Cela lui a permit d’aller au fond des choses et de gratter pour comprendre pourquoi un comportement erratique avait lieu. L’idée est qu’en débuggant on travaille sur le code des autres. Cela permet de prendre du recul et d'apprendre pour notre propre code. Un de ses leitmotiv en ressort : vous êtes priez de laisser ce code plus propre que quand vous êtes arrivé ! Car l’autre (celui/celle qui a codé initialement) c’est moi demain, lorsque je serais en mode projet et non plus en TMA/debug. Il a aussi été question d’échange avec le client pour bien comprendre son bug afin de le reproduire pour ensuite le fixer. Pour cela Nastasia se sert de la méthode des 4 couleurs qui est une méthode de communication pour adapter les échanges en fonction du profil d’une personne.

How I learned to stop worrying and live regular expressions

Jordi Boggiano @seldaek (https://joind.in/event/php-uk-conference/how-i-learned-to-stop-worrying-and-love-regular-expressions)

"q(?=u)it" matche t-il avec "quit" ?

Attention : Réservé à un public averti ! La conférence de Jordi nous a fait (re)découvrir les arcanes des expressions régulières. Jordi a abordé tous les aspects des expressions régulières :
* Les classes de caractères (ex : [a-z])
* Les raccourcis de classes (ex : \w)
* Les métacaractères (ex : .)
* Les sous patterns et les altérations (ex : ([a-z]))
* Les quantifieurs (ex : ?)
* Les ancres (ex : ^)
* Les conditions
* Les modifiers (ex : i)

Mais il est allé plus loin et nous a également proposé un aperçu du traitement interne au moteur, afin de comprendre comment il se comportait en profondeur.

Si les expressions régulières vous effraient, n'hésitez pas à jeter un oeuil à son slide très instructif. A titre personnel, il est devenu mon "pense-bête" sur ce sujet.

Wallabag, comment on a migré vers Symfony3

Nicolas Lœuillet, Jeremy Benoist (http://fr.slideshare.net/nicosomb/wallabag-comment-on-a-migre-vers-symfony3)

Petit historique de Wallabag, né de à la fermeture de GoogleReader en mode projet perso codé « à l’ancienne ». Puis le succès est arrivé un peut à l’improviste. Il a fallu motiver des contributeurs. L’architecture a donc été revu pour passé d’un code framework-less à du Symfony 3. Cette refonte a fait l’objet de nombreuse micro release qui a permis d’avoir un retour global ainsi que d'augmenter le nombre de contributeurs. La contribution s'est donc accélérée : nombre de contributeurs croissant, facilité d’utilisation de librairie moderne comme RulerZ, graby pour l’extraction de contenu. En conséquence, cela c’est complexifié en terme d’utilisation. En effet dans les premières versions il fallait faire un unzip des sources puis quelques clics dans un installeur web là où maintenant il faut un accès pour lancer un composer.

Mettre en production plus rapidement

Nicolas Clabaud (http://lrqdo.github.io/presentations/phptour-2016/)

Retour d’expérience de la Ruche Qui Dit Oui, passé d’une livraison « projet » tout les 3 mois à 4 livraisons par jour. Pour cela ils ont décolérée entre autre la livraison du code avec la livraison de la fonctionnalité via les toggle features. Il s’agit de livrer le code et de le rendre activable (tout ou partie) via un écran d’administration. Une livraison demandant un changement de schéma par exemple va passer par une étape ou les deux schémas cohabitent jusqu’à validation totale de la fonctionnalité.

Le jeu vidéo à la rescousse du web

Francois Zaninotto

Rien de tel qu’un talk de François Zaninotto pour finir une journée déjà bien remplie ! Après un petit aparté sur l’actualité, François a comparé le monde du jeu vidéo et celui du web afin d’en montrer les similarités et les changements technologiques ! On peut noter par exemple le « sprite » en vidéo qui est le rafraichissement d’une seule partie de l’écran. C’est quelque chose de présent dans les jeux vidéos depuis les années 80/90 alors qu’il a fallut attendre les années 2000 pour voir cela côté web avec l’ajax, ou encore le fait que le contenu du jeu soit stocké en local et non sur un serveur. Beaucoup de ces problématiques se déportent côté client et donc entre autre en javascript. François lance la question : PHP ne serait-il pas destiné à se "réduire" à la presentation d'API dans le futur ?

GIF