Table de Hachage : Comment le Hachage Fonctionne

Chercher une clĂ© dans un dict Python contenant dix entrĂ©es prend le mĂȘme temps que dans un dict qui en contient dix millions. Ce n’est pas un hasard liĂ© Ă  un langage rapide. Le dict de Python, le HashMap de Java et la Map de JavaScript sont tous des tables de hachage, et toute leur conception vise Ă  faire tourner recherche, insertion et suppression en O(1) en moyenne. La notation Big O donne Ă  cette recherche l’étiquette “temps constant”. Voici le mĂ©canisme qui la justifie. ...

4 novembre 2026 Â· 9 min Â· 1731 mots Â· SpaghettiCoder

Mock, Stub, Fake et Spy : les Test Doubles Expliqués

Un test pour place_order a besoin d’une passerelle de paiement, d’un client SMS et d’un calculateur de taxes. Branchez les vraies dĂ©pendances, et chaque exĂ©cution de test dĂ©bite une carte et envoie un SMS. Un test unitaire doit s’exĂ©cuter en quelques millisecondes, sans rĂ©seau : les trois doivent donc ĂȘtre remplacĂ©es par autre chose. Cet « autre chose » existe en cinq variantes, chacune rĂ©solvant un problĂšme diffĂ©rent, et les traiter comme interchangeables est la raison pour laquelle les dĂ©bats « mets juste un mock » en revue de code tournent en rond. ...

2 novembre 2026 Â· 9 min Â· 1719 mots Â· SpaghettiCoder

Expressions RéguliÚres : Comment le Regex Fonctionne

<.+> appliquĂ© Ă  <b>bold</b> and <i>italic</i> ne trouve pas <b>. Il trouve la chaĂźne entiĂšre, du premier < au tout dernier >. Rien n’est cassĂ©. C’est exactement ce qu’un quantificateur greedy est censĂ© faire, et c’est aussi le bug le plus courant de “mon regex matche trop”. Une fois que vous savez ce que fait le moteur pendant qu’il lit votre motif, ce bug et la plupart de ses cousins arrĂȘtent d’ĂȘtre des mystĂšres. ...

28 octobre 2026 Â· 8 min Â· 1676 mots Â· SpaghettiCoder

Qu'est-ce qu'Unicode et Comment Fonctionne l'UTF-8

Ouvrez un fichier enregistrĂ© en UTF-8 avec un outil qui suppose un autre encodage, et cafĂ© devient café. Les octets sur le disque n’ont pas changĂ©. Seule la rĂšgle utilisĂ©e pour les retransformer en caractĂšres a changĂ©, et les deux rĂšgles ne sont pas d’accord sur ce que signifie l’octet 0xC3. La plupart des bugs de “caractĂšres bizarres” partagent la mĂȘme origine : noms de fichiers cassĂ©s, formulaires illisibles, un emoji qui fait Ă©chouer un insert en base de donnĂ©es, deux chaĂźnes identiques Ă  l’Ɠil mais diffĂ©rentes Ă  la comparaison. Dans chaque cas, on confond deux choses distinctes : Unicode et UTF-8. ...

20 octobre 2026 Â· 9 min Â· 1708 mots Â· SpaghettiCoder

Qu'est-ce que le TDD et Comment Marche le Red-Green-Refactor

Un test Ă©crit aprĂšs le code tend Ă  vĂ©rifier ce que le code fait, pas ce qu’il Ă©tait censĂ© faire. Le dĂ©veloppement pilotĂ© par les tests (TDD) corrige cela en inversant l’ordre : vous Ă©crivez le test, vous le regardez Ă©chouer, puis vous Ă©crivez le plus petit bout de code qui le fait rĂ©ussir. Comme le test existe avant le code qu’il vĂ©rifie, il ne peut pas valider silencieusement tout ce que le code renvoie. Kent Beck a formalisĂ© cette boucle sous le nom red, green, refactor dans son livre de 2002 Test-Driven Development: By Example. Le nom est restĂ©. ...

18 octobre 2026 Â· 8 min Â· 1512 mots Â· SpaghettiCoder

La RĂ©cursivitĂ© ExpliquĂ©e: Quand l'Utiliser et Quand l'Éviter

Une fonction qui s’appelle elle-mĂȘme a une profondeur maximale, et elle est plus petite que ce que la plupart des gens imaginent : 1 000 appels dans CPython par dĂ©faut, Ă  peu prĂšs 10 000 Ă  15 000 dans Node et dans les moteurs des navigateurs, selon ce que chaque frame contient. DĂ©passer cette limite ne ralentit pas le programme. Il plante. Python lĂšve RecursionError: maximum recursion depth exceeded ; JavaScript lĂšve RangeError: Maximum call stack size exceeded. ...

13 octobre 2026 Â· 8 min Â· 1555 mots Â· SpaghettiCoder

Les Principes SOLID Expliqués avec des Exemples en Python

Une classe qui enregistre un utilisateur en base, lui envoie un email de bienvenue et met en forme un reçu n’est qu’à un changement de casser deux fonctionnalitĂ©s qui n’ont rien Ă  voir entre elles. Vous touchez le template de l’email et vous risquez l’écriture en base. Vous touchez la mise en page du reçu et vous risquez l’email. SOLID, ce sont cinq rĂšgles qui attaquent ce type d’enchevĂȘtrement sous des angles diffĂ©rents, et elles partagent une idĂ©e : une classe doit changer pour une seule raison, et le reste du code doit dĂ©pendre de ce qu’une chose promet de faire, pas de la façon dont elle le fait. ...

10 octobre 2026 Â· 10 min Â· 2030 mots Â· SpaghettiCoder

Qu'est-ce qu'une Race Condition et Comment la Corriger

Deux requĂȘtes arrivent sur le mĂȘme endpoint “retirer 100 €” Ă  un demi-milliseconde d’intervalle. Le compte contient 150 €. Les deux requĂȘtes lisent ce solde, les deux voient des fonds suffisants, les deux approuvent, les deux soustraient 100 €. Le compte termine Ă  -50 €, et aucune branche du code n’aurait dĂ» permettre cela. C’est une race condition : le rĂ©sultat dĂ©pend de l’opĂ©ration qui termine la premiĂšre, et “la premiĂšre” n’a jamais Ă©tĂ© quelque chose que le code a dĂ©cidĂ©. ...

9 octobre 2026 Â· 10 min Â· 2009 mots Â· SpaghettiCoder

Décorateurs Python Expliqués avec des Exemples

Ce qu’un dĂ©corateur fait vraiment Ă  votre fonction Vous voulez mesurer le temps de chaque fonction qui appelle une API externe lente. Vous pouvez coller des appels Ă  time.perf_counter() dans chacune, ou Ă©crire la mesure une seule fois et l’appliquer partout. Un dĂ©corateur est la deuxiĂšme option : c’est une fonction qui prend une autre fonction, l’enveloppe dans un comportement supplĂ©mentaire et renvoie la version enveloppĂ©e sous le mĂȘme nom. ...

7 octobre 2026 Â· 7 min Â· 1410 mots Â· SpaghettiCoder

Pourquoi 0.1 + 0.2 Ne Fait Pas 0.3 : la Virgule Flottante

ExĂ©cutez 0.1 + 0.2 dans un shell Python et vous n’obtenez pas 0.3. Vous obtenez 0.30000000000000004. Essayez en JavaScript, Java, Go, C ou Rust et vous retrouvez la mĂȘme traĂźne de dix-sept chiffres. Chacun de ces langages fait exactement ce que lui impose le matĂ©riel. Un nombre qui demanderait une infinitĂ© de chiffres binaires est compressĂ© dans 64 bits, et quelque chose doit cĂ©der. Pourquoi 0.1 ne peut pas ĂȘtre stockĂ© exactement en binaire Les ordinateurs stockent les nombres Ă  virgule flottante en base 2. En base 2, la fraction 1/10 a un dĂ©veloppement pĂ©riodique, tout comme 1/3 se rĂ©pĂšte indĂ©finiment en base 10 (0.3333...). DĂ©veloppĂ© en dĂ©tail, 0.1 en binaire commence ainsi : ...

6 octobre 2026 Â· 6 min Â· 1236 mots Â· SpaghettiCoder