Des frites, du PHP et de la bière

Des frites, du PHP et de la bière

Eh oui, vous l’aurez deviné, c’est à Lille que s’est tenu l’AFUP Day 2022 ! Voici ce que nous en avons retenu, entre un welsh et une carbonade.

Autour de PHP

PHP 8.1 en détail – Damien SEGUY

Quoi de mieux pour démarrer la journée qu’un talk sur le PHP ? Damien nous parle de cette nouvelle version, sortie en novembre dernier. Nous avons fait un petit tour des nouveautés :

  • de nouvelles fonctions s’ajoutent aux milliers déjà existantes ;
  • une nouvelle manière de typer arrive avec les Enums !
  • les Fibers qui permettent d’interrompre et de relancer une méthode pendant son exécution ;
  • ajout du type de retour never qui indique qu’une fonction ne retourne jamais, à ne pas confondre avec void ! S’utilise par exemple si la fonction se termine avec un exit() ou une Exception ;
  • la possibilité de rendre une constante finale ;
  • le mot clé readonly qui permet d’empêcher l’écriture dans une propriété après une première initialisation de celle-ci dans le constructeur. Petite subtilité ici : c’est la référence qui est stockée, donc si cette propriété est un objet, il est toujours possible d’accéder et d’écraser les attributs de ce dernier ;
  • De nouveaux types d’intersection : & qui permet de demander à un type d’être l’ensemble des types déclarés (par exemple Countable&Traversable pour un tableau).

Damien nous conseille de mettre en place de l’analyse statique pour réduire les incompatibilités avec les versions de PHP qui arrivent, afin de pouvoir migrer plus facilement. Il nous conseille aussi de nous renseigner régulièrement, d’adopter des concepts même s’ils ne sont pas encore sortis dans la version de PHP que nous utilisons ; et de proposer les futures nouveautés !

On a hâte de connaître les nouveautés de PHP 8.2 qui sort le 24 Novembre !

Et si on étendait SQL avec du PHP ? – Antoine BLUCHET

On commence par parler de Doctrine : sorti en 2008 (il y a 14 ans !), sa DBAL permet d’abstraire la connexion et la communication avec nos bases de données. Les inconvénients ? Beaucoup de fonctions SQL ne sont pas supportées et l’abstraction est peut être un peu grosse pour implémenter certaines requêtes, on pense notamment aux Window Functions ou aux techniques pour requêter récursivement en SQL, avec une CTE par exemple, pour récupérer des données sous forme d’arbre. Nous sommes bien d’accord que dans ces cas-là, il est préférable d’exécuter du SQL pur plutôt que du DQL !

C’est là qu’intervient PHP Extended SQL, ou esql, une librairie PHP développée par Antoine : une véritable boîte à outils qui permet l’utilisation d’une syntaxe proche du SQL mais grandement simplifiée et plus lisible humainement.

Cette librairie qui se base sur la metadata DQL fait un mapping automatique, grâce à l’AutoMapper de Jane ou au Serializer de Symfony. Nous adorons !

Cecil, mon générateur de site statique – Arnaud LIGNY

Il y a 9 ans, Arnaud a eu une idée de side project : un générateur de site web rapide, avec un moteur de template intuitif et bien documenté tout trouvé : Twig ; et qui distingue le contenu de la mise en forme, c’est à dire que templates et contenus – écrits en markdown – ne se mélangent pas.

Donc avec un input simple à base de markdown + Twig + un peu de config, on obtient un site Web très complet avec sitemap, navigation, … Et son utilisation n’est pas réservée aux « techos », Cecil est bien accessible à tous !

En 2013, un premier prototype sort, en même temps que la 1.0.0 de Jekyll. Il ne s’agit « que » d’un side-project, mais sa création n’a rien à envier à un projet professionnel : Arnaud a pris le temps de penser à la conception, à l’architecture, qui sont des aspects souvent délaissés dans les projets personnels. Il a également pris soin de respecter les standards et a bien sûr fait des tests avec PHPUnit – quelle rigueur ! 👏

Et s’ajoute à celà une bonne documentation : simple, pragmatique, qui ne s’attarde pas sur les fonctionnalités « whaou ».

On retient notamment que se servir d’un outil qu’on développe soi-même amène à le faire évoluer de manière pratique et pertinente.

De la technique 🧑‍🔬

De l’humain à l’ordinateur, ou découvrir le sens d’un texte avec Elasticsearch. – Mathias ARLAUD

Vous êtes-vous déjà demandé ce qui se trouve sous le capot du système de scoring d’Elasticsearch ? Mathias, oui, et il lève habilement le voile sur le mystère de cette équation. 🧙‍♂️

Sum equation

Terrifiant n’est-ce pas ? Pour exprimer ça plus simplement, pour l’ensemble des termes d’une requête, on va regarder combien de fois ils apparaissent dans nos documents (Term Frequency), multiplier par la pertinence (nombre d’occurrences du terme recherché dans le doc / nombre d’occurrences de ce terme dans l’ensemble des documents : par exemple, le mot de liaison « de » aurait une pertinence bien plus faible que le terme « Elasticsearch »), puis multiplier ce résultat par le Coordination factor qui est obtenu par rapport au nombre de mots de la requête qui apparaissent dans les résultats.

On obtient de cette manière un premier score, mais… Ça n’est pas si simple, finalement le sens de la recherche n’est pas respecté dans les résultats. Peut-on aller plus loin ? Evidemment !

Grâce aux nombreux filtres fournis par Elasticsearch (tokenizers, token filters, …) il est possible de « nettoyer » un texte aux nombreuses nuances humaines afin d’en tirer un sens pour la machine. On peut même mettre du sens sur des Emojis !

En ré-appliquant la méthode vue plus haut sur ce texte nettoyé, on obtient un score réellement pertinent.

Note de l’équipe : L’algorithme de scoring présenté n’est pas exactement celui qui est utilisé aujourd’hui dans Elasticsearch ; en effet depuis la version 5, le moteur de recherche se repose sur Okapi BM25 ; qui n’est pas très éloigné mais qui n’a pas besoin de « Coordination factor » et qui utilise aussi la taille des champs matchés en critère supplémentaire. Nous en parlons dans notre formation Elasticsearch ! Et cela n’enlève rien à la qualité pédagogique de la présentation de Mathias.

Le Prométhée moderne : embarquer PHP dans Go – Kévin DUNGLAS

Go est très utilisé dans le développement de plein de gros outils comme Kubernetes, Docker ou encore Caddy (un serveur Web concurrent à Apache ou Nginx), ainsi que le CLI de Symfony.

Une SAPI fait l’interface entre le monde extérieur et notre application (PHP, Go, …). On peut nommer FPM, CGI ou mod_php parmi les SAPI les plus connues.

Mais Kévin voudrait faire mieux que ces SAPIs vieillissantes ou demandant un service externe. Il décide donc de créer une SAPI en Go, et nous présente FrankenPHP 🧟

Celui-ci a pour objectif d’être compatible avec tout ce qui utilise net/http, comme par exemple, les précédemment cités Caddy, Symfony CLI ou encore Traefik.

Ok, et sous le capot, c’est comment ? PHP est un langage interprété, et son interpréteur est écrit en C. Il existe une SAPI PHP « embed » qui permet d’utiliser le moteur PHP dans n’importe quel programme C, et qu’on peut utiliser en seulement quelques lignes ! Et avec Cgo, on peut utiliser du code C dans Go – leur compatibilité permettant de les compiler ensemble – et embarquer PHP comme une librairie C.

Il ne reste plus qu’à faire un bridge entre Cgo et net/http afin de pouvoir exécuter du PHP lors d’une requête HTTP faite au serveur Web en Go.

En revanche, le threading en C & Go a posé des problèmes rendant l’utilisation de la SAPI PHP « embed » compliquée, parce qu’elle est faite pour fonctionner sans concurrence ; heureusement, Go utilise des « goroutines » qui ne sont pas vraiment des threads mais qui peuvent s’exécuter en parallèle et se synchroniser.

Méthodologie et retours d’expérience

Les subtilités du e-commerce à la française – David BUROS

Les copains de chez Monsieur Biz étaient présents aussi ! Expert ecommerce, notamment avec Sylius, David nous a montré des habitudes ecommerce assez marrantes et variée d’un pays à l’autre, ne serait-ce qu’en Europe, puis a vraiment concentré son talks sur les spécificités en France.

La plus importante est évidemment le fameux affichage des prix HT et TTC. On remarque par exemple que le prix total d’un panier diffère si on additionne tous les prix TTC ou bien si on calcule celui-ci en fonction du total HT. Les réductions peuvent-elles aussi poser de nombreux problèmes. Il existe également des éco-taxes (ou éco-participation etc) : il s’agit d’un prix fixé par l’entreprise qui se chargera de recycler l’article à la fin de son cycle de vie. Et attention ici : une éco-taxe sera elle-même taxée 🤯

Et Sylius, qui se veut international, a une super solution pour gérer ces spécificités propres d’un pays à l’autre : une table « ajustements » qui contient des calculs qui vendront s’appliquer au panier ; plutôt que d’avoir une colonne par type de prix dans sa table produit. Cela permet de faire les calculs que l’on veut et de revenir aisément à une valeur initiale sans taxes ni réductions.

Guide pratique d’une méthodologie UX pour la conception de features – Jessica MARTEL

Jessica nous détaille les étapes indispensables de la conception de features et d’UX pour un nouveau projet. On retiendra notamment l’indispensable présence des quatre corps de métier : Product Owner ou Product Manager, Dev, Designer et des personnes ayant une connaissance du métier forte.

Le Product Concept consiste à définir les étapes de l’application.

Ensuite, l’UX research, un bench, et des entretiens avec des utilisateurs permettront de définir la User Journey, ainsi que les features qu’on veut voir ou celles dont on ne veut surtout pas.

Puis place aux workflows !

Et enfin, c’est le moment des specs fonctionnelles, de la définition de lots avec l’équipe technique et des choix de design.

Ce qui ressort vraiment de cette conférence à nos yeux : L’importance de voir les équipes bosser ensemble, afin que tout le monde soit sur la même longueur d’ondes. Même si cette démarche peut prendre du temps, elle en vaut le coup car ce temps est largement rattrapé puisqu’on ne fait plus le yoyo à coup de « ce ticket n’est pas pour moi, je le réassigne » ou « mais en fait je peux pas commencer cette feature puisqu’elle se base sur telle autre qui n’est pas développée » .

Pourquoi vous n’attirez et ne retiendrez pas les femmes dans vos équipes tech. – Marcy CHAROLLOIS

C’est avec la volonté d’instruire et d’offrir des solutions, sans incriminer, que Marcy nous parle de la femme de 2022, et de comment elle se sent dans des milieux techs. C’est pas encore la joie puisque de nombreuses femmes se lancent à leur compte car elles ne se sentent pas écoutées, ou se reconvertissent car elles ne se sentent pas légitimes. Des projets montés par des femmes auront plus de difficultés à trouver un financement que des projets montés par un homme et une femme. Et beaucoup d’autres exemples existent.

Pour faire très simple, dans un groupe, les individus vont préférer et intérioriser un certain style de vie, et se regroupent autour de certaines similitudes, ce qui crée un groupe majoritaire. Ce groupe va également créer des biais de confirmation, un effet de halo ou encore des biais de sympathie ou d’antipathie. Et cela ne laisse pas beaucoup de place à l’inclusion de personnes d’un autre genre, racisées, non valides, d’une autre religion, etc.

À travers une conf très interactive où le public a beaucoup participé, on a vu les Do et Don’t de l’intégration des autres au sein de son équipe, et il suffit souvent simplement d’écouter et de s’intéresser aux autres pour mieux les inclure.

Merci Marcy !

Et merci Lille ! 🍟

Dans l’ensemble, c’était vraiment une super édition, très complète avec des talks passionnants et nous avons rencontré et retrouvé un public adorable. Merci à l’orga, aux speakers, et à la communauté 💛

blog comments powered by Disqus