Quotidien Shaarli
August 21, 2025
6 semaines avec Claude Code : Orta Therox (Puzzmo) raconte comment cet outil d’IA a révolutionné sa productivité, lui permettant de réaliser en solo des mois de tech debt (migrations, tests, refactoring, etc.) en quelques semaines, sans surcharge. Claude Code agit comme un pair programmer ultra-rapide, accélérant prototypage et maintenance, tout en laissant l’humain garder le contrôle et la responsabilité finale. Une avancée majeure, mais qui pose question sur l’évolution du métier de dev.
L’article met en lumière un piège courant en JavaScript : l’utilisation de Array.includes
dans une boucle (comme source.some(item => target.includes(item))
) peut devenir extrêmement coûteuse en performance avec des tableaux volumineux, car la complexité algorithmique passe à *O(nm). Par exemple, avec des tableaux de 60 000 éléments, l’exécution peut prendre plusieurs secondes. La solution consiste à utiliser des structures de données optimisées pour des recherches en temps constant, comme un objet, une Map, ou mieux, un Set (new Set(target)
), réduisant la complexité à O(n + m)** et rendant le code quasi instantané même pour de très grands jeux de données. Une astuce simple, mais cruciale pour éviter des goulots d’étranglement inattendus dans le code JavaScript.
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 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 !
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.
L'article explique pourquoi privilégier l’immuabilité en programmation orientée objet permet d’éviter des bugs subtils liés à l’état partagé. L’auteur illustre le problème avec un exemple en PHP où la mutation d’un objet DateTime
affecte involontairement une autre partie du code, rendant le débogage difficile. Les objets immuables (comme DateTimeImmutable
) évitent ce genre de piège en retournant une nouvelle instance à chaque modification, plutôt que de modifier l’original. Les avantages incluent une meilleure prévisibilité du code, une réduction des effets de bord et une gestion plus sûre de la concurrence. Cependant, l’immuabilité peut introduire un surcoût en performance et n’est pas toujours adaptée (ex. : objets builders éphémères). L’article conclut en encourageant à adopter l’immuabilité par défaut, sauf besoin contraire, pour un code plus robuste et maintenable.
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 !
Pour résumer l'article, je paraphrase les derniers paragraphes.
[Ce qui suit] n'est pas une checklist. C'est une boucle de récupération. Vous pouvez commencer n'importe où, reculer ou sauter [une étape] selon la saison.
Mais lorsque la vie perturbe votre rythme, n'attendez pas de vous sentir prêt.
- Manque de confiance ? Construisez des preuves.
- Manque de preuves ? Développez des compétences.
- Manque de compétences ? Développez la discipline.
- Manque de discipline ? Développez la responsabilisation.
- Manque de responsabilisation ? Changez votre environnement.
Chaque niveau crée les conditions du suivant. Au fil du temps, vous passez de l'immobilisme à l'autonomie.
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.