Hebdomadaire Shaarli
Semaine 15 (April 7, 2025)
L'auteur montre comment il a mis en place son système de recommandation à partir des statistiques de visite de son site - le tout basé sur Symfony
L'auteur montre comment se prémunir des attaques XSS dans Symfony : pour les templates Twig en les échappant systématiquement, pour les entrées utilisateur en les "sanitizant" et en utilisant une politique de sécurité de contenu (CSP)
L'auteur explique que l'apprentissage est aussi une finalité de la vie, et pas seulement un moyen utile pour subsister. Par contre, la compétition, la peur d'échouer, etc. peuvent décourager. Il propose donc des moyens pratiques pour faciliter l'apprentissage.
L'auteur se place dans le contexte d'une application Symfony avec des tests PHPUnit et en fournissant des jeux de données via Foundry. Il montre l'utilisation du trait ClockAwareTrait et composant Clock. Enfin, il rappelle que PHP-FIG a proposé la PSR-20 Clock qui dispose de plusieurs implémentations, dont le composant Clock.
L'auteur présente une méthode pour l'apprentissage. Dans cet article, il explique le concept de "flow", concept qui est à la base d'un apprentissage réussi : ni trop facile, ni trop dur, mais suffisamment challengeant pour que ça serve à quelque chose.
Les conseils sont excellents... et marchent aussi pour les adultes ^^
C'est juste magnifique
Ploum illustre par divers exemples l'impact négatif de l'IA sur nos vies : souvenir, vérité, apprentissage, confiance en soi, connaissance, personnalité, etc. Il conclut par une invitation à découvrir Gemini via l'agrégateur Planet Gemini France
L'auteur présente brièvement ce qu'est la "screaming architecture" et ses avantages
L'auteur distingue 2 sortes de personnes à propos de l'exécution des projets : ceux qui en commencent beaucoup, mais en finissent peu (les "starters"), et ceux qui finissent tout le temps leurs projets (les "finishers") même s'ils en commencent peu. Les 3 étapes qui suivent permettent aux starters d'achever plus de projets :
- être spécifique -> le but doit être le plus clair possible
- être bref -> quitte à découper les projets au long cours en étapes courtes
- ne faire qu'un seul projet à la fois -> ne pas s'éparpiller
Voici la liste des conférences présentées lors du SymfonyLive Paris 2025, avec un résumé pour chacune :
-
Keynote de Fabien Potencier :
- Fabien a retracé l'histoire de l'initiative DX de Symfony et a démontré la flexibilité de Symfony avec des exemples comme "Symfony Hello" et "Symfony Solo".
-
Le composant Symfony Mapper – Antoine Bluchet :
- Présentation du nouveau composant ObjectMapper de Symfony, qui facilite la transformation de données entre différentes structures dans les applications Symfony.
-
API Platform sans Doctrine – Jérôme Tamarelle :
- Jérôme a montré comment optimiser les performances d'API Platform en utilisant des fonctionnalités JSON de PostgreSQL pour réduire le nombre de requêtes SQL.
-
Développer avec API Platform 4 – Mathias Arlaud :
- Mathias a expliqué les évolutions d'API Platform, notamment l'utilisation de DTO et la découplage du modèle de données en base et la représentation en API.
-
Passkeys pour une authentification fluide et sécurisée – Rémi Janot :
- Rémi a présenté WebAuthn, une API permettant l'authentification sans mot de passe traditionnel, en utilisant des authentificateurs comme les lecteurs d'empreintes digitales.
-
Rôles & permissions : développer une marque blanche avec du feature flipping – Florian Bogey :
- Florian a détaillé l'utilisation des rôles et permissions dans Symfony pour gérer une application multi-clients en marque blanche, avec un système de feature flipping.
-
Symfony UX : Points forts de 2024 et perspectives d’avenir – Simon André :
- Simon a analysé l'adoption des composants UX par la communauté Symfony et a présenté les futures améliorations et changements.
-
Atteindre la qualité d’une SPA avec HTMX et Twig – Damien Alexandre :
- Damien a montré comment utiliser HTMX pour créer des applications web dynamiques et réactives sans trop de JavaScript, en utilisant des attributs dans Twig.
-
Développer plus vite avec FrankenPHP – Kévin Dunglas :
- Kévin a présenté FrankenPHP, une combinaison performante d'un runtime PHP, d'un serveur Web et d'un serveur SSE, pour améliorer les performances de développement.
-
Asynchrone avec Symfony Messenger et Mercure – Grégoire Pineau :
- Grégoire a expliqué comment combiner Symfony Messenger et Mercure pour des traitements asynchrones et des notifications en temps réel, améliorant ainsi la performance et l'expérience utilisateur.
-
Du Lego de composants pour un bundle Gotenberg – Hubert Lenoir, Adrien Roches :
- Les conférenciers ont présenté l'utilisation de Gotenberg pour la génération de PDF et ont mis en lumière des fonctionnalités avancées de PHP et Symfony.
-
Tirez profit de Messenger pour améliorer votre architecture – Tugdual Saunier :
- Tugdual a montré comment utiliser le composant Messenger en synchrone pour améliorer l'architecture d'une application, en utilisant des messages pour faire circuler des appels à des services.
-
Keynote – Nicolas Grekas :
- Nicolas a présenté les nouvelles fonctionnalités à venir dans Symfony, notamment dans les versions 7.4 (LTS) et 8, comme le support de HTTP/3 dans le HttpClient.
Ces conférences ont couvert divers aspects de Symfony, de l'amélioration des performances à l'optimisation de l'architecture, en passant par la sécurité et les nouvelles fonctionnalités.
L'auteur montre, avec un exemple simple, comment utiliser Symfony Messenger pour découpler son code (traitement de statistiques de navigation)
L'auteur explique à quoi servent les DTOs et comment les utiliser dans le contexte d'une application Symfony en particulier.
Omni est une application qui permet de gérer des machines Talos sur diverses plateformes, facilitant la création et la gestion de clusters Kubernetes. Elle utilise un réseau VPN Wireguard pour authentifier et piloter les machines Talos, simplifiant ainsi l'infrastructure Kubernetes. Omni permet également de créer des templates de clusters pour automatiser le déploiement de machines virtuelles, notamment avec Kubevirt. Cependant, Omni présente des limitations, notamment l'absence de gestion automatisée des infrastructures cloud. L'intégration de Kubevirt permet de créer des VMs sur un cluster Kubernetes, mais nécessite une configuration spécifique, incluant l'installation de Kubevirt, CDI, et LocalPathProvisioner.
Il est possible d'appliquer des styles CSS à SVG. Il y a 3 cas principaux : SVG inline (facile à manipuler en CSS), SVG externe (limité), et SVG via
Je ne savais pas qu'on pouvait rooter une imprimante 3d :-)
Une réponse et un complément à l'excellent billet de Ploum sur le même sujet
Les 5 types de programmes en ligne de commande : REPL, TUI, programmes non interactifs (comme grep, git, etc.), les wrappers (ssh, env, tmux, etc.) et les autres
L'autrice explique comment les quitter
L'auteur fait un retour d'expérience sur le scraping totalement abusif de son contenu par des entreprises spécialisées dans l'IA : au delà de la monétisation probable de son contenu dans son dos, ces entreprises rendent indisponibles sa forge logicielle par ce que l'on peut qualifier d'attaque DDoS... d'où son coup de gueule. Il donne quelques conseils pour pallier ce souci.
L'article explique comment migrer des colonnes de type array
vers json
avec Doctrine, suite à la dépréciation des types array
et object
dans la version 3 de Doctrine. Il propose une méthode en plusieurs étapes : créer un type Doctrine hybride pour gérer les deux formats, migrer les données sans interrompre le déploiement, et finalement supprimer le type hybride une fois la migration terminée. Le processus permet de migrer les données de manière efficace et sans temps d'arrêt.
Il s'agit de portions de textes ajoutés à une URL utilisés par des systèmes de tracking (Google Analytics par exemple) à des fins d'analyse : d'où vient le trafic, le type de canal, etc.
Une belle déclaration d'amour au client HTTP de Symfony :-) Plus sérieusement, l'auteur montre comment s'en servir et quelques cas très intéressants comme des requêtes asynchrones
L'auteur montre comment créer des règles métier personnalisées avec le Validator de Symfony
sensio/framework-extra-bundle est déprécié et est remplacé par l'attribut natif de Symfony : #[IsGranted()]
L'auteur montre l'utilisation de Rector en plusieurs étapes pour faire la migration.
Pour contrer les attaques DDoS des entreprises de l'IA, l'auteur a commencé par bannir des IP en fonction du User Agent... mais ça comporte des risques de faux positifs assez importants. Quelqu'un lui a parlé de Anubis, un projet open source qui permet d'ajouter une vérification de type "Proof of Work" afin de garantir que le visiteur n'est pas un robot. L'auteur montre comment l'installer.
La KubeCon 2025 a souligné l'importance de la sécurité dans Kubernetes avec des solutions innovantes :
- Policy as Code : Automatisation de la conformité.
- Sécurité Réseau : Avancées avec Cilium et Hubble.
- Kyverno : Évolutions pour une gestion des politiques améliorée.
Ces innovations visent à sécuriser et rendre conformes les clusters Kubernetes.
L'auteur imagine comment a été décidé l'ajout d'écran de veille Oqee sur la Freebox... et c'est triste.
Pour réussir dans l'apprentissage, Scott H. Young souligne l'importance de comprendre à la fois les éléments spécifiques d'un sujet et leur organisation globale, un processus appelé meta-learning. Ce dernier permet de créer une "carte" mentale qui guide l'apprentissage de manière structurée, en répondant à trois questions clés : comment les experts organisent-ils le domaine, quels sont les éléments fondamentaux à apprendre, et comment ces éléments s'intègrent-ils dans des compétences plus larges. En utilisant des ressources comme Google ou des outils d'IA, il est possible d'obtenir des points de départ pour comprendre ces structures, facilitant ainsi un apprentissage plus efficace et ciblé.
L'auteur explique comment il a mené un audit de sécurité dans son entreprise : récupération de la liste des utilisateurs, constitution d'un dictionnaire, préparation d'une machine de calcul, cassage du maximum de mots de passe, et information auprès des personnes concernées. Il en profite pour rappeler quelques conseils de sécurité sur les mots de passe.
L'article explique comment transformer des blocs de code if-else
en utilisant le patron Strategy avec Symfony pour éviter un code complexe et difficile à maintenir. L'auteur montre comment séparer les implémentations dans des classes distinctes et utiliser le conteneur de services de Symfony pour gérer les dépendances de manière efficace. Le résultat est un code plus propre et facile à lire, utilisant des expressions match
pour mapper les types d'actifs aux classes API appropriées.