Symfony 4.4 LTS : HttpClient, Mailer, Messenger et les fonctionnalités qui ont tenu bon

Symfony 4.4 et 5.0 sont tous les deux sortis le 21 novembre 2019. La 4.4 est la LTS : même ensemble de fonctionnalités que la 5.0, couche de dépréciation intégrée, et une longue fenêtre de support pour les équipes qui ne peuvent pas suivre chaque release. La fonctionnalité qui mérite d’être mise en avant est arrivée en 4.2 et a mûri tout au long des 4.3 et 4.4 : HttpClient. ...

4 janvier 2020 · 8 min · Guillaume Delré

D'un capteur à 10€ à un tableau de bord Home Assistant avec Raspberry Pi et MQTT

La question était simple : quelle est la température et l’humidité dans mon bureau à domicile en ce moment ? Pas la météo dehors, pas une moyenne de ville — les conditions réelles dans la pièce où je passe la majeure partie de ma journée. Ouvrir une application météo pour ça semblait mal. Un Raspberry Pi tournait déjà sur l’étagère. Un capteur BME280 coûte environ 10€. Ça aurait dû être un projet de week-end. ...

17 novembre 2019 · 4 min · Guillaume Delré

PHP 7.3 : des petites victoires qui s'accumulent

PHP 7.3 est sorti le 6 décembre. Pas de fonctionnalité phare. C’est une collection d’améliorations du quotidien qui, individuellement, semblent mineures, mais qui ensemble rendent le travail de tous les jours nettement moins agaçant. Heredoc et nowdoc flexibles Jusqu’à 7.3, le marqueur de fermeture d’un heredoc devait être en colonne zéro. Ce qui forçait une désindentation maladroite dans du code par ailleurs bien formaté : // avant $html = <<<HTML <div> <p>Hello</p> </div> HTML; // devait être en colonne 0, moche // après $html = <<<HTML <div> <p>Hello</p> </div> HTML; Le marqueur de fermeture peut désormais être indenté pour correspondre au code environnant, et cette indentation est retirée du contenu. Ça paraît cosmétique. Ce n’est pas le cas. Les heredocs dans des contextes imbriqués (méthodes de classe, conditions) étaient visuellement dissonants avant. Maintenant ils s’intègrent. ...

20 janvier 2019 · 6 min · Guillaume Delré

PHP 7.2 : adieu mcrypt, bonjour sodium

PHP 7.2 est sorti le 30 novembre. La grande nouvelle n’est pas une nouvelle fonctionnalité, c’est une suppression. mcrypt disparaît. C’est une bonne chose, même si ça ne le semble pas quand c’est vous qui devez faire la migration. Le problème mcrypt mcrypt n’est plus maintenu depuis 2007. Plus d’une décennie de stagnation dans une bibliothèque cryptographique. Dépréciée en 7.1, elle est retirée définitivement en 7.2. Son remplaçant : sodium, désormais intégré comme extension core. ...

14 janvier 2018 · 7 min · Guillaume Delré

Symfony 4.0 : Flex et la fin de la Standard Edition

Symfony 4.0 est sorti le 30 novembre 2017, le même jour que la 3.4. La date de sortie commune est à peu près la seule chose qu’ils ont en commun. 4.0, c’est une philosophie différente. La Symfony Standard Edition, ce point de départ monolithique qui embarquait tout et vous laissait retirer ce dont vous n’aviez pas besoin, a disparu. À sa place : un microframework qui grandit. Flex Symfony Flex est un plugin Composer qui change la façon dont on installe les packages Symfony. Avant Flex, ajouter un bundle impliquait : l’installer via Composer, l’enregistrer dans AppKernel.php, ajouter la config dans config/, mettre à jour le routing si nécessaire. Quatre étapes, toutes manuelles. ...

14 janvier 2018 · 5 min · Guillaume Delré

Symfony 3.4 LTS : le pont qu'on a vraiment envie de traverser

Symfony 3.4 et 4.0 sont sortis le même jour : le 30 novembre 2017. Ce n’est pas une coïncidence, c’est la stratégie. 3.4 n’est pas une version de fonctionnalités. Elle livre exactement les mêmes fonctionnalités que 3.3, plus chaque avertissement de dépréciation que 4.0 va rendre obligatoire. Son seul objectif est d’être l’outil de migration : monter de 3.3 à 3.4, corriger ce qui apparaît dans les logs, puis passer à 4.0 proprement. ...

12 janvier 2018 · 7 min · Guillaume Delré

Symfony 3.3 : quand les services ont arrêté d'être un cauchemar de configuration

Symfony 3.3 est sorti le 29 mai. C’est la version qui a changé ma façon de penser la configuration des services. Avec le recul, c’était une prévisualisation de ce que 4.0 allait adopter comme nouveau standard. Le problème de l’autowiring Avant 3.3, le DI de Symfony était puissant mais verbeux. Chaque service devait être déclaré explicitement dans services.yml avec ses arguments listés. L’autowiring existait depuis 3.1, mais il était opt-in par service et avait assez de cas limites pour vous mordre. Les équipes écrivaient soit des montagnes de YAML, soit s’appuyaient sur des bundles tiers pour réduire le bruit. ...

13 juillet 2017 · 6 min · Guillaume Delré

Contrôler un lance-missiles USB en HTTP avec FastAPI et Docker

La règle était simple : celui qui casse le build CI offre le café à l’équipe. Ça a marché un moment. Puis quelqu’un a proposé qu’on ait un retour plus immédiat. Quelque chose de physique. Quelque chose qui tire. Un Dream Cheeky Thunder a atterri sur un bureau peu après. Quatre missiles en mousse, un câble USB, et un consensus d’équipe très clair : le brancher au cluster, le câbler au pipeline de build, et laisser le CI décider qui mérite une volée. ...

21 février 2017 · 4 min · Guillaume Delré

Forcer l'UTC dans Doctrine sans toucher aux entités

Un timestamp qui revient de la base de données avec une heure de décalage. Pas à chaque fois. Uniquement quand le serveur de dev tourne en Europe/Paris et que la CI tourne en UTC. Le genre de bug qui disparaît quand on le cherche et qui revient en production un vendredi soir. Le problème n’est pas dans la logique métier. Il est dans ce que Doctrine fait discrètement avec les dates. ...

19 février 2017 · 4 min · Guillaume Delré

PHP 7.1 : un système de types plus rigoureux et les petits gains autour

PHP 7.1 est sorti le 1er décembre. Pas de titre “2x plus rapide”, pas de réécriture du moteur. Il comble les lacunes que la 7.0 avait laissées dans le système de types, et ces lacunes étaient vraiment agaçantes. Les types nullables La 7.0 permettait de déclarer string $name comme type de paramètre. Ce qu’elle ne permettait pas, c’était de dire “ça peut aussi être null”. On devait soit abandonner le type hint complètement, soit bricoler autour. La 7.1 ajoute le préfixe ? : ...

15 janvier 2017 · 4 min · Guillaume Delré