Cet article explore les fonctionnalités avancées du composant EventDispatcher de Symfony, au-delà de son utilisation basique pour les notifications. Marcel Moll y partage des patterns qui peuvent transformer la structure d'une application, comme les événements stoppables, les priorités, les subscribers, et les points d'extension. Il aborde également les défis liés au traçage du code événementiel et quand il est approprié d'utiliser EventDispatcher. L'auteur partage son expérience et ses recommandations pour une utilisation efficace de cet outil puissant.
Ce guide de SitePoint présente cinq modèles de prompts pour améliorer la qualité du code généré par les outils d'IA. Les problèmes courants comme les imports fantômes ou les erreurs d'architecture sont souvent dus à des prompts vagues. Les modèles proposés, tels que le "Context Priming" ou le "Constraint Injection", aident à structurer les demandes et à obtenir un code plus conforme aux conventions et aux besoins spécifiques. Chaque modèle est illustré par un exemple concret avant/après.
L'article explore la règle bien connue de ne pas déployer de nouvelles versions de logiciels le vendredi. L'auteur analyse les avantages et les inconvénients de cette pratique, en tenant compte du contexte métier, de la fréquence des releases et des pratiques techniques. Il souligne que cette règle peut être pertinente dans certains cas, comme pour les systèmes critiques ou les sites e-commerce, mais moins pour les systèmes où les risques et les menaces sont faibles. Il insiste également sur l'importance d'automatiser les processus de déploiement et de garantir la compatibilité descendante pour minimiser les risques. En conclusion, l'auteur suggère que la décision de déployer ou non le vendredi dépend largement du contexte spécifique de chaque organisation.
Dans cet article, Samy Djemili partage les leçons apprises après trois années de revues de code. Il souligne que les revues efficaces ne se concentrent pas uniquement sur la recherche de bugs, mais aussi sur la compréhension du problème résolu, la taille des PRs (préférant les petites pour une meilleure qualité de revue), la critique constructive du code plutôt que de la personne, l'explication des raisons derrière les suggestions, et l'utilisation de prefixes pour clarifier l'importance des commentaires. Une lecture essentielle pour améliorer ses pratiques de revue de code.
L'article explore les défis et les solutions pour concevoir des interfaces utilisateur (UX) pour des systèmes d'IA agentique, c'est-à-dire des systèmes capables d'agir de manière autonome. Il propose des modèles de conception concrets pour garantir le contrôle, le consentement et la responsabilité, en se concentrant sur des pratiques organisationnelles et des cadres opérationnels. L'auteur détaille six modèles UX clés pour gérer les interactions agentiques, couvrant les phases pré-action, en-action et post-action, avec des exemples comme l'aperçu d'intention et le signal de confiance. L'objectif est de créer des systèmes transparents, contrôlables et dignes de confiance, où l'autonomie de l'IA est perçue comme un privilège accordé par l'utilisateur.
Dans cet article, l’auteur raconte comment il a transformé son workflow de développement en confrontant systématiquement deux IA — Claude Code pour générer et planifier le code, et Codex pour faire une code review objective — ce qui améliore nettement la qualité du code produit : il utilise un fichier CLAUDE.md pour configurer les attentes d’emblée, exige des plans avant l’écriture, et fait reboucler les remarques de Codex vers Claude Code jusqu’à alignement, tout en s’appuyant sur des tests, du linting et un jugement humain pour garder le contrôle.
Addy Osmani explique pourquoi il est préférable d'éviter d'utiliser le fichier AGENTS.md généré automatiquement par la commande /init dans les projets de développement. Selon des études récentes, ces fichiers peuvent ralentir les agents, augmenter les coûts et réduire l'exactitude. Les fichiers AGENTS.md écrits par des humains, contenant des informations non découvrables par les agents, sont plus bénéfiques. De plus, une hiérarchie de fichiers AGENTS.md, placés à des niveaux pertinents dans le projet, est plus efficace qu'un seul fichier centralisé. L'auteur souligne l'importance de ne garder dans ces fichiers que les informations essentielles et non redondantes.
L'article explore le phénomène du "vibe coding", où les développeurs utilisent des assistants IA pour générer du code en décrivant simplement leurs besoins en langage naturel. Bien que cette pratique permette de créer rapidement des prototypes et des MVPs, elle présente des limites importantes. Après quelques mois, les projets peuvent devenir ingérables, avec des bugs qui s'accumulent et une compréhension globale du code qui se perd. L'article met en garde contre les dangers de cette méthode, soulignant l'importance des spécifications claires et de la compréhension approfondie du code.
Ce billet de blog explore la stratégie d'utilisation des "boring technologies", c'est-à-dire des technologies maîtrisées mais moins tendance, en les poussant à leurs limites avant de changer. L'auteur, Jérémy DECOOL, souligne l'importance de bien connaître les capacités des outils existants, comme les bases de données relationnelles ou les monolithes, avant d'adopter des solutions plus complexes comme le NoSQL ou les microservices. Il met en garde contre l'anticipation et le marketing, qui peuvent pousser à changer de technologie trop tôt, et insiste sur l'importance de l'expérience et de la connaissance approfondie des outils pour identifier le bon moment pour évoluer.
L'article explore comment les principes de conception d'objets de Matthias Noback, introduits en 2019, sont désormais intégrés directement dans la syntaxe de PHP 8.5. Autrefois fastidieux à implémenter, ces principes sont maintenant simplifiés et plus intuitifs. L'article met en lumière l'encapsulation, un des premiers principes, et montre comment la visibilité asymétrique (introduite en PHP 8.4) permet de protéger l'état interne des objets tout en réduisant la verbosité du code. Trois approches pratiques sont présentées pour gérer la visibilité des propriétés, illustrant comment PHP moderne facilite l'application de ces bonnes pratiques de conception.
Cet article de Ihor Pal sur Medium explique le flux de traitement d'une requête HTTP dans une architecture propre (Clean Architecture). Il détaille comment une requête traverse les différentes couches (Domain, Use Cases, Interface Adapters, Frameworks) en montrant les structures de données échangées (DTOs, Entités, Value Objects) et l'orientation des dépendances. L'article illustre également la distinction entre les entités ORM et les entités de domaine, et met en lumière deux points clés d'inversion de dépendance. Un diagramme de flux complet et une structure de projet pratique en PHP/Symfony sont fournis pour clarifier le processus. L'objectif est de donner une vision dynamique de l'architecture propre, au-delà de la simple description statique des couches.
Cet article explique les language tags, un concept clé pour l'internationalisation (i18n) et la localisation (l10n) des applications web. Il définit ces termes selon le W3C et détaille les standards du Web (RFC 5646, BCP 47) qui régissent les language tags. Ces tags, composés de subtags séparés par des tirets, permettent d'identifier précisément une langue, une écriture, une région ou d'autres variantes. L'article fournit des exemples et des explications sur la syntaxe des language tags, offrant ainsi une compréhension claire de leur utilisation pour adapter les applications à différents marchés linguistiques et culturels.
Ploum exprime son inconfort face aux excuses pour les réponses tardives aux emails, soulignant que les échanges par email sont asynchrones et ne devraient pas générer de pression. Il encourage à ne pas s'excuser pour les délais de réponse, à ne pas justifier les retards par des détails personnels, et à ne répondre que si cela apporte une réelle valeur. Il propose même de reporter la réponse ou de ne pas répondre du tout, surtout si l'email initial n'était pas urgent ou important.
Ce guide pratique oppose logs et métriques pour une meilleure observabilité des systèmes. Les métriques indiquent qu'un problème existe, tandis que les logs expliquent quoi. Les logs, coûteux mais détaillés, sont utiles pour le débogage et la conformité, tandis que les métriques, économiques et rapides, servent aux alertes et aux tableaux de bord. Les logs structurés sont préférables pour leur recherche facilitée. Les quatre signaux clés de Google (latence, trafic, erreurs, saturation) sont essentiels pour surveiller la santé d'un service. Le choix entre logs et métriques dépend de l'objectif et des ressources disponibles.
L'article explore l'importance de la mise en cache au niveau de l'application, en se concentrant sur les pools de cache, les tags et l'invalidation. À travers un projet Symfony réaliste, l'auteur montre comment introduire progressivement la mise en cache, identifier les problèmes en production et améliorer la conception du cache. Les exemples illustrent l'évolution de la mise en cache, en commençant par une approche naïve et en introduisant des techniques plus avancées comme les pools de cache dédiés et l'invalidation fine-grained à l'aide de tags. L'objectif est de montrer comment concevoir un cache fiable en production, en abordant les problèmes courants et les solutions applicables au-delà d'un seul framework.
Ce guide explique comment renforcer la validation des données dans SQLite, une base de données permissive par défaut. Il propose d'utiliser des clés primaires de type INTEGER PRIMARY KEY NOT NULL, de spécifier explicitement si les colonnes acceptent des valeurs NULL, et d'utiliser le mot-clé STRICT dans les déclarations de tables pour activer des vérifications de type strictes. Le guide aborde également l'utilisation des contraintes CHECK() pour des validations supplémentaires. Idéal pour ceux qui veulent éviter les erreurs de données et les problèmes ultérieurs.
L’article explique pourquoi les leaders tech doivent maîtriser la résolution de problèmes, une compétence clé selon le World Economic Forum. Il propose une méthode rigoureuse en 4 étapes (PDCA : Plan, Do, Check, Act) pour transformer les obstacles en opportunités d’apprentissage. L’accent est mis sur l’importance de bien définir le problème (écart entre situation actuelle et souhaitée), d’identifier les causes racines (via la technique des "5 pourquoi"), de tester des contre-mesures, et d’ancrer les apprentissages. L’auteur souligne les pièges à éviter, comme le fingerpointing ou l’attente passive, et encourage à impliquer toute l’équipe pour développer une culture d’amélioration continue. Une approche inspirée du lean management, adaptée au software engineering.
Ce billet explique l'impact souvent méconnu des délimiteurs Twig sur l'espace blanc dans le HTML généré, causant des problèmes de mise en page, des diffs Git bruyants et des réponses HTTP plus lourdes. L'auteur partage son expérience et détaille comment maîtriser ces délimiteurs ({{-}, {%-}, etc.) pour contrôler précisément l'espace blanc et améliorer la qualité du code. Une lecture essentielle pour les développeurs Symfony souhaitant optimiser leurs templates.
L'article critique l'organisation typique des projets informatiques, où les fichiers sont regroupés par type (Commandes, Contrôleurs, Formulaires, Entités, etc.) plutôt que par fonctionnalité. L'auteur illustre comment cette approche, bien que pratique au début, devient problématique à mesure que le projet grandit, entraînant une dispersion des fonctionnalités et un codebase difficile à maintenir. Il suggère une organisation par domaine ou fonctionnalité pour faciliter l'évolution et l'entretien du projet.
Ce billet explique comment générer des PDF à partir de HTML et CSS en utilisant Weasyprint, un outil Python. L'auteur, insatisfait par LaTeX, préfère utiliser des langages qu'il maîtrise mieux. Le tutoriel commence par un exemple simple de conversion HTML en PDF, en passant par l'ajout de styles CSS et diverses astuces pour personnaliser les documents. Il met l'accent sur l'importance des métadonnées et de l'accessibilité des PDF. J'ai découvert des astuces étonnantes : les types de page (page: xxx), la récupération du décompte (target-counter, non documentée dans la MDN !), les sélecteurs de page (:left :right), les règles de marge (@bottom-left @bottom-right), la position "running", etc.