Symfony 7 utilise les attributes PHP (syntaxe #[...]
) pour remplacer les annotations et déclarer des métadonnées directement dans le code. L’article montre comment créer des attributes sur mesure (ex : #[Audit]
pour le logging, #[FeatureToggle]
pour gérer des fonctionnalités, #[RequiresRole]
pour la sécurité, #[Throttle]
pour limiter les requêtes) et les exploiter via des event listeners. Ces outils simplifient la maintenance, évitent la duplication de code et rendent le comportement du code plus explicite. Les attributes peuvent aussi cibler des classes et être packagés en bundles réutilisables. Une fonctionnalité puissante pour structurer vos applications Symfony de manière déclarative et élégante.
Balises <strong>
, <b>
, <em>
, <i>
: quand et pourquoi les utiliser ?
En HTML, le choix entre ces balises dépend avant tout de la sémantique : <strong>
et <em>
apportent du sens (importance ou emphase, utiles pour les lecteurs d’écran), tandis que <b>
et <i>
servent à une distinction visuelle ou typographique sans valeur sémantique. <strong>
souligne un contenu crucial (avertissements, instructions), <em>
modifie le sens d’une phrase par l’emphase. <b>
attire l’attention sans importance particulière, et <i>
s’emploie pour des termes techniques, noms d’œuvres ou mots étrangers. Pour un style purement décoratif, privilégiez le CSS avec <span>
. L’objectif : séparer structure (HTML) et présentation (CSS) pour un code propre et accessible.
Points clés
1. L’internationalisation, bien plus que la traduction
L’i18n ne se limite pas à traduire du texte : elle inclut aussi le formatage des dates, des nombres, des listes, la pluralisation, etc., selon les attentes culturelles de chaque locale. L’API Intl
de JavaScript offre une solution native, performante et standardisée pour gérer ces aspects, sans dépendre de bibliothèques tierces lourdes.
2. Qu’est-ce qu’une locale ?
Une locale (en-US
, fr-FR
, ja-JP
, etc.) définit non seulement la langue, mais aussi la région, le script, et d’autres préférences culturelles. Elle permet d’adapter finement l’affichage des données.
3. Les principaux outils de l’API Intl
Intl.DateTimeFormat
: Formate les dates et heures selon les conventions locales (ex. :27/06/2025
vsJune 27, 2025
).Intl.NumberFormat
: Affiche les nombres, devises et unités avec les séparateurs et symboles locaux (ex. :123,456.79 $
vs123.456,79 €
).Intl.ListFormat
: Génère des listes naturelles avec les conjonctions adaptées (ex. : « pommes, oranges et bananes » vs « apples, oranges, and bananas »).Intl.RelativeTimeFormat
: Affiche des expressions temporelles relatives (« hier », « dans 3 mois ») de manière localisée.Intl.PluralRules
: Détermine la catégorie de pluralisation (singulier/pluriel, mais aussi « zero », « one », « two », etc. pour l’arabe).Intl.DisplayNames
: Fournit les noms localisés des langues, régions ou scripts (ex. : « French » vs « français »).
4. Avantages
- Natif : Intégré à tous les navigateurs modernes, sans besoin de polyfills.
- Performant : Réduit la taille des bundles et améliore les performances.
- Flexible : Permet de surcharger la locale par défaut (via
navigator.language
ou un attributlang
en HTML).
5. Cas d’usage
- Afficher des prix, dates ou listes adaptés à l’utilisateur.
- Gérer la pluralisation complexe (ex. : arabe, russe).
- Éviter les solutions maison ou les bibliothèques externes.
6. Limites
L’API Intl
gère le formatage des données, mais pas la traduction de contenu, la typographie RTL/LTR, ou les nuances culturelles profondes.
7. Ressources utiles
Pourquoi l’utiliser ?
L’API Intl
simplifie l’internationalisation tout en respectant les standards du web. Idéal pour des applications multilingues légères et maintenables.
Ce comic explique simplement ce qu’est un dépôt distant (remote) dans Git : un autre dépôt vers lequel on pousse (push
) ou depuis lequel on tire (pull
) du code. Un remote peut être hébergé sur GitHub, GitLab, un serveur personnel, ou même un dossier local. La syntaxe git push origin main
signifie "pousser la branche main
vers le remote nommé origin
". Les remotes sont configurés dans .git/config
avec un nom et une URL, et peuvent utiliser différents protocoles (HTTP, SSH, ou local). Les remotes sont aussi le lieu de "drames" typiques, comme les conflits lors d’un git pull
après qu’un·e collègue a réécrit un fichier. Astuce : activer push.autoSetupRemote true
pour simplifier le suivi des branches. Une introduction claire et pratique pour comprendre l’interaction entre dépôts locaux et distants !
Ce comic illustre comment des commits peuvent se "perdre" dans Git, même s’ils restent souvent stockés quelque part. Les causes fréquentes : git commit --amend
, git rebase
, la suppression d’une branche non fusionnée ou git stash drop
. Trois niveaux de gravité sont décrits : "énervant" (le commit n’est plus référencé par une branche/étiquette mais reste facile à retrouver), "cauchemar" (il faut fouiller tous les commits), et "catastrophe" (le commit est supprimé). Heureusement, Git conserve généralement les commits "perdus" : on peut les retrouver via le reflog
pour les cas simples, ou git fsck
pour les situations plus complexes. Une bonne raison de ne pas paniquer et de connaître ces outils de récupération !
Ce comic explique de façon visuelle et accessible comment Git stocke les fichiers en interne. À l’aide de la commande git cat-file -p
, on peut explorer un commit : celui-ci contient un arbre (tree) pointant vers des fichiers (blobs) ou d’autres arbres, chaque objet étant identifié par un hash SHA-1. Par exemple, un commit affiche son auteur, sa date, son message, et l’ID de l’arbre racine ; cet arbre liste les fichiers et leurs hashs, permettant à Git d’éviter les doublons en réutilisant les mêmes objets si le contenu ne change pas. Une façon simple et concrète de comprendre que Git fonctionne comme un système de fichiers basé sur des hashs, où chaque modification crée de nouveaux objets tout en réutilisant ceux inchangés. Une astuce utile pour mieux appréhender le fonctionnement interne de Git !
La dette technique est inévitable dans tout projet logiciel, mais la clé réside dans sa gestion stratégique plutôt que dans son élimination totale. Cet article explique comment évaluer quand il est judicieux de réécrire du code (par exemple, avant d’ajouter une nouvelle fonctionnalité ou en cas de risques majeurs) et quand il vaut mieux la tolérer temporairement (lorsque le coût dépasse les bénéfices immédiats). L’auteur propose une matrice décisionnelle et des conseils pour convaincre les parties prenantes en traduisant l’impact technique en arguments business : gain de temps, réduction des risques, et amélioration de la vélocité d’équipe. L’objectif ? Équilibrer pression court terme et santé long terme du code, sans tomber dans le piège de la quête de perfection.
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.
L'auteur explore dans son article les valeurs méconnues de l’attribut href
des liens HTML. Par exemple, href="#"
fait défiler vers le haut (sauf si un élément id="top"
existe), tandis que href=""
recharge la page en gardant les paramètres de recherche mais supprime le fragment. Avec href="."
, la page est rechargée en supprimant à la fois les paramètres et le fragment, mais attention à la structure de l’URL pour éviter des comportements inattendus. href="?"
efface les paramètres et le fragment, mais conserve le ?
. On peut aussi utiliser href="data:"
pour créer des liens vers des données encodées directement dans l’URL, ou href="video.mp4#t=10,20"
pour cibler une plage temporelle dans un média. L’article rappelle aussi l’existence des protocoles comme mailto:
ou tel:
, ainsi que les fragments de texte (#:~:text=foo
). Une lecture utile pour exploiter pleinement les possibilités des liens en HTML.
L’IA est un outil puissant pour accélérer et optimiser le développement, pas pour remplacer les devs. L’article illustre comment intégrer l’IA à chaque étape d’un projet (ex. : un site de location de voitures) : planification (génération de briefs et wireframes en quelques minutes), design (création d’interfaces et de code HTML/CSS via des outils comme v0.dev), boilerplate (conversion rapide en React/TypeScript avec des prompts précis), et amélioration (refactoring collaboratif pour rendre le code scalable et propre). L’IA automatise les tâches répétitives (recherche, design, code basique), mais c’est au développeur de superviser, architecturer et corriger les imperfections (logique métier, réutilisabilité). L’enjeu ? Travailler plus intelligemment, en utilisant l’IA comme un "pair programmer" pour se concentrer sur les défis complexes (architecture, UX, performance). À condition de rester critique : l’IA génère du code, mais c’est à vous d’en garantir la qualité et l’éthique. "Un dev qui maîtrise l’IA aura toujours un avantage."
L’article démystifie les différences entre piles (jetables, non rechargeables), accumulateurs (rechargeables, souvent appelés à tort "piles rechargeables") et batteries (assemblages de cellules). Il explique les formats standardisés (AA, AAA, 18650, etc.), les technologies (alcaline, NiMH, lithium-ion, sodium-ion), et leurs avantages/inconvénients : les piles alcalines peuvent fuir, les lithium-ion offrent de hautes performances mais sont inflammables, tandis que le sodium-ion émerge comme une alternative plus écologique et sûre. Le choix entre piles et accumulateurs dépend de l’usage : les accumulateurs sont recommandés pour les appareils gourmands en énergie ou critiques, mais leur coût et leur gestion (éviter de mélanger les modèles, surveiller la capacité) peuvent limiter leur intérêt pour un usage occasionnel. L’article donne aussi des conseils pour choisir des marques, des chargeurs (privilégier les modèles USB-C avec mesure de capacité) et optimiser la durée de vie des batteries (éviter les charges/décharges extrêmes, privilégier la charge lente). Une ressource utile pour y voir plus clair et faire des choix éclairés, tant pour l’environnement que pour le portefeuille.
L'auteur raconte son parcours à travers une multitude d’applications de todo (Notion, Todoist, Things 3, Trello, OmniFocus, etc.), qu’il a toutes abandonnées pour revenir à un simple fichier texte, todo.txt
. Après des années à perdre du temps à configurer et gérer des outils complexes, il a réalisé que la simplicité d’un fichier texte—accessible, instantané, intemporel et sans dépendance—lui permettait d’être bien plus productif. Son système repose sur une liste datée, mise à jour quotidiennement, où tâches, notes et résultats cohabitent, transformant son todo en un journal de bord. Sans fonctionnalités superflues, sans abonnement, et toujours disponible, cette méthode lui a prouvé qu’une solution basique, mais utilisée régulièrement, surpasse tous les outils sophistiqués. Une leçon : la productivité tient moins à l’outil qu’à l’action.
L'article explore l'outil PHPMD (PHP Mess Detector), qui analyse le code PHP pour détecter des problèmes de qualité et de complexité. L'auteur explique la notion de complexité cyclomatique, introduite par Thomas McCabe, qui mesure le nombre de chemins d'exécution possibles dans un code, et montre comment PHPMD peut aider à identifier des zones problématiques où cette complexité est trop élevée. L'article décrit l'installation et la configuration de PHPMD, ainsi que ses différentes règles pour améliorer la qualité du code, comme CleanCode, CodeSize, et Naming. Il aborde également l'intégration de PHPMD dans des workflows de développement, par exemple avec PHPStorm ou GitHub Actions, et discute des métriques avancées pour évaluer la qualité du code. En conclusion, l'auteur encourage les développeurs à utiliser PHPMD régulièrement pour maintenir un code propre et maintenable, malgré les critiques parfois sévères de l'outil.
L'article de Korben sur la "boîte à outils ultime pour dompter Windows 11" propose une série de conseils et d'outils pour optimiser et personnaliser votre expérience avec ce système d'exploitation. Il aborde des fonctionnalités comme le DNS-over-HTTPS pour sécuriser vos requêtes, la fonctionnalité "Cross-Device Resume" pour reprendre vos tâches entre différents appareils, et des outils comme BloatyNosy Nue pour nettoyer votre système. L'article vise à transformer Windows 11 en une "machine de guerre", que vous soyez un utilisateur occasionnel ou un expert, et encourage les lecteurs à partager leurs propres découvertes d'outils utiles.
Plakar est un outil de sauvegarde moderne pour Linux, offrant des fonctionnalités avancées comme la déduplication, le chiffrement de bout en bout, et la compression des données pour optimiser l'espace de stockage. Il permet des sauvegardes incrémentielles, ce qui le rend efficace pour des sauvegardes fréquentes, et supporte les sauvegardes distantes via SFTP. L'outil fonctionne avec un agent et propose une interface en ligne de commande ainsi qu'une interface graphique rudimentaire pour gérer les sauvegardes, les restaurations, et la vérification de l'intégrité des données. Plakar ne nécessite pas de base de données externe, stockant les métadonnées directement dans le dépôt de sauvegarde.
L'article introduit le Core Model, une méthodologie pratique qui révolutionne le développement numérique traditionnel en commençant par une hypothèse sur les besoins des utilisateurs plutôt que par des solutions préconçues. En posant six questions clés dans le bon ordre, cette approche aligne les équipes pluridisciplinaires autour des tâches des utilisateurs et des objectifs commerciaux, créant ainsi une clarté qui transcende les limites organisationnelles. Le processus commence par une préparation en amont pour identifier les priorités et former des hypothèses initiales, suivies d'un atelier collaboratif où des paires de participants travaillent ensemble pour valider et affiner ces hypothèses. Les six éléments du Core Model — groupe cible, tâches des utilisateurs, objectifs commerciaux, chemins d'accès, chemins de progression et contenu principal — créent un cadre structuré qui guide les équipes vers des solutions efficaces. L'article souligne l'importance de travailler en paires interdisciplinaires pour favoriser l'innovation et la qualité, et conclut en expliquant comment cette méthodologie peut être mise en œuvre pour améliorer la collaboration et obtenir de meilleurs résultats dans les projets numériques.
Un guide pour la sécurisation d'un serveur linux
Le fingerprinting, ou empreinte numérique, est une technique de suivi qui identifie un appareil ou un utilisateur sans utiliser de cookies, en collectant des informations comme le navigateur, le système d'exploitation, la langue, et d'autres configurations. Cette méthode crée un profil unique qui peut être utilisé pour suivre les utilisateurs à travers différents sites, même en navigation privée. Pour se protéger, il est conseillé de se fondre dans la masse en utilisant des navigateurs comme Tor ou Brave, ou des extensions comme Chameleon pour uniformiser son empreinte numérique. Des outils comme "Am I Unique ?" et "Cover Your Tracks" permettent de tester sa propre empreinte et de mieux comprendre les risques pour la vie privée.
L'article explique les quatre grandes cadences en musique, qui structurent les phrases musicales comme la ponctuation le fait pour les phrases écrites. Les cadences sont des enchaînements d'accords à la fin d'un élément musical, produisant des effets conclusifs ou suspensifs. La cadence parfaite, par exemple, utilise les accords de degré V et I pour créer une sensation de conclusion, comme dans "Somebody to Love" de Queen. La cadence plagale, avec les accords IV et I, offre une conclusion moins définitive, souvent utilisée dans la musique liturgique. La demi-cadence repose sur le cinquième degré, créant une suspension, tandis que la cadence rompue surprend en déviant de l'accord attendu, comme dans "I Want to Break Free" de Queen. Ces outils permettent aux musiciens de s'exprimer et d'enrichir leurs compositions.
L'article explore l'utilisation du Shadow DOM dans le cadre des Web Components. L'auteur explique que les Web Components ne se limitent pas aux Custom Elements, mais incluent également le Shadow DOM et les HTML Templates, chacun jouant un rôle spécifique. Le Shadow DOM permet d'encapsuler le HTML et le CSS, isolant ainsi les composants pour éviter les conflits et maintenir une séparation claire des préoccupations. L'article aborde les raisons d'être du Shadow DOM, son utilisation pour isoler les composants dans les applications web modernes, et comment il peut être instancié de manière impérative ou déclarative. L'auteur discute également des différentes options de configuration du Shadow DOM, comme les modes ouvert et fermé, et des fonctionnalités avancées telles que les contenus slottés, qui permettent d'injecter sélectivement du contenu dans les composants. Enfin, l'article souligne l'importance de la maîtrise du Shadow DOM pour améliorer la stabilité, la réutilisabilité et la sécurité des applications web.