L’auteur explique comment optimiser Doctrine ORM pour éviter non seulement le problème classique du N+1, où l’accès aux relations dans une boucle génère des dizaines voire centaines de requêtes, mais aussi le piège du produit cartésien qui survient lorsqu’on tente de tout charger en une seule requête avec de nombreux LEFT JOIN : bien que n’affichant qu’une requête dans le profiler, ce type de jointures multiplie les lignes SQL retournées (chaque combinaison de collections), ralentit la page et surcharge Doctrine lors de l’hydratation des objets. La solution proposée repose sur une hydratation en plusieurs étapes en chargeant d’abord les entités principales avec une relation, puis en « primeant » séparément les autres relations via des requêtes successives utilisant l’Identity Map de Doctrine, ce qui aboutit à quelques requêtes légères et prévisibles sans explosion des résultats.
L’article explique comment configurer Claude Code, un outil CLI d’IA pour améliorer la productivité sur des projets Symfony et PHP, en insistant sur le fait que la qualité des résultats dépend surtout du bon paramétrage plutôt que du modèle utilisé : il conseille l’intégration de Claude Code dans l’IDE (par exemple via un plugin PhpStorm), la création d’un fichier AGENTS.md décrivant les conventions et règles de codage du projet pour guider l’IA, et l’usage systématique d’une phase de planification (“plan mode”) avant de générer du code afin d’obtenir des résultats précis et cohérents, tout en donnant des exemples pratiques de configuration et bonnes pratiques pour Symfony.
Ce tutoriel explique comment construire une application Symfony capable de gérer un grand volume de documents (jusqu'à un milliard) en utilisant MongoDB. Dans cette deuxième partie, l'auteur montre comment configurer une application Symfony avec le Doctrine MongoDB ODM pour mapper les documents à des classes PHP, et utiliser Symfony UX pour créer une interface utilisateur moderne. Le tutoriel couvre la configuration initiale de l'application, la cartographie des documents, et la mise en place d'un tableau de bord pour afficher des informations générales, une liste de stations, et des détails spécifiques comme les prix des carburants et leur historique.
L'auteur, Alexandre Daubois, partage son expérience après avoir rejoint les équipes principales de trois projets open-source majeurs : PHP, Symfony et FrankenPHP. Contrairement à ses attentes initiales, il découvre que ces projets ne fonctionnent pas selon des plans rigides et des roadmaps détaillés, mais plutôt par l'improvisation et l'adaptation aux besoins de la communauté. Il souligne que l'expertise ne signifie pas tout savoir, mais plutôt oser affronter l'inconnu. Il met également en lumière l'importance de lâcher prise et de ne pas être obsédé par le code parfait, une leçon qu'il a apprise en tant que réviseur de code.
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.
L'article explique comment éviter de réécrire des expressions régulières pour les routes dans Symfony. Il met en avant la classe Requirement de Symfony, qui contient des motifs pré-définis pour des paramètres de route courants comme les UUID, les slugs ASCII, et les formats de date. Plutôt que d'écrire manuellement des regex complexes, on peut simplement utiliser les constantes fournies par cette classe, ce qui simplifie et standardise le code. L'auteur encourage à utiliser ces outils intégrés pour gagner en efficacité et en clarté.
Ce partage explique comment optimiser les performances d'un site Symfony en minifiant le CSS et le JavaScript grâce au bundle SensioLabs Minify. La minification réduit la taille des fichiers en supprimant les espaces et commentaires inutiles, améliorant ainsi la vitesse de chargement. L'article détaille l'installation et la configuration du bundle, ainsi qu'une astuce pour désactiver la minification en mode développement tout en l'activant en mode production.
L'article explore l'utilisation de l'API Popover pour créer des infobulles (tooltips) en s'appuyant sur les fonctionnalités natives du navigateur plutôt que sur des bibliothèques JavaScript. L'auteur explique comment cette API simplifie la gestion des interactions clavier, de l'accessibilité et des événements, réduisant considérablement le code nécessaire. Il compare l'ancienne méthode utilisant des bibliothèques avec la nouvelle approche basée sur l'API Popover, soulignant les avantages en termes de simplicité et de robustesse. L'article note également que l'API est bien supportée par les navigateurs, bien que certaines fonctionnalités soient encore en développement.
L’article présente un patron appelé “Orchestrated UI” qui combine Symfony UX, Mercure et Temporal pour créer des interfaces utilisateur live pilotées par des workflows côté serveur sans gestion d’état complexe côté frontend, illustré par un exemple de commande de repas où chaque étape du processus est orchestrée par un workflow et poussée en temps réel au navigateur via Mercure afin de recharger dynamiquement les composants Symfony Live sans JavaScript sophistiqué ; l’intérêt principal est de simplifier la construction d’applications web interactives à états complexes tout en restant dans un seul codebase PHP, avec des exemples et une bibliothèque nommée StepKit disponibles pour tester cette approche.
Joppe De Cuyper explore l'idée d'un monde où l'IA génère du code sans intervention humaine, remettant en question l'importance des principes de "clean code". Il présente un projet Symfony sans code source, où seul un ensemble de spécifications et de tests sont maintenus. L'IA génère le code nécessaire à chaque build, le rendant obsolète après utilisation. Cette approche permet une amélioration continue du code grâce aux avancées de l'IA, sans héritage de code ancien. Le projet, illustré par une API de gestion de tâches, montre comment les spécifications détaillées peuvent remplacer le code source traditionnel.
Cet article explique comment utiliser MariaDB-Backup (Mariabackup) pour sauvegarder et restaurer des bases de données MariaDB ou MySQL de manière performante. Contrairement à mysqldump, qui effectue des sauvegardes logiques lentes, Mariabackup réalise des sauvegardes physiques "à chaud", plus rapides et adaptées aux environnements de production exigeants. Le tutoriel couvre l'installation, la création de sauvegardes, la restauration, les sauvegardes incrémentielles et les fonctions avancées. Il souligne aussi la différence entre sauvegardes logiques et physiques, ainsi que la compatibilité de Mariabackup avec les fonctionnalités spécifiques de MariaDB.
Ce tutoriel explique comment héberger une IA locale avec Ollama, un outil simplifiant le déploiement de modèles d'IA en local, et lui apprendre vos données via le RAG (Retrieval-Augmented Generation). L'auteur détaille l'installation d'Ollama sur une VM Linux, le téléchargement d'un modèle léger comme Gemma 3, et l'utilisation du RAG pour intégrer vos documents internes. Le processus est simplifié pour éviter les coûts élevés et la complexité des solutions cloud.
L'auteur explique avoir créé Bloggrify, un générateur de blog statique open source, pour plus de flexibilité après des expériences avec Wordpress, Joomla et Medium. Cependant, en 2026, il migre vers Writizzy, un autre de ses projets, pour plus de simplicité. Il aborde le dogfooding, les défis de l'open source, et la motivation à maintenir des projets peu utilisés. Bloggrify, bien que techniquement abouti, manque d'adoption, ce qui le démotive. Il partage ses réflexions sur l'avenir de ses projets, y compris Bloggrify, Writizzy et Hakanai.io.
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.
Scrapling est un framework de web scraping adaptatif qui gère tout, des requêtes simples aux crawls à grande échelle. Il apprend des changements de site web et relocalise automatiquement les éléments lorsque les pages sont mises à jour. Ses fetchers contournent les systèmes anti-bot comme Cloudflare Turnstile. Le framework de spider permet de réaliser des crawls concurrents, multi-sessions avec pause/reprise et rotation de proxy automatique, le tout en quelques lignes de Python. Il offre des crawls rapides avec des statistiques en temps réel et un streaming. Le projet est open source et disponible sur GitHub.
Oxfmt, un formateur de code compatible avec Prettier et développé en Rust, est désormais en version bêta. Plus rapide (30x plus que Prettier et 3x plus que Biome), il prend en charge plusieurs formats de fichiers, intègre le tri des imports et le support de Tailwind CSS, et offre une compatibilité totale avec Prettier. Utilisé par des projets comme Vue.js et Sentry, il est facile à installer et à migrer depuis Prettier.
La page cheat.sh/latency présente une infographie textuelle des temps de latence que tout programmeur devrait connaître, inspirée des "Latency Numbers Every Programmer Should Know" de Jeff Dean. Elle compare visuellement les temps de réponse de différentes opérations informatiques, allant de l'accès à la mémoire cache L1 (1ns) aux communications intercontinentales (jusqu'à 150ms). Un outil utile pour comprendre et visualiser les performances des systèmes informatiques.
Le projet "learn-claude-code" est un dépôt GitHub qui propose une série de 12 sessions progressives pour construire un agent d'IA similaire à Claude Code, en partant de zéro. Chaque session ajoute un mécanisme spécifique, avec pour objectif final de créer un agent autonome capable d'exécuter des tâches complexes. Le projet utilise un modèle de boucle minimal où l'utilisateur interagit avec un grand modèle de langage (LLM) qui peut exécuter des outils si nécessaire. Les sessions couvrent des concepts tels que l'ajout d'outils, la planification des tâches, la gestion de la mémoire, l'exécution en arrière-plan, la délégation de tâches à des agents collaborateurs, et plus encore. Le code est écrit en Python et est disponible sous licence MIT.
Cronboard est une application en ligne de commande pour gérer et planifier des tâches cron sur des serveurs locaux et distants. Elle permet d'ajouter, modifier, supprimer et visualiser l'état des tâches cron. Parmi ses fonctionnalités, on trouve l'autocomplétion des chemins, la validation des tâches, la gestion des connexions SSH, et la prise en charge des expressions spéciales comme @daily ou @yearly. Développé avec Textual, Python crontab, Paramiko et Cron descriptor, Cronboard est disponible via pip, Homebrew, uv ou AUR.
Ce billet de blog explore le concept de "Spec-Driven Development" (SDD) comme alternative à la méthode de "vibe coding" avec les outils d'IA de codage. L'auteur, travaillant dans l'ingénierie des paiements, explique que le SDD consiste à écrire une spécification structurée avant de laisser l'IA implémenter le code, contrairement à la méthode intuitive de "vibe coding" où l'on affine les prompts jusqu'à obtenir un résultat fonctionnel. L'article met en lumière les problèmes de perte de contexte et de dérive architecturale liés à l'utilisation excessive des prompts, surtout dans des systèmes critiques comme les paiements, où les failles de sécurité peuvent avoir des conséquences graves. Le SDD, avec des outils comme OpenSpec, permet de formaliser le processus de développement et d'éviter ces pièges.