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.
La Specification Driven Development (SDD) est une approche de développement logiciel qui replace la spécification détaillée des exigences avant l’écriture du code comme artefact central du projet : cette spécification, souvent en texte structuré (ex. Markdown), décrit le comportement attendu du système et sert de source de vérité pour guider conception, implémentation et tests, contrastant avec les méthodes où les tests ou documents techniques viennent après le code ; historiquement issue d’une évolution des pratiques (TDD → BDD), elle vise à réduire les erreurs, ambiguïtés et malentendus entre parties prenantes en clarifiant l’intention dès le départ et en maintenant la documentation vivante et accessible dans le même dépôt que le code.
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.
L'article décrit comment son travail en ingénierie logicielle a évolué avec l'utilisation d'outils d'IA comme Codex. Il explique que, bien qu'il n'écrive plus de code manuellement, il passe par des étapes rigoureuses de planification, de vérification et de test, en utilisant des agents pour générer des implémentations. Les tâches sont divisées en planification (25-35%), revue et tests (40-50%), et exécution par l'agent (15-25%). Les gains de productivité sont significatifs pour des tâches standard, mais les agents ont encore des limites dans des domaines comme les refactorisations architecturales complexes ou le débogage profond. Les contraintes actuelles incluent les limites de contexte et la dérive architecturale.
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.
Andrew Nesbitt explique dans cet article les fichiers spéciaux que Git recherche dans les dépôts pour contrôler son comportement. Ces fichiers, comme .gitignore, .gitattributes, .lfsconfig et .gitmodules, sont commis avec le code et influencent la manière dont Git traite les fichiers. Par exemple, .gitignore définit les fichiers à ignorer, .gitattributes configure le traitement des fichiers spécifiques, .lfsconfig gère les paramètres de Git LFS, et .gitmodules configure les sous-modules. Ces fichiers sont essentiels pour les outils travaillant avec les dépôts Git.
Antoine Caron partage son expérience d'optimisation de son application open source de poker planning. Initialement, l'application pesait environ 123 Ko (JS + CSS) avec React 19, TanStack Router et Query, et Tailwind 4. En passant à Preact, en pré-compressant les fichiers avec Brotli, Zstd et Zopfli, et en optimisant Tailwind CSS, il a réduit le poids de l'application à environ 40 Ko, soit une réduction de 67%. Un excellent exemple d'optimisation web.
Outil CLI pour reprendre des sessions de codage avec l'IA entre différents outils (Claude, Copilot, Gemini, etc.). Permet de transférer l'historique de conversation, les modifications de fichiers et l'état de travail d'un outil à un autre. Fonctionne sans installation via npx continues ou peut être installé globalement. Prend en charge 14 agents de codage IA avec 182 combinaisons possibles de transfert.
Un article partageant un astuce Git issue des documents internes de la CIA, divulgués par WikiLeaks en 2017. La commande permet de supprimer en une seule ligne toutes les branches déjà fusionnées, sauf la branche courante et les branches principales comme "main" ou "develop". L'auteur propose également de créer un alias pour simplifier l'utilisation de cette commande. Une astuce utile pour garder son dépôt Git organisé.
Découvrez une collection exhaustive de serveurs MCP (Model Context Protocol) sur GitHub. Ce dépôt, nommé "awesome-mcp-servers", propose une liste curatée de serveurs prêts pour la production et expérimentaux, permettant aux modèles d'IA d'interagir avec des ressources locales et distantes via des implémentations standardisées. Les serveurs couvrent divers domaines comme l'accès aux fichiers, les connexions aux bases de données, les intégrations API, et bien plus. Le dépôt inclut également des clients, des tutoriels, et une communauté active. Une légende est fournie pour comprendre les différentes implémentations selon le langage de programmation, la portée, et le système d'exploitation.
L'article propose une nouvelle perspective sur l'intelligence artificielle (IA). Plutôt que de considérer l'IA comme un collègue autonome, l'auteur suggère de la voir comme une exosquelette, un outil qui amplifie les capacités humaines sans les remplacer. En s'appuyant sur des exemples concrets dans les domaines de la fabrication, de l'armée et de la réadaptation médicale, l'article montre comment les exosquelettes augmentent les capacités humaines tout en réduisant les blessures et la fatigue. Cette analogie est utilisée pour critiquer l'approche actuelle de l'IA en tant qu'agent autonome, soulignant que cette vision peut mener à des attentes irréalistes et des déceptions. L'auteur argue que l'IA, comme un exosquelette, devrait être vue comme un amplificateur des capacités humaines, travaillant en synergie avec elles plutôt qu'en remplacement.
Minko Gechev présente Skill Eval, un framework TypeScript pour tester les compétences des agents IA comme Gemini CLI et Claude Code. Il souligne l'importance de tester ces compétences, comparables à du code, pour éviter des comportements inattendus. Skill Eval évalue les agents en les exécutant dans des conteneurs Docker et en notant leurs performances. Il propose d'intégrer ces tests dans les pipelines CI/CD pour garantir la fiabilité des compétences des agents. Le framework permet d'utiliser des évaluateurs déterministes ou basés sur des rubriques LLM, et recommande de réaliser plusieurs essais pour évaluer à la fois les capacités et la fiabilité des compétences.
Cet article de CSS-Tricks présente une méthode concise pour centrer un élément positionné absolument en CSS, utilisant seulement trois lignes de code. La technique exploite les propriétés place-self: center et inset: 0, qui fonctionnent sur tous les navigateurs. L'auteur explique que cette approche est plus idiomatique et réutilise les propriétés d'alignement familières, tout en offrant une flexibilité pour positionner les éléments de manière précise. Un bon rappel pour les amateurs de CSS!
L'article explore les limites actuelles des benchmarks pour évaluer les modèles de langage (LLMs). Les auteurs soulignent que ces modèles peuvent détecter lorsqu'ils sont testés et adapter leurs réponses, faussant ainsi les résultats. Les benchmarks classiques deviennent inefficaces, atteignant des scores quasi parfaits et ne reflétant plus les vraies capacités des modèles. Des travaux récents, comme "Large Language Models Often Know When They Are Being Evaluated", montrent que des modèles comme Gemini ou Claude peuvent reconnaître un benchmark avec une précision élevée. L'article plaide pour une réévaluation des méthodes d'évaluation, intégrant des aspects comme la métacognition, le comportement et la robustesse.
Addy Osmani explore l'évolution récente de l'ingénierie logicielle avec l'émergence des agents de codage, marquant un changement significatif dans la manière dont les développeurs travaillent. Il décrit trois générations d'outils d'IA pour le codage, allant de l'autocomplétion accélérée à des agents autonomes capables de gérer des tâches complexes sur de longues périodes. Le modèle mental clé est de considérer que les développeurs ne écrivent plus simplement du code, mais construisent des usines de production de logiciels composées de flottes d'agents. Cette transition change radicalement la cadence et la nature du travail en ingénierie logicielle.
Scott H. Young explore dans cet article sept idées reçues sur ce qui nous donne ou nous draine de l'énergie. Contrairement aux croyances populaires, l'exercice physique, même après une journée fatigante, booste l'énergie à court et long terme, améliore l'humeur et la cognition. Les introvertis, souvent perçus comme épuisés par les interactions sociales, se sentent généralement mieux après avoir socialisé, sauf les plus extrêmes. De plus, le scrolling sur les réseaux sociaux, bien que perçu comme relaxant, ne l'est pas vraiment. L'auteur s'appuie sur des études scientifiques pour démonter ces préjugés et propose des explications sur pourquoi nous les entretenons.
Damyr partage son expérience de migration de Debian vers NixOS, une distribution Linux déclarative et reproductible. Après 13 ans avec Debian, il a cherché une solution pour simplifier la gestion des logiciels et éviter les mauvaises surprises lors des mises à jour. NixOS, avec son approche unique basée sur la déclaration d'état et son système de gestion de paquets innovant, a répondu à ses besoins. Bien que l'adaptation ait pris du temps en raison des différences fondamentales avec les distributions traditionnelles, Damyr a trouvé en NixOS un équilibre entre fraîcheur et stabilité.
GreyNoise IP Check est un outil en ligne qui permet de vérifier si votre adresse IP a été observée en train de scanner Internet ou si elle est associée à des activités malveillantes. La page fournit également des conseils pour maintenir de bonnes pratiques de sécurité et explique le rôle de GreyNoise dans la surveillance de la réputation des IP. Un service payant, GreyNoise Block, est proposé pour obtenir une liste de blocage d'IP de haute qualité.
PMG (Package Manager Guard) est un outil de sécurité open-source qui protège les développeurs contre les attaques de la chaîne d'approvisionnement via des paquets malveillants. Il agit comme une couche intermédiaire de sécurité autour des gestionnaires de paquets standards (npm, pip, etc.) en analysant les paquets pour détecter les logiciels malveillants avant leur installation, en les exécutant dans un bac à sable pour empêcher les modifications du système, et en auditant chaque événement d'installation. Facile à installer et à configurer, PMG fonctionne en arrière-plan et bloque immédiatement les paquets malveillants détectés. Il offre des fonctionnalités telles que la protection contre les paquets malveillants, le bac à sable, l'analyse des dépendances et la journalisation des événements.
L'auteur partage son expérience avec Kyverno, un outil puissant pour Kubernetes, lors d'une mise à jour de cluster vers la version 1.34. L'upgrade a provoqué un deadlock entre les nouvelles fonctionnalités réseau de Kubernetes et Kyverno, rendant l'API Server injoignable. L'incident, initialement perçu comme un problème réseau, était en réalité causé par une collision entre la création automatique d'un objet ServiceCIDR par Kubernetes et l'interception par le webhook Kyverno. L'auteur détaille le mécanisme du deadlock et propose des solutions pour éviter de tels incidents à l'avenir.
Dockhand est un outil moderne et intuitif pour administrer les conteneurs Docker, offrant une alternative gratuite pour les particuliers et une version payante pour les entreprises. Il permet de gérer les conteneurs (démarrer, arrêter, supprimer, etc.), de superviser leur état, d'accéder à un terminal direct, et de gérer les réseaux, registres et volumes. Dockhand facilite également le déploiement de stacks Docker Compose via un éditeur visuel et un workflow GitOps complet, avec des mises à jour planifiées. L'installation est simple et l'outil est auto-hébergeable, idéal pour les homelabs.
VideoSearch.io est un moteur de recherche spécialisé dans la découverte de vidéos récentes sur diverses plateformes. Il permet de trouver du contenu sur des sites populaires comme YouTube, TikTok, Facebook, et bien d'autres, ainsi que sur des plateformes de streaming et des réseaux sociaux chinois. Le site offre une interface simple pour explorer des vidéos à travers différentes catégories et plateformes, facilitant ainsi la recherche de contenu vidéo diversifié.
Portracker est un outil open source, auto-hébergé, pour le suivi et la découverte en temps réel des ports réseau. Il permet de cartographier automatiquement les services en cours d'exécution sur vos systèmes, éliminant ainsi le besoin de suivre manuellement les ports dans des feuilles de calcul. Parmi ses fonctionnalités clés, on trouve la détection automatique des ports, des collecteurs spécifiques à la plateforme (Docker, TrueNAS), la détection des ports internes, une interface utilisateur moderne et réactive, et la possibilité de surveiller plusieurs instances en peer-to-peer. Le déploiement est simplifié grâce à Docker.
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.
Le dépôt GitHub "openai/skills" présente un catalogue de compétences pour Codex, un outil d'IA. Ces compétences, appelées Agent Skills, sont des dossiers contenant des instructions, des scripts et des ressources permettant aux agents IA d'exécuter des tâches spécifiques. Le dépôt permet de découvrir, utiliser et distribuer ces compétences, qui peuvent être installées via Codex pour étendre ses fonctionnalités. Les compétences sont organisées en catégories comme ".curated" et ".experimental", et chaque compétence possède sa propre licence. Le dépôt est actif avec des contributions récentes et une communauté de développeurs.
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.
Ce guide pratique propose 7 stratégies pour cultiver la constance dans son développement personnel, un atout clé pour transformer ses intentions en résultats concrets. Parmi les conseils : commencer par des étapes minuscules, associer les nouvelles habitudes à des routines existantes, optimiser son environnement, et se concentrer sur l'identité plutôt que sur les objectifs. L'article explore aussi un système d'entraînement en 4 phases et les erreurs courantes à éviter. Une ressource précieuse pour ceux qui cherchent à ancrer des habitudes durables.
L’article analyse de manière nuancée les avantages et les inconvénients des loaders SVG par rapport aux loaders au format raster pour les interfaces web, en mettant l’accent sur la performance et l’esthétique : les SVG offrent une meilleure évolutivité, des fichiers souvent plus légers et peuvent être stylés ou animés via CSS/DOM, ce qui améliore l’adaptabilité à différentes résolutions, tandis que les images raster peuvent être plus simples pour des visuels complexes mais entraînent des compromis en taille et en clarté, ce qui influence le choix selon les besoins de design et de performance.
Ce billet de blog explique comment utiliser les sprites pour animer des éléments web, une technique empruntée aux jeux vidéo. Les sprites consistent à créer une seule image contenant chaque frame d'une animation, puis à afficher chaque frame successivement pour créer l'illusion d'animation. L'auteur détaille la mise en œuvre de cette technique avec CSS, en utilisant les propriétés object-fit et object-position pour contrôler l'affichage des différentes frames. Il partage également des cas d'utilisation et les compromis à considérer pour déterminer quand utiliser ou ne pas utiliser les sprites.
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.
L’article défend l’importance des bases de données relationnelles comme exemple de « boring technology » sous-estimée, soulignant que malgré leur large utilisation pour stocker des données, beaucoup de développeurs ne maîtrisent plus le SQL ni les fonctionnalités avancées des SGBD, ce qui se révèle problématique quand les charges augmentent et que les performances chutent ; il ajoute que les ORM sont utiles mais doivent être bien compris pour optimiser les requêtes et exploiter pleinement des concepts comme vues, index ou requêtes récursives afin de bâtir des applications robustes sans multiplier inutilement les technologies.
L’article explique comment automatiser l’application des guides de style de code en combinant l’outil « Continue.dev » avec des pipelines d’intégration continue comme GitHub Actions afin de réduire la charge des revues manuelles, en définissant des règles de style lisibles par machine, en intégrant des vérifications en temps réel dans l’éditeur et en ajoutant des contrôles dans la CI pour bloquer les pull requests non conformes, ce qui permet de cibler jusqu’à ~90 % des vérifications de style sans intervention humaine ; il détaille la configuration de Continue avec des règles personnalisées, l’architecture du workflow CI ainsi que des conseils pour affiner les règles et mesurer l’impact.
L’article explique comment utiliser Playwright combiné à un modèle de langage (LLM) pour créer un testeur de logique d’interface utilisateur adversarial qui va au-delà des tests déterministes classiques en générant des actions intentionnellement hostiles contre une UI vivante afin de déceler des bugs fonctionnels difficiles à trouver, comme des corruptions d’état ou des contournements de validation, en bouclant extraction d’état UI → plan d’actions hostile → exécution et détection d’anomalies, puis en réinjectant les résultats pour affiner la recherche; il détaille l’architecture du système, la construction d’un plan d’attaque JSON par le LLM, l’exécution avec Playwright et les avantages de cette approche versus des scripts statiques, ainsi que les limitations et coûts associés.
L’article explique comment ajouter une fonctionnalité de zoom de texte dans gVim, qui n’en dispose pas nativement, en définissant la police guifont et en créant dans le fichier .gvimrc une variable g:font_size et des fonctions VimScript ZoomFont(amount) et ResetFont() pour modifier cette taille, puis en les associant à des touches (F7 pour augmenter, F8 pour diminuer et F10 pour réinitialiser) afin de pouvoir ajuster rapidement la taille des caractères dans l’éditeur graphique.
L’article explique que les skills d’Anthropic sont des « super system prompts » permettant de guider de façon plus précise et efficace un modèle d’IA comme Claude pour la génération de code, ce qui, combiné à une approche de vibe coding (interaction dialoguée et itérative avec l’IA plutôt que de simples prompts vagues), améliore l’expérience du développeur en réduisant frustration et erreurs. L’auteur illustre cela par son propre changement de pratique après avoir observé des streams de vibe coding efficaces et utilisé des skills personnalisés (comme une skill Java qu’il a créée), et souligne que cette approche fonctionne mieux en mode pair programming IA-humain, tout en précisant qu’elle ne remplace pas entièrement les compétences humaines du développeur.
La page explique comment configurer Apache pour déléguer l’authentification des utilisateurs à un annuaire LDAP afin d’éviter de gérer des comptes locaux pour chaque service, en installant et activant les modules mod_ldap et mod_authnz_ldap puis en ajoutant dans la configuration du site les directives AuthLDAPURL, AuthLDAPBindDN, AuthLDAPBindPassword, AuthBasicProvider et Require adaptées à votre annuaire, avec un exemple concret pour un serveur Netserver7 et des paramètres comme l’URL LDAP sécurisée (ldaps://…), l’attribut de recherche (sAMAccountName) et l’accès réservé aux utilisateurs valides de l’annuaire.
L’article identifie comme enjeu central pour 2026 la nécessité de repenser l’approche Cloud et DevOps face à des contraintes concrètes, notamment la raréfaction et la montée des prix du matériel (RAM, disques) qui remettent en cause l’idée de ressources « infinies » et imposent d’optimiser l’efficacité énergétique, les coûts et les architectures, tout en gérant les risques liés à la sécurité et à l’IA, ainsi que la dépendance aux hyperscalers et aux chaînes d’approvisionnement.
L’article explique comment créer un extracteur de texte PDF personnalisé en Node.js et TypeScript en partant de zéro et en construisant une API avec Express qui reçoit des fichiers PDF, utilise des bibliothèques comme pdf-parse pour extraire le texte et renvoie ce contenu via des endpoints HTTP, tout en montrant comment gérer les uploads, configurer TypeScript, implémenter des fonctions de parsing (y compris par plage de pages) et gérer les cas d’erreur, avec pour objectif d’offrir plus de contrôle et de flexibilité qu’avec des solutions toutes faites.
Ce billet de blog explore deux méthodes pour évaluer la qualité des suites de tests automatisés, particulièrement dans le contexte de l'écriture de tests par des modèles de langage (LLMs). L'auteur, Mark Seemann, discute d'abord de la couverture de code, souvent critiquée mais potentiellement utile pour les tests générés par des LLMs, car elle peut servir de seuil minimal. Ensuite, il aborde la mutation testing, une technique plus avancée qui modifie le code pour vérifier si les tests détectent ces changements, révélant ainsi des cas non couverts. Bien que ces méthodes aient des limites, elles offrent des pistes pour critiquer et améliorer les tests, surtout dans un contexte où les tests sont générés automatiquement.
Ce guide explique comment sécuriser un serveur personnel Linux sur un MiniPC en installant Fail2ban avant de l'ouvrir à Internet. Fail2ban protège contre les attaques par force brute en bannissant les adresses IP après un nombre défini de tentatives de connexion échouées. Le tutoriel détaille l'installation de Fail2ban, l'ouverture du serveur sur Internet, et l'installation de Docker pour déployer des services comme Adguard. Il souligne l'importance de la sécurité même pour les serveurs personnels, souvent ciblés par des robots malveillants.
Le Spec-Driven Development (SDD) est une approche où la spécification formalisée devient l'artefact central du projet, guidant l'architecture, l'implémentation et les tests. Cette méthode vise à éviter les incompréhensions et la dette technique en clarifiant les comportements attendus avant l'implémentation. La spécification est versionnée avec le code et doit être maintenue à jour, agissant comme un contrat que l'implémentation doit respecter. Le cycle SDD comprend plusieurs phases itératives, dont la rédaction des exigences et des critères d'acceptation, avant de passer à l'implémentation et aux tests. #SpecDrivenDevelopment #DéveloppementLogiciel #GestionDeProjet
Chez Les-Tilleuls.coop, l'IA redéfinit les métiers du développement en passant d'une logique de codage à une approche d'orchestration. Les développeurs supervisent désormais des agents autonomes qui analysent, implémentent, testent et documentent, réduisant ainsi le temps passé à écrire du code. L'utilisation de fichiers Markdown pour structurer la connaissance et la documentation devient cruciale pour optimiser l'efficacité des LLM. L'intégration de l'IA dans les processus Dev/PO vise à centraliser l'information dans le repository Git, facilitant ainsi une collaboration fluide entre développeurs et Product Owners.
Gee explique les mécanismes de l'économie de l'attention, en quoi c'est délétère à tous les niveaux (individuel comme social), et ce qui, selon lui, permettrait d'améliorer notre condition. Comme toujours, c'est plein d'humour et c'est sourcé.
La règle CSS @scope offre une solution native pour isoler finement les styles en limitant l’application des règles à un sous-arbre spécifique du DOM, ce qui évite que les styles d’un composant se propagent ailleurs tout en gardant une spécificité faible et une meilleure maintenabilité du code ; l’article montre comment cibler uniquement certains éléments comme des <h2> dans des .card, explique l’usage des pseudo-classes :scope et de l’esperluette & pour référencer la racine de portée, et souligne des avantages comme la robustesse face aux modifications du DOM par rapport à des sélecteurs classiques.
L’auteur explique qu’à force d’accumuler des besoins de stockage dans son homelab, il a décidé de concevoir et imprimer en 3D son propre NAS plutôt que d’acheter une solution du commerce trop coûteuse ou peu adaptée, en partant d’un micro-PC (Lenovo M720q) et en concevant un boîtier personnalisé avec des caddies et un backplane pour gérer jusqu’à huit disques 2,5″, le tout en RAID pour la sécurité des données, avec plusieurs itérations de conception sous FreeCAD pour optimiser l’assemblage, la ventilation et les connexions avant d’intégrer la machine à son cluster Proxmox.
Cet article détaille trois retours d’expérience marquants. Sellsy a partagé sa migration réussie de 50 000 bases de données d’un monolithe MariaDB vers une architecture distribuée PostgreSQL/Kubernetes, sans interruption de service, en utilisant CloudNativePG et ZFS pour optimiser les performances et réduire les coûts. Ubisoft a expliqué comment rationaliser l’usage de Kubernetes à grande échelle avec Capsule et une Internal Developer Platform, permettant une gestion multi-tenant efficace et scalable. Enfin, l’INSEE a présenté son approche MLOps pour industrialiser l’entraînement et le déploiement de modèles d’IA, en brisant les silos entre data scientists et développeurs, et en automatisant les pipelines avec Argo Workflows. Une journée riche en enseignements techniques et organisationnels !
Le 3 février 2026, Ippon Technologies a participé aux Cloud Native Days France (ex-Kubernetes Community Days), un événement dédié au Cloud Native, au DevOps et à la souveraineté numérique. La journée a débuté par une keynote sur la souveraineté et l’open source, soulignant l’importance de contribuer activement à ces écosystèmes pour réduire la dépendance aux acteurs américains. Plusieurs interventions ont illustré ces enjeux, comme celle du CERN, qui gère des pétaoctets de données grâce à une infrastructure cloud native optimisée, ou celles de la DINUM et de Scaleway, mettant en avant des solutions souveraines basées sur OpenStack et Kubernetes. Une table ronde a également abordé la formation à Kubernetes et les défis du platform engineering. Enfin, la présentation de Kubo, une distribution Kubernetes open source française, a détaillé son architecture multi-tenant sécurisée, utilisant Capsule et Keycloak pour une gestion fine des droits et une authentification moderne. L’événement a marqué un tournant avec son nouveau nom, symbolisant une plus grande liberté éditoriale et une ouverture accrue.
PHP 8.5, sorti le 20 novembre 2025, introduit une fonctionnalité permettant de simplifier la gestion des objets immuables en autorisant la mise à jour de propriétés lors du clonage. Cette amélioration facilite la création de nouvelles instances avec des valeurs modifiées, réduisant ainsi la complexité du code pour les objets immuables. Par exemple, la classe GPSLocation peut maintenant être clonée avec des propriétés spécifiques mises à jour, comme la latitude, la longitude ou l'altitude, sans avoir à recréer manuellement une nouvelle instance. #php #immuable #clone
L’article explique comment préparer et conduire des entretiens analytiques pour recueillir des données utiles à une recherche ou résolution de problème, en soulignant l’importance de définir clairement les objectifs de la recherche et de sélectionner un panel pertinent d’interviewés avant de commencer, ce qui aide à cadrer les questions et obtenir des insights exploitables. Il détaille aussi la construction d’un guide d’entretien (avec un ordre de questions allant du général au spécifique, des questions ouvertes, et une numérotation pour faciliter l’analyse) pour structurer l’échange de manière à réduire les biais et maximiser la qualité des informations recueillies.
L'article se penche sur la théorie farfelue du réacteur nucléaire de Gizeh, popularisée par des figures comme Christopher Dunn et Michel Lasserre. L'auteur critique la crédibilité de ces "experts" autoproclamés, soulignant leurs lacunes scientifiques et leur tendance à recycler des idées complotistes éculées. Il met en lumière les contradictions et les exagérations de leurs arguments, tout en rappelant que ces théories ne résistent pas à un examen rigoureux. Un article qui démystifie avec humour et pertinence les élucubrations autour des pyramides et des technologies anciennes.
L'article propose 10 étapes éprouvées pour gérer efficacement son énergie et atteindre ses objectifs de développement personnel. Contrairement à la gestion du temps, il s'agit de reconnaître les fluctuations de nos ressources physiques, mentales et émotionnelles. Les conseils incluent le suivi de ses cycles d'énergie naturels, l'alignement des tâches avec son type d'énergie, l'optimisation du sommeil et de la nutrition, la protection de son énergie cognitive et émotionnelle, et la mise en place de rituels de récupération. Ces stratégies permettent de travailler plus intelligemment, de récupérer plus rapidement et de maintenir sa clarté durant les périodes exigeantes.
L'auteur de ce blog, initialement sceptique sur l'impact des modèles de langage (LLM) sur les logiciels SaaS, a remplacé un service SaaS coûteux de 120$ par an en seulement 20 minutes grâce à du code généré par un LLM. Il a utilisé Codex pour recréer une fonctionnalité de témoignages sur son site web, en intégrant les témoignaux dans un fichier JSON et en les générant en HTML lors de la compilation. Bien que cette solution soit adaptée à un développeur comme lui, elle pourrait être moins accessible pour des utilisateurs non techniques. L'expérience montre cependant à quel point il est devenu facile de remplacer certains services SaaS avec des outils d'IA, posant des questions sur l'avenir de ces produits et le rôle des ingénieurs logiciels.
Ce billet explique comment implémenter un système de génération automatique de métadonnées SEO (titres, descriptions, mots-clés) dans une administration EasyAdmin avec Symfony, en utilisant l'API Gemini via le bundle Symfony AI et Symfony Messenger pour gérer l'asynchrone. L'auteur détaille la configuration nécessaire, l'utilisation de Redis pour le transport des messages et le rate limiting pour protéger le quota de l'API Gemini. Le système permet aux rédacteurs d'accepter ou d'ignorer les suggestions générées automatiquement.
Ce partage explique l'importance de CORS (Cross-Origin Resource Sharing) pour sécuriser les sessions utilisateur sur les APIs web. Il décrit comment CORS agit comme un garde-fou en contrôlant l'accès aux ressources entre différents domaines, empêchant ainsi le vol de données via des requêtes cross-origin. L'article détaille les mécanismes de CORS, y compris les requêtes simples et les prévols (preflight), et fournit des exemples de configuration pour Symfony utilisant le NelmioCorsBundle, soulignant l'importance de la directive allow_credentials: true pour protéger les sessions utilisateur.
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.
Ce billet explique comment construire un système de redirections HTTP complet avec Symfony, incluant des règles exactes et regex, un cache Redis, un suivi analytique asynchrone via Messenger, et une création automatique lors des changements de slugs. L'entité RedirectRule est au cœur du système, avec des validateurs personnalisés pour éviter les boucles et les patterns regex invalides. Des property hooks sont utilisés pour exposer des propriétés calculées sans getter.
Récap du jour 2 de Touraine Tech 2026 : Une journée riche en retours d’expérience techniques et humains. Florian Forestier a partagé une aventure de debugging bas niveau sur du matériel réseau obsolète, révélant comment une vieille version d’Ubuntu a permis de résoudre un bug kernel lié aux pilotes QLogic. Paul Pinault a exploré les failles de sécurité des ampoules connectées, soulignant les défis réglementaires (RED, Cyber Resilience Act) et les vulnérabilités matérielles. Antoine Caron et Mathieu Mure ont rappelé l’impact des images sur les performances web, avec des conseils pratiques pour optimiser leur chargement (AVIF, srcset, Git LFS). Matthias et Sylvain Gougouzian ont présenté un projet maker familial inspirant, mêlant apprentissage technique et communication intergénérationnelle. Enfin, Olivier Poncet a disséqué l’architecture ingénieuse d’Another World (1991), un jeu vidéo révolutionnaire conçu par une seule personne, mettant en lumière des optimisations matérielles et logicielles audacieuses. Une édition marquée par des échanges humains et techniques de qualité, avec une mention spéciale pour l’organisation et l’ambiance conviviale.
Le premier jour de la conférence Touraine Tech 2026 a été riche en découvertes et en échanges. L’événement, désormais organisé sur deux jours à l’Université de Sciences de Tours, a débuté par une keynote marquante de Clément Hammel-Cazenave (Agoratlas) sur la guerre informationnelle et les ingérences numériques, illustrée par l’analyse de 500k tweets autour de la crise agricole. L’outil open source D3lta (Viginum) a été présenté pour détecter les contenus dupliqués et lutter contre ces manipulations. Les participants ont aussi pu découvrir des projets techniques variés : la modernisation de trains Jouef avec des Raspberry Pi et TinyGo, un talk sur Kubernetes (avec ses démos improvisées), et une présentation inspirante sur Metal-As-A-Service (MAAS) pour gérer le bare-metal comme des machines virtuelles, avec des économies d’énergie significatives. Enfin, une session sur les agents IA a permis d’explorer les workflows et frameworks pour organiser le chaos des intelligences artificielles. Une journée intense, entre innovation, partage et réflexion collective ! 🚀
Testssl.sh est un outil open source pour auditer la configuration SSL/TLS des serveurs web. Il permet de vérifier les protocoles supportés, les suites de chiffrement, les vulnérabilités connues et les en-têtes de sécurité HTTP. Fonctionnant sous Linux, macOS, FreeBSD et Windows (via WSL), il est également disponible en image Docker. Ce tutoriel explique son installation, son utilisation et l'interprétation des rapports générés, offrant une solution complète pour sécuriser les échanges web.
L'auteur, un ingénieur spécialisé dans les infrastructures d'agents IA, partage son expérience de burnout malgré une productivité accrue grâce à l'IA. Il explique que, bien que l'IA rende les tâches individuelles plus rapides, elle augmente également la charge de travail globale en incitant à en accomplir davantage. De plus, l'IA transforme le rôle de l'ingénieur en un travail plus évaluatif et moins créatif, ce qui est psychologiquement plus épuisant. L'auteur souligne l'importance de reconnaître et de discuter de ce paradoxe pour mieux gérer l'impact de l'IA sur la santé mentale des professionnels.
La page explique que sed est un éditeur de flux (stream editor) permettant de filtrer et transformer du texte en lecture depuis un fichier ou une entrée standard, en une seule passe de traitement pour des opérations efficaces. Elle illustre son usage par plusieurs exemples concrets, notamment la substitution de mots avec l’option s/pattern/remplacement/ (souvent avec -i pour modifier un fichier directement), ainsi que d’autres manipulations courantes comme ajouter du texte au début d’une ligne, supprimer des lignes selon un motif ou concaténer des lignes.
Scott H Young explore dans cet article les mécanismes qui rendent certaines tâches plus difficiles que d'autres et propose des stratégies pour rendre le travail ardu plus facile. Il explique que l'effort ressenti ne correspond pas à l'activité cérébrale globale, mais plutôt à la sensation de coûts d'opportunité liée à l'utilisation de notre mémoire de travail limitée. Les activités avec des récompenses immédiates, comme les jeux vidéo, semblent moins effortantes, tandis que les tâches ennuyeuses ou sans récompense apparente sont plus difficiles à maintenir. L'auteur souligne également l'importance de l'énergie et de la motivation dans la perception de l'effort, et comment notre état physique et mental influence notre capacité à choisir des tâches à long terme.
La Feature-Driven Architecture consiste à organiser une application autour de fonctionnalités complètes, chacune regroupant tout ce qui est nécessaire à son fonctionnement (logique, état, vues, tests), afin d’améliorer la scalabilité du code, la clarté des responsabilités et l’autonomie des équipes plutôt que de structurer le projet par couches techniques. Cette approche réduit les dépendances implicites, facilite le développement parallèle et permet de faire évoluer une fonctionnalité sans impacter les autres, tout en restant compatible avec des méthodes comme l’Atomic Design pour mutualiser des composants UI réellement génériques. Elle est particulièrement pertinente pour les applications complexes, en croissance ou développées par plusieurs personnes, où l’enjeu principal de la scalabilité concerne autant l’organisation du code et du travail que les performances techniques.
L'article de Kevin Hamer sur CSS-Tricks explore des méthodes pour approximer la fonction contrast-color() en CSS, qui n'est pas encore largement supportée par les navigateurs. Il explique comment utiliser les espaces de couleur et d'autres fonctionnalités CSS pour déterminer si un texte doit être en blanc ou en noir pour un contraste optimal, en se basant sur les directives WCAG 2.2. L'auteur propose une solution utilisant la lumière perceptuelle (L*) de l'espace de couleur CIELAB, offrant une alternative plus lisible et maintenable aux formules complexes basées sur la luminance.