Hebdomadaire Shaarli

Tous les liens d'un semaine sur une page.

Semaine 15 (April 7, 2025)

Analytics et préjugés : pourquoi les métriques n'intéressent pas que mon chat  • Lecodeestdanslepre

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

Prevent Cross-Site Scripting (XSS) in Symfony: A Comprehensive Guide - DEV Community

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)

Lesson 4: Happiness is the expansion of possibility - Scott H Young

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.

Guide pratique pour l'écriture de tests sensibles au temps

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.

Lesson 3: The surprising secret to flow - Scott H Young

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.

De l’utilisation des smartphones et des tablettes chez les adolescents

Les conseils sont excellents... et marchent aussi pour les adultes ^^

Un Royaume Magique

C'est juste magnifique

La fin d’un monde ?

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

Structurez votre code explicitement avec la "Screaming Architecture"

L'auteur présente brièvement ce qu'est la "screaming architecture" et ses avantages

Lesson 1: How to start projects you’ll actually finish - Scott H Young

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
SymfonyLive Paris 2025 comme si vous y étiez - JoliCode

Voici la liste des conférences présentées lors du SymfonyLive Paris 2025, avec un résumé pour chacune :

  1. 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".
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.

Symfony Messenger : vole petit petit pigeon voyageur  • Lecodeestdanslepre

L'auteur montre, avec un exemple simple, comment utiliser Symfony Messenger pour découpler son code (traitement de statistiques de navigation)

Les DTOs : ou comment être sûr que tes données ne ressemblent pas à un kebab  • Lecodeestdanslepre

L'auteur explique à quoi servent les DTOs et comment les utiliser dans le contexte d'une application Symfony en particulier.

Omni et Kubevirt

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.

Appliquer des styles CSS à SVG : le guide complet - Alsacreations

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 (facile à manipuler en CSS, mais avec préparation) L'auteur donne des conseils pour optimiser.

Rooter une imprimante 3D Creality

Je ne savais pas qu'on pouvait rooter une imprimante 3d :-)

Adolescence et numérique : retour d'expérience

Une réponse et un complément à l'excellent billet de Ploum sur le même sujet

types of terminal programs

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'IA et Forgejo - Dryusdan.space

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.

Comment migrer du type array vers JSON avec Doctrine - JoliCode

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.

Que sont les paramètres UTM dans une URL ? - Alsacreations

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.

Le HTTP Client Symfony : parce que cURL, c'est tellement 2010  • Lecodeestdanslepre

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

Symfony/Validator pour les règles fonctionnelles

L'auteur montre comment créer des règles métier personnalisées avec le Validator de Symfony

Upgrading Sensio Security Annotation: The Full Story | Tomas Votruba

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.

Protéger Forgejo avec Anubis - Dryusdan.space

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.

KubeCon 2025 : Renforcer la Sécurité de vos clusters Kubernetes

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.

La dette technique c'est Oqee · j’ai acheté un PC...

L'auteur imagine comment a été décidé l'ajout d'écran de veille Oqee sur la Freebox... et c'est triste.

Lesson 2: The three questions for effective meta-learning - Scott H Young

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é.

Casser les mots de passe de ses utilisateurs avec le plus gros dictionnaire français du monde | Le blog de Zythom

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.

Refactoring if-else code blocks to Strategy pattern with Symfony service locator - DEV Community

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.