Configuration du fichier CLAUDE.md Pour guider efficacement l'assistant dans un projet existant, la création d'un fichier CLAUDE.md à la racine du dépôt est indispensable. Ce fichier documente les commandes spécifiqu…
Exprimer le regret et la fatalité avec "mất" En vietnamien, le verbe mất signifie littéralement "perdre". Cependant, lorsqu'il est placé après un verbe d'action, il se transforme en une particule aspectuelle qui expr…
Commandes de base et initialisation Claude Code s'installe via npm et s'exécute directement dans le terminal à la racine d'un dépôt Git. L'initialisation se fait par la commande claude , qui analyse la structure du pr…
Optimisation des templates Twig et rendu dynamique Dans un contexte de développement web moderne, l'utilisation avancée de Twig permet de structurer efficacement la logique d'affichage côté serveur avant la livraison a…
Exprimer le regret et la déception avec le verbe Tiếc En vietnamien, pour exprimer le regret face à une occasion manquée, une perte ou une situation décevante, on utilise principalement le verbe tiếc (regretter) ou l…
Fini jQuery, place au JavaScript natif Depuis la version 5, Bootstrap ne dépend plus de jQuery : tous les composants (modales, tooltips, dropdowns, carousels) sont pilotés en JavaScript vanilla via des classes ES6. C…
Automatiser des actions avec les hooks Les hooks permettent d'exécuter une commande shell à des moments précis du cycle de vie de l'agent : avant ou après un appel d'outil, à l'arrêt de la session, etc. Contrairemen…
Un serveur PHP qui remplace Nginx + PHP-FPM FrankenPHP est un serveur d'application écrit en Go, basé sur Caddy, qui embarque directement l'interpréteur PHP. Il supprime le duo classique Nginx/PHP-FPM au profit d'un…
Le mapping par attributs PHP Depuis Doctrine ORM 2.9+ et surtout en version 3.x, le mapping par attributs PHP 8 remplace les annotations Doctrine et le YAML/XML. Il n'y a plus besoin de parser des docblocks : les mét…
Un nouveau cycle de versions depuis 2024 Depuis MySQL 8.4, Oracle a changé son modèle de release : il existe désormais des versions Innovation (nouvelles fonctionnalités, support court) et des versions LTS comme 8…
Ce qui change concrètement depuis PHP 8.2 PHP 8.2 a marqué un tournant vers plus de rigueur dans le typage et l'immutabilité, et les versions 8.3/8.4 ont continué dans cette direction. Voici les points qui méritent u…
<h2>Sass en 2026 : @use, @forward et l'abandon définitif de @import</h2> <p>Dart Sass est aujourd'hui la seule implémentation maintenue (LibSass et Ruby Sass sont morts depuis longtemps), et <code&g…
Stimulus.js : Outlets, Values et cycle de vie des contrôleurs Values : au-delà des simples data-attributes L'API values ne se contente pas de lire des chaînes : elle type et sérialise automatiquement les données…
PHP 8.2 minimum : moins de code, plus de garanties Symfony 7 impose PHP 8.2 et abandonne tout le code de compatibilité avec les anciennes versions. Concrètement, cela signifie que le framework lui-même utilise désorma…
Au-delà des blocks et des filtres de base La plupart des développeurs s'arrêtent à {% extends %} , {% block %} et aux filtres classiques comme |upper ou |date . Twig 3.x offre pourtant plusieurs mécanismes qui é…
L'opérateur satisfies : le meilleur des deux mondes Beaucoup de développeurs annotent encore leurs objets de configuration avec un type explicite, au prix d'une perte d'inférence précise. L'opérateur satisfies , dis…
Le socle : un webpack.config.js minimal mais complet Encore reste une surcouche fluide au-dessus de Webpack, pensée pour éviter d'écrire soi-même une configuration Webpack complète. La base ressemble toujours à ceci :…
Fini jQuery, place au JavaScript natif Depuis la version 5, Bootstrap ne dépend plus de jQuery. Tous les composants interactifs (modales, tooltips, offcanvas, carousel...) sont réécrits en JavaScript vanilla. Si vous…
Claude Code : piloter le développement depuis le terminal Claude Code n'est pas un simple chatbot dans un shell : c'est un agent qui lit, modifie, exécute et commit du code de façon autonome, avec une boucle d'outils…
Ce que FrankenPHP change dans un conteneur FrankenPHP est un serveur d'application écrit en Go qui embarque Caddy et le moteur PHP dans un seul binaire. Contrairement au duo classique nginx + php-fpm , il n'y a pl…
Le mapping par attributs a remplacé les annotations Depuis Doctrine ORM 2.9+ et surtout la branche 3.x, le mapping se fait avec les attributs natifs PHP 8 plutôt qu'avec les annotations Doctrine ( @ORM\... ). Les an…
L'ordre des colonnes dans un index composite change tout Un index sur (a, b, c) ne sert pas les requêtes qui filtrent uniquement sur b ou c : MySQL utilise l'index de gauche à droite, en s'arrêtant à la première…
Classes en lecture seule et propriétés typées PHP 8.2 introduit les classes readonly , une extension logique des propriétés readonly apparues en 8.1. Plutôt que de marquer chaque propriété individuellement, on d…
Dart Sass est la seule implémentation à suivre LibSass et Ruby Sass sont abandonnés depuis plusieurs années. Si votre pipeline de build passe encore par node-sass , c'est un signal d'alerte : ce paquet enveloppe LibS…
Au-delà des controllers basiques Une fois les targets et les actions simples maîtrisés, trois mécanismes changent vraiment la donne pour construire des interfaces Stimulus robustes : l' API Values , l' API Outlets…
Un socle PHP 8.2+ qui change les habitudes Symfony 7 exige PHP 8.2 minimum . Concrètement, cela signifie que vous pouvez enfin généraliser les readonly properties , les enums en argument de constructeur, et le ty…
Composer avec des macros plutôt que dupliquer des blocs Passé le stade des {% for %} et {% if %} , la première brique à maîtriser pour un code de templates propre est la macro. Une macro se comporte comme une fonc…
L'opérateur satisfies : garder l'inférence sans perdre la validation Un piège classique en TypeScript consiste à annoter une variable avec un type trop large pour la sécuriser, au prix de la perte de l'inférence fine…
Webpack Encore : ce que cache addEntry() Webpack Encore n'est pas un remplaçant de webpack, c'est une API fluide qui génère un webpack.config.js complet à partir d'un fichier webpack.config.js écrit avec Encor…
Les variables CSS remplacent (en partie) Sass Depuis la version 5.2, Bootstrap expose l'essentiel de son design system via des variables CSS natives préfixées --bs- , générées à partir des variables Sass. Cela per…
Claude Code n'est pas un simple chat dans le terminal Claude Code fonctionne selon une boucle agentique : le modèle lit le contexte, choisit un outil (lecture de fichier, édition, exécution shell, recherche web), ob…
Ce que change FrankenPHP par rapport à PHP-FPM FrankenPHP est un serveur d'application écrit en Go, construit sur Caddy , qui embarque directement l'interpréteur PHP via cgo. Il remplace le duo nginx + PHP-FPM par…
Le problème N+1 et les stratégies de fetch Le piège classique avec Doctrine reste le chargement paresseux mal maîtrisé. Itérer sur une collection OneToMany sans précaution déclenche une requête SQL par entité liée.…
Les CTE récursives remplacent les hacks à base de variables Avant MySQL 8.0, parcourir une hiérarchie (arbre de catégories, organigramme) obligeait à bricoler avec des variables de session ou des procédures stockées.…
Fin des propriétés dynamiques (PHP 8.2) Affecter une propriété non déclarée sur un objet standard déclenche désormais une Deprecated warning, sauf si la classe implémente #[AllowDynamicProperties] ou hérite de st…
Sass moderne : @use, @forward et sass:math remplacent @import @import est officiellement déprécié dans Dart Sass depuis la version 1.80 et sera retiré définitivement. Si vos fichiers utilisent encore @import 'var…
L'API Values : typer l'état d'un controller Passé les premiers data-controller et data-target , la vraie puissance de Stimulus tient dans son API Values . Elle transforme les attributs data-* en propriétés JavaS…
Symfony 7 : les nouveautés concrètes à maîtriser Symfony 7 ne bouleverse pas l'architecture héritée de la 6.4 LTS, mais il relève la barre : PHP 8.2 devient le minimum requis, tout le code marqué @deprecated depuis…
Macros : au-delà du simple include Une macro Twig fonctionne comme une fonction réutilisable dans un template, avec ses propres paramètres et valeurs par défaut. Contrairement à include , elle ne partage pas le cont…
L'opérateur satisfies et les unions discriminées bien typées Deux outils du typage TypeScript restent sous-utilisés une fois les bases acquises : l'opérateur satisfies (depuis TS 4.9) et la construction rigoureuse…
Depuis l'arrivée d' AssetMapper dans Symfony 6.3, beaucoup de développeurs se demandent si Webpack Encore est encore pertinent. La réponse est oui dès qu'un projet dépend de paquets npm complexes, de TypeScript, de Rea…