L'auteur donne 3 raisons pour lesquelles l'appel à flush() dans les repositories est une mauvaise idée, notamment vis à vis du DDD. Il explique ce qu'il fait à la place.
L'article explique comment intégrer un système d'authentification unique (SSO) dans une application Symfony. Il décrit les avantages d'un authentificateur SSO personnalisé, tels que l'uniformité de l'authentification et une sécurité renforcée grâce à des fonctionnalités comme l'authentification multifacteur. L'article détaille le flux de travail de haut niveau, incluant la redirection vers un fournisseur d'identité, l'échange de codes d'autorisation, et la création d'un jeton de session. Il fournit également des instructions sur la configuration des dépendances, la mise en place d'un authentificateur personnalisé, et la configuration de l'environnement. Enfin, l'article conclut en soulignant les bénéfices de cette approche, notamment la modularité et l'amélioration de l'expérience utilisateur.
L'article explore la création d'agents autonomes basés sur l'intelligence artificielle pour automatiser des tâches quotidiennes, comme l'analyse des demandes de tirage et la génération de notes de version. Contrairement aux scripts d'automatisation traditionnels, ces agents utilisent des modèles de langage avancés pour interpréter et prendre des décisions contextuelles. L'article détaille les outils clés tels qu'AgentGPT, LangChain, et le Vercel AI SDK, et explique comment les intégrer de manière sécurisée dans des environnements de développement. Enfin, il propose un guide pratique pour mettre en place un agent capable de répondre à des déclencheurs spécifiques et de s'intégrer dans un pipeline CI/CD pour améliorer l'efficacité des développeurs.
L'article explore différentes méthodes pour gérer du code et des environnements avec Terraform. L'auteur partage ses observations et préférences évolutives. Il discute de l'utilisation des "providers" et des modules de code pré-établis, permettant de déployer simultanément chez plusieurs fournisseurs, et met en lumière la puissance et la flexibilité de Terraform. L'article aborde également des techniques variées, allant du code "hardcodé" à l'utilisation de variables, de boucles, et de "workspaces", pour optimiser la gestion des environnements. Enfin, il souligne l'importance de la gestion de l'état dans Terraform et propose des solutions élégantes pour répliquer des environnements de manière efficace et sécurisée.
L'article explore la loi des rendements décroissants, un concept économique qui s'applique également au développement personnel. Il explique comment, au-delà d'un certain point, l'ajout de ressources ou d'efforts supplémentaires conduit à une augmentation de moins en moins significative des résultats, voire à une baisse de productivité. L'auteur utilise des exemples concrets, comme l'utilisation de fertilisant dans un champ de maïs ou la gestion du temps de travail, pour illustrer ce phénomène. L'article propose aussi des stratégies pour maximiser l'efficacité et éviter les pièges des rendements décroissants, en mettant l'accent sur l'importance de travailler de manière intelligente et de reconnaître le moment où il est préférable de s'arrêter ou de changer de méthode.
L'article explore les subtilités de la gestion des dates en JavaScript, en se concentrant sur les différences de comportement entre les formats de date comme "2025/05/28" et "2025-05-28". Il explique comment ces formats peuvent être interprétés différemment selon qu'ils sont traités en temps local ou en temps universel (UTC), ce qui peut entraîner des résultats inattendus. L'auteur plonge dans l'historique des navigateurs et des spécifications ECMAScript pour expliquer l'évolution de ces comportements, soulignant les inconsistances passées entre les navigateurs. Enfin, il mentionne l'arrivée de l'API Temporal en JavaScript, qui vise à résoudre ces ambiguïtés en offrant une gestion plus robuste et claire des dates et des heures.
L'article explore les distinctions cruciales entre les données brutes, les résultats et les insights dans le domaine de l'expérience utilisateur. Il souligne l'importance de transformer les observations en informations exploitables pour influencer les décisions stratégiques. L'article aborde également la question de la signification statistique dans la recherche UX, un sujet souvent source de confusion. Enfin, il propose des conseils pratiques pour communiquer efficacement les résultats de la recherche UX aux parties prenantes.
Quelques conseils pour sécuriser son site web, hébergé dans le cloud ou pas
L'article est un résumé du fonctionnement de Kubernetes, ainsi que des termes spécifiques (Pod, Node, etc.)
L'article explique comment créer un workflow pour automatiser la création de tickets Tracecat à partir d'alertes Wazuh, en utilisant des webhooks.
L'article explore les meilleures pratiques pour rédiger une documentation technique efficace. Il aborde des aspects clés comme la perspective du lecteur, l'accessibilité, les boucles de rétroaction, et les techniques de rédaction. L'auteur souligne l'importance de connaître son audience, d'utiliser un langage clair et des diagrammes bien structurés. Un guide essentiel pour créer des documents techniques utiles et accessibles.
L'article explore comment appliquer les principes SOLID dans le cadre du développement avec Symfony. Voici un aperçu des points clés abordés :
-
Single Responsibility Principle (SRP) : L'article explique comment structurer les classes dans Symfony pour qu'elles aient une seule responsabilité, facilitant ainsi la maintenance et les tests.
-
Open/Closed Principle (OCP) : Il montre comment concevoir des composants Symfony qui sont ouverts à l'extension mais fermés à la modification, en utilisant des techniques comme l'héritage et les interfaces.
-
Liskov Substitution Principle (LSP) : L'article discute de l'importance de s'assurer que les objets des sous-classes peuvent remplacer ceux des classes de base sans affecter le comportement du programme, un concept crucial pour la réutilisabilité du code.
-
Interface Segregation Principle (ISP) : Il met en avant l'avantage d'utiliser plusieurs interfaces spécifiques plutôt qu'une seule interface générale, permettant aux classes de n'implémenter que les méthodes nécessaires.
-
Dependency Inversion Principle (DIP) : L'article souligne l'importance de dépendre des abstractions plutôt que des implémentations concrètes, en utilisant l'injection de dépendances et les interfaces pour rendre le code plus flexible et réutilisable.
En appliquant ces principes, les développeurs peuvent créer des applications Symfony plus robustes, maintenables et évolutives. L'article fournit des exemples pratiques et des conseils pour intégrer ces principes dans les projets Symfony.
En 2024, Redis a changé de licence, incitant l'auteur à explorer PostgreSQL comme alternative pour gérer des données volatiles, offrant une meilleure organisation des données et simplifiant la stack technique. PostgreSQL permet de structurer les données de manière plus élégante grâce à l'héritage de tables et gère l'expiration des données via des requêtes planifiées, bien que cela nécessite une gestion manuelle. Bien que Redis soit plus performant, PostgreSQL, avec des tables UNLOGGED, offre des performances suffisantes pour la plupart des applications, tout en simplifiant l'infrastructure et en évitant les problèmes de licence.
L'article critique l'adoption des "passkeys" comme alternative aux mots de passe, soulignant les problèmes liés à la dépendance envers les grandes entreprises, les implémentations propriétaires complexes et la nécessité d'utiliser des smartphones. Il met en garde contre les risques pour la vie privée et la liberté, tout en remettant en question l'efficacité réelle des passkeys pour améliorer la sécurité.
L'article explique comment surveiller les logs sur un serveur Linux pour améliorer la sécurité et diagnostiquer les problèmes. Il détaille l'emplacement des fichiers de logs dans /var/log et l'utilisation d'outils comme journalctl pour analyser les logs de démarrage et de connexion. Il aborde également la configuration de la rotation des logs via /etc/logrotate.conf.
La scalabilité est essentielle pour la survie des applications, permettant de gérer plus d'utilisateurs, de données ou de fonctionnalités sans dégradation des performances. React, avec son architecture basée sur les composants, le Virtual DOM et un flux de données unidirectionnel, offre une base solide pour construire des applications web évolutives. L'article présente les meilleures pratiques pour des applications React évolutives : l'optimisation de la taille des bundles avec le code splitting et le lazy loading, une gestion efficace de l'état, et l'utilisation de composants et de hooks personnalisés.
L'auteur détaille son processus d'installation pour ses machines sous MacOS :
- utilisation d'un fichier Brewfile pour installer des outils avec Homebrew
- définition de paramètres par défaut (en utilisant la ligne de commande)
- installation de plugins Zsh et définition d'alias
L'article explique comment installer DaisyUI dans un projet Symfony en utilisant le composant AssetMapper. Il montre aussi comment choisir la version de Tailwind (version 4)
L'article explique l'intérêt de mettre en place l'observabilité, et il montre comment le faire pour une application Symfony en utilisant Sentry.
Lorsque vous avez plusieurs requêtes HTTP à lancer dans une application Symfony, vous pouvez le faire de manière séquentielle (donc lent) ou les paralléliser si vos appels sont indépendants. C'est ce que permet HttpClient via la méthode stream.