L'article explique comment standardiser la déclaration des droits avec une interface, implémenter cette interface sur les entités concernées, et créer un voter unique pour gérer les autorisations. Une solution efficace pour éviter la répétition de code et centraliser la logique d'accès, particulièrement utile dans les projets SaaS. L'article aborde également les améliorations possibles et les limitations de cette approche.
L’article explique comment éviter de coder en dur la logique métier dans un projet Symfony en utilisant le composant Symfony Expression Language pour rendre ces règles dynamiques et modifiables sans déploiement de code, en les stockant par exemple dans une base de données ; il décrit l’intérêt de cette approche face à des if/else classiques, présente la création d’une table de règles (action_policies) et un service qui évalue ces expressions dans un contexte donné (ex. utilisateur), tout en permettant d’ajouter des fonctions personnalisées pour étendre la logique.
Ce partage explique comment implémenter un système de signature d'URL pour la pagination dans Symfony 7. L'auteur, Pranan Subba, montre comment utiliser le service UriSigner pour signer les liens de pagination, empêchant ainsi toute manipulation des URLs. Le code fourni illustre comment vérifier l'intégrité des URLs et générer des liens signés pour la navigation. Une solution simple et efficace pour sécuriser les liens de pagination dans une application Symfony.
Cet article explore la gestion des changements d'état dans API Platform, en se concentrant sur l'utilisation de previous_data pour suivre les modifications. L'auteur illustre comment cette fonctionnalité permet de détecter efficacement les changements spécifiques, comme le passage d'un statut "brouillon" à "publié" pour une annonce, et de déclencher des actions comme l'envoi d'une notification. Contrairement à l'approche traditionnelle avec Doctrine UnitOfWork, previous_data offre une solution plus propre, moins verbeuse et plus facile à tester, sans coût de performance supplémentaire, car elle utilise une copie de l'objet déjà récupéré.
Dans cet article, l’auteur explique comment utiliser correctement le rate limiting dans des API Symfony en passant d’une simple limite unique à l’utilisation du Configurable Compound Rate Limiter de Symfony 7.3, qui permet de combiner plusieurs contraintes (par exemple une limite courte pour des pics d’activité et une limite longue pour éviter une charge soutenue) de manière déclarative dans la configuration plutôt que dans le code, avec pour bénéfices des en-têtes cohérents, une orchestration interne centralisée et une meilleure maintenabilité ; il détaille aussi comment externaliser l’application des limites via un event listener et des attributs pour garder les contrôleurs propres tout en soulignant les points d’attention (backend de stockage, surveillance des 429, etc.).
Cet article explique comment améliorer la gestion des permissions dans une application Symfony en utilisant les Voters, plutôt que des conditions if/else dans les contrôleurs. Les Voters permettent de centraliser et simplifier la logique de sécurité, en déléguant les vérifications d'accès à des classes spécialisées. L'auteur illustre cela avec un exemple concret de gestion des droits d'édition et de visualisation des posts dans un blog. Il montre comment créer et utiliser un Voter pour nettoyer et sécuriser le code des contrôleurs.
Cet article compare l'utilisation de DQL (Doctrine Query Language) et de SQL natif dans l'écosystème Symfony, en se basant sur des exemples concrets avec Symfony 7.4 et PHP 8.4+. Il explore les performances, la maintenabilité et l'expérience de développement des deux approches. L'auteur définit d'abord un modèle de domaine simple avec une entité Product, puis illustre l'utilisation de DQL à travers un exemple de requête dans un repository. Les avantages de DQL, comme la manipulation d'objets et la portabilité entre bases de données, sont mis en avant. L'article promet également une analyse des performances et de l'hydratation des résultats.
Ce guide explique étape par étape comment intégrer le système de paiement Dodo dans une application Symfony 7. Il couvre la création d'un compte Dodo, la configuration des produits, l'installation du SDK PHP, la gestion des variables d'environnement, la création des routes et services de paiement, ainsi que la gestion des retours après paiement. Le tutoriel est conçu pour être accessible aux débutants et met l'accent sur la simplicité et la clarté.
L'auteur de ce blog, utilisant Hugo pour son site statique, partage son parcours pour améliorer la sécurité de son blog en configurant les en-têtes HTTP grâce à l'outil Mozilla HTTP Observatory. Initialement noté F, il parvient à obtenir la note A+ en implémentant plusieurs en-têtes de sécurité tels que Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, Referrer-Policy et X-Frame-Options. Il détaille les étapes, les défis rencontrés, notamment avec la configuration de nginx, et les solutions apportées pour sécuriser efficacement son site.
L'auteur partage son expérience d'optimisation des performances web de son blog en convertissant massivement les images au format AVIF et en pré-compressant les documents HTML. Inspiré par un talk de Touraine Tech 2026, il a réduit la taille des images de 76% en moyenne, passant de 274 Mo à 66 Mo, sans perte de qualité visible. Il a également optimisé la génération et le service des pages HTML via des scripts et des configurations nginx. Un partage détaillé des résultats et des méthodes utilisées.
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 catalogue en ligne de refactorings, créé par Martin Fowler, accompagne son livre "Refactoring 2nd Edition". Il répertorie diverses techniques de refactoring, classées par tags, pour améliorer la structure et la lisibilité du code. Parmi les refactorings listés, on trouve des actions comme "Extract Method", "Inline Variable", "Replace Conditional with Polymorphism", et bien d'autres, chacune visant à optimiser et clarifier le code. Une ressource précieuse pour les développeurs cherchant à améliorer leurs compétences en refactoring.
modern.css propose des extraits de code CSS modernes pour remplacer les anciennes astuces. La page compare les anciennes méthodes avec les nouvelles techniques natives, offrant des solutions plus propres et plus efficaces. Par exemple, centrer un élément avec display: grid et place-items: center remplace les hacks avec position: absolute et transform. Les snippets couvrent divers aspects du CSS, tels que les sélecteurs, la mise en page, les animations, les couleurs et la typographie, avec des indications de compatibilité des navigateurs.
Ce dépôt GitHub, maintenu par sts10, est une liste curatée d'utilitaires en ligne de commande écrits en Rust. Il inclut des outils variés comme des remplaçants de commandes Unix (ex: bat pour cat, zoxide pour cd), des gestionnaires de fichiers (ex: broot, felix), des outils de monitoring (ex: bottom, bandwhich), et bien plus. Le dépôt précise que les descriptions sont souvent copiées directement depuis les dépôts des projets et que certains peuvent être abandonnés. Il est donc conseillé d'investiguer avant d'installer ou d'utiliser ces outils.
Voicebox est un studio de synthèse vocale open-source et local-first, offrant des fonctionnalités similaires à un DAW pour une synthèse vocale professionnelle. Il permet de cloner des voix, générer de la parole et construire des applications vocales, le tout en local sur votre machine. Contrairement aux services cloud, Voicebox garantit la confidentialité des données, propose des outils professionnels, une flexibilité des modèles (actuellement Qwen3-TTS, avec d'autres modèles en développement), une API pour intégration, et des performances natives grâce à Tauri (Rust). Disponible pour macOS et Windows, il offre des fonctionnalités comme le clonage vocal instantané, une haute fidélité, et une gestion des profils vocaux.
Ce billet de blog explique le processus de refactoring de chaînes de caractères en énumérations (enums) dans le code de l'outil d'analyse statique Exakat. Initialement, les chaînes étaient utilisées partout, mais avec l'évolution de PHP, les enums offrent des avantages comme une meilleure typage, une structure dédiée et une analyse plus facile. Bien que les gains de performance ne soient pas significatifs, le passage aux enums simplifie l'analyse statique et améliore la précision. L'article détaille le choix des noms d'atomes comme candidats idéaux pour ce refactoring, en conservant la convention de nommage existante.
L'article explore la renaissance des outils en ligne de commande (CLI) et des émulateurs de terminal, marquée par des performances accrues grâce à des langages comme Rust, une meilleure expérience utilisateur et l'intégration de l'IA. Des outils comme ripgrep ont révolutionné les performances, tandis que des émulateurs comme Kitty et Warp ont modernisé l'interface. L'essor des assistants de codage en CLI, tels que Claude Code et GitHub Copilot, a renforcé l'importance des terminaux, offrant une flexibilité et une cohérence accrues dans divers environnements. Cette convergence de tendances a rendu les outils en terminal plus puissants et accessibles que jamais.
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.
Scott H. Young explore dans cet article le paradoxe de la relaxation, soulignant que les activités passives comme scroller sur son téléphone ou regarder la télévision ne sont pas toujours les plus réparatrices. Il distingue deux dimensions de l'énergie : la fatigue (sentiment d'épuisement) et la vigueur (motivation et engagement). Les activités de détachement et de relaxation réduisent la fatigue, tandis que celles de maîtrise et de contrôle augmentent la vigueur. Des activités comme les loisirs, les sports ou les projets personnels peuvent offrir une meilleure récupération énergétique que les activités passives. L'interprétation personnelle de ces activités joue également un rôle crucial dans leur effet réparateur.