L’article explique comment gérer la traduction de contenu statique (menus, titres, boutons) dans Symfony à l’aide du composant Translation. Il détaille les étapes clés : installation via symfony composer require translation, configuration des locales dans translation.yaml et routes.yaml, utilisation de clés (ex: about_us) dans des fichiers YAML par langue (messages.en.yaml, messages.fr.yaml), et intégration dans Twig avec le filtre |trans et un sélecteur de langue dynamique. Il aborde aussi le débogage avec debug:translation et l’extraction automatique des clés manquantes, tout en évoquant l’option d’utiliser des services externes comme Crowdin pour une gestion collaborative. Une approche simple et efficace pour internationaliser une application Symfony.
Les branches divergentes : source de conflits en push/pull
Erreurs classiques :
! [rejected] main -> main (non fast-forward)
fatal: Need to specify how to reconcile divergent branches.
Qu’est-ce qu’une branche divergente ?
Local et distant ont chacun des commits que l’autre n’a pas.
4 états possibles avec une branche distante :
- À jour
- Besoin de pull
- Besoin de push
- Divergée (il faut choisir comment résoudre le conflit)
Comment détecter une divergence ?
git fetch
git status
# Exemple de sortie :
# "Your branch and ‘origin/main’ have diverged, and have 1 and 1 different commits each."
Solution rapide :
git pull --rebase
(Mais il existe d’autres options, comme merge.)
À retenir :
git fetchrécupère les derniers commits.git pull=git fetch+git merge(ou rebase).
Git affiche constamment des diffs – mais parfois, ils semblent étranges.
Pourquoi ?
- Git ne comprend pas les intentions : un renommage (
git mv old.py new.py) est traité comme une suppression + ajout. - L’algorithme de diff compare simplement deux versions et essaie de résumer les changements de façon lisible… mais pas toujours avec succès.
Astuce :
- Git propose plusieurs algorithmes de diff. Par exemple, pour mieux gérer les réorganisations de code :
git diff --histogram
Git utilise un processus de commit en 2 étapes :
- Ajouter les modifications à la zone de staging (
git add,git rm,git mv). - Valider avec
git commit.
La zone de staging, 3 noms pour une seule chose :
- staged (
--staged) - cache (
--cached) - index (
--keep-index)
Astuces :
git add -ppermet de commiter seulement certaines parties d’un fichier.git diffne montre que les modifications non staged :git diff HEAD→ toutes les modifications non commitées.git diff --cached→ seulement les modifications staged.
git commit -ane prend pas en compte les nouveaux fichiers (il faut lesaddavant).
Git n’a pas de bouton "Annuler"
Pas de unadd, uncommit, unmerge ou unrebase. À la place, il y a git reset – puissant, mais dangereux.
Comment fonctionne git reset ?
- La plupart des commandes Git avancent la branche (
git commit,git merge,git pull). git resetpeut déplacer la branche n’importe où : en arrière, en avant, ou "de côté".- Exemple :
git reset HEAD^force la branche à pointer sur le commit parent, et déstage les changements.
Options clés :
- Par défaut : conserve les modifications dans le répertoire de travail.
--hard: supprime les modifications non commitées (attention, irréversible !).
Risques :
- Facile de "perdre" des commits en reculant une branche.
- Avec
--hard, perte définitive des changements non commités.
Le reflog Git, c’est quoi ?
Un historique de tous les IDs de commit qu’une branche, un tag ou HEAD a déjà pointés. Utile pour retrouver des commits "perdus".
Différences avec git log :
- Le reflog est local (non partagé entre dépôts).
- Il montre l’état des branches avant un rebase (contrairement à
git log). - Les entrées de plus de 90 jours peuvent être supprimées par
git gc.
Comment l’utiliser ?
- Lancer
git reflog(ougit reflog BRANCHpour moins de bruit). - Chercher un message de commit pertinent.
- Inspecter le commit avec
git show $COMMIT_IDougit log $COMMIT_ID. - Récupérer le commit avec
git reset --hard $COMMIT_IDougit branch $NAME $COMMIT_ID.
Limites :
- Le reflog d’une branche est supprimé si la branche l’est.
- Inutile pour récupérer un stash supprimé (
git stash drop). - Les entrées ne correspondent pas toujours aux commandes Git exécutées.
Dernier recours :
Si le commit n’est plus dans le reflog, utiliser git fsck pour lister les commits non référencés.
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/2025vsJune 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.languageou un attributlangen 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.