Cet article présente des astuces pour un code plus propre, rapide et maintenable. Découvre les named capture groups en regex pour un parsing lisible, Object.fromEntries() pour transformer des données en un clin d’œil, ou les champs privés de classe (#) pour encapsuler ton état. Utilise le top-level await pour simplifier tes modules, l’API Intl pour un formatting localisé sans dépendances, ou le pipeline operator (|>) pour des chaînes de fonctions élégantes. WeakMap stocke des métadonnées sans polluer tes objets, les opérateurs d’assignation logique (||=, &&=, ??=) réduisent les conditionnelles, et Array.at(-1) élimine les acrobaties d’indexation. Des outils comme optional chaining (?.) ou Intl remplacent avantageusement des librairies externes.
Ce guide détaille la procédure de mise à jour de Debian 12 (Bookworm) vers Debian 13 (Trixie), sortie officiellement le 9 août 2025. Après une sauvegarde complète du système, il faut mettre à jour les paquets actuels, remplacer « bookworm » par « trixie » dans le fichier /etc/apt/sources.list
, puis lancer apt update
et apt full-upgrade
. La migration inclut une revue des changements de configuration et un redémarrage. Trixie apporte des améliorations de sécurité (Intel CET, ARM PAC/BTI), des environnements de bureau mis à jour (GNOME 48, KDE Plasma 6.3) et l’abandon progressif du support 32 bits. Après la mise à jour, il est conseillé de moderniser les sources avec apt modernize-sources
et de purger les paquets obsolètes. La documentation officielle et la communauté peuvent aider en cas de problème.
Sebsauvage donne plusieurs pistes pour réduire le trafic réseau sous Linux, utile par exemple si la connexion est limitée (thetering)
Ce guide explique comment optimiser le chargement des polices web pour éviter de ralentir un site : privilégiez le format WOFF2 (le plus efficace et universel), hébergez vos polices vous-même pour améliorer les performances et la vie privée, et utilisez font-display: swap
pour afficher immédiatement un texte de repli avant le chargement de la police personnalisée. Pensez à pré-charger les polices critiques avec <link rel="preload" as="font" ...>
, à sous-ensembliser les polices (unicode-range
) et à éviter les formats obsolètes (TTF, OTF, etc.). Intégrez les déclarations @font-face
directement dans le <head>
, choisissez des polices de repli système bien adaptées, et utilisez size-adjust
ou font-size-adjust
pour limiter les décalages de mise en page (CLS). Enfin, testez sur des réseaux lents et surveillez l’impact des polices sur les performances, en limitant le nombre de variantes et en évitant les polices d’icônes au profit des SVG. L’objectif : allier design et rapidité sans compromis.
L’article explique la différence fondamentale entre les DTO (Data Transfer Object) et les Entities dans Symfony, deux concepts clés pour structurer proprement une application. Les Entities représentent les objets métiers persistés en base de données, liés à Doctrine et souvent chargés de logique complexe, tandis que les DTO sont des objets légers, dédiés au transfert de données entre les couches (API, formulaires, services), sans logique métier ni persistance. Utiliser des DTO permet de découpler la validation, la sérialisation et la manipulation des données des Entities, améliorant ainsi la maintenabilité, la sécurité (en évitant d’exposer directement les Entities) et la clarté du code. L’auteur souligne que les DTO sont particulièrement utiles pour gérer les entrées/sorties des contrôleurs ou des services externes, tandis que les Entities restent le cœur du modèle de données. En résumé, bien distinguer les deux optimise l’architecture et réduit les risques d’incohérences ou de fuites de données sensibles.
Alexandre Touret partage son retour d’expérience sur un atelier d’Architecture Kata organisé lors de la Riviera Dev, où plus de soixante participants ont planché sur la conception d’une plateforme numérique dédiée au tourisme solidaire et durable. L’objectif était de proposer une solution intégrant profils utilisateurs éco-responsables, tableau de bord d’empreinte carbone, gamification et gestion d’activités locales, avec des contraintes techniques et métiers variées. L’article présente trois approches distinctes : deux propositions d’équipes (dont une très détaillée avec des diagrammes Structurizr) et la sienne, soulignant l’importance de clarifier les besoins métiers, de prioriser les flux principaux et d’externaliser les fonctions critiques (comme les paiements). L’exercice illustre la diversité des solutions possibles selon l’expérience des participants et rappelle que la pratique régulière des katas permet d’améliorer la prise de décision, la communication et l’adaptabilité en architecture logicielle. Une ressource utile pour quiconque s’intéresse à l’amélioration des compétences en design système.
Ce guide démystifie l’élément <path>
en SVG, souvent perçu comme complexe. À travers des exemples interactifs, il explique comment utiliser les commandes (M
, L
, Q
, C
, A
, etc.) pour dessiner des lignes, courbes de Bézier et arcs elliptiques, en enchaînant des instructions comme avec un stylo. Le guide couvre aussi les astuces (fermeture de chemin, commandes relatives) et montre comment créer des formes avancées, utiles pour le design et les animations web.
La page explique que différents émulateurs de terminal utilisent divers codes d'échappement pour effectuer des actions comme effacer l'écran. Les systèmes disposent d'une base de données appelée "terminfo" qui contient ces codes d'échappement, permettant aux programmes de savoir comment interagir avec le terminal. La variable d'environnement TERM
est utilisée pour identifier le type de terminal, mais cela peut poser problème lors de l'utilisation de SSH avec des systèmes anciens et des émulateurs modernes. Des solutions sont proposées pour résoudre ces problèmes, comme installer le fichier terminfo approprié ou utiliser un émulateur de terminal différent. Autre possibilité : définir TERM=xterm-256color fonctionne assez souvent
L'article liste une série d'astuces et bonnes pratiques pour la rédaction de prompts pour la programmation
Il s'agit d'un guide pratique pour les introvertis afin de réussir le réseautage lors d'événements professionnels ou sociaux. L'auteur partage des conseils basés sur des expériences personnelles et des stratégies tirées du livre "How to Talk to Anyone" de Leil Lowndes. Les étapes clés incluent la préparation avant l'événement, comme manger à l'avance et se tenir au courant de l'actualité, ainsi que des techniques pour entrer dans une pièce avec confiance, en utilisant une posture ouverte et un sourire réfléchi. L'article suggère également des phrases d'ouverture pour engager la conversation et des méthodes pour rester mémorable, comme écouter attentivement et suivre avec des détails spécifiques. L'objectif est de créer des connexions authentiques sans avoir à feindre l'extroversion.
L'article présente des astuces pour optimiser l'utilisation de Docker Compose. Il propose d'utiliser des profils pour activer des services de manière conditionnelle, de gérer les variables d'environnement avec des fichiers .env, et d'optimiser les builds avec le cache. Il aborde également l'utilisation des vérifications de santé pour gérer les dépendances entre services, la personnalisation des logs pour une meilleure lisibilité, l'utilisation de volumes nommés pour la persistance des données, et l'extension des fichiers de configuration pour une meilleure modularité. Ces techniques permettent de rendre les workflows de développement plus efficaces et flexibles.
L'article explique comment utiliser et interpréter les plans d'exécution dans PostgreSQL pour optimiser les performances des requêtes. Il commence par souligner l'importance de l'utilisation de la commande EXPLAIN ANALYZE pour comprendre comment PostgreSQL exécute une requête. L'article détaille les différents éléments d'un plan d'exécution, tels que les scans séquentiels et les scans d'index, et explique comment lire ces plans pour identifier les goulots d'étranglement. Il fournit également des conseils pour optimiser les requêtes, comme l'ajout d'index et la réécriture des requêtes pour une meilleure performance. Enfin, l'article aborde les options utiles de EXPLAIN et donne des pistes pour résoudre les problèmes courants identifiés dans les plans d'exécution.
L'auteur donne une série de conseils pour l'écriture de regex en JavaScript, du plus basique au plus complexe : ajout de flags, groupes de capture nommés, etc.
L'article présente une liste de conseils pour les tests avec PHPUnit, certains spécifiques à Laravel et d'autres non. J'en retiens :
- assertEqualsCanonicalizing qui permet de vérifier que 2 tableaux sont "égaux", sans tenir compte de l'ordonnancement des valeurs
- l'attribut #[\PHPUnit\Framework\Attributes\DoesNotPerformAssertions] qui permet de dire à PHPUnit qu'un test ne vérifie aucune assertion (ce qui déclenche normalement une erreur dans PHPUnit)
- l'attribut #[\PHPUnit\Framework\Attributes\RunInSeparateProcess] permet de préciser à PHPUnit d'exécuter les tests dans plusieurs processus... ça permet par exemple de définir une même constante dans 2 méthodes de tests de la même classe.
- la méthode $this->markTestSkipped('test are skipped because ...'); permet de sauter l'exécution d'un test, $this->markTestIncomplete('test are incomplete but not in error'); permet d'indiquer qu'un test est incomplet (??) et $this->fail('test are failed !'); permet de marquer un test comme échoué quoi qu'il arrive.
- phpunit --order-by=random permet de lancer les tests dans un ordre aléatoire - c'est très pratique pour détecter les dépendances implicites entre les tests. phpunit --order-by=random --random-order-seed=1234 permet même de rejouer le même ordre aléatoire, notamment pour reproduire un échec.
- phpunit --stop-on-failure --stop-on-error permet de stopper l'exécution des tests dès la première erreur rencontrée
- enfin en utilisant l'attribut #[\PHPUnit\Framework\Attributes\Group('mon_super_groupe')], on peut exclure les tests de ce groupe vendor/bin/phpunit --exclude-group mon_super_groupe ou au contraire ne jouer que les tests de ce groupe vendor/bin/phpunit --group flaky
L'article explique comment Docker utilise un système de stockage en couches, où chaque instruction dans un Dockerfile crée une nouvelle couche en lecture seule, avec une couche supérieure en lecture-écriture pour les conteneurs en fonctionnement. Il aborde les différents pilotes de stockage disponibles, comme overlay2, recommandé pour les distributions Linux modernes, et propose des conseils pour optimiser l'espace disque, comme l'utilisation d'images légères et la configuration de cron jobs pour le nettoyage périodique. Enfin, il souligne l'importance d'une bonne gestion des données persistantes dans un environnement de conteneurs éphémères.
L'article présente 5 scripts Bash dont on peut s'inspirer pour construire les nôtres.
- Création d'un backup
- Surveillance du CPU, de la mémoire et de l'espace disque disponible avec alerte en cas de besoin
- Audit de sécurité rapide
- Vérification rapide de la réponse des sites
- Partitionnement de disque dur
10 commandes linux méconnues et pourtant bien utiles : renommage de fichiers en masse, afficher la progression d'une copie de fichier, afficher les numéros de ligne, etc.
L'autuer partage 13 astuces pour le terminal : répéter, corriger, etc. Je ne les connaissais pas toutes
L'article explore comment transformer les boîtes de dialogue HTML en éléments visuellement attrayants et cohérents avec l'identité d'une marque. En utilisant des techniques CSS avancées telles que ::backdrop
, backdrop-filter
, et des animations, l'auteur montre comment dépasser les designs génériques pour créer des expériences utilisateur uniques et mémorables. L'article met en lumière des exemples concrets, comme l'intégration de designs rétro inspirés des années 90, tout en maintenant l'accessibilité et la performance. Il encourage les designers à voir les boîtes de dialogue non seulement comme des éléments fonctionnels, mais aussi comme des opportunités pour renforcer le storytelling et l'identité visuelle d'un site web.
L'article explore l'importance des messages de commit clairs et de la documentation complète dans le processus de développement logiciel. L'auteur y décrit sa routine personnelle pour rédiger des messages de commit détaillés et structurés, en utilisant un modèle standard qui inclut le type de modification, la portée, un résumé, une description du problème, la solution apportée, et le contexte supplémentaire. Il souligne également l'impact positif de cette pratique sur la collaboration et la maintenance du code. L'article aborde aussi l'utilisation d'outils comme les hooks Git pour maintenir la qualité des commits et l'intégration de l'IA pour aider à la documentation. Enfin, l'auteur partage son approche pour gérer la documentation à travers différentes étapes du développement, soulignant que ces pratiques sont essentielles pour un développement professionnel efficace.