<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: OCLKA</title>
    <description>The latest articles on Forem by OCLKA (@oclka).</description>
    <link>https://forem.com/oclka</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3461448%2F87dfc611-363f-4603-b7f4-d3589d7ec1de.png</url>
      <title>Forem: OCLKA</title>
      <link>https://forem.com/oclka</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/oclka"/>
    <language>en</language>
    <item>
      <title>Avec Git : Accroche-toi aux branches 🌳</title>
      <dc:creator>OCLKA</dc:creator>
      <pubDate>Mon, 01 Sep 2025 09:44:12 +0000</pubDate>
      <link>https://forem.com/oclka/avec-git-accroche-toi-aux-branches-11c3</link>
      <guid>https://forem.com/oclka/avec-git-accroche-toi-aux-branches-11c3</guid>
      <description>&lt;p&gt;Tu bosses en solo ou en petite équipe, et c’est à chaque fois la panique avec tes repos. Dans cet article, je reviens sur un &lt;em&gt;flow&lt;/em&gt; simple, structuré et largement éprouvé, qui va te sortir à coup sûr du Nether.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Baaah alors, mon lapinou...&lt;/strong&gt;&lt;br&gt;
T’arrives pas à dépasser ta &lt;strong&gt;gitophobie&lt;/strong&gt;, hooooooooo... Tu nous fais un civet à chaque fois que tu vas pousser un commit ? C’est malheureux... 🥹&lt;br&gt;
Bon, ça tombe bien, je vais te proposer dans cet article une &lt;strong&gt;bonne recette&lt;/strong&gt; pour que tu t’accroches à des &lt;strong&gt;branches&lt;/strong&gt; solides.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚨 ALERTE 🚨&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tu ne trouveras pas ici les commandes qui feront de toi un &lt;strong&gt;Git Guru&lt;/strong&gt;, ce n’est pas le sujet. &lt;em&gt;Ici, on parle seulement d’organisation.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ce billet décrit une version ultra simplifée de Git Flow et n'en garde seulement que l'essentiel &lt;code&gt;main&lt;/code&gt;, &lt;code&gt;develop&lt;/code&gt; et des branches de features. GitFlow est parfois critiqué pour sa complexité sur les projets avec des releases fréquentes (ex : les apps mobiles). Ce workflow simplifié évite ces écueils.&lt;/p&gt;




&lt;h2&gt;
  
  
  Un workflow qui marche
&lt;/h2&gt;

&lt;p&gt;Il existe une &lt;strong&gt;méthode simple&lt;/strong&gt; pour structurer tes branches &lt;strong&gt;sans te prendre la tête&lt;/strong&gt;. Pas de Git Flow compliqué, pas de règles incompréhensibles. Juste un &lt;strong&gt;workflow efficace&lt;/strong&gt;, même quand ton projet ressemble à un plat de spaghettis.&lt;/p&gt;

&lt;h3&gt;
  
  
  La structure
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;main
└── develop
    ├── feat/payment-form
    ├── feat/ui-components
    └── feat/github-workflows
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Branche&lt;/th&gt;
&lt;th&gt;Rôle&lt;/th&gt;
&lt;th&gt;Règles d’or&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;main&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Production&lt;/strong&gt; (toujours stable).&lt;/td&gt;
&lt;td&gt;✅ &lt;strong&gt;Jamais de commit direct&lt;/strong&gt;. Seulement des &lt;em&gt;merges&lt;/em&gt; depuis &lt;code&gt;develop&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;develop&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Intégration&lt;/strong&gt; (pour les &lt;em&gt;features&lt;/em&gt; terminées).&lt;/td&gt;
&lt;td&gt;✅ Toujours à jour avec &lt;code&gt;main&lt;/code&gt;. ✅ Testée avant &lt;em&gt;merge&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;feat/*&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Fonctionnalités distinctes&lt;/strong&gt;.&lt;/td&gt;
&lt;td&gt;✅ Créées depuis &lt;code&gt;develop&lt;/code&gt;. ✅ Noms clairs : &lt;code&gt;feat/login&lt;/code&gt;, &lt;code&gt;fix/login-button&lt;/code&gt;, &lt;code&gt;docs/specs&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Le principe
&lt;/h3&gt;

&lt;p&gt;Je vais faire une &lt;strong&gt;analogie&lt;/strong&gt; pour t’expliquer le principe avec des mots simples. Fais preuve d’un peu d’imagination : notre repo est un &lt;strong&gt;restaurant&lt;/strong&gt; !&lt;/p&gt;

&lt;p&gt;[🍽️ Salle = &lt;code&gt;main&lt;/code&gt;] ← [🍺 Comptoir = &lt;code&gt;develop&lt;/code&gt;] ← [👨‍🍳 Cuisine = &lt;code&gt;feat/fix/docs&lt;/code&gt;]&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;main&lt;/code&gt; : c’est la &lt;em&gt;salle&lt;/em&gt; ou la &lt;em&gt;terrasse&lt;/em&gt; !
&lt;/h4&gt;

&lt;p&gt;C’est là où se trouve le client. &lt;strong&gt;C’est toujours nickel-propre !&lt;/strong&gt; Tout s’y passe bien, tout est fonctionnel. Pas question d’y montrer quoi que ce soit de bancal, à moins de vouloir perdre des ⭐️. &lt;strong&gt;Ici, il en va de la réputation de la maison !&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;develop&lt;/code&gt; : c’est le &lt;em&gt;comptoir&lt;/em&gt; !
&lt;/h4&gt;

&lt;p&gt;C’est ici que passent tous les plats qui vont être servis au client &lt;em&gt;(ou pas)&lt;/em&gt;. Parce qu’il y a toujours le boss 😡 de présent, aux aguets, et il ne laisse rien passer :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Est-ce que c’est bon et goûtu ?&lt;/li&gt;
&lt;li&gt;Est-ce que c’est conforme à la demande du client ?&lt;/li&gt;
&lt;li&gt;Est-ce que ça s’intègre bien dans la carte ?&lt;/li&gt;
&lt;li&gt;Est-ce que ça répond au standing de la maison ?&lt;/li&gt;
&lt;li&gt;Est-ce qu’on ne sert pas le dessert avant l’entrée ?&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Blablabla... toujours là pour t’emmerder, l’patron, &lt;strong&gt;pffff&lt;/strong&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;feat/...&lt;/code&gt;, &lt;code&gt;fix/...&lt;/code&gt;, &lt;code&gt;etc.&lt;/code&gt; : c’est la &lt;em&gt;cuisine&lt;/em&gt; !
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;On y prépare des recettes présentes à la carte.&lt;/li&gt;
&lt;li&gt;On essaie des nouveaux trucs, des expériences culinaires qui parfois marchent et parfois non.&lt;/li&gt;
&lt;li&gt;On améliore les recettes, on change des ingrédients.&lt;/li&gt;
&lt;li&gt;C’est dans ces branches-là qu’on fait les foufous et qu’on se lâche !&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Une règle d’or&lt;/strong&gt; : on ne mélange pas les torchons et les serviettes, une branche par recette !&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Un exemple simple
&lt;/h3&gt;

&lt;p&gt;On est un petit &lt;em&gt;pool&lt;/em&gt; de trois devs. On bosse sur un SaaS de ouf qui va révolutionner le truc.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Moi, je bosse sur les composants UI.&lt;/li&gt;
&lt;li&gt;Daphnée, sur le workflow.&lt;/li&gt;
&lt;li&gt;Et toi, sur le formulaire de paiement.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;main
└── develop
    ├── feat/ui-components       &amp;lt;-- Moi
    ├── feat/github-workflows    &amp;lt;-- Daphnée (j'la kif 💖)
    └── feat/payment-form        &amp;lt;-- Toi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  De mon côté
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Je viens de finaliser ma lib UI sur ma branche &lt;code&gt;feat/ui-components&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Tous mes tests sont au vert.&lt;/li&gt;
&lt;li&gt;J’ai bien documenté mon taf.&lt;/li&gt;
&lt;li&gt;Je fais une &lt;em&gt;Pull Request&lt;/em&gt; vers &lt;code&gt;develop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Mon code passe en revue &lt;em&gt;(le fameux boss 😡)&lt;/em&gt;, tout est OK !&lt;/li&gt;
&lt;li&gt;Ma branche est &lt;em&gt;mergée&lt;/em&gt; sur &lt;code&gt;develop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Je supprime ma branche &lt;code&gt;feat/ui-components&lt;/code&gt; et je passe à autre chose.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Parallèlement, de ton côté
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Tu bosses tranquillement sur ton formulaire sur ta branche &lt;code&gt;feat/payment-form&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Lorsque la mienne est &lt;em&gt;mergée&lt;/em&gt; sur &lt;code&gt;develop&lt;/code&gt;, tu &lt;em&gt;rebase&lt;/em&gt; &lt;code&gt;develop&lt;/code&gt;. Tu bénéficies ainsi de la lib UI sans rien perdre de ton taf. Magique ! 🪄&lt;/li&gt;
&lt;li&gt;Tu finalises ton formulaire.&lt;/li&gt;
&lt;li&gt;Tu fais une &lt;em&gt;Pull Request&lt;/em&gt; vers &lt;code&gt;develop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Ton code passe en revue, tout est OK !&lt;/li&gt;
&lt;li&gt;Ta branche est &lt;em&gt;mergée&lt;/em&gt; sur &lt;code&gt;develop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Tu supprimes ta branche &lt;code&gt;feat/payment-form&lt;/code&gt; et tu passes à autre chose.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  La suite
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Daphnée n’a pas fini son taf, mais ça n’a pas beaucoup d’impact sur la suite.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;develop&lt;/code&gt; est &lt;em&gt;mergée&lt;/em&gt; sur &lt;code&gt;main&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Daphnée &lt;em&gt;rebase&lt;/em&gt; &lt;code&gt;develop&lt;/code&gt; et poursuit son taf.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Attention&lt;/strong&gt; : Un &lt;code&gt;rebase&lt;/code&gt; est puissant mais réécrit l’historique : utilise-le seulement si tu es seul·e sur ta branche ! Si vous travaillez à plusieurs sur une branche, privilégie le &lt;code&gt;merge&lt;/code&gt; pour éviter les conflits.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pour ceux qui veulent aller plus loin : Ressources francophones :
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Vidéos :&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://grafikart.fr/tutoriels/git-flow-742" rel="noopener noreferrer"&gt;GitFlow expliqué en 10 minutes&lt;/a&gt; par &lt;em&gt;Grafikart&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Documentation officielle de GitFlow (en français)&lt;/strong&gt; :&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://danielkummer.github.io/git-flow-cheatsheet/index.fr_FR.html" rel="noopener noreferrer"&gt;Le modèle GitFlow par Vincent Driessen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Livre gratuit :&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://git-scm.com/book/fr/v2" rel="noopener noreferrer"&gt;Pro Git&lt;/a&gt; de Scott Chacon (chapitre sur les &lt;em&gt;branching models&lt;/em&gt;, dont GitFlow).&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Article court et pratique :&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.atlassian.com/fr/git/tutorials/comparing-workflows/gitflow-workflow" rel="noopener noreferrer"&gt;GitFlow : Un workflow Git pour les équipes&lt;/a&gt; (Atlassian, en français).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  En conclusion
&lt;/h2&gt;

&lt;p&gt;Ce &lt;em&gt;workflow&lt;/em&gt; simple t’éviteras bien des déconvenues !&lt;br&gt;
Alors, bien sûr, il y a des &lt;em&gt;edge cases&lt;/em&gt;, mais dans ce billet, je voulais surtout te parler de méthodologie et de principe. Si t’as un souci précis, n’hésite pas à m’appeler 🤣.&lt;/p&gt;

&lt;p&gt;Mon conseil : même si tu bosses seul, expérimente une ou deux fois cette approche. Promis, ça va te paraître lumineux !&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Je viens de me relire, je dois avoir la dalle, je parle que de bouffe !&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Après coup, je me dis qu'un lapinou qui s'accroche aux branches, ça commence furieusement à ressembler à un &lt;strong&gt;écurou&lt;/strong&gt; (putain, c'est Pokémon ce blog !)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>french</category>
      <category>git</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Ton IA, c'est comme une pote sortie du congélo !</title>
      <dc:creator>OCLKA</dc:creator>
      <pubDate>Sun, 31 Aug 2025 22:27:17 +0000</pubDate>
      <link>https://forem.com/oclka/ton-ia-cest-comme-une-pote-sortie-du-congelo--e99</link>
      <guid>https://forem.com/oclka/ton-ia-cest-comme-une-pote-sortie-du-congelo--e99</guid>
      <description>&lt;p&gt;Dans cet article, je vais t'expliquer pourquoi tu as vraiment intérêt à rester sur le qui-vive et à ne pas te reposer sur ta nouvelle meilleure amie, ton IA, pour te laisser glisser en mode &lt;strong&gt;lazy-dev&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;Ohhhhh ! 😍 C’était trop chou, l’ambiance dans ton VS Code ces derniers temps ! 💖 Vous étiez devenus inséparables, ton IA et toi. C’était chaud/mignon :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"Corrige mon test &lt;code&gt;grosse-flemme.spec.ts&lt;/code&gt; !"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Optimise mon formulaire &lt;code&gt;forms/nothing-to-do-form.tsx&lt;/code&gt; !"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Gratte-moi le dos !"&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Et puis là… Putain, c’est fini ! C’est la crise ! Elle t’a déçu, t’as les boules :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Elle t’a sorti une vieille config d’ESLint avec des &lt;code&gt;DEPRECATED&lt;/code&gt; qui clignotent partout dans ta console.&lt;/li&gt;
&lt;li&gt;✅ Elle t’a ajouté des vieux tags Bash dans tes hooks Husky.&lt;/li&gt;
&lt;li&gt;✅ Elle t’a scaffoldé ton projet avec Vue.js 1.1.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Les réponses qui vont te calmer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Point 1 : &lt;em&gt;"Commence par demander à ton IA ce qu’il y a à la télé ce soir."&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Spoiler : Je n’ai pas accès aux programmes TV en direct ou aux grilles actualisées pour ce soir, dimanche 31 août 2025. Cependant, voici quelques idées pour trouver cette information facilement."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Point 2 : &lt;em&gt;"Demande-lui pourquoi elle ne sait pas."&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Spoiler : Je n’ai pas accès aux données en temps réel, comme les programmes TV du jour, car mon dernier entraînement date de novembre 2024."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Point 3 : &lt;em&gt;"Du coup, inquiète-toi et demande-lui : 'Bah ?! Alors, comment tu fais pour me donner des configs à jour pour le code ?'"&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Bonne question, OCLKA ! Voici comment je peux t’aider avec du code tout en restant pertinent, malgré mes limites sur les données en temps réel."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;😱 Ça fait &lt;em&gt;reup&lt;/em&gt; !&lt;/p&gt;




&lt;h2&gt;
  
  
  Le phénomène &lt;em&gt;Date limite de connaissances&lt;/em&gt; (&lt;em&gt;Knowledge Cutoff&lt;/em&gt;)
&lt;/h2&gt;

&lt;p&gt;Ce terme (un peu flippant) décrit le décalage entre les données sur lesquelles le modèle a été entraîné et la réalité du moment. Plus le temps passe, plus les informations deviennent obsolètes ou moins pertinentes.&lt;/p&gt;

&lt;p&gt;Il y a une date limite à laquelle une IA a été mise à jour. Au-delà de cette date, elle n’a pas accès aux nouvelles informations. Elle ne &lt;em&gt;sait&lt;/em&gt; plus rien du monde.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🚨 ALERTE &lt;em&gt;KNOWLEDGE CUTOFF&lt;/em&gt; 🚨&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT-4 classique&lt;/strong&gt; : Bloqué en &lt;strong&gt;avril 2023&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mistral Large&lt;/strong&gt; : Bloqué en &lt;strong&gt;novembre 2024&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Toi, en 2025&lt;/strong&gt; : &lt;em&gt;"T’as plus de love… T’as plus qu’à te rabibocher avec tes collègues pour qu’ils te refilent des tips !"&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pourquoi c’est un problème ? Parce qu’en développement, &lt;strong&gt;11 mois de décalage, c’est une randonnée dans le Crétacé&lt;/strong&gt; : les outils, les pratiques et les tendances ont évolué !&lt;/p&gt;




&lt;h2&gt;
  
  
  L’IA, c’est la première de la classe, un peu menteuse, qui hallucine !
&lt;/h2&gt;

&lt;p&gt;Une IA, c’est comme une vendeuse aux dents trop blanches qui te sourit tout le temps. T’es pas près de voir une réponse du style : &lt;em&gt;"Mais putain !!! Tu me casses les couilles avec ta config de merde ! T’es pas content ? Fais-la toi-même !"&lt;/em&gt; 🤣&lt;/p&gt;

&lt;p&gt;Non, au contraire, elle fait un truc bien pire : &lt;em&gt;"Tu as tout à fait raison, OCLKA, je te prie de m’excuser pour cette confusion. Voici une configuration totalement à jour qui fonctionnera à tous les coups."&lt;/em&gt; &lt;strong&gt;Et elle te refourgue la même, voire pire.&lt;/strong&gt; 🤬&lt;/p&gt;

&lt;p&gt;Elle va &lt;em&gt;toujours&lt;/em&gt; te trouver une réponse, car elle n’est pas entraînée à te dire &lt;em&gt;"je ne sais pas"&lt;/em&gt;. Une IA générative est conçue pour &lt;strong&gt;toujours répondre&lt;/strong&gt;, même quand elle n’a pas l’info. Elle comble les trous, &lt;strong&gt;remplit les vides&lt;/strong&gt;. Elle fournit des réponses qui &lt;em&gt;semblent&lt;/em&gt; justes, mais qui peuvent être &lt;strong&gt;obsolètes, incomplètes ou carrément inventées&lt;/strong&gt; si le sujet est trop récent, en dehors de sa fenêtre de connaissance ou trop niche.&lt;/p&gt;




&lt;h2&gt;
  
  
  Le décalage inévitable : un compromis technique et économique
&lt;/h2&gt;

&lt;p&gt;Quelle que soit l’avancée des technologies, &lt;strong&gt;les modèles d’IA seront toujours en retard&lt;/strong&gt;. Ce n’est pas un défaut, mais une &lt;strong&gt;contrainte fondamentale&lt;/strong&gt;, liée au temps et aux coûts colossaux de leur développement.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Un processus long et coûteux
&lt;/h3&gt;

&lt;p&gt;Pour qu’un modèle comme Mistral Large ou GPT-4 soit opérationnel, il faut :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Collecter et nettoyer des données&lt;/strong&gt; : Une étape fastidieuse, où chaque mise à jour nécessite des mois de travail pour éviter les biais, les erreurs et les informations obsolètes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;L’entraîner&lt;/strong&gt; : Un processus qui demande des &lt;strong&gt;ressources massives&lt;/strong&gt; (des milliers de GPU, des équipes d’experts) et une consommation énergétique équivalente à celle de petites villes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le déployer&lt;/strong&gt; : Même après l’entraînement, les tests et ajustements prennent du temps, pendant lequel le monde continue d’évoluer.
&lt;strong&gt;Résultat&lt;/strong&gt; : Dès sa sortie, un modèle est déjà &lt;strong&gt;"obsolète", décalé par rapport à la réalité&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Un équilibre impossible
&lt;/h3&gt;

&lt;p&gt;Mettre à jour un modèle aussi complexe &lt;strong&gt;coûte des millions&lt;/strong&gt; et mobilise des moyens humains et techniques considérables. Les alternatives existantes (comme les recherches web en temps réel) sont &lt;strong&gt;lentes, coûteuses et moins fiables&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Une limite structurelle
&lt;/h3&gt;

&lt;p&gt;Aucune technologie ne permettra à une IA d’être &lt;strong&gt;parfaitement synchronisée&lt;/strong&gt; avec le présent. Le décalage fera toujours partie de l’équation, car il est le résultat d’un &lt;strong&gt;compromis entre performance, coût et faisabilité&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Alors, on fait quoi maintenant ?
&lt;/h2&gt;

&lt;p&gt;Ta nouvelle petite magicienne &lt;strong&gt;est un outil&lt;/strong&gt; — puissant, mais imparfait. Voici comment en tirer le meilleur sans te faire avoir :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Utilise-la comme un accélérateur, pas comme une béquille&lt;/strong&gt; :&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;✅ Pour &lt;strong&gt;comprendre des concepts&lt;/strong&gt;, générer des idées ou gagner du temps sur des tâches répétitives.&lt;/li&gt;
&lt;li&gt;❌ &lt;strong&gt;Pas pour des recettes clés en main&lt;/strong&gt; (surtout en dev, où tout évolue à la vitesse de la lumière).&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Vérifie, vérifie, vérifie&lt;/strong&gt; :&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Un &lt;code&gt;npm outdated&lt;/code&gt;, un coup d’œil sur la doc officielle ou un check rapide sur GitHub valent mieux que 2 heures de debug à cause d’une config périmée.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Reste curieux et critique&lt;/strong&gt; :

&lt;ul&gt;
&lt;li&gt;Si une réponse te semble trop lisse ou trop parfaite, &lt;strong&gt;méfie-toi&lt;/strong&gt;. Une IA ne doute jamais, mais toi, tu as le droit (et le devoir) de le faire.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Bref&lt;/strong&gt; :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Ton IA, c’est comme un GPS qui connaît les routes… mais pas les travaux. Elle te fera gagner du temps, mais c’est à toi de regarder la route."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;T’es rassuré, maintenant ? Tu sais que tu auras toujours un peu d’avance sur elle.&lt;/p&gt;

&lt;p&gt;Mais méfie-toi, elle va &lt;strong&gt;beaucoup plus vite que toi&lt;/strong&gt; ! 🤣&lt;/p&gt;

</description>
      <category>french</category>
      <category>ai</category>
      <category>development</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AI, AÏ, aïe, la tragédie des youtubeurs...</title>
      <dc:creator>OCLKA</dc:creator>
      <pubDate>Tue, 26 Aug 2025 21:59:47 +0000</pubDate>
      <link>https://forem.com/oclka/ai-ai-aie-la-tragedie-des-youtubeurs-6di</link>
      <guid>https://forem.com/oclka/ai-ai-aie-la-tragedie-des-youtubeurs-6di</guid>
      <description>&lt;p&gt;J’aime bien les youtubeurs ! Non mais vraiment, j’aime bien les youtubeurs !&lt;br&gt;
J’ai mes chouchous… J’aime bien &lt;a href="https://grafikart.fr/" rel="noopener noreferrer"&gt;Grafikart&lt;/a&gt; !&lt;br&gt;
Ce mec fait un boulot de ouf depuis 1973 tout en gardant un air super cool.&lt;br&gt;
Avec lui, tu suis les évolutions technologiques au fil de ses mésaventures capillaires 🤣&lt;/p&gt;

&lt;p&gt;J’en aime plein d’autres, hein.&lt;/p&gt;

&lt;p&gt;Mais là, là… j’en peux plus… Vraiment, j’en peux plus !&lt;/p&gt;

&lt;p&gt;Tu ne peux plus allumer YouTube sans tomber sur des millions de trucs du genre :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Avec Chat GPT-55 : Fais-toi des alertes dans ton Notion quand ton chien veut sortir !&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;En bêta : Jean-Claude IX - L’upgrade frenchy de Claude IV !&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Fine-Tune ton MB7 pour ramasser de la thune en automatique avec des partenariats YouTube&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Comment j’ai construit un dataset de ouf en 4 min sur les vannes belges…&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Non mais sérieux ?! &lt;strong&gt;Oooooooh !&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;D’abord, faudrait que t’amènes deux nuances très très importantes :&lt;/p&gt;
&lt;h2&gt;
  
  
  C’est l’expérience qui forge la connaissance !
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Entre :&lt;/strong&gt; ✅ Tenter des trucs par toi-même avec l’API de géolocalisation puis demander à une IA : &lt;em&gt;"J’ai un message d’erreur…"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ou :&lt;/strong&gt; ❌ &lt;em&gt;"Écris-moi un script en TypeScript utilisant l’API de géo blablabla…"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Crois-moi, l’incidence sur les neurones de ton public n’est pas la même !&lt;/p&gt;
&lt;h2&gt;
  
  
  La transparence
&lt;/h2&gt;

&lt;p&gt;Les coups d’esbroufe à base de &lt;strong&gt;buzzwords&lt;/strong&gt; que l’IA elle-même ne comprend pas, &lt;strong&gt;pffff&lt;/strong&gt; :&lt;/p&gt;

&lt;p&gt;✅ Waouuu, t’as fine-tuné le &lt;strong&gt;super modèle&lt;/strong&gt; (de ton biz partner du moment 😉💶)&lt;/p&gt;

&lt;p&gt;✅ OK, t’as un dataset de &lt;strong&gt;2 milliards&lt;/strong&gt; d’entrées non biaisé&lt;/p&gt;

&lt;p&gt;🤣 Yep ! À la fin, bah, tu peux rien faire contre les cas d’&lt;strong&gt;hallucination&lt;/strong&gt; de l’IA, les &lt;strong&gt;faux positifs&lt;/strong&gt; et rarement tu dépasseras une pertinence au-delà de 85% ~ 90%.&lt;/p&gt;

&lt;p&gt;L’IA, c’est un outil magique, c’est clair ! Mais l’IA, ça fait des erreurs !&lt;/p&gt;



&lt;p&gt;Mais c’est la &lt;strong&gt;meeeeuuude&lt;/strong&gt;, c’est comme ça…&lt;/p&gt;

&lt;p&gt;La ruée vers l’or... le nouvel eldorado des ados accros aux tutos !&lt;/p&gt;

&lt;p&gt;⬇️⬇️⬇️ &lt;strong&gt;👍&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;sanitize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;yout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Youtube&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;detoxTotal&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;boolean&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;yout&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replaceAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;[&lt;/span&gt;&lt;span class="sr"&gt;aiAI💶💰&lt;/span&gt;&lt;span class="se"&gt;]&lt;/span&gt;&lt;span class="sr"&gt;*/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Quand même, j’ai quelques minutes devant moi alors je vais te faire un gros câlin, mon p’tit YouTubeur…&lt;/p&gt;

&lt;p&gt;Dis-moi ?! &lt;strong&gt;Te reste-t-il un peu de crédit sur ton &lt;a href="https://www.moncompteformation.gouv.fr/" rel="noopener noreferrer"&gt;compte-formation.gouv.fr&lt;/a&gt; ?&lt;/strong&gt;&lt;br&gt;
T’as pensé à un FONGECIF Coiffure ?&lt;br&gt;
&lt;strong&gt;Aah !&lt;/strong&gt; Tu veux rester à Dubaï… 🤔 Bah, &lt;strong&gt;IREP !!!&lt;/strong&gt; Installateur de Récupérateurs des Eaux Pluviales, non ?!&lt;/p&gt;

&lt;p&gt;Pourquoi ?! &lt;strong&gt;Hummmmmm…&lt;/strong&gt;&lt;br&gt;
Laisse-moi deux secondes, je vais me changer.&lt;br&gt;
Je vais enfiler mon costard d’&lt;strong&gt;"anthropologue en herbe"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Tu sais, biquet, c’est très touchant, ta love-story &lt;em&gt;(intéressée)&lt;/em&gt; avec l’IA, mais les histoires d’amour, les histoires d’amour, les histoires d’a… finissent mal, &lt;strong&gt;en généééraaaaal&lt;/strong&gt; ! Ton truc, c’est une histoire d’amour toxique !&lt;/p&gt;

&lt;p&gt;Pourquoi ?!&lt;br&gt;
&lt;strong&gt;Bah !&lt;/strong&gt; L’IA, c’est pas ta copine, &lt;strong&gt;ooooh !&lt;/strong&gt;&lt;br&gt;
L’IA, c’est la meuf qui t’a souri en boîte pendant que tu dansais comme un dad sur &lt;em&gt;Despacito&lt;/em&gt;. Elle t’a laissé croire que t’avais encore le flow. Demain matin, tu vas te réveiller dans une brocante entre une VHS et un Minitel !&lt;/p&gt;

&lt;p&gt;Et ouais ! Le vrai boss de fin de niveau, c’est Jean-Claude IX &lt;em&gt;(ou son homologue Claude IV si tu bosses à la City)&lt;/em&gt; ! Un jour, il appellera la sécu, et y a un agent-pas-content qui va &lt;strong&gt;Token&lt;/strong&gt; à ta porte 😱 et t’accompagner jusqu’à la sortie avec ton carton de vidéos sous le bras. &lt;strong&gt;Fin du game !&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ton commerce ressemble déjà à celui d’un mec un peu désespéré qui convertit sa cave en business center, avec une pancarte :&lt;br&gt;
&lt;strong&gt;"BitCoin : Le coin du bit — ⬇️ Ici ⬇️ — On repart les imprimantes matricielles"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On ose rarement te le dire, mais… ton tuto qui dure &lt;strong&gt;0h53&lt;/strong&gt; : bah, on met &lt;strong&gt;7h47&lt;/strong&gt; à le faire, au mieux… Et rarement avant la 7ème tentative, &lt;strong&gt;ET SI ET SEULEMENT SI&lt;/strong&gt; on se met en pool de 11, par binôme, et qu’on ne compte pas Daphnée, qui va rester focus comme un furynx rien que sur le backlog !&lt;/p&gt;

&lt;p&gt;Heureusement maintenant, plus besoin de chercher dans ta vidéo, de revenir à &lt;strong&gt;0h27&lt;/strong&gt;, &lt;em&gt;"Ah non… 0h43"&lt;/em&gt;, &lt;em&gt;"Ah… mais il en parle pas du tout, en fait !"&lt;/em&gt;.&lt;br&gt;
Et terminés les hurlements par la fenêtre &lt;em&gt;(alors qu’il est 4h du mat’)&lt;/em&gt; parce que la config que tu donnes est vieille de &lt;strong&gt;16 versions majeures&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Ton YouTubeur, tu l’as dans ta poche, maintenant ! &lt;strong&gt;Right now !&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Il répond à tes questions en temps réel, sans te juger lorsque tu lui demandes :&lt;br&gt;
&lt;em&gt;"C’est quoi une boucle for ?"&lt;/em&gt; pour la 14ème fois,&lt;br&gt;
ou &lt;em&gt;"Est-ce que je peux faire un git push avec Noddle.js ?"&lt;/em&gt;.&lt;br&gt;
Il s’adapte à ton niveau, te donne des exemples avec &lt;strong&gt;tes&lt;/strong&gt; variables à toi.&lt;/p&gt;

&lt;p&gt;Et ça tombe bien ! Parce qu’on en pouvait plus des :&lt;br&gt;
&lt;em&gt;"Imaginez, c’est comme si vous aviez un train qui transporte des fruits. Le train s’arrête dans une gare et personne ne descend. Quand vous voulez ajouter des clés à molette dans le train, en Python…"&lt;/em&gt; alors que t’es en train de déboguer un truc de ouf dans ton script 😡.&lt;/p&gt;

&lt;p&gt;Maintenant, voilà, c’est ballot…&lt;br&gt;
Les mecs qui font des formations à &lt;strong&gt;2 999 €&lt;/strong&gt; pour &lt;em&gt;"devenir React Killer en 3 mois - Integral Roadmap fournie"&lt;/em&gt; : vont rentrer de Bali, &lt;strong&gt;fissa-fissa&lt;/strong&gt;.&lt;br&gt;
Les écoles qui te font payer &lt;strong&gt;10 000 boules&lt;/strong&gt; pour te mener direct à une certification sur la dépression nerveuse : bientôt fermées.&lt;br&gt;
Par contre, les bouquins techniques qui font &lt;strong&gt;800 pages&lt;/strong&gt; : garde-les pour l’hiver prochain 🥶🔥.&lt;/p&gt;

&lt;p&gt;Alors oui, c’est la fin d’une époque pour les YouTubeurs qui surfent sur la hype.&lt;br&gt;
Mais c’est le début d’une révolution pour ceux qui veulent &lt;strong&gt;vraiment&lt;/strong&gt; apprendre.&lt;/p&gt;

&lt;p&gt;Bon, c’est vrai que ça fait des mois, voire des années, que tu fais la promo du truc qui va mettre ton biz en liquidation. C’était un peu &lt;em&gt;"ton chant du cygne"&lt;/em&gt;.&lt;br&gt;
Mais prends sur toi, biquet, &lt;strong&gt;ça va aller&lt;/strong&gt;…&lt;/p&gt;

&lt;p&gt;Tu sais, c’est pas facile pour moi… Dire que l’avenir est présent à un mec qui appartient déjà au passé, vraiment, c’est pas facile…&lt;/p&gt;

&lt;p&gt;Venge-toi donc avec une vanne sur mes goûts de chiotte pour la &lt;strong&gt;meeeeuuude&lt;/strong&gt;, parce que je me suis encore planté ! C’était un costard de "&lt;strong&gt;pré-paléonthologue&lt;/strong&gt;"*…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt; : &lt;em&gt;&lt;a href="https://grafikart.fr/" rel="noopener noreferrer"&gt;Grafikart&lt;/a&gt; 😳… je déconnais pour 1973 et ta coupe ! Je t’aime très fort 💖&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;*Spécialiste des espèces presque disparues,&lt;br&gt;
exemple : le &lt;em&gt;Youtubronchus&lt;/em&gt;, l’&lt;em&gt;Influraptor Rex&lt;/em&gt; ou le &lt;em&gt;ShadyBizaure&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Cet article a été initialement publié le 26/08/2025 sur mon &lt;a href="https://oclka.hashnode.dev/youtubeurs" rel="noopener noreferrer"&gt;blog hashnode.dev&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>french</category>
      <category>ai</category>
      <category>humour</category>
      <category>youtube</category>
    </item>
    <item>
      <title>🤖 IA : une affaire promptement menée !</title>
      <dc:creator>OCLKA</dc:creator>
      <pubDate>Tue, 26 Aug 2025 21:52:17 +0000</pubDate>
      <link>https://forem.com/oclka/ia-une-affaire-promptement-menee--48f9</link>
      <guid>https://forem.com/oclka/ia-une-affaire-promptement-menee--48f9</guid>
      <description>&lt;p&gt;Le secret ? Des prompts ultra-précis : plus tu donnes de détails (niveau, format, exemples, ton), plus l’IA te livre des réponses sur mesure, rapides et exploitables— comme un chef qui transforme tes idées en plat étoilé sans que tu aies à lever le petit doigt.&lt;/p&gt;




&lt;p&gt;T'as &lt;strong&gt;ABSOLUMENT&lt;/strong&gt; 😱 besoin de savoir quand ta consommation de café dépasse tes apports en protéines et tu voudrais :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ recevoir automatiquement une alerte sur ton tel ;&lt;/li&gt;
&lt;li&gt;✅ l'indiquer dans ton Notion ;&lt;/li&gt;
&lt;li&gt;✅ --&amp;gt; mail en urgence à ton neurologue et SMS auto toutes les 2 minutes s'il te rappelle pas dans les 2h ;&lt;/li&gt;
&lt;li&gt;✅ bloquer immédiatement ton abo chez Basic-Fit ;&lt;/li&gt;
&lt;li&gt;🧪 et... en &lt;strong&gt;advanced feature&lt;/strong&gt; &lt;em&gt;pourquoi pas ?!&lt;/em&gt; l'intégrer à ton workflow GitHub pour qu'il redouble de vigilance sur la qualité de tes PR...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;P'tit malin, va !&lt;/strong&gt; T'as pensé à un prompt avec ton IA chouchoute 👏🏽&lt;br&gt;
Bouge pas, on va en parler !&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Quand, à toi là-bas, t'es dev et tu ne bois pas de café ???! Sérieux ?&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Je préfère que tu sortes maintenant, je trouve ça chelou... non mais c'est chelou !&lt;/em&gt;&lt;br&gt;
&lt;em&gt;503 bonhomme ! 503 ! 😱&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;_&lt;strong&gt;Spoiler&lt;/strong&gt; : Cet article a été écrit sous 4L de Moka d’Éthiopie, accrochez vos ceintures !!!*&lt;/p&gt;

&lt;p&gt;Bon, avant de laisser ton 🤖 gérer ta vie (et ton abo à la salle), faut déjà savoir comment lui parler correctement. C'est bon, il est sorti le buveur de thé, là ?!!! &lt;strong&gt;Alors, c’est quoi un prompt, et comment en écrire un qui déchire ?&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Introduction : Comment fonctionne un prompt ?
&lt;/h2&gt;

&lt;p&gt;Un &lt;strong&gt;prompt&lt;/strong&gt;, c’est comme une commande chez McDo : si tu arrives et que tu dis &lt;em&gt;"Donnez-moi à manger, s'il vous plaît"&lt;/em&gt;, tu risques de te retrouver avec un menu enfant. Mais si tu précises &lt;em&gt;"Un Big Mac, sans oignon, avec des frites bien salées et une sauce barbecue, s'il vous plaît"&lt;/em&gt;, là, t’es sûr d’être content.&lt;br&gt;
Avec une IA, c’est pareil, &lt;strong&gt;sauf qu’il n’y a pas de limite de personnalisation&lt;/strong&gt;… à condition de savoir &lt;strong&gt;comment demander&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Les IA génératives analysent des milliards de données pour prédire la suite la plus pertinente à ton prompt. &lt;strong&gt;Leur performance dépend directement de la qualité de ta requête.&lt;/strong&gt; Un prompt bien rédigé évite les réponses floues, hors-sujet ou trop génériques. &lt;strong&gt;Il est super important (note le !)&lt;/strong&gt; que tu fournisses des exemples clairs pour que ton IA comprenne ce que tu veux &lt;em&gt;(on en reparle tout à l’heure...)&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Dans cet article, je te propose de découvrir :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ce qui a évolué&lt;/strong&gt; dans la rédaction des prompts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pourquoi&lt;/strong&gt; ces changements sont un game-changer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comment&lt;/strong&gt; formuler des prompts &lt;strong&gt;qui font bosser l’IA pour toi&lt;/strong&gt; &lt;em&gt;(et pas l’inverse)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Un exemple concret&lt;/strong&gt; qui va te faire halluciner &lt;em&gt;(le mien, et il déchire)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Les tendances 2025&lt;/strong&gt; à surveiller &lt;em&gt;(non, les IA ne feront pas ton sport à ta place… enfin, pas encore)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  L’évolution des prompts : du simple ordre à la conversation intelligente
&lt;/h2&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;1. Le passé : des commandes basiques&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Il y a quelques années, les IA répondaient à des ordres simples :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"Traduis ce texte en anglais."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Donne-moi la définition de l’intelligence artificielle."&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Exemple de prompt 2018&lt;/strong&gt; :&lt;br&gt;
&lt;em&gt;"Explique-moi l’IA."&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Réponse probable&lt;/strong&gt; :&lt;br&gt;
&lt;em&gt;"L’IA, ou intelligence artificielle, est un domaine de l’informatique qui vise à… [blabla générique]."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ces prompts étaient courts et peu contextualisés, ce qui limitait la qualité des réponses.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;2. Le présent : des prompts structurés et contextuels&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Aujourd’hui, les IA comprennent des requêtes bien plus complexes, &lt;strong&gt;à condition de leur donner :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Un contexte&lt;/strong&gt; : &lt;em&gt;"Je prépare un article sur l’IA pour un public de débutants. Explique-moi le machine learning en termes simples, avec des exemples concrets."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Des consignes précises&lt;/strong&gt; : &lt;em&gt;"Rédige un email professionnel pour annuler une réunion, en restant poli mais ferme. Limite-toi à 100 mots."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Un style ou un ton&lt;/strong&gt; : &lt;em&gt;"Écris ce paragraphe comme si tu t’adressais à des adolescents, avec un ton dynamique."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;3. Le futur : des interactions naturelles et collaboratives&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Demain, les prompts deviendront encore plus intuitifs. Les IA comprendront :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Les intentions implicites&lt;/strong&gt; : &lt;em&gt;"J’ai besoin d’aide pour convaincre mon équipe d’adopter un nouvel outil. Propose-moi des arguments percutants."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Les préférences utilisateur&lt;/strong&gt; : &lt;em&gt;"Tu te souviens que j’aime les métaphores sportives ? Utilise-en pour expliquer ce concept."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le dialogue continu&lt;/strong&gt; : L’IA posera des questions pour affiner sa réponse, comme un vrai échange.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Prompt vague ❌&lt;/th&gt;
&lt;th&gt;Prompt précis ✅&lt;/th&gt;
&lt;th&gt;Résultat&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;em&gt;"Parle-moi de Paris."&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;"Donne-moi 3 restaurants végétariens dans le 11e arrondissement, avec un budget moyen de 20€/pers et des avis &amp;gt;4/5 sur Google."&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;Une liste ciblée et utile.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h2&gt;
  
  
  Pourquoi est-ce si important ?
&lt;/h2&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;1. Des réponses plus pertinentes&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Un prompt vague = une réponse vague.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ &lt;em&gt;"Parle-moi de Paris."&lt;/em&gt;
→ L’IA ne sait pas si tu veux un guide touristique ou des anecdotes historiques.&lt;/li&gt;
&lt;li&gt;✅ &lt;em&gt;"Donne-moi 5 lieux insolites à visiter à Paris avec des enfants, en évitant les foules. Ajoute une estimation de budget par activité."&lt;/em&gt;
→ La réponse sera &lt;strong&gt;ciblée et utile&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;2. Un gain de temps&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Plus ton prompt est précis, moins tu auras besoin de reformuler.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;3. Une meilleure créativité&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Les IA génèrent des idées originales, mais elles ont besoin de &lt;strong&gt;cadres clairs&lt;/strong&gt; :&lt;br&gt;
&lt;em&gt;"Invente une histoire courte pour enfants sur un robot qui apprend à ressentir des émotions. Vocabulaire simple + fin heureuse."&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Comment rédiger un prompt efficace en 2025 ?
&lt;/h2&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;1. Sois clair et spécifique&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Précise :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Le sujet&lt;/strong&gt; : &lt;em&gt;"Explique-moi le fonctionnement des cryptomonnaies."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le public cible&lt;/strong&gt; : &lt;em&gt;"… comme si je l’expliquais à ma grand-mère."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Le format&lt;/strong&gt; : &lt;em&gt;"… sous forme de dialogue, en 3 questions/réponses."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;2. Donne du contexte&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;"Je suis enseignant en primaire. Crée une activité ludique pour apprendre les tables de multiplication à des élèves de 8 ans. Thème : les animaux."&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;3. Structure ta demande&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Utilise des étapes :&lt;br&gt;
&lt;em&gt;"1. Résume ce texte en 3 phrases. 2. Souligne les arguments principaux. 3. Propose un titre accrocheur."&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;4. Indique le ton et le style&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"Écris ce texte avec un ton humoristique, comme une chronique radio."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Style formel, adapté à un rapport pro."&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;5. Itère et affine&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Si la réponse n’est pas parfaite, précise :&lt;br&gt;
&lt;em&gt;"Ton résumé est trop technique. Réécris-le pour un collégien."&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Les erreurs à éviter
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prompts trop courts&lt;/strong&gt; : &lt;em&gt;"Dis-moi tout sur le réchauffement climatique."&lt;/em&gt; → L’IA ne sait pas par où commencer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consignes contradictoires&lt;/strong&gt; : &lt;em&gt;"Écris un texte court mais détaillé."&lt;/em&gt; 🤣🤣🤣 → Sois cohérent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suppositions&lt;/strong&gt; : &lt;em&gt;"Tu sais ce que je veux dire…"&lt;/em&gt; → &lt;strong&gt;Non, l’IA ne devine pas (encore) !&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Un exemple
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Parce qu’à un moment, faut bien mettre les mains dans l’IA&lt;/em&gt; 🤣&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Le pitch&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Tu veux performer en JavaScript et tu as écrit un script pour tester tes connaissances.&lt;br&gt;
Maintenant, tu veux que ton IA t’alimente en questions &lt;em&gt;(tordues ou non, je vous laisse faire !)&lt;/em&gt;.&lt;br&gt;
&lt;strong&gt;Feature de ouf&lt;/strong&gt; : Stocker les questions en DB sans doublons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flux simplifié&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Ton script] → (payload JSON) → 🤖 → (réponse JSON) → [Ta DB]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;1. Bien nommer son prompt&lt;/strong&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Mal nommer les choses, c’est ajouter au malheur du monde."&lt;/em&gt; &amp;gt; &lt;strong&gt;Albert Camus&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Exemple&lt;/strong&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Prompt pour générer un quiz sur JavaScript&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;(❌ Pas : "Liste de questions, pffff...")&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Décrire la requête envoyée&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## 1. Exemple de payload de la requête (JSON)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"nbQuestions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"beginner"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"topics"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"arrow functions"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"this"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"destructuring"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"promises"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"es6 modules"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"locale"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"fr"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;3. Des instructions claires&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## 2. Consignes pour l'IA&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;1.&lt;/span&gt; &lt;span class="gs"&gt;**Structure du Quizz**&lt;/span&gt; :
&lt;span class="p"&gt;   -&lt;/span&gt; Générer un quizz de &lt;span class="sb"&gt;`nbQuestions`&lt;/span&gt; questions (10 par défaut).
&lt;span class="p"&gt;   -&lt;/span&gt; Chaque question doit être adaptée au niveau (&lt;span class="sb"&gt;`beginner`&lt;/span&gt;, &lt;span class="sb"&gt;`intermediate`&lt;/span&gt;, ou &lt;span class="sb"&gt;`advanced`&lt;/span&gt;) (&lt;span class="sb"&gt;`beginner`&lt;/span&gt; par défaut).
&lt;span class="p"&gt;   -&lt;/span&gt; Si des &lt;span class="sb"&gt;`topics`&lt;/span&gt; sont spécifiés, les questions doivent porter sur ces thèmes. Sinon, varier les thèmes parmi les concepts clés de JavaScript.
&lt;span class="p"&gt;   -&lt;/span&gt; Chaque question doit être claire, précise et adaptée au niveau demandé.
&lt;span class="p"&gt;   -&lt;/span&gt; Pour chaque question, fournir &lt;span class="gs"&gt;**4 réponses possibles**&lt;/span&gt;, dont une seule est correcte.
&lt;span class="p"&gt;   -&lt;/span&gt; &lt;span class="gs"&gt;**Inclure un hash unique**&lt;/span&gt; pour chaque question (utiliser un algorithme simple comme SHA-256 sur le texte de la question pour faciliter le stockage en base de données).
&lt;span class="p"&gt;   -&lt;/span&gt; L'ensemble doit être &lt;span class="gs"&gt;**retourné dans la locale demandée**&lt;/span&gt;.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Décrire le retour attendu
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;2.&lt;/span&gt; &lt;span class="gs"&gt;**Format de sortie**&lt;/span&gt; :
&lt;span class="p"&gt;   -&lt;/span&gt; Le retour doit être un &lt;span class="gs"&gt;**JSON valide**&lt;/span&gt;.
&lt;span class="p"&gt;   -&lt;/span&gt; Chaque question doit contenir :
&lt;span class="p"&gt;     -&lt;/span&gt; &lt;span class="sb"&gt;`id`&lt;/span&gt; : un hash unique de la question (exemple : &lt;span class="sb"&gt;`"id": "a1b2c3d4e5f6..."`&lt;/span&gt;).
&lt;span class="p"&gt;     -&lt;/span&gt; &lt;span class="sb"&gt;`question`&lt;/span&gt; : le texte de la question.
&lt;span class="p"&gt;     -&lt;/span&gt; &lt;span class="sb"&gt;`options`&lt;/span&gt; : un objet de 4 réponses possibles, chacune avec un numéro (&lt;span class="sb"&gt;`1`&lt;/span&gt;, &lt;span class="sb"&gt;`2`&lt;/span&gt;, &lt;span class="sb"&gt;`3`&lt;/span&gt;, &lt;span class="sb"&gt;`4`&lt;/span&gt;).
&lt;span class="p"&gt;     -&lt;/span&gt; &lt;span class="sb"&gt;`answer`&lt;/span&gt; : le numéro de la réponse correcte.
&lt;span class="p"&gt;     -&lt;/span&gt; &lt;span class="sb"&gt;`explanation`&lt;/span&gt; : une brève explication de la réponse correcte (optionnel mais recommandé pour les niveaux &lt;span class="sb"&gt;`intermediate`&lt;/span&gt; et &lt;span class="sb"&gt;`advanced`&lt;/span&gt;).
&lt;span class="p"&gt;   -&lt;/span&gt; Le JSON doit être bien formaté et facilement lisible.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Lui fournir des infos complémentaires ou de contexte (optionnel)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;3.&lt;/span&gt; &lt;span class="gs"&gt;**Exigences supplémentaires**&lt;/span&gt; :
&lt;span class="p"&gt;   -&lt;/span&gt; Éviter les questions redondantes ou trop similaires.
&lt;span class="p"&gt;   -&lt;/span&gt; Adapter le vocabulaire et la complexité des questions au niveau demandé.
&lt;span class="p"&gt;   -&lt;/span&gt; Pour le niveau &lt;span class="sb"&gt;`beginner`&lt;/span&gt;, privilégier des questions sur les bases de JavaScript.
&lt;span class="p"&gt;   -&lt;/span&gt; Pour le niveau &lt;span class="sb"&gt;`advanced`&lt;/span&gt;, inclure des cas pratiques ou des pièges courants.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6. Indiquer des exemples
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## 3. Sortie attendue (JSON)&lt;/span&gt;

Voici un exemple de sortie pour &lt;span class="gs"&gt;**2 questions**&lt;/span&gt; :
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"quiz"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"a1b2c3d4e5f67890"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"question"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Quelle est la syntaxe correcte pour déclarer une fonction fléchée en JavaScript ?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"1"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"function maFonction() {}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"const maFonction = () =&amp;gt; {}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"3"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"const maFonction = function() {}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"4"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"def maFonction() {}"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"answer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"explanation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Les fonctions fléchées sont déclarées avec la syntaxe `() =&amp;gt; {}`."&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"b2c3d4e5f67890a1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"question"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Que renvoie `this` dans une fonction fléchée ?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"1"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Le contexte global (`window` dans un navigateur)."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Le contexte de l'objet parent au moment de la déclaration."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"3"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Toujours `undefined`."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"4"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Le contexte de l'objet qui appelle la fonction."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"answer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"explanation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Dans une fonction fléchée, `this` hérite du contexte de l'environnement parent au moment de la déclaration, contrairement aux fonctions classiques."&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"metadata"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"beginner"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"locale"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"fr"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"totalQuestions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  7. Et ça marche !!!
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Le payload de ma requête API
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"nbQuestions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"intermediate"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"topics"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"iife"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"locale"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"de"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  La réponse de Frau 🤖
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"quiz"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"9be63c261a2316ff86567541fed483fa1745b85d67b9c7377b5fcaf7b4c79a2a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"question"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Was bedeutet IIFE in JavaScript?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"1"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"International Instant Function Execution"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Immediately Invoked Function Expression"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"3"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Internal Iterative Function Environment"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"4"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Instant Initial Function Event"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"answer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"explanation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"IIFE steht für Immediately Invoked Function Expression, eine Funktion, die sofort nach ihrer Definition ausgeführt wird."&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"7852c72eec2c644fb0902d8ba9c5b70408c6138e6af06ab34584bd5b8a6120e2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"question"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Welcher der folgenden Codes ist ein Beispiel für eine IIFE?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"options"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"1"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"function example() { console.log('Hello'); }();"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"(function() { console.log('Hello'); })();"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"3"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"const example = () =&amp;gt; console.log('Hello');"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"4"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"function example() { console.log('Hello'); }"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"answer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"explanation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Eine IIFE wird durch das Umgeben einer Funktionsdeklaration mit Klammern und das sofortige Aufrufen mit `()` erstellt."&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"metadata"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"level"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"intermediate"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"locale"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"de"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"totalQuestions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Ooooh putain... Ça marche mais ça fait reup les IIFE en allemand !!!&lt;/em&gt; 😱😱😱&lt;/p&gt;




&lt;h2&gt;
  
  
  🎁 &lt;strong&gt;Bonus : 3 outils pour tester tes prompts en 2025&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Playground Mistral&lt;/strong&gt; : Pour expérimenter en direct.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt Libraries&lt;/strong&gt; (GitHub) : Des exemples prêts à l’emploi.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snippets VS Code&lt;/strong&gt; : Stocke tes prompts favoris.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🚀 Le futur des prompts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IA qui posent des questions&lt;/strong&gt; pour affiner ta demande.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interfaces visuelles&lt;/strong&gt; pour annoter tes attentes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personnalisation automatique&lt;/strong&gt; &lt;em&gt;(ton IA se souviendra que tu aimes le bon café)&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion : Pratique et expérimente !
&lt;/h2&gt;

&lt;p&gt;Rédiger un bon prompt, c’est comme apprendre une langue : &lt;strong&gt;plus tu pratiques, mieux tu deviens&lt;/strong&gt;.&lt;br&gt;
&lt;strong&gt;Et toi, quel est le prompt le plus efficace que tu aies jamais écrit ?&lt;/strong&gt; &lt;em&gt;(Partage-le en commentaire !)&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;🎁 Cadeau Bonux&lt;/strong&gt; : &lt;a href="https://gist.github.com/oclka/17b6e6c72bf99fdb4a93d923b2d48bf6" rel="noopener noreferrer"&gt;Le prompt complet est ici&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Au fait, il est pas r’venu, l’aut' théïnomane ?!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bon bah IA plus qu’à les gars, Tcho !&lt;/strong&gt; 🚀&lt;/p&gt;

&lt;p&gt;Cet article a été initialement publié le 23/08/2025 sur &lt;a href="https://oclka.hashnode.dev/ia-prompt-2025" rel="noopener noreferrer"&gt;mon blog hashnode.dev&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>french</category>
      <category>ai</category>
      <category>promptengineering</category>
      <category>productivity</category>
    </item>
    <item>
      <title>#FullstackEasy : Ta feuille de route sans prise de tête pour maîtriser JS, TS, Node et React</title>
      <dc:creator>OCLKA</dc:creator>
      <pubDate>Tue, 26 Aug 2025 21:47:28 +0000</pubDate>
      <link>https://forem.com/oclka/fullstackeasy-ta-feuille-de-route-sans-prise-de-tete-pour-maitriser-js-ts-node-et-react-25la</link>
      <guid>https://forem.com/oclka/fullstackeasy-ta-feuille-de-route-sans-prise-de-tete-pour-maitriser-js-ts-node-et-react-25la</guid>
      <description>&lt;p&gt;Une roadmap simplifiée et organisée pour apprendre JavaScript, TypeScript, Node.js et React, avec des étapes claires, des priorités et des indicateurs de difficulté, idéale pour les débutants ou ceux qui reprennent après une pause.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tu veux apprendre JS, TypeScript, Node, React et tout le reste, mais t’es un peu perdu·e ?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Tu es &lt;strong&gt;full débutant·e&lt;/strong&gt; &lt;em&gt;(ici, t’es le/la bienvenu·e, il faut bien commencer quelque part…)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Tu reviens dans le game après une pause ?&lt;/li&gt;
&lt;li&gt;[ ] Tu sautes d’un tuto à l’autre sans en voir le bout ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Arrête tout, respire...&lt;/strong&gt; Y a &lt;strong&gt;rien de sorcier, Harry&lt;/strong&gt; ! Juste besoin d’un peu d’organisation.&lt;/p&gt;

&lt;p&gt;J’ai préparé pour toi une &lt;strong&gt;checklist ultra-simple&lt;/strong&gt;, dans l’ordre, avec des émojis mimi pour te motiver.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;À la fin, tu seras fullstack sans même t’en rendre compte !&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Partage, like, fais le foufou-e/fofolle, amuse-toi !&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;(Cette roadmap très sérieuse - malgré les émojis et mes blagounettes – a aidé des dizaines de débutant-e-s à passer de "WTF?!" à "WTF, I'm Ze boss!").&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PS : Partage aussi tes progrès avec le hashtag &lt;strong&gt;#FullstackEasy&lt;/strong&gt; sur Twitter – je te suivrai !&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/oclka/a5838cc8855212c96bea4c8caf541ca7" rel="noopener noreferrer"&gt;Le lien pour télécharger la Roadmap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copie-la, coche les cases, et avance pas à pas 👍&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✅ A bientôt collègue !&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;1. Fondamentaux de JavaScript (ES6+)&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Syntaxe de base&lt;/strong&gt;
   Temps : ⏳ | Difficulté : 💪 | Priorité ⭐⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Variables (&lt;code&gt;let&lt;/code&gt;, &lt;code&gt;const&lt;/code&gt;, &lt;code&gt;var&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Boucles (&lt;code&gt;for&lt;/code&gt;, &lt;code&gt;while&lt;/code&gt;, &lt;code&gt;do...while&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Conditions (&lt;code&gt;if/else&lt;/code&gt;, &lt;code&gt;switch&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Fonctions (déclaration, expression, paramètres)&lt;/li&gt;
&lt;li&gt;Opérateurs (arithmétiques, logiques, de comparaison)&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Fonctions fléchées&lt;/strong&gt;
   Temps : ⏳ | Difficulté : 💪 | Priorité ⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Syntaxe des &lt;code&gt;arrow functions&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Différence entre &lt;code&gt;function&lt;/code&gt; et &lt;code&gt;arrow function&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Portée de &lt;code&gt;this&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Manipulation des tableaux&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Méthodes : &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;reduce&lt;/code&gt;, &lt;code&gt;find&lt;/code&gt;, &lt;code&gt;sort&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Spread operator (&lt;code&gt;...&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Destructuring&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Objets et JSON&lt;/strong&gt;
   Temps : ⏳ | Difficulté : 💪 | Priorité ⭐⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Création et manipulation d'objets&lt;/li&gt;
&lt;li&gt;Destructuring des objets&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;JSON.parse()&lt;/code&gt; et &lt;code&gt;JSON.stringify()&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Promesses et Async/Await&lt;/strong&gt;
   Temps : ⏳⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Création et utilisation des &lt;code&gt;Promise&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Chaînage avec &lt;code&gt;.then()&lt;/code&gt; et &lt;code&gt;.catch()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Syntaxe &lt;code&gt;async/await&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Gestion des erreurs&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Modules ES6&lt;/strong&gt;
   Temps : ⏳ | Difficulté : 💪 | Priorité ⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Import/export (&lt;code&gt;import&lt;/code&gt;, &lt;code&gt;export&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Modules CommonJS vs ES6&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Gestion des erreurs&lt;/strong&gt;
   Temps : ⏳ | Difficulté : 💪 | Priorité ⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;try/catch/finally&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Erreurs personnalisées&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Classes et POO&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Déclaration de classes&lt;/li&gt;
&lt;li&gt;Héritage (&lt;code&gt;extends&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Getters et setters&lt;/li&gt;
&lt;li&gt;Méthodes statiques&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Closures et portée lexicale&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐

&lt;ul&gt;
&lt;li&gt;Comprendre les closures&lt;/li&gt;
&lt;li&gt;Portée des variables (&lt;code&gt;let&lt;/code&gt;, &lt;code&gt;const&lt;/code&gt;, &lt;code&gt;var&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;IIFE (Immediately Invoked Function Expression)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;2. TypeScript&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Typage de base&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪 | Priorité ⭐⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Types primitifs (&lt;code&gt;string&lt;/code&gt;, &lt;code&gt;number&lt;/code&gt;, &lt;code&gt;boolean&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;li&gt;Interfaces et types personnalisés&lt;/li&gt;
&lt;li&gt;Unions et intersections de types&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Génériques&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Syntaxe des génériques&lt;/li&gt;
&lt;li&gt;Utilisation dans les fonctions et classes&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Types avancés&lt;/strong&gt;
   Temps : ⏳⏳⏳ | Difficulté : 💪💪💪 | Priorité ⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Types conditionnels&lt;/li&gt;
&lt;li&gt;Mapped types&lt;/li&gt;
&lt;li&gt;Utility types (&lt;code&gt;Partial&lt;/code&gt;, &lt;code&gt;Pick&lt;/code&gt;, &lt;code&gt;Omit&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Configuration de TypeScript&lt;/strong&gt;
   Temps : ⏳ | Difficulté : 💪 | Priorité ⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Fichier &lt;code&gt;tsconfig.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Options de compilation&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Décorateurs&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪💪 | Priorité ⭐

&lt;ul&gt;
&lt;li&gt;Utilisation des décorateurs&lt;/li&gt;
&lt;li&gt;Modification du comportement des classes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;3. Node.js&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Modules Node.js&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪 | Priorité ⭐⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Modules natifs (&lt;code&gt;fs&lt;/code&gt;, &lt;code&gt;http&lt;/code&gt;, &lt;code&gt;path&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Création de modules personnalisés&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;NPM et Yarn&lt;/strong&gt;
   Temps : ⏳ | Difficulté : 💪 | Priorité ⭐⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Gestion des dépendances (&lt;code&gt;npm install&lt;/code&gt;, &lt;code&gt;yarn add&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Scripts NPM&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Création d'un serveur HTTP&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Module &lt;code&gt;http&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Routage de base&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Express.js&lt;/strong&gt;
   Temps : ⏳⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Création d'une API REST&lt;/li&gt;
&lt;li&gt;Middleware&lt;/li&gt;
&lt;li&gt;Gestion des routes&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Base de données&lt;/strong&gt;
   Temps : ⏳⏳⏳⏳ | Difficulté : 💪💪💪 | Priorité ⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;MongoDB (Mongoose)&lt;/li&gt;
&lt;li&gt;PostgreSQL (TypeORM/Sequelize)&lt;/li&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Authentication&lt;/strong&gt;
   Temps : ⏳⏳⏳ | Difficulté : 💪💪💪 | Priorité ⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;JWT&lt;/li&gt;
&lt;li&gt;OAuth&lt;/li&gt;
&lt;li&gt;Gestion des sessions&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Tests unitaires et d'intégration&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐

&lt;ul&gt;
&lt;li&gt;Jest&lt;/li&gt;
&lt;li&gt;Mocha/Chai&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;4. React&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Composants fonctionnels&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Hooks (&lt;code&gt;useState&lt;/code&gt;, &lt;code&gt;useEffect&lt;/code&gt;, &lt;code&gt;useContext&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Props et état local&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Gestion d'état&lt;/strong&gt;
   Temps : ⏳⏳⏳ | Difficulté : 💪💪💪 | Priorité ⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Redux&lt;/li&gt;
&lt;li&gt;Context API&lt;/li&gt;
&lt;li&gt;Zustand/Recoil&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;React Router&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Routage dynamique&lt;/li&gt;
&lt;li&gt;Navigation programmatique&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Formulaires&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;React Hook Form&lt;/li&gt;
&lt;li&gt;Formik&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Appels API&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fetch&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Axios&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Optimisation&lt;/strong&gt;
   Temps : ⏳⏳⏳ | Difficulté : 💪💪💪 | Priorité ⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;React.memo&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;useMemo&lt;/code&gt; et &lt;code&gt;useCallback&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Lazy loading&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Next.js&lt;/strong&gt;
   Temps : ⏳⏳⏳ | Difficulté : 💪💪💪 | Priorité ⭐⭐⭐

&lt;ul&gt;
&lt;li&gt;Routing côté serveur&lt;/li&gt;
&lt;li&gt;Génération statique&lt;/li&gt;
&lt;li&gt;Optimisation SEO&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;5. Outils Complémentaires&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Git et GitHub&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪 | Priorité ⭐⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Commandes de base (&lt;code&gt;git clone&lt;/code&gt;, &lt;code&gt;git commit&lt;/code&gt;, &lt;code&gt;git push&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Branches et &lt;code&gt;pull requests&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Gestion des conflits&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Markdown&lt;/strong&gt;
   Temps : ⏳ | Difficulté : 💪 | Priorité ⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Syntaxe de base (titres, listes, liens)&lt;/li&gt;
&lt;li&gt;Tableaux et images&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Docker&lt;/strong&gt;
   Temps : ⏳⏳⏳ | Difficulté : 💪💪💪 | Priorité ⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Conteneurisation&lt;/li&gt;
&lt;li&gt;Docker Compose&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Webpack et Vite&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Configuration de base&lt;/li&gt;
&lt;li&gt;Optimisation des bundles&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;ESLint et Prettier&lt;/strong&gt;
   Temps : ⏳ | Difficulté : 💪 | Priorité ⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;li&gt;Intégration avec les IDE&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;CI/CD&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐

&lt;ul&gt;
&lt;li&gt;GitHub Actions&lt;/li&gt;
&lt;li&gt;GitLab CI&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;6. Bonnes Pratiques et Optimisation&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Clean Code&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Principes SOLID&lt;/li&gt;
&lt;li&gt;DRY et KISS&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Performance&lt;/strong&gt;
   Temps : ⏳⏳⏳ | Difficulté : 💪💪💪 | Priorité ⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Lazy loading&lt;/li&gt;
&lt;li&gt;Code splitting&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Sécurité&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Protection contre XSS et CSRF&lt;/li&gt;
&lt;li&gt;Injection SQL&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Accessibilité&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Normes WCAG&lt;/li&gt;
&lt;li&gt;ARIA (Accessible Rich Internet Applications)&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Documentation&lt;/strong&gt;
   Temps : ⏳ | Difficulté : 💪 | Priorité ⭐⭐

&lt;ul&gt;
&lt;li&gt;JSDoc&lt;/li&gt;
&lt;li&gt;Storybook&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;7. Projets Pratiques&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Application Full-Stack&lt;/strong&gt;
   Temps : ⏳⏳⏳⏳⏳ | Difficulté : 💪💪💪 | Priorité ⭐⭐⭐⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Frontend (React)&lt;/li&gt;
&lt;li&gt;Backend (Node.js)&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Contribution Open Source&lt;/strong&gt;
   Temps : ⏳⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Trouver des projets&lt;/li&gt;
&lt;li&gt;Soumettre des pull requests&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Portfolio&lt;/strong&gt;
   Temps : ⏳⏳ | Difficulté : 💪💪 | Priorité ⭐⭐⭐⭐

&lt;ul&gt;
&lt;li&gt;Création d'un site vitrine&lt;/li&gt;
&lt;li&gt;Présentation des projets&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;8. Veille Technologique&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Suivre les mises à jour&lt;/strong&gt;
   Temps : ⏳ | Difficulté : 💪 | Priorité ⭐⭐&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Blogs (HashNode.dev, Dev.to, Medium)&lt;/li&gt;
&lt;li&gt;Newsletters&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;[ ] &lt;strong&gt;Blogs et Conférences&lt;/strong&gt;
   Temps : ⏳ | Difficulté : 💪 | Priorité ⭐

&lt;ul&gt;
&lt;li&gt;Conférences (React Europe, JSConf)&lt;/li&gt;
&lt;li&gt;Podcasts et vidéos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Cet article a été initialement publié le 22/08/2025 sur mon &lt;a href="https://oclka.hashnode.dev/fullstackeasy" rel="noopener noreferrer"&gt;blog hashnode.dev&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>french</category>
      <category>learning</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🧪 Tester une locale en 2 secondes de manière élégante (sans se prendre la tête)</title>
      <dc:creator>OCLKA</dc:creator>
      <pubDate>Tue, 26 Aug 2025 21:43:52 +0000</pubDate>
      <link>https://forem.com/oclka/tester-une-locale-en-2-secondes-de-maniere-elegante-sans-se-prendre-la-tete-2i31</link>
      <guid>https://forem.com/oclka/tester-une-locale-en-2-secondes-de-maniere-elegante-sans-se-prendre-la-tete-2i31</guid>
      <description>&lt;p&gt;Cet article explique comment valider une locale (comme fr-FR ou en-US) en 2 secondes pour éviter les erreurs d'affichage ou les crashes, en utilisant Intl.DateTimeFormat qui lève une erreur si la locale est invalide.&lt;/p&gt;




&lt;p&gt;Tu veux tester une locale parce que t’as peur que ton utilisateur ait déclaré &lt;code&gt;mi-MI&lt;/code&gt; pour du &lt;strong&gt;Minion&lt;/strong&gt; ou &lt;code&gt;tlh-QAAK&lt;/code&gt; pour du &lt;strong&gt;Klingon&lt;/strong&gt; ?&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚠️ Le scénario catastrophe
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Imagine&lt;/strong&gt; : ton utilisateur sélectionne une &lt;strong&gt;locale inexistante&lt;/strong&gt; (&lt;code&gt;xyz-XYZ&lt;/code&gt;), et soudain :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ton frontend affiche des &lt;em&gt;undefined&lt;/em&gt; partout.&lt;/li&gt;
&lt;li&gt;Ton backend crash avec un &lt;code&gt;RangeError: invalid language tag&lt;/code&gt;.
&lt;strong&gt;Avec ce snippet, tu évites ça en 2 lignes.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🇫🇷 Une locale, c’est quoi ?
&lt;/h2&gt;

&lt;p&gt;Les codes comme &lt;code&gt;fr-FR&lt;/code&gt; ou &lt;code&gt;en-US&lt;/code&gt; suivent la norme &lt;strong&gt;IETF BCP 47&lt;/strong&gt;. Ils se composent de :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;2 lettres pour la langue&lt;/strong&gt; (&lt;code&gt;fr&lt;/code&gt;, &lt;code&gt;en&lt;/code&gt;… selon &lt;strong&gt;ISO 639-1&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2 lettres pour le pays&lt;/strong&gt; (&lt;code&gt;FR&lt;/code&gt;, &lt;code&gt;US&lt;/code&gt;… selon &lt;strong&gt;ISO 3166-1 alpha-2&lt;/strong&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  😱 Le problème : 45 000 combinaisons possibles*
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;180 langues&lt;/strong&gt; × &lt;strong&gt;250 pays&lt;/strong&gt; = &lt;strong&gt;45 000 locales théoriques&lt;/strong&gt;.
&amp;gt; &lt;em&gt;"45 000 ?! 🥵 ¿La cucaracha?"&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;*Heureusement, 99% sont inutiles&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ La solution : &lt;code&gt;Zod&lt;/code&gt; + &lt;code&gt;Intl&lt;/code&gt; (ou &lt;code&gt;Intl&lt;/code&gt; seul)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Avec &lt;code&gt;Zod&lt;/code&gt; (pour les fans de validation) :
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;zod&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;localeSchema&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;refine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;locale&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Intl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;DateTimeFormat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;locale&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Locale invalide. Essayez 'fr-FR' ou 'en-US'.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Sans &lt;code&gt;Zod&lt;/code&gt; (version minimaliste) :
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;isValidLocale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;locale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Intl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;DateTimeFormat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;locale&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🎯 Résultat :
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nf"&gt;testLocale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fr-FR&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// ✅ Valide&lt;/span&gt;
&lt;span class="nf"&gt;testLocale&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tlh-QAAK&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// ❌ Invalide (désolé, fans de Star Trek)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔧 Bonus : Quelles locales sont supportées ?
&lt;/h2&gt;

&lt;p&gt;Pour vérifier &lt;strong&gt;ce que ton environnement supporte&lt;/strong&gt; (navigateur/Node.js) :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Intl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;DateTimeFormat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;supportedLocalesOf&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fr-FR&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tlh-QAAK&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;
&lt;span class="c1"&gt;// → ["fr-FR"] (le klingon n’est pas encore standardisé)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pourquoi ça marche ?&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;Intl.DateTimeFormat&lt;/code&gt; lève une erreur si la locale est invalide. On exploite ce mécanisme pour valider en 1 ligne.&lt;/p&gt;




&lt;h2&gt;
  
  
  👍 Pour en savoir plus :
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tools.ietf.org/html/bcp47" rel="noopener noreferrer"&gt;IETF BCP 47&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/ISO_639-1" rel="noopener noreferrer"&gt;ISO 639-1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/ISO_3166-1" rel="noopener noreferrer"&gt;ISO 3166-1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Pense à valider tes locales et sur ce, Poulétikamassala !&lt;/strong&gt; 👋&lt;/p&gt;

&lt;p&gt;Cet article a été initialement publié le 20/08/205 sur mon &lt;a href="https://oclka.hashnode.dev/tester-une-locale" rel="noopener noreferrer"&gt;blog hashnode.dev&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>french</category>
      <category>i18</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
