[{"data":1,"prerenderedAt":4308},["ShallowReactive",2],{"navigation":3,"posts":84},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80],{"title":5,"path":6,"stem":7},"Découvrir le Markdown — la syntaxe qui vous suivra partout","\u002F2025-09-decouvrir-markdown","2025-09-decouvrir-markdown",{"title":9,"path":10,"stem":11},"Le logiciel libre, en quelques idées simples","\u002F2025-09-logiciel-libre-open-source","2025-09-logiciel-libre-open-source",{"title":13,"path":14,"stem":15},"Utiliser l'ENT et Capytale au quotidien","\u002F2025-09-utiliser-ent-capytale","2025-09-utiliser-ent-capytale",{"title":17,"path":18,"stem":19},"Excalidraw — dessiner des schémas qu'on ose montrer","\u002F2025-10-excalidraw-schemas","2025-10-excalidraw-schemas",{"title":21,"path":22,"stem":23},"Concours Castor — l'informatique en 45 minutes","\u002F2025-11-concours-castor","2025-11-concours-castor",{"title":25,"path":26,"stem":27},"Godot, un moteur de jeu libre pour démarrer sérieusement","\u002F2026-01-godot-moteur-jeu","2026-01-godot-moteur-jeu",{"title":29,"path":30,"stem":31},"Prologin — s'entraîner toute l'année à l'algorithmique","\u002F2026-01-prologin-entrainement","2026-01-prologin-entrainement",{"title":33,"path":34,"stem":35},"Le voyage d'un programme à travers le CPU","\u002F2026-02-voyage-programme-cpu","2026-02-voyage-programme-cpu",{"title":37,"path":38,"stem":39},"Coloration syntaxique côté serveur avec Shiki","\u002F2026-03-tuto-shiki","2026-03-tuto-shiki",{"title":41,"path":42,"stem":43},"Bun 1.2 — où en est-on ?","\u002F2026-03-veille-bun","2026-03-veille-bun",{"title":45,"path":46,"stem":47},"Club prologin — bilan de la session","\u002F2026-04-club-prologin","2026-04-club-prologin",{"title":49,"path":50,"stem":51},"L'IA dans nos cours, sans s'y noyer","\u002F2026-04-edito-ia-cours","2026-04-edito-ia-cours",{"title":53,"path":54,"stem":55},"Semaine des langues — quand Python lit nos textes","\u002F2026-04-semaine-langues-nlp","2026-04-semaine-langues-nlp",{"title":57,"path":58,"stem":59},"Sous le capot de nsi.rocks","\u002F2026-05-coulisses-nsi-rocks","2026-05-coulisses-nsi-rocks",{"title":61,"path":62,"stem":63},"Créer votre premier jeu vidéo — le guide pragmatique","\u002F2026-05-creer-jeu-video-debutant","2026-05-creer-jeu-video-debutant",{"title":65,"path":66,"stem":67},"Le tableau de bord élève — mode d'emploi","\u002F2026-05-dashboard-eleve-mode-emploi","2026-05-dashboard-eleve-mode-emploi",{"title":69,"path":70,"stem":71},"Évaluations notées, auto-évaluations — qui sert à quoi","\u002F2026-05-evaluations-et-auto-eval","2026-05-evaluations-et-auto-eval",{"title":73,"path":74,"stem":75},"La Nuit du Code 2026 — coder en équipe, manette en main","\u002F2026-05-nuit-du-code-2026","2026-05-nuit-du-code-2026",{"title":77,"path":78,"stem":79},"Pourquoi LLVM ?","\u002F2026-05-pourquoi-llvm","2026-05-pourquoi-llvm",{"title":81,"path":82,"stem":83},"git bisect : trouver un bug en log(n) étapes","\u002F2026-05-tuto-git-bisect","2026-05-tuto-git-bisect",[85,308,458,656,904,963,1336,1457,1488,1539,1691,1740,2037,2175,2421,2521,2714,3066,3156,3410],{"id":86,"title":57,"authors":87,"body":90,"category":297,"date":298,"description":299,"extension":300,"featured":301,"image":302,"meta":303,"navigation":304,"path":58,"readingTime":305,"seo":306,"stem":59,"__hash__":307},"posts\u002F2026-05-coulisses-nsi-rocks.md",[88],{"name":89},"Mathieu N.",{"type":91,"value":92,"toc":288},"minimark",[93,102,107,110,132,136,182,186,189,216,219,223,243,247,250,280],[94,95,96,97,101],"p",{},"Vous lisez ces lignes sur ",[98,99,100],"strong",{},"nsi.rocks",", la plateforme pédagogique que je\nmaintiens pour l'année en cours. Quelques mots sur ce qu'elle est, ce\nqu'elle n'est pas, et ce qui se joue derrière les pages que vous parcourez.",[103,104,106],"h2",{"id":105},"pourquoi-un-site-personnel-et-pas-un-manuel","Pourquoi un site personnel et pas un manuel",[94,108,109],{},"Trois raisons principales :",[111,112,113,120,126],"ol",{},[114,115,116,119],"li",{},[98,117,118],{},"Le contenu vit avec votre classe."," Une coquille corrigée à 22 h est\nen ligne à 22 h 01. Un point flou identifié en cours peut être réécrit\npour la séance suivante.",[114,121,122,125],{},[98,123,124],{},"Le format épouse le besoin."," Cours développés, fiches mémo,\ndiapositives projetables, auto-évaluations interactives, modules de\nlabo — chaque type a sa forme propre, ce qu'aucun manuel imprimé ne\npermet.",[114,127,128,131],{},[98,129,130],{},"Tout est récupérable."," Les contenus sont écrits en Markdown, un\nformat texte ouvert. Si demain ce site disparaît, l'enseignant ou\nl'élève peut récupérer les fichiers et continuer.",[103,133,135],{"id":134},"ce-que-vous-trouverez","Ce que vous trouverez",[137,138,139,147,154,161,168,175],"card-group",{},[140,141,144],"card",{"icon":142,"title":143},"i-lucide-book-open","Cours développés",[94,145,146],{},"Le cours complet, lisible à votre rythme. Avec exemples, pièges signalés,\nvérifications de compréhension.",[140,148,151],{"icon":149,"title":150},"i-lucide-square-stack","Fiches mémo",[94,152,153],{},"La version condensée du cours, pensée pour la révision express avant un DS.",[140,155,158],{"icon":156,"title":157},"i-lucide-monitor-play","Diapositives",[94,159,160],{},"Le deck projeté en classe, accessible si vous voulez le revoir.",[140,162,165],{"icon":163,"title":164},"i-lucide-check-circle","Auto-évaluations",[94,166,167],{},"QCM, questions courtes, mises en ordre — pour vérifier vos acquis sans note.",[140,169,172],{"icon":170,"title":171},"i-lucide-list-tree","Items du BO",[94,173,174],{},"Les capacités attendues du programme officiel, reliées à chaque cours qui\nles couvre.",[140,176,179],{"icon":177,"title":178},"i-lucide-flask-conical","Labo",[94,180,181],{},"Modules interactifs où l'on manipule sans risque (couleurs RGB, SQL,\nLinux…).",[103,183,185],{"id":184},"la-stack-en-quatre-acronymes","La stack, en quatre acronymes",[94,187,188],{},"Pour celles et ceux qui veulent regarder sous le capot :",[190,191,192,198,204,210],"ul",{},[114,193,194,197],{},[98,195,196],{},"Nuxt 4"," côté frontend — un framework Vue.js qui produit des pages\nrapides et SEO-friendly.",[114,199,200,203],{},[98,201,202],{},"Nuxt Content"," pour servir les fichiers Markdown comme des pages.",[114,205,206,209],{},[98,207,208],{},"Nitro"," pour le backend (gestion des comptes, des notes, des\névaluations).",[114,211,212,215],{},[98,213,214],{},"Cloudflare"," pour l'hébergement (Pages, Workers, D1) — gratuit pour ce\nvolume, performant partout dans le monde.",[94,217,218],{},"Le tout est intégralement écrit en TypeScript, hébergé en France, et le\ncode source pourrait à terme être partagé publiquement (à voir).",[103,220,222],{"id":221},"ce-que-ce-site-nest-pas","Ce que ce site n'est pas",[190,224,225,231,237],{},[114,226,227,230],{},[98,228,229],{},"Pas un réseau social."," Pas de profils publics, pas de likes, pas de\nclassement. Vous êtes là pour apprendre, pas pour vous comparer.",[114,232,233,236],{},[98,234,235],{},"Pas un substitut au cours en classe."," Les explications les plus utiles\nrestent celles que vous obtenez en posant une question à voix haute.",[114,238,239,242],{},[98,240,241],{},"Pas une vitrine commerciale."," Pas de pub, pas de tracking publicitaire,\npas de revente de données. Vos identifiants servent uniquement à vous\nreconnecter à vos cours et à vos évaluations.",[103,244,246],{"id":245},"et-la-suite","Et la suite",[94,248,249],{},"Quelques chantiers en cours, dans le désordre :",[190,251,252,259,266,273],{},[114,253,254,255,258],{},"Renforcer le ",[98,256,257],{},"dashboard élève"," pour vous aider à vous repérer dans vos\nprochaines deadlines.",[114,260,261,262,265],{},"Ouvrir une rubrique ",[98,263,264],{},"labo"," plus fournie, avec des modules\nd'expérimentation par chapitre.",[114,267,268,269,272],{},"Permettre l'",[98,270,271],{},"export PDF"," d'un cours et de sa fiche mémo pour la\nrévision hors ligne.",[114,274,275,276,279],{},"Mieux exposer les ",[98,277,278],{},"évaluations passées"," dans le dashboard.",[94,281,282,283,287],{},"Les remarques, suggestions et erreurs trouvées sont les bienvenues — par\nmail à ",[284,285,286],"code",{},"contact@nsi.rocks"," ou directement en classe.",{"title":289,"searchDepth":290,"depth":290,"links":291},"",2,[292,293,294,295,296],{"id":105,"depth":290,"text":106},{"id":134,"depth":290,"text":135},{"id":184,"depth":290,"text":185},{"id":221,"depth":290,"text":222},{"id":245,"depth":290,"text":246},"edito","2026-05-15","Pourquoi ce site existe, comment il est construit, et ce qu'il vous propose au-delà du simple cours en ligne.","md",false,null,{},true,1,{"title":57,"description":299},"yrf_pIDsBTzgQHfmxO7hNDGhWv9k5xBOiYO1RFJAGCs",{"id":309,"title":65,"authors":310,"body":312,"category":452,"date":453,"description":454,"extension":300,"featured":301,"image":302,"meta":455,"navigation":304,"path":66,"readingTime":305,"seo":456,"stem":67,"__hash__":457},"posts\u002F2026-05-dashboard-eleve-mode-emploi.md",[311],{"name":89},{"type":91,"value":313,"toc":442},[314,321,326,330,337,341,348,354,358,365,369,376,380,387,391,398,402,425,429,436],[94,315,316,317,320],{},"Une fois connecté à nsi.rocks, vous avez accès à un ",[98,318,319],{},"tableau de bord\npersonnel"," qui centralise vos repères pour l'année. Voici à quoi servent\nles six cartes que vous y trouverez.",[322,323],"illustration",{"kind":324,"prompt":325},"screenshot","Capture du dashboard élève nsi.rocks : 6 cartes en grille (reprise de lecture, progression, notes, deadlines, mémos, activité)",[103,327,329],{"id":328},"_1-reprendre-votre-lecture","1. Reprendre votre lecture",[94,331,332,333,336],{},"La première carte affiche ",[98,334,335],{},"le dernier cours consulté"," avec un bouton de\nreprise direct. Pratique pour retrouver instantanément où vous en étiez\nhier soir, sans repasser par l'index du chapitre.",[103,338,340],{"id":339},"_2-progression-dans-les-chapitres","2. Progression dans les chapitres",[94,342,343,344,347],{},"Une vue synthétique de ",[98,345,346],{},"l'avancement par chapitre",", niveau par niveau.\nLa progression se met à jour automatiquement à mesure que vous parcourez\nles cours et terminez les auto-évaluations.",[349,350,351],"note",{},[94,352,353],{},"La progression est purement indicative. Aucune note n'en découle, et\nvotre enseignant ne reçoit pas d'alerte si vous êtes en retard. C'est\nvotre boussole personnelle.",[103,355,357],{"id":356},"_3-notes-des-évaluations-passées","3. Notes des évaluations passées",[94,359,360,361,364],{},"Le récapitulatif de ",[98,362,363],{},"vos évaluations notées"," : intitulé, date, note sur\n20, points obtenus par item du BO. Cliquez pour voir le détail question\npar question quand votre enseignant a publié les corrigés.",[103,366,368],{"id":367},"_4-prochaines-deadlines","4. Prochaines deadlines",[94,370,371,372,375],{},"Les ",[98,373,374],{},"évaluations programmées"," dans les semaines à venir. Le code couleur\nindique l'urgence : vert plus de deux semaines, ambre une à deux semaines,\nrouge moins d'une semaine.",[103,377,379],{"id":378},"_5-fiches-mémo-récentes","5. Fiches mémo récentes",[94,381,382,383,386],{},"Un accès rapide aux ",[98,384,385],{},"fiches mémo"," des derniers cours étudiés en classe.\nFormat dense, idéal pour la révision avant une interro.",[103,388,390],{"id":389},"_6-activité-de-la-plateforme","6. Activité de la plateforme",[94,392,393,394,397],{},"Le ",[98,395,396],{},"journal des nouveautés"," : nouveau cours publié, mise à jour\nimportante, nouveau module labo, etc. Pour suivre ce qui bouge sans avoir\nà fouiller.",[103,399,401],{"id":400},"ce-que-le-dashboard-ne-fait-pas","Ce que le dashboard ne fait pas",[190,403,404,413,419],{},[114,405,406,409,410,412],{},[98,407,408],{},"Pas de chat avec votre enseignant."," Les questions passent par Pronote\nou par mail (",[284,411,286],{},").",[114,414,415,418],{},[98,416,417],{},"Pas de notification push."," Vous décidez quand vous y allez. Aucune\nalerte agressive ne vous court après.",[114,420,421,424],{},[98,422,423],{},"Pas de gamification."," Pas de badges, pas de XP, pas de classement\nentre élèves. L'objectif est d'apprendre, pas de jouer à la performance\naffichée.",[103,426,428],{"id":427},"confidentialité","Confidentialité",[94,430,431,432,435],{},"Vos données de progression sont ",[98,433,434],{},"privées"," : seul vous (et votre\nenseignant pour les notes officielles) y avez accès. Aucun service tiers\nn'est branché sur votre activité — pas de Google Analytics, pas de\nFacebook Pixel, pas de revente.",[437,438,439],"tip",{},[94,440,441],{},"Suggestion : prenez l'habitude d'ouvrir votre dashboard une fois par\nsemaine, pas plus. Cela suffit largement pour rester aligné, sans tomber\ndans la consultation compulsive.",{"title":289,"searchDepth":290,"depth":290,"links":443},[444,445,446,447,448,449,450,451],{"id":328,"depth":290,"text":329},{"id":339,"depth":290,"text":340},{"id":356,"depth":290,"text":357},{"id":367,"depth":290,"text":368},{"id":378,"depth":290,"text":379},{"id":389,"depth":290,"text":390},{"id":400,"depth":290,"text":401},{"id":427,"depth":290,"text":428},"tuto","2026-05-13","Reprendre une lecture, suivre sa progression, retrouver ses notes et ses prochaines deadlines. Tour d'horizon de votre dashboard.",{},{"title":65,"description":454},"hldcInkjdarHs9vQGUhf_TaHjQ-lQF-yyaHA-EZQu9E",{"id":459,"title":73,"authors":460,"body":462,"category":650,"date":651,"description":652,"extension":300,"featured":304,"image":302,"meta":653,"navigation":304,"path":74,"readingTime":305,"seo":654,"stem":75,"__hash__":655},"posts\u002F2026-05-nuit-du-code-2026.md",[461],{"name":89},{"type":91,"value":463,"toc":641},[464,475,491,495,521,525,529,534,594,598,624,634,638],[94,465,466,467,470,471,474],{},"La ",[98,468,469],{},"Nuit du Code"," est un concours national de programmation organisé chaque\nprintemps. En équipes de 2 ou 3, vous concevez et développez un mini-jeu\nvidéo en ",[98,472,473],{},"dix heures",", autour d'un thème dévoilé au lancement. Le défi est\nexigeant, joyeux, parfois mémorable.",[349,476,477],{},[94,478,479,480,483,484,487,488,490],{},"Édition 2026 : nuit du ",[98,481,482],{},"vendredi 5 au samedi 6 juin",", dans la salle\ninformatique du lycée. Inscriptions ouvertes jusqu'au ",[98,485,486],{},"28 mai"," via\nPronote ou par mail à ",[284,489,286],{},".",[103,492,494],{"id":493},"pourquoi-y-aller-même-sans-expérience","Pourquoi y aller (même sans expérience)",[190,496,497,503,509,515],{},[114,498,499,502],{},[98,500,501],{},"L'objectif est volontairement modeste"," : un jeu jouable, pas une\nsuperproduction. Une boucle, un objectif, un game over suffisent.",[114,504,505,508],{},[98,506,507],{},"L'esprit prime sur la performance"," : la sobriété d'un mini-jeu\ncohérent vaut largement une démo bavarde et bugguée.",[114,510,511,514],{},[98,512,513],{},"Travail en équipe"," : un programmeur, un graphiste, un game designer —\nla complémentarité est l'arme principale.",[114,516,517,520],{},[98,518,519],{},"Ambiance"," : pizzas, café, démos collectives, fous rires à 3 h du\nmatin. Une expérience humaine, pas seulement technique.",[103,522,524],{"id":523},"comment-se-préparer","Comment se préparer",[322,526],{"kind":527,"prompt":528},"schema","Frise chronologique d'une Nuit du Code : lancement et thème (20h), brainstorm (21h), prototype (23h), itérations (2h-6h), polish (7h), démo (10h)",[530,531,533],"h3",{"id":532},"côté-outils","Côté outils",[190,535,536,556,564,579],{},[114,537,538,547,548,555],{},[98,539,540],{},[541,542,546],"a",{"href":543,"rel":544},"https:\u002F\u002Fpygame-zero.readthedocs.io",[545],"nofollow","Pygame Zero"," ou\n",[98,549,550],{},[541,551,554],{"href":552,"rel":553},"https:\u002F\u002Fwww.pygame.org",[545],"Pygame"," si vous restez en Python — la prise\nen main est rapide, les ressources francophones abondantes.",[114,557,558,563],{},[98,559,560],{},[541,561,562],{"href":26},"Godot"," pour celles et ceux prêts à investir\nquelques heures avant le concours dans un vrai moteur.",[114,565,566,547,573,578],{},[98,567,568],{},[541,569,572],{"href":570,"rel":571},"https:\u002F\u002Fwww.aseprite.org",[545],"Aseprite",[541,574,577],{"href":575,"rel":576},"https:\u002F\u002Fwww.piskelapp.com",[545],"Piskel"," pour le pixel-art, suffisants pour\nproduire des sprites en quelques minutes.",[114,580,581,547,588,593],{},[98,582,583],{},[541,584,587],{"href":585,"rel":586},"https:\u002F\u002Fopengameart.org",[545],"OpenGameArt",[541,589,592],{"href":590,"rel":591},"https:\u002F\u002Ffreesound.org",[545],"Freesound"," pour les assets libres de droits — à\ncréditer dans le générique.",[530,595,597],{"id":596},"côté-méthode","Côté méthode",[111,599,600,606,612,618],{},[114,601,602,605],{},[98,603,604],{},"Préparez un squelette"," quelques jours avant : fenêtre, boucle de jeu,\ngestion des touches, écran titre. Vous gagnerez deux heures cruciales.",[114,607,608,611],{},[98,609,610],{},"Posez vite vos limites"," : 1 mécanique principale, 1 ennemi, 1 niveau.\nTout le reste est superflu si la base ne fonctionne pas.",[114,613,614,617],{},[98,615,616],{},"Faites un point toutes les 2 heures"," : ce qui marche, ce qui bloque,\nce qu'on coupe.",[114,619,620,623],{},[98,621,622],{},"Gardez 1 heure pour le polish"," : titre lisible, son d'impact, écran\nfinal. Ce sont ces détails qui marquent les jurés.",[625,626,627],"warning",{},[94,628,629,630,633],{},"Le piège classique : vouloir un open-world à 22 h. Réduisez l'ambition\n",[98,631,632],{},"avant"," d'écrire la première ligne, pas à 4 h du matin sous l'effet de\nla fatigue.",[103,635,637],{"id":636},"et-après","Et après",[94,639,640],{},"Les meilleurs projets sont mis en avant sur le site de l'événement et\ndiffusés à la communauté NSI nationale. Quel que soit votre classement,\nvous repartez avec un projet livré, des enseignements solides en gestion\nde temps, et une équipe soudée. Trois bénéfices durables.",{"title":289,"searchDepth":290,"depth":290,"links":642},[643,644,649],{"id":493,"depth":290,"text":494},{"id":523,"depth":290,"text":524,"children":645},[646,648],{"id":532,"depth":647,"text":533},3,{"id":596,"depth":647,"text":597},{"id":636,"depth":290,"text":637},"actus","2026-05-12","Une nuit, un thème, un jeu vidéo livré à l'aube. Pourquoi cette épreuve mérite votre inscription, même si vous débutez.",{},{"title":73,"description":652},"bovUvQOlffcAVBgupbnz8lmSIJGcV-USLfaMSqxX3gg",{"id":657,"title":69,"authors":658,"body":660,"category":297,"date":899,"description":900,"extension":300,"featured":301,"image":302,"meta":901,"navigation":304,"path":70,"readingTime":305,"seo":902,"stem":71,"__hash__":903},"posts\u002F2026-05-evaluations-et-auto-eval.md",[659],{"name":89},{"type":91,"value":661,"toc":892},[662,673,677,680,746,754,761,765,776,832,838,842,849,857,861,872,875,879],[94,663,664,665,668,669,672],{},"Sur nsi.rocks, vous croisez deux types de questions : les ",[98,666,667],{},"auto-évaluations","\nde fin de chapitre, et les ",[98,670,671],{},"évaluations notées",". Elles ressemblent —\nmêmes formats de question, même rendu visuel — mais elles ne servent pas du\ntout à la même chose.",[103,674,676],{"id":675},"auto-évaluation-pour-vous-par-vous","Auto-évaluation : pour vous, par vous",[94,678,679],{},"À la fin de chaque chapitre, la fiche mémo se conclut par une\nauto-évaluation : 6 à 10 questions variées (QCM, texte court, mise en\nordre).",[681,682,683,696],"table",{},[684,685,686],"thead",{},[687,688,689,693],"tr",{},[690,691,692],"th",{},"Caractéristique",[690,694,695],{},"Auto-évaluation",[697,698,699,708,715,723,730,738],"tbody",{},[687,700,701,705],{},[702,703,704],"td",{},"Note attribuée",[702,706,707],{},"Non",[687,709,710,713],{},[702,711,712],{},"Durée imposée",[702,714,707],{},[687,716,717,720],{},[702,718,719],{},"Correction",[702,721,722],{},"Immédiate, côté navigateur",[687,724,725,728],{},[702,726,727],{},"Vue par l'enseignant",[702,729,707],{},[687,731,732,735],{},[702,733,734],{},"Stockage de vos réponses",[702,736,737],{},"Non, rien n'est envoyé sur le serveur",[687,739,740,743],{},[702,741,742],{},"Tentatives",[702,744,745],{},"Illimitées",[349,747,748],{},[94,749,750,753],{},[98,751,752],{},"Rien ne sort de votre navigateur."," Les bonnes réponses sont vérifiées\nlocalement, sans appel au serveur. Vous pouvez vous tromper sans\nconséquence — c'est même l'objectif.",[94,755,756,757,760],{},"L'utilité : ",[98,758,759],{},"vérifier que les notions sont en place"," avant de passer au\nchapitre suivant. Si vous bloquez sur 3 questions sur 8, c'est un signal\nclair pour relire le cours ou poser une question en classe.",[103,762,764],{"id":763},"évaluation-notée-un-vrai-ds-encadré","Évaluation notée : un vrai DS, encadré",[94,766,767,768,771,772,775],{},"Les évaluations notées sont créées par votre enseignant dans le dashboard\nenseignant, à partir des ",[98,769,770],{},"sources d'évaluation"," rédigées chapitre par\nchapitre. Elles sont publiées à une date donnée et accessibles depuis\n",[98,773,774],{},"eval.nsi.rocks"," pendant un créneau précis.",[681,777,778,787],{},[684,779,780],{},[687,781,782,784],{},[690,783,692],{},[690,785,786],{},"Évaluation notée",[697,788,789,796,803,810,817,825],{},[687,790,791,793],{},[702,792,704],{},[702,794,795],{},"Oui, sur 20",[687,797,798,800],{},[702,799,712],{},[702,801,802],{},"Oui, indiquée à l'avance",[687,804,805,807],{},[702,806,719],{},[702,808,809],{},"Mixte : automatique pour QCM\u002Fréponses courtes, manuelle pour le reste",[687,811,812,814],{},[702,813,727],{},[702,815,816],{},"Oui — copie complète, points par item du BO",[687,818,819,822],{},[702,820,821],{},"Stockage",[702,823,824],{},"Oui, tentative + horodatage",[687,826,827,829],{},[702,828,742],{},[702,830,831],{},"Selon le paramétrage (1 à 3 selon les cas)",[94,833,756,834,837],{},[98,835,836],{},"valider formellement"," votre maîtrise du chapitre, alimenter\nvotre moyenne, et nourrir le bulletin trimestriel.",[103,839,841],{"id":840},"ce-qui-change-pour-vous","Ce qui change pour vous",[94,843,844,845,848],{},"Concrètement, repérez la ",[98,846,847],{},"présence d'un timer"," et la mention « notée »\nsur l'écran d'accueil. En cas de doute :",[190,850,851,854],{},[114,852,853],{},"Pas de timer, formulation « auto-évaluation », couleur indigo neutre →\nvous êtes en mode entraînement libre.",[114,855,856],{},"Timer visible, formulation « évaluation », couleur ambre → vous êtes en\nmode noté. Vos réponses sont enregistrées.",[103,858,860],{"id":859},"pourquoi-ce-dédoublement","Pourquoi ce dédoublement",[94,862,863,864,867,868,871],{},"L'auto-évaluation ",[98,865,866],{},"dédramatise"," : vous pouvez tester sans crainte, jusqu'à\nsentir que les réflexes sont là. L'évaluation notée ",[98,869,870],{},"valide"," : elle\nsanctionne un niveau atteint, à un moment donné, dans des conditions\nidentiques pour toute la classe.",[94,873,874],{},"Les deux dispositifs sont complémentaires. Le premier sans le second\nlaisserait vos progrès invisibles. Le second sans le premier ferait porter\ntoute la pression de l'apprentissage à la note finale.",[103,876,878],{"id":877},"pour-aller-plus-loin","Pour aller plus loin",[190,880,881,886],{},[114,882,883,885],{},[541,884,57],{"href":58}," — comment la\nplateforme est construite.",[114,887,888,891],{},[541,889,890],{"href":66},"Le tableau de bord élève"," — où\nretrouver vos résultats et votre progression.",{"title":289,"searchDepth":290,"depth":290,"links":893},[894,895,896,897,898],{"id":675,"depth":290,"text":676},{"id":763,"depth":290,"text":764},{"id":840,"depth":290,"text":841},{"id":859,"depth":290,"text":860},{"id":877,"depth":290,"text":878},"2026-05-10","Sur nsi.rocks, deux dispositifs distincts coexistent. Comprendre ce qu'on évalue, comment, et ce qu'il advient de vos réponses.",{},{"title":69,"description":900},"wNqxpuMm8eJ8ARAbCUz9h9DyAqid9C5TyGS-iV6WTGg",{"id":905,"title":77,"authors":906,"body":908,"category":958,"date":899,"description":959,"extension":300,"featured":304,"image":302,"meta":960,"navigation":304,"path":78,"readingTime":305,"seo":961,"stem":79,"__hash__":962},"posts\u002F2026-05-pourquoi-llvm.md",[907],{"name":89},{"type":91,"value":909,"toc":954},[910,913,917,933,937,945,951],[94,911,912],{},"LLVM est devenu, en l'espace de quinze ans, l'épine dorsale de la quasi-totalité\ndes langages modernes. Pourquoi ?",[103,914,916],{"id":915},"un-compilateur-en-trois-étages","Un compilateur en trois étages",[94,918,919,920,923,924,928,929,932],{},"Le génie de LLVM tient en un mot : ",[98,921,922],{},"IR",". La représentation intermédiaire (LLVM IR)\nsépare le ",[925,926,927],"em",{},"frontend"," (qui parse un langage) du ",[925,930,931],{},"backend"," (qui produit le code machine).\nConséquence : on peut écrire un nouveau langage sans réinventer les optimisations.",[103,934,936],{"id":935},"qui-lutilise","Qui l'utilise ?",[190,938,939,942],{},[114,940,941],{},"Rust, Swift, Julia, Crystal, Zig — tous adossés à LLVM.",[114,943,944],{},"Apple, Google, Mozilla y contribuent activement.",[946,947,948],"blockquote",{},[94,949,950],{},"Avant LLVM, écrire un langage compilé était un effort de 5 ans. Aujourd'hui, c'est\nun projet de week-end pour une preuve de concept.",[94,952,953],{},"L'intérêt pédagogique est immense : on comprend la séparation entre la sémantique\nd'un langage et l'efficacité du code généré.",{"title":289,"searchDepth":290,"depth":290,"links":955},[956,957],{"id":915,"depth":290,"text":916},{"id":935,"depth":290,"text":936},"veille","Une infrastructure de compilation modulaire qui change la façon dont les langages voient le jour.",{},{"title":77,"description":959},"Vy8Zcawtv3-ylgEqYTdyQ4aCpIWSCFV98NsAv_17sBg",{"id":964,"title":61,"authors":965,"body":967,"category":452,"date":1331,"description":1332,"extension":300,"featured":301,"image":302,"meta":1333,"navigation":304,"path":62,"readingTime":305,"seo":1334,"stem":63,"__hash__":1335},"posts\u002F2026-05-creer-jeu-video-debutant.md",[966],{"name":89},{"type":91,"value":968,"toc":1322},[969,976,1299,1301,1318],[94,970,971,972,975],{},"« J'aimerais créer un jeu vidéo » — la phrase revient chaque année. Et\nchaque année, beaucoup d'élèves abandonnent au bout de deux semaines, non\npar manque de talent, mais faute d'une ",[98,973,974],{},"trajectoire réaliste",". Voici\nquelques repères pour éviter les pièges classiques.",[977,978,980,984,1000,1007,1029,1032,1036,1114,1123,1127,1130,1176,1183,1187,1190,1230,1233,1237,1240,1270,1274,1277,1296],"steps",{"level":979},"2",[103,981,983],{"id":982},"acceptez-de-faire-petit","Acceptez de faire petit",[625,985,986],{},[94,987,988,989,992,993,547,996,999],{},"Le piège n°1 du débutant : vouloir reproduire ",[925,990,991],{},"Zelda",", ",[925,994,995],{},"Minecraft",[925,997,998],{},"Elden Ring"," en projet personnel. C'est mathématiquement impossible —\nces jeux représentent des centaines d'années-personnes de travail.",[94,1001,1002,1003,1006],{},"Votre premier jeu doit tenir en ",[98,1004,1005],{},"une phrase",". Quelques bons exemples :",[190,1008,1009,1014,1019,1024],{},[114,1010,1011],{},[925,1012,1013],{},"Un vaisseau évite des astéroïdes qui tombent du ciel.",[114,1015,1016],{},[925,1017,1018],{},"Un personnage saute d'une plateforme à l'autre sans tomber.",[114,1020,1021],{},[925,1022,1023],{},"Deux joueurs s'affrontent au Pong sur le même clavier.",[114,1025,1026],{},[925,1027,1028],{},"Un serpent grandit en mangeant des pommes.",[94,1030,1031],{},"Si votre idée tient en plus d'une phrase, c'est trop ambitieux pour le\npremier essai. Mettez-la de côté pour le deuxième.",[103,1033,1035],{"id":1034},"choisissez-votre-outil","Choisissez votre outil",[681,1037,1038,1051],{},[684,1039,1040],{},[687,1041,1042,1045,1048],{},[690,1043,1044],{},"Outil",[690,1046,1047],{},"Langage",[690,1049,1050],{},"Pour qui ?",[697,1052,1053,1065,1076,1088,1101],{},[687,1054,1055,1059,1062],{},[702,1056,1057],{},[98,1058,546],{},[702,1060,1061],{},"Python",[702,1063,1064],{},"Si vous débutez tout court. Très pédagogique, peu de cérémonie.",[687,1066,1067,1071,1073],{},[702,1068,1069],{},[98,1070,554],{},[702,1072,1061],{},[702,1074,1075],{},"Une fois Pygame Zero compris. Plus de contrôle, plus de boilerplate.",[687,1077,1078,1082,1085],{},[702,1079,1080],{},[98,1081,562],{},[702,1083,1084],{},"GDScript \u002F C#",[702,1086,1087],{},"Quand vous voulez un vrai éditeur, du 2D ou du 3D, et publier sur plusieurs plateformes.",[687,1089,1090,1095,1098],{},[702,1091,1092],{},[98,1093,1094],{},"Construct \u002F GDevelop",[702,1096,1097],{},"Pas de code",[702,1099,1100],{},"Si vous n'avez jamais programmé et que vous voulez voir votre idée tourner ce week-end.",[687,1102,1103,1108,1111],{},[702,1104,1105],{},[98,1106,1107],{},"Unity \u002F Unreal",[702,1109,1110],{},"C# \u002F C++",[702,1112,1113],{},"Plus tard. Outils professionnels, courbe d'apprentissage raide.",[349,1115,1116],{},[94,1117,1118,1119,1122],{},"Choisissez ",[98,1120,1121],{},"un seul"," outil. Et tenez-vous-y au moins jusqu'à votre\npremier jeu fini. Sauter d'un moteur à l'autre est la cause la plus\nfréquente d'abandon.",[103,1124,1126],{"id":1125},"la-boucle-de-jeu-le-cœur-de-tout","La boucle de jeu, le cœur de tout",[94,1128,1129],{},"Tout jeu vidéo, du Pong aux AAA, repose sur la même structure :",[1131,1132,1136],"pre",{"className":1133,"code":1134,"language":1135,"meta":289,"style":289},"language-python shiki shiki-themes github-light github-light github-dark","while jeu_en_cours:\n    gerer_les_entrees()      # touches, souris, manette\n    mettre_a_jour_le_monde() # déplacements, collisions, score\n    dessiner_a_l_ecran()     # sprites, fond, HUD\n","python",[284,1137,1138,1150,1159,1167],{"__ignoreMap":289},[1139,1140,1142,1146],"span",{"class":1141,"line":305},"line",[1139,1143,1145],{"class":1144},"s8jYJ","while",[1139,1147,1149],{"class":1148},"sxrX7"," jeu_en_cours:\n",[1139,1151,1152,1155],{"class":1141,"line":290},[1139,1153,1154],{"class":1148},"    gerer_les_entrees()      ",[1139,1156,1158],{"class":1157},"sCsY4","# touches, souris, manette\n",[1139,1160,1161,1164],{"class":1141,"line":647},[1139,1162,1163],{"class":1148},"    mettre_a_jour_le_monde() ",[1139,1165,1166],{"class":1157},"# déplacements, collisions, score\n",[1139,1168,1170,1173],{"class":1141,"line":1169},4,[1139,1171,1172],{"class":1148},"    dessiner_a_l_ecran()     ",[1139,1174,1175],{"class":1157},"# sprites, fond, HUD\n",[94,1177,1178,1179,1182],{},"Cette ",[98,1180,1181],{},"boucle principale"," tourne 30 ou 60 fois par seconde. Comprendre\nqu'un jeu n'est qu'un programme qui répète ces trois étapes change la façon\ndont vous le concevez.",[103,1184,1186],{"id":1185},"construisez-par-étapes-successives","Construisez par étapes successives",[94,1188,1189],{},"Voici un ordre de progression robuste pour un premier jeu :",[111,1191,1192,1198,1204,1210,1215,1220,1225],{},[114,1193,1194,1197],{},[98,1195,1196],{},"Une fenêtre s'ouvre, un fond coloré apparaît, on peut la fermer\nproprement."," C'est un succès.",[114,1199,1200,1203],{},[98,1201,1202],{},"Un sprite s'affiche au milieu."," C'est un autre succès.",[114,1205,1206,1209],{},[98,1207,1208],{},"Le sprite se déplace avec les flèches."," Encore un succès.",[114,1211,1212],{},[98,1213,1214],{},"Un autre sprite apparaît, et il y a une collision détectée.",[114,1216,1217],{},[98,1218,1219],{},"Un score s'affiche en haut, il augmente sur événement.",[114,1221,1222],{},[98,1223,1224],{},"Un écran \"Game Over\" apparaît à un moment.",[114,1226,1227],{},[98,1228,1229],{},"Un écran titre permet de relancer.",[94,1231,1232],{},"À ce stade, vous avez un jeu complet. Tout le reste (graphismes, sons,\nniveaux) est de l'embellissement.",[103,1234,1236],{"id":1235},"récupérer-des-assets-quand-on-nest-pas-graphiste","Récupérer des assets quand on n'est pas graphiste",[94,1238,1239],{},"Pas besoin de savoir dessiner pour faire un jeu présentable. Plusieurs\nbanques proposent des sprites et des sons libres de droits, avec\nl'obligation parfois de créditer l'auteur :",[190,1241,1242,1248,1256,1264],{},[114,1243,1244,1247],{},[541,1245,587],{"href":585,"rel":1246},[545]," — sprites, tuiles, musiques.",[114,1249,1250,1255],{},[541,1251,1254],{"href":1252,"rel":1253},"https:\u002F\u002Fkenney.nl",[545],"Kenney.nl"," — packs gratuits cohérents,\nparticulièrement adaptés aux débutants.",[114,1257,1258,1263],{},[541,1259,1262],{"href":1260,"rel":1261},"https:\u002F\u002Fitch.io\u002Fgame-assets\u002Ffree",[545],"Itch.io — free game assets"," —\nimmense fonds, qualité variable.",[114,1265,1266,1269],{},[541,1267,592],{"href":590,"rel":1268},[545]," — bruitages.",[103,1271,1273],{"id":1272},"publier-même-imparfait","Publier, même imparfait",[94,1275,1276],{},"Un jeu non publié reste invisible. Quand votre prototype tient debout :",[190,1278,1279,1282,1293],{},[114,1280,1281],{},"Compilez-le en exécutable (PyInstaller pour Python, export Godot pour\nGodot, etc.).",[114,1283,1284,1285,1292],{},"Publiez-le sur ",[98,1286,1287],{},[541,1288,1291],{"href":1289,"rel":1290},"https:\u002F\u002Fitch.io",[545],"itch.io"," — la plateforme est\ngratuite, accueille les jeux de toutes tailles, sans pression\ncommerciale.",[114,1294,1295],{},"Partagez le lien à votre classe, à vos amis, sur le serveur Discord du\nclub.",[94,1297,1298],{},"Voir ses joueurs réagir est l'expérience la plus motivante qui soit. C'est\nce qui transforme un essai en envie de recommencer — en mieux.",[103,1300,878],{"id":877},[190,1302,1303,1309,1315],{},[114,1304,1305,1306,490],{},"Notre article sur ",[541,1307,1308],{"href":26},"Godot, le moteur libre",[114,1310,1311,1312,1314],{},"L'annonce de la prochaine ",[541,1313,469],{"href":74}," — l'occasion\nrêvée de tester votre setup en équipe.",[114,1316,1317],{},"Le club jeu vidéo du lycée, le mercredi après-midi.",[1319,1320,1321],"style",{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":289,"searchDepth":290,"depth":290,"links":1323},[1324,1325,1326,1327,1328,1329,1330],{"id":982,"depth":290,"text":983},{"id":1034,"depth":290,"text":1035},{"id":1125,"depth":290,"text":1126},{"id":1185,"depth":290,"text":1186},{"id":1235,"depth":290,"text":1236},{"id":1272,"depth":290,"text":1273},{"id":877,"depth":290,"text":878},"2026-05-08","Une feuille de route honnête pour passer de \"j'aimerais faire un jeu\" à un premier prototype jouable, sans abandonner en chemin.",{},{"title":61,"description":1332},"mYQ_wZCFc-nNMm9_WB4erOWj1_w1DdAbKAyuGr8D0yM",{"id":1337,"title":81,"authors":1338,"body":1340,"category":452,"date":1331,"description":1453,"extension":300,"featured":301,"image":302,"meta":1454,"navigation":304,"path":82,"readingTime":305,"seo":1455,"stem":83,"__hash__":1456},"posts\u002F2026-05-tuto-git-bisect.md",[1339],{"name":89},{"type":91,"value":1341,"toc":1449},[1342,1349,1353,1409,1419,1423,1443,1446],[94,1343,1344,1345,1348],{},"Vous avez un bug. Vous savez qu'il y a deux semaines, ça marchait. Et il y a eu\n80 commits depuis. ",[284,1346,1347],{},"git bisect"," divise le problème par deux à chaque étape.",[103,1350,1352],{"id":1351},"la-méthode","La méthode",[1131,1354,1358],{"className":1355,"code":1356,"language":1357,"meta":289,"style":289},"language-bash shiki shiki-themes github-light github-light github-dark","git bisect start\ngit bisect bad                  # le HEAD actuel est cassé\ngit bisect good \u003Ccommit-ok>     # un commit de référence sain\n","bash",[284,1359,1360,1373,1385],{"__ignoreMap":289},[1139,1361,1362,1366,1370],{"class":1141,"line":305},[1139,1363,1365],{"class":1364},"snPdu","git",[1139,1367,1369],{"class":1368},"sIIMD"," bisect",[1139,1371,1372],{"class":1368}," start\n",[1139,1374,1375,1377,1379,1382],{"class":1141,"line":290},[1139,1376,1365],{"class":1364},[1139,1378,1369],{"class":1368},[1139,1380,1381],{"class":1368}," bad",[1139,1383,1384],{"class":1157},"                  # le HEAD actuel est cassé\n",[1139,1386,1387,1389,1391,1394,1397,1400,1403,1406],{"class":1141,"line":647},[1139,1388,1365],{"class":1364},[1139,1390,1369],{"class":1368},[1139,1392,1393],{"class":1368}," good",[1139,1395,1396],{"class":1144}," \u003C",[1139,1398,1399],{"class":1368},"commit-o",[1139,1401,1402],{"class":1148},"k",[1139,1404,1405],{"class":1144},">",[1139,1407,1408],{"class":1157},"     # un commit de référence sain\n",[94,1410,1411,1412,547,1415,1418],{},"Git checkout un commit pile au milieu. Vous testez. ",[284,1413,1414],{},"git bisect good",[284,1416,1417],{},"git bisect bad",". Et on recommence.",[103,1420,1422],{"id":1421},"automatiser","Automatiser",[1131,1424,1426],{"className":1355,"code":1425,"language":1357,"meta":289,"style":289},"git bisect run npm test\n",[284,1427,1428],{"__ignoreMap":289},[1139,1429,1430,1432,1434,1437,1440],{"class":1141,"line":305},[1139,1431,1365],{"class":1364},[1139,1433,1369],{"class":1368},[1139,1435,1436],{"class":1368}," run",[1139,1438,1439],{"class":1368}," npm",[1139,1441,1442],{"class":1368}," test\n",[94,1444,1445],{},"Git exécute le test pour vous à chaque dichotomie. Pour 80 commits, ça donne\n7 itérations max. Magique.",[1319,1447,1448],{},"html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":289,"searchDepth":290,"depth":290,"links":1450},[1451,1452],{"id":1351,"depth":290,"text":1352},{"id":1421,"depth":290,"text":1422},"Un outil méconnu pour traquer la commit fautive sans relire 300 diffs.",{},{"title":81,"description":1453},"Wm54QL-mZbxuU4Znb2PQu6t7B3qevn60xBBZ-HIDWCk",{"id":1458,"title":45,"authors":1459,"body":1461,"category":650,"date":1484,"description":1465,"extension":300,"featured":301,"image":302,"meta":1485,"navigation":304,"path":46,"readingTime":305,"seo":1486,"stem":47,"__hash__":1487},"posts\u002F2026-04-club-prologin.md",[1460],{"name":89},{"type":91,"value":1462,"toc":1481},[1463,1466,1469,1473],[94,1464,1465],{},"Six élèves ont participé cette année. Trois sont allés en demi-finale régionale.\nBravo à eux.",[94,1467,1468],{},"Les sujets cette année portaient principalement sur les graphes et les invariants\nde boucle. Bon entraînement pour le bac et pour la suite.",[103,1470,1472],{"id":1471},"lan-prochain","L'an prochain",[190,1474,1475,1478],{},[114,1476,1477],{},"Reprise des séances dès septembre.",[114,1479,1480],{},"Ouverture aux élèves de première qui sont prêts à s'engager 1h\u002Fsemaine.",{"title":289,"searchDepth":290,"depth":290,"links":1482},[1483],{"id":1471,"depth":290,"text":1472},"2026-04-22",{},{"title":45,"description":1465},"tDcFSKyIuUdFoAEJqDHWxzO9HbNo4atDwIQt-PQ4iGY",{"id":1489,"title":49,"authors":1490,"body":1492,"category":297,"date":1534,"description":1535,"extension":300,"featured":301,"image":302,"meta":1536,"navigation":304,"path":50,"readingTime":305,"seo":1537,"stem":51,"__hash__":1538},"posts\u002F2026-04-edito-ia-cours.md",[1491],{"name":89},{"type":91,"value":1493,"toc":1530},[1494,1497,1501,1512,1516,1527],[94,1495,1496],{},"L'arrivée des assistants IA a redistribué les cartes côté évaluation. Voici où\nj'en suis après une année d'expérimentation.",[103,1498,1500],{"id":1499},"ce-qui-change-vraiment","Ce qui change vraiment",[111,1502,1503,1506,1509],{},[114,1504,1505],{},"Les exercices \"lisez ce code et expliquez-le\" sont morts.",[114,1507,1508],{},"La paire élève + IA est plus productive que l'élève seul.",[114,1510,1511],{},"Les évaluations sur table reprennent du sens.",[103,1513,1515],{"id":1514},"ce-que-je-garde","Ce que je garde",[190,1517,1518,1521,1524],{},[114,1519,1520],{},"Les DS papier pour le sommatif.",[114,1522,1523],{},"Les TP machine pour le formatif — avec IA autorisée et explicitement encadrée.",[114,1525,1526],{},"Les fiches mémo manuscrites pour la mémorisation longue.",[94,1528,1529],{},"Le métier ne disparaît pas. Il change de focus.",{"title":289,"searchDepth":290,"depth":290,"links":1531},[1532,1533],{"id":1499,"depth":290,"text":1500},{"id":1514,"depth":290,"text":1515},"2026-04-15","Cinq points de friction et cinq décisions que j'ai prises cette année.",{},{"title":49,"description":1535},"Qv_Yf2U3XKckNEBl9FGa3VZEnlOg2Ut7xKmiMFIMPYw",{"id":1540,"title":37,"authors":1541,"body":1543,"category":452,"date":1686,"description":1687,"extension":300,"featured":301,"image":302,"meta":1688,"navigation":304,"path":38,"readingTime":305,"seo":1689,"stem":39,"__hash__":1690},"posts\u002F2026-03-tuto-shiki.md",[1542],{"name":89},{"type":91,"value":1544,"toc":1683},[1545,1548,1552,1677,1680],[94,1546,1547],{},"Shiki utilise les mêmes grammaires TextMate que VS Code. La sortie est du HTML\npur, sans dépendance runtime.",[103,1549,1551],{"id":1550},"setup-minimal","Setup minimal",[1131,1553,1557],{"className":1554,"code":1555,"language":1556,"meta":289,"style":289},"language-ts shiki shiki-themes github-light github-light github-dark","import { createHighlighter } from 'shiki'\n\nconst h = await createHighlighter({\n  themes: ['github-light', 'github-dark'],\n  langs: ['ts', 'vue', 'bash']\n})\n\nconst html = h.codeToHtml(source, { lang: 'ts', theme: 'github-light' })\n","ts",[284,1558,1559,1573,1578,1599,1615,1637,1643,1648],{"__ignoreMap":289},[1139,1560,1561,1564,1567,1570],{"class":1141,"line":305},[1139,1562,1563],{"class":1144},"import",[1139,1565,1566],{"class":1148}," { createHighlighter } ",[1139,1568,1569],{"class":1144},"from",[1139,1571,1572],{"class":1368}," 'shiki'\n",[1139,1574,1575],{"class":1141,"line":290},[1139,1576,1577],{"emptyLinePlaceholder":304},"\n",[1139,1579,1580,1583,1587,1590,1593,1596],{"class":1141,"line":647},[1139,1581,1582],{"class":1144},"const",[1139,1584,1586],{"class":1585},"sBjJW"," h",[1139,1588,1589],{"class":1144}," =",[1139,1591,1592],{"class":1144}," await",[1139,1594,1595],{"class":1364}," createHighlighter",[1139,1597,1598],{"class":1148},"({\n",[1139,1600,1601,1604,1607,1609,1612],{"class":1141,"line":1169},[1139,1602,1603],{"class":1148},"  themes: [",[1139,1605,1606],{"class":1368},"'github-light'",[1139,1608,992],{"class":1148},[1139,1610,1611],{"class":1368},"'github-dark'",[1139,1613,1614],{"class":1148},"],\n",[1139,1616,1618,1621,1624,1626,1629,1631,1634],{"class":1141,"line":1617},5,[1139,1619,1620],{"class":1148},"  langs: [",[1139,1622,1623],{"class":1368},"'ts'",[1139,1625,992],{"class":1148},[1139,1627,1628],{"class":1368},"'vue'",[1139,1630,992],{"class":1148},[1139,1632,1633],{"class":1368},"'bash'",[1139,1635,1636],{"class":1148},"]\n",[1139,1638,1640],{"class":1141,"line":1639},6,[1139,1641,1642],{"class":1148},"})\n",[1139,1644,1646],{"class":1141,"line":1645},7,[1139,1647,1577],{"emptyLinePlaceholder":304},[1139,1649,1651,1653,1656,1658,1661,1664,1667,1669,1672,1674],{"class":1141,"line":1650},8,[1139,1652,1582],{"class":1144},[1139,1654,1655],{"class":1585}," html",[1139,1657,1589],{"class":1144},[1139,1659,1660],{"class":1148}," h.",[1139,1662,1663],{"class":1364},"codeToHtml",[1139,1665,1666],{"class":1148},"(source, { lang: ",[1139,1668,1623],{"class":1368},[1139,1670,1671],{"class":1148},", theme: ",[1139,1673,1606],{"class":1368},[1139,1675,1676],{"class":1148}," })\n",[94,1678,1679],{},"C'est tout. À intégrer dans un endpoint Nitro ou un build step.",[1319,1681,1682],{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":289,"searchDepth":290,"depth":290,"links":1684},[1685],{"id":1550,"depth":290,"text":1551},"2026-03-28","Comment je rends des blocs de code en SSR sans charger un seul ko de JS supplémentaire côté client.",{},{"title":37,"description":1687},"IgB6R1swnhMIUOZG614ng006Oy2H92ab3BYdexdcHzA",{"id":1692,"title":41,"authors":1693,"body":1695,"category":958,"date":1735,"description":1736,"extension":300,"featured":301,"image":302,"meta":1737,"navigation":304,"path":42,"readingTime":305,"seo":1738,"stem":43,"__hash__":1739},"posts\u002F2026-03-veille-bun.md",[1694],{"name":89},{"type":91,"value":1696,"toc":1731},[1697,1700,1704,1716,1720,1728],[94,1698,1699],{},"Bun est sorti en 1.0 il y a un an et demi. Quel bilan ?",[103,1701,1703],{"id":1702},"ce-qui-marche","Ce qui marche",[190,1705,1706,1713],{},[114,1707,1708,1709,1712],{},"Les benchmarks pures perfs sont impressionnants — installation ",[284,1710,1711],{},"npm i"," 20× plus rapide.",[114,1714,1715],{},"L'écosystème Vite\u002FNuxt s'est ouvert à Bun comme runtime de dev.",[103,1717,1719],{"id":1718},"ce-qui-coince","Ce qui coince",[190,1721,1722,1725],{},[114,1723,1724],{},"Compatibilité Node imparfaite sur les modules natifs.",[114,1726,1727],{},"Stabilité variable selon les workspaces complexes.",[94,1729,1730],{},"Pour un nouveau projet, ça vaut le coup d'essayer. Pour un projet existant, attendre.",{"title":289,"searchDepth":290,"depth":290,"links":1732},[1733,1734],{"id":1702,"depth":290,"text":1703},{"id":1718,"depth":290,"text":1719},"2026-03-12","Le runtime ambitieux a-t-il tenu ses promesses face à Node 22 LTS ?",{},{"title":41,"description":1736},"_7jL-PT8zRZ7M9uainN6wof6xWF8ztpCJeoFnFZfUO4",{"id":1741,"title":33,"authors":1742,"body":1744,"category":958,"date":2032,"description":2033,"extension":300,"featured":301,"image":302,"meta":2034,"navigation":304,"path":34,"readingTime":305,"seo":2035,"stem":35,"__hash__":2036},"posts\u002F2026-02-voyage-programme-cpu.md",[1743],{"name":89},{"type":91,"value":1745,"toc":2026},[1746,1756,1767,1771,1774,1814,1817,1821,1824,1878,1881,1885,1921,1924,1973,1976,1980,2016,2023],[94,1747,1748,1749,992,1752,1755],{},"Le processeur (",[98,1750,1751],{},"CPU",[925,1753,1754],{},"Central Processing Unit",") est le moteur qui anime\nl'ordinateur. Comprendre son fonctionnement éclaire à la fois la programmation\net l'architecture matérielle. Voici une vue d'ensemble du chemin parcouru par\nun programme avant qu'il ne produise un résultat à l'écran.",[349,1757,1758],{},[94,1759,1760,1761,1766],{},"Cet article s'inspire d'un texte de Mohit publié sur\n",[541,1762,1765],{"href":1763,"rel":1764},"https:\u002F\u002Fchessman7.substack.com\u002Fp\u002Fhow-your-code-runs-the-journey-of",[545],"chessman7.substack.com","\n— traduit, condensé et adapté pour des lycéens.",[103,1768,1770],{"id":1769},"les-éléments-clés-du-cpu","Les éléments-clés du CPU",[94,1772,1773],{},"Un CPU rassemble plusieurs unités spécialisées qui collaborent :",[111,1775,1776,1782,1788,1802,1808],{},[114,1777,1778,1781],{},[98,1779,1780],{},"Unité de contrôle (CU)"," — le « chef d'orchestre » : elle séquence le\nchargement, le décodage et l'exécution des instructions.",[114,1783,1784,1787],{},[98,1785,1786],{},"Unité arithmétique et logique (ALU)"," — réalise les additions, les\nsoustractions, les comparaisons et les opérations logiques (ET, OU, NON).",[114,1789,1790,1793,1794,1797,1798,1801],{},[98,1791,1792],{},"Registres"," — petites mémoires ultra-rapides intégrées au processeur.\nLe ",[98,1795,1796],{},"compteur ordinal"," pointe vers la prochaine instruction, le\n",[98,1799,1800],{},"registre d'instruction"," contient l'instruction en cours.",[114,1803,1804,1807],{},[98,1805,1806],{},"Mémoire"," — RAM, ROM et caches. Le cache fait le pont entre la rapidité\ndu CPU et la lenteur relative de la RAM.",[114,1809,1810,1813],{},[98,1811,1812],{},"Logique combinatoire"," — réseau de portes qui transforme les signaux\nd'entrée en signaux de sortie pour piloter les autres composants.",[322,1815],{"kind":527,"prompt":1816},"Schéma d'architecture CPU : CU, ALU, registres (PC, IR), mémoire cache, RAM, bus de communication",[103,1818,1820],{"id":1819},"le-cycle-fondamental-fetch-decode-execute","Le cycle fondamental : Fetch — Decode — Execute",[94,1822,1823],{},"Le CPU répète sans relâche un cycle en trois (parfois quatre) temps.",[681,1825,1826,1836],{},[684,1827,1828],{},[687,1829,1830,1833],{},[690,1831,1832],{},"Phase",[690,1834,1835],{},"Action",[697,1837,1838,1848,1858,1868],{},[687,1839,1840,1845],{},[702,1841,1842],{},[98,1843,1844],{},"Fetch",[702,1846,1847],{},"Récupérer l'instruction pointée par le compteur ordinal.",[687,1849,1850,1855],{},[702,1851,1852],{},[98,1853,1854],{},"Decode",[702,1856,1857],{},"Interpréter l'instruction (opcode + opérandes).",[687,1859,1860,1865],{},[702,1861,1862],{},[98,1863,1864],{},"Execute",[702,1866,1867],{},"Réaliser l'opération via l'ALU ou un transfert mémoire.",[687,1869,1870,1875],{},[702,1871,1872],{},[98,1873,1874],{},"Write back",[702,1876,1877],{},"Stocker le résultat dans un registre ou en mémoire.",[94,1879,1880],{},"À chaque tour, le compteur ordinal avance — sauf en cas de saut, d'appel de\nfonction ou de retour.",[103,1882,1884],{"id":1883},"exemple-un-simple-programme-c","Exemple : un simple programme C",[1131,1886,1890],{"className":1887,"code":1888,"language":1889,"meta":289,"style":289},"language-c shiki shiki-themes github-light github-light github-dark","#include \u003Cstdio.h>\n\nint main() {\n    printf(\"Hello, World!\\n\");\n    return 0;\n}\n","c",[284,1891,1892,1897,1901,1906,1911,1916],{"__ignoreMap":289},[1139,1893,1894],{"class":1141,"line":305},[1139,1895,1896],{},"#include \u003Cstdio.h>\n",[1139,1898,1899],{"class":1141,"line":290},[1139,1900,1577],{"emptyLinePlaceholder":304},[1139,1902,1903],{"class":1141,"line":647},[1139,1904,1905],{},"int main() {\n",[1139,1907,1908],{"class":1141,"line":1169},[1139,1909,1910],{},"    printf(\"Hello, World!\\n\");\n",[1139,1912,1913],{"class":1141,"line":1617},[1139,1914,1915],{},"    return 0;\n",[1139,1917,1918],{"class":1141,"line":1639},[1139,1919,1920],{},"}\n",[94,1922,1923],{},"Entre la frappe au clavier et l'affichage à l'écran, ce code traverse\nplusieurs étapes invisibles :",[111,1925,1926,1936,1942,1948,1961,1967],{},[114,1927,1928,1931,1932,1935],{},[98,1929,1930],{},"Prétraitement"," — résolution des ",[284,1933,1934],{},"#include",", expansion des macros.",[114,1937,1938,1941],{},[98,1939,1940],{},"Compilation"," — traduction du C vers l'assembleur.",[114,1943,1944,1947],{},[98,1945,1946],{},"Assemblage"," — conversion de l'assembleur en code machine binaire.",[114,1949,1950,1953,1954,1957,1958,412],{},[98,1951,1952],{},"Édition de liens"," — assemblage des morceaux et création de\nl'exécutable (par exemple ",[284,1955,1956],{},"hello.exe"," ou ",[284,1959,1960],{},".\u002Fhello",[114,1962,1963,1966],{},[98,1964,1965],{},"Chargement"," — l'exécutable est copié en RAM.",[114,1968,1969,1972],{},[98,1970,1971],{},"Exécution"," — le CPU démarre le cycle Fetch–Decode–Execute sur les\ninstructions chargées.",[322,1974],{"kind":527,"prompt":1975},"Pipeline de compilation : .c → préprocesseur → compilateur → assembleur → linker → exécutable, puis loader vers la RAM",[103,1977,1979],{"id":1978},"quelques-notions-pour-aller-plus-loin","Quelques notions pour aller plus loin",[190,1981,1982,2004,2010],{},[114,1983,1984,1987,1988,1991,1992,1995,1996,1999,2000,2003],{},[98,1985,1986],{},"Segments mémoire"," : un programme en exécution occupe plusieurs zones —\nle segment ",[98,1989,1990],{},"texte"," (le code), les ",[98,1993,1994],{},"données"," (variables globales), la\n",[98,1997,1998],{},"pile"," (variables locales et appels de fonctions), le ",[98,2001,2002],{},"tas"," (allocation\ndynamique).",[114,2005,2006,2009],{},[98,2007,2008],{},"Pipeline"," : les CPU modernes traitent plusieurs instructions en\nparallèle, comme une chaîne de montage.",[114,2011,2012,2015],{},[98,2013,2014],{},"Cache"," : sans cache L1\u002FL2\u002FL3, votre processeur passerait l'essentiel de\nson temps à attendre la RAM.",[94,2017,2018,2019,2022],{},"Vous retrouverez ces notions de manière plus approfondie dans le chapitre\n",[98,2020,2021],{},"Architectures matérielles et systèmes d'exploitation"," en NSI Première et\nTerminale.",[1319,2024,2025],{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":289,"searchDepth":290,"depth":290,"links":2027},[2028,2029,2030,2031],{"id":1769,"depth":290,"text":1770},{"id":1819,"depth":290,"text":1820},{"id":1883,"depth":290,"text":1884},{"id":1978,"depth":290,"text":1979},"2026-02-04","Du fichier source au \"Hello, World!\" qui s'affiche — comprendre les étapes que franchit un programme avant son exécution.",{},{"title":33,"description":2033},"y3Mgp-Z230pN0VUbFUtT71zYH2CA7ydNp3rbTNuPl18",{"id":2038,"title":25,"authors":2039,"body":2041,"category":958,"date":2170,"description":2171,"extension":300,"featured":301,"image":302,"meta":2172,"navigation":304,"path":26,"readingTime":305,"seo":2173,"stem":27,"__hash__":2174},"posts\u002F2026-01-godot-moteur-jeu.md",[2040],{"name":89},{"type":91,"value":2042,"toc":2165},[2043,2058,2063,2067,2105,2109,2121,2126,2130,2162],[94,2044,2045,2049,2050,2053,2054,2057],{},[541,2046,562],{"href":2047,"rel":2048},"https:\u002F\u002Fgodotengine.org",[545]," est un moteur de jeu ",[98,2051,2052],{},"libre, gratuit et\nopen-source",", qui permet de produire des jeux 2D et 3D pour Windows, macOS,\nLinux, Android, iOS et le navigateur. Sa version ",[98,2055,2056],{},"4"," apporte un nouveau\nmoteur de rendu, un meilleur outillage et une montée en puissance notable.",[349,2059,2060],{},[94,2061,2062],{},"Pourquoi Godot et pas Unity ou Unreal ? Pas de licence à signer, pas de\nroyalties, code source ouvert, exécutable de 100 Mo téléchargeable en deux\nminutes. Idéal pour la salle de classe et pour expérimenter chez soi sans\ncréer de compte commercial.",[103,2064,2066],{"id":2065},"les-fonctionnalités-clés","Les fonctionnalités-clés",[190,2068,2069,2075,2081,2087,2093,2099],{},[114,2070,2071,2074],{},[98,2072,2073],{},"Éditeur intégré"," — tout (scènes, scripts, animations, son) se gère\ndans une seule application.",[114,2076,2077,2080],{},[98,2078,2079],{},"GDScript"," — un langage de script proche de Python, conçu spécifiquement\npour Godot. La courbe d'apprentissage est douce.",[114,2082,2083,2086],{},[98,2084,2085],{},"Support de C# et C++"," — pour celles et ceux qui veulent s'aventurer.",[114,2088,2089,2092],{},[98,2090,2091],{},"2D et 3D natifs"," — le moteur gère les deux sans bidouille.",[114,2094,2095,2098],{},[98,2096,2097],{},"Multi-plateforme"," — un même projet exporte vers desktop, mobile et web.",[114,2100,2101,2104],{},[98,2102,2103],{},"Communauté active"," — des milliers de tutoriels, un forum vivant, un\nDiscord francophone.",[103,2106,2108],{"id":2107},"quelle-version-installer","Quelle version installer ?",[94,2110,466,2111,2114,2115,2120],{},[98,2112,2113],{},"version 4"," est désormais stable et consolidée. Tous les nouveaux\nprojets devraient démarrer dessus. La documentation officielle est en\nanglais à ",[541,2116,2119],{"href":2117,"rel":2118},"https:\u002F\u002Fdocs.godotengine.org\u002Fen\u002Fstable\u002F",[545],"docs.godotengine.org",",\navec un effort progressif de traduction française.",[625,2122,2123],{},[94,2124,2125],{},"Si vous trouvez d'anciens tutoriels en version 3.x, méfiez-vous : la\nsyntaxe GDScript et de nombreux nœuds ont changé. Préférez les ressources\nclairement marquées « Godot 4 ».",[103,2127,2129],{"id":2128},"premiers-pas-suggérés","Premiers pas suggérés",[111,2131,2132,2139,2146,2155],{},[114,2133,2134,2135,490],{},"Téléchargez l'éditeur sur ",[541,2136,2138],{"href":2047,"rel":2137},[545],"godotengine.org",[114,2140,2141,2142,2145],{},"Suivez le tutoriel officiel ",[98,2143,2144],{},"« Your first 2D game »"," — un mini\nshoot-them-up, deux ou trois soirées.",[114,2147,2148,2149,2154],{},"Inspirez-vous du ",[541,2150,2153],{"href":2151,"rel":2152},"https:\u002F\u002Fgodotengine.org\u002Fshowcase\u002F",[545],"showcase officiel","\npour voir ce que la communauté produit.",[114,2156,2157,2158,2161],{},"Rejoignez le ",[98,2159,2160],{},"club jeu vidéo"," du lycée (mercredi après-midi) si vous\nsouhaitez avancer en équipe.",[94,2163,2164],{},"Pour un premier projet personnel, voyez aussi notre article dédié au démarrage\nen jeu vidéo (sortie prévue ce printemps).",{"title":289,"searchDepth":290,"depth":290,"links":2166},[2167,2168,2169],{"id":2065,"depth":290,"text":2066},{"id":2107,"depth":290,"text":2108},{"id":2128,"depth":290,"text":2129},"2026-01-29","Une alternative gratuite et ouverte à Unity\u002FUnreal — adaptée au lycée, au club, et à un premier projet de jeu vidéo.",{},{"title":25,"description":2171},"WqRBFEdPDUSoU8Acs6zNbqEhTuZiUealcqQgYdz0laY",{"id":2176,"title":29,"authors":2177,"body":2179,"category":650,"date":2416,"description":2417,"extension":300,"featured":301,"image":302,"meta":2418,"navigation":304,"path":30,"readingTime":305,"seo":2419,"stem":31,"__hash__":2420},"posts\u002F2026-01-prologin-entrainement.md",[2178],{"name":89},{"type":91,"value":2180,"toc":2408},[2181,2193,2221,2225,2232,2236,2240,2255,2266,2270,2370,2377,2381,2400],[94,2182,2183,2188,2189,2192],{},[541,2184,2187],{"href":2185,"rel":2186},"https:\u002F\u002Fprologin.org",[545],"Prologin"," est le concours national d'informatique\nfrançais, ouvert à toutes les personnes de moins de 21 ans. Au-delà de la\ncompétition elle-même, l'association maintient une ",[98,2190,2191],{},"plateforme\nd'entraînement"," d'une qualité rare, accessible librement.",[140,2194,2196],{"title":2195},"Liens utiles",[190,2197,2198,2205,2213],{},[114,2199,2200,2201],{},"Site officiel : ",[541,2202,2204],{"href":2185,"rel":2203},[545],"prologin.org",[114,2206,2207,2208],{},"À propos du concours : ",[541,2209,2212],{"href":2210,"rel":2211},"https:\u002F\u002Fprologin.org\u002Fabout\u002Fcontest",[545],"prologin.org\u002Fabout\u002Fcontest",[114,2214,2215,2216],{},"Plateforme d'entraînement : ",[541,2217,2220],{"href":2218,"rel":2219},"https:\u002F\u002Fprologin.org\u002Ftrain\u002F",[545],"prologin.org\u002Ftrain",[103,2222,2224],{"id":2223},"comment-cest-gradué","Comment c'est gradué",[94,2226,2227,2228,2231],{},"Chaque problème est étiqueté d'un niveau de difficulté de ",[98,2229,2230],{},"0 à 9",". Vous\npouvez commencer par les niveaux 0–1 pour vous familiariser avec le format,\npuis monter en difficulté à votre rythme. Les sujets des années passées\nrestent disponibles — un fonds considérable.",[103,2233,2235],{"id":2234},"deux-exemples-qualifications-2023","Deux exemples — qualifications 2023",[530,2237,2239],{"id":2238},"choix-complexe-niveau-1","Choix complexe (niveau 1)",[94,2241,2242,2243,2246,2247,2250,2251,2254],{},"Six amis veulent regarder un film ensemble. Chacun écrit le titre d'un film\nqu'il ",[98,2244,2245],{},"adore",", et celui d'un film qu'il ",[98,2248,2249],{},"déteste",". Un film est\nvisionnable s'il figure dans la liste « adore » d'au moins une personne, et\ndans la liste « déteste » d'",[98,2252,2253],{},"aucune",". Combien de films restent\ncandidats ?",[94,2256,2257,2258,2261,2262,2265],{},"L'idée naturelle : convertir les deux listes en ",[98,2259,2260],{},"ensembles",", puis calculer\nla différence ensembliste. C'est un excellent prétexte pour découvrir la\nclasse ",[284,2263,2264],{},"set"," en Python.",[530,2267,2269],{"id":2268},"mise-en-boîte-niveau-2","Mise en boîte (niveau 2)",[94,2271,2272,2273,2319,2320,2369],{},"Six amis veulent ranger leurs restes dans des boîtes. Un aliment de volume\n",[1139,2274,2277,2299],{"className":2275},[2276],"katex",[1139,2278,2281],{"className":2279},[2280],"katex-mathml",[2282,2283,2285],"math",{"xmlns":2284},"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML",[2286,2287,2288,2295],"semantics",{},[2289,2290,2291],"mrow",{},[2292,2293,2294],"mi",{},"v",[2296,2297,2294],"annotation",{"encoding":2298},"application\u002Fx-tex",[1139,2300,2304],{"className":2301,"ariaHidden":2303},[2302],"katex-html","true",[1139,2305,2308,2313],{"className":2306},[2307],"base",[1139,2309],{"className":2310,"style":2312},[2311],"strut","height:0.4306em;",[1139,2314,2294],{"className":2315,"style":2318},[2316,2317],"mord","mathnormal","margin-right:0.0359em;"," rentre dans une boîte de volume ",[1139,2321,2323,2341],{"className":2322},[2276],[1139,2324,2326],{"className":2325},[2280],[2282,2327,2328],{"xmlns":2284},[2286,2329,2330,2338],{},[2289,2331,2332,2336],{},[2333,2334,2335],"mo",{},"≥",[2292,2337,2294],{},[2296,2339,2340],{"encoding":2298},"\\geq v",[1139,2342,2344,2360],{"className":2343,"ariaHidden":2303},[2302],[1139,2345,2347,2351,2355],{"className":2346},[2307],[1139,2348],{"className":2349,"style":2350},[2311],"height:0.7719em;vertical-align:-0.136em;",[1139,2352,2335],{"className":2353},[2354],"mrel",[1139,2356],{"className":2357,"style":2359},[2358],"mspace","margin-right:0.2778em;",[1139,2361,2363,2366],{"className":2362},[2307],[1139,2364],{"className":2365,"style":2312},[2311],[1139,2367,2294],{"className":2368,"style":2318},[2316,2317],". On veut maximiser le nombre\nde restes mis en boîte, à raison d'un aliment par boîte.",[94,2371,2372,2373,2376],{},"Une stratégie ",[98,2374,2375],{},"gloutonne"," suffit ici : trier les deux listes, puis\nparcourir les restes du plus petit au plus grand en leur attribuant la plus\npetite boîte disponible qui les accueille. Une bonne entrée en matière sur\nla notion d'algorithme glouton.",[103,2378,2380],{"id":2379},"pourquoi-vous-y-mettre","Pourquoi vous y mettre",[190,2382,2383,2390,2397],{},[114,2384,2385,2386,2389],{},"Les problèmes Prologin sont ",[98,2387,2388],{},"pédagogiques"," : énoncés clairs, exemples\nriches, validation automatique sans piège syntaxique.",[114,2391,2392,2393,2396],{},"L'entraînement régulier sur ce type de problèmes améliore très\nsignificativement les copies du ",[98,2394,2395],{},"bac NSI"," et la préparation à\nl'enseignement supérieur.",[114,2398,2399],{},"Le club Prologin du lycée se réunit chaque semaine — ouvert à toutes les\npremières et terminales motivées.",[349,2401,2402],{},[94,2403,2404,2405,2407],{},"Inscriptions au club : Pronote ou directement à\n",[284,2406,286],{},". Reprise des séances en septembre.",{"title":289,"searchDepth":290,"depth":290,"links":2409},[2410,2411,2415],{"id":2223,"depth":290,"text":2224},{"id":2234,"depth":290,"text":2235,"children":2412},[2413,2414],{"id":2238,"depth":647,"text":2239},{"id":2268,"depth":647,"text":2269},{"id":2379,"depth":290,"text":2380},"2026-01-15","Le concours national d'informatique des moins de 21 ans propose un fonds d'exercices ouvert à tous, gradué de 0 à 9. Visite guidée.",{},{"title":29,"description":2417},"m3FIQkgCyypKrMdoUJTsqqLDtL39VqT9quTrTkLud38",{"id":2422,"title":21,"authors":2423,"body":2425,"category":650,"date":2516,"description":2517,"extension":300,"featured":301,"image":302,"meta":2518,"navigation":304,"path":22,"readingTime":305,"seo":2519,"stem":23,"__hash__":2520},"posts\u002F2025-11-concours-castor.md",[2424],{"name":89},{"type":91,"value":2426,"toc":2512},[2427,2433,2437,2459,2463,2466,2507],[94,2428,393,2429,2432],{},[98,2430,2431],{},"concours Castor"," est une compétition annuelle organisée en France et\ndans une quarantaine de pays. Pendant 45 minutes, vous résolvez une douzaine\nde défis logiques, algorithmiques ou liés au numérique — sans avoir besoin\nd'écrire la moindre ligne de code.",[103,2434,2436],{"id":2435},"pourquoi-participer","Pourquoi participer",[190,2438,2439,2442,2449,2452],{},[114,2440,2441],{},"Aucun prérequis : les sujets sont conçus pour être accessibles dès la 6ᵉ.",[114,2443,2444,2445,2448],{},"Les exercices abordent ",[98,2446,2447],{},"graphes, algorithmique, codage, structures de\ndonnées, logique combinatoire",", et plus encore.",[114,2450,2451],{},"Vous découvrez l'informatique sous un angle ludique et culturel — utile\npour la SNT comme pour la NSI.",[114,2453,2454,2455,2458],{},"Les meilleurs sont qualifiés pour le ",[98,2456,2457],{},"concours Algoréa",", qui prolonge\nl'expérience sur l'année avec des entraînements réguliers.",[103,2460,2462],{"id":2461},"sentraîner-avec-les-sujets-passés","S'entraîner avec les sujets passés",[94,2464,2465],{},"Castor met à disposition l'ensemble des éditions précédentes ainsi que des\nparcours thématiques. Voici quelques liens utiles pour préparer la session\nou simplement vous amuser.",[137,2467,2468,2475,2481,2488,2494,2501],{},[140,2469,2472],{"icon":2470,"to":2471},"i-heroicons-camera","https:\u002F\u002Fconcours.castor-informatique.fr\u002F?team=SNTin1",[94,2473,2474],{},"Photo numérique — parcours A",[140,2476,2478],{"icon":2470,"to":2477},"https:\u002F\u002Fconcours.castor-informatique.fr\u002F?team=SNTin2",[94,2479,2480],{},"Photo numérique — parcours B",[140,2482,2485],{"icon":2483,"to":2484},"i-heroicons-circle-stack","https:\u002F\u002Fconcours.castor-informatique.fr\u002F?team=SNTds1",[94,2486,2487],{},"Données structurées — parcours A",[140,2489,2491],{"icon":2483,"to":2490},"https:\u002F\u002Fconcours.castor-informatique.fr\u002F?team=SNTds2",[94,2492,2493],{},"Données structurées — parcours B",[140,2495,2498],{"icon":2496,"to":2497},"i-noto-beaver","https:\u002F\u002Fconcours.castor-informatique.fr\u002Findex.php?team=castor2022",[94,2499,2500],{},"Édition 2022",[140,2502,2504],{"icon":2496,"to":2503},"https:\u002F\u002Fconcours.castor-informatique.fr\u002Findex.php?team=castor2021",[94,2505,2506],{},"Édition 2021",[349,2508,2509],{},[94,2510,2511],{},"La participation se fait en classe sur un créneau dédié. Surveillez les\nannonces Pronote en novembre pour le créneau de votre groupe.",{"title":289,"searchDepth":290,"depth":290,"links":2513},[2514,2515],{"id":2435,"depth":290,"text":2436},{"id":2461,"depth":290,"text":2462},"2025-11-12","Un concours ludique pour découvrir les concepts informatiques sans coder. Ouvert à toutes les classes du collège au lycée.",{},{"title":21,"description":2517},"OybbBCFpf9eHO0A8g4OKeo70I0RqrZEMN0duNlBIOTY",{"id":2522,"title":17,"authors":2523,"body":2525,"category":452,"date":2709,"description":2710,"extension":300,"featured":301,"image":302,"meta":2711,"navigation":304,"path":18,"readingTime":305,"seo":2712,"stem":19,"__hash__":2713},"posts\u002F2025-10-excalidraw-schemas.md",[2524],{"name":89},{"type":91,"value":2526,"toc":2703},[2527,2539,2542,2544,2580,2584,2587,2590,2608,2611,2650,2654,2695,2697,2700],[94,2528,2529,2534,2535,2538],{},[541,2530,2533],{"href":2531,"rel":2532},"https:\u002F\u002Fexcalidraw.com",[545],"Excalidraw"," est un outil libre de ",[98,2536,2537],{},"dessin\ncollaboratif"," qui produit des schémas à l'aspect « tracé à la main »,\nparfaits pour expliquer un algorithme, une architecture réseau ou la\nstructure d'un programme. Pas de compte, pas d'installation, ouvert\ndirectement dans le navigateur.",[322,2540],{"kind":324,"prompt":2541},"Capture d'écran d'Excalidraw avec un schéma de pile\u002Ffile dessiné, palette d'outils visible à gauche",[103,2543,2380],{"id":2379},[190,2545,2546,2552,2558,2568,2574],{},[114,2547,2548,2551],{},[98,2549,2550],{},"Aucune barrière"," : ouvrez l'onglet, dessinez, exportez.",[114,2553,2554,2557],{},[98,2555,2556],{},"Bibliothèque communautaire"," : des centaines de symboles pré-dessinés\n(serveurs, ordinateurs, composants logiques, icônes diverses) à importer\nd'un clic.",[114,2559,2560,2563,2564,2567],{},[98,2561,2562],{},"Format standard"," : l'export PNG\u002FSVG fonctionne partout. Le format natif\n",[284,2565,2566],{},".excalidraw"," est du JSON — vous pourrez rééditer plus tard.",[114,2569,2570,2573],{},[98,2571,2572],{},"Collaboration en temps réel"," : un lien suffit pour dessiner à plusieurs.",[114,2575,2576,2579],{},[98,2577,2578],{},"Open-source sous licence MIT"," — vous pouvez héberger votre propre\ninstance si vous le souhaitez.",[103,2581,2583],{"id":2582},"insérer-un-schéma-dans-un-notebook-capytale","Insérer un schéma dans un Notebook Capytale",[94,2585,2586],{},"La méthode standard, valable pour un notebook Basthon ou Capytale :",[94,2588,2589],{},"Dans Excalidraw :",[111,2591,2592,2595,2601],{},[114,2593,2594],{},"Sélectionnez les éléments à exporter.",[114,2596,2597,2598,490],{},"Menu en haut à gauche → ",[98,2599,2600],{},"Exporter l'image",[114,2602,2603,2604,2607],{},"Enregistrez au format ",[98,2605,2606],{},"PNG"," (ou SVG si vous préférez le vectoriel).",[94,2609,2610],{},"Dans le notebook :",[111,2612,2613,2619,2647],{},[114,2614,2615,2616,490],{},"Vérifiez que la cellule est bien en mode ",[98,2617,2618],{},"Markdown",[114,2620,2621,2622],{},"Glissez-déposez le fichier PNG dans la cellule. Le code Markdown se\ngénère tout seul :\n",[1131,2623,2626],{"className":2624,"code":2625,"language":300,"meta":289,"style":289},"language-md shiki shiki-themes github-light github-light github-dark","![mon-schema](mon-schema.png)\n",[284,2627,2628],{"__ignoreMap":289},[1139,2629,2630,2633,2637,2640,2644],{"class":1141,"line":305},[1139,2631,2632],{"class":1148},"![",[1139,2634,2636],{"class":2635},"sulnz","mon-schema",[1139,2638,2639],{"class":1148},"](",[1139,2641,2643],{"class":2642},"sRE2K","mon-schema.png",[1139,2645,2646],{"class":1148},")\n",[114,2648,2649],{},"Exécutez la cellule — le schéma s'affiche.",[103,2651,2653],{"id":2652},"astuces-de-productivité","Astuces de productivité",[190,2655,2656,2666,2676,2682],{},[114,2657,2658,2661,2662,2665],{},[98,2659,2660],{},"Affichage de la grille"," : clic droit dans le canevas → ",[925,2663,2664],{},"Show grid",".\nVos formes s'alignent automatiquement.",[114,2667,2668,2671,2672,2675],{},[98,2669,2670],{},"Bibliothèque"," : icône en haut → ",[925,2673,2674],{},"Browse libraries",". Téléchargez les\npacks qui vous intéressent (informatique, réseau, UML…).",[114,2677,2678,2681],{},[98,2679,2680],{},"SVG copier-coller"," : ouvrez un fichier SVG dans un éditeur de texte,\ncopiez le contenu, collez-le dans Excalidraw. Les icônes vectorielles\napparaissent et restent éditables.",[114,2683,2684,2687,2688,2691,2692,2694],{},[98,2685,2686],{},"Sauvegarde"," : ",[284,2689,2690],{},"Menu → Enregistrer sous…"," produit un fichier\n",[284,2693,2566],{},". Conservez-le précieusement pour rééditer plus tard.",[103,2696,878],{"id":877},[94,2698,2699],{},"Excalidraw illustre concrètement la puissance du logiciel libre : un outil\nsoigné, gratuit, dont le code est public et sur lequel chacun peut\ncontribuer. C'est un bon point d'entrée pour découvrir l'écosystème\nopen-source — voir notre article dédié au logiciel libre.",[1319,2701,2702],{},"html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sulnz, html code.shiki .sulnz{--shiki-light:#032F62;--shiki-light-text-decoration:underline;--shiki-default:#032F62;--shiki-default-text-decoration:underline;--shiki-dark:#DBEDFF;--shiki-dark-text-decoration:underline}html pre.shiki code .sRE2K, html code.shiki .sRE2K{--shiki-light:#24292E;--shiki-light-text-decoration:underline;--shiki-default:#24292E;--shiki-default-text-decoration:underline;--shiki-dark:#E1E4E8;--shiki-dark-text-decoration:underline}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":289,"searchDepth":290,"depth":290,"links":2704},[2705,2706,2707,2708],{"id":2379,"depth":290,"text":2380},{"id":2582,"depth":290,"text":2583},{"id":2652,"depth":290,"text":2653},{"id":877,"depth":290,"text":878},"2025-10-06","L'outil de croquis en ligne qu'on utilise toute l'année pour les algorithmes, les architectures et les graphes. Gratuit, open-source, sans compte.",{},{"title":17,"description":2710},"kO98vk9HyG5RJTjbBY_72m0mpq2VTp0qs6nQs3P57HM",{"id":2715,"title":5,"authors":2716,"body":2718,"category":452,"date":3061,"description":3062,"extension":300,"featured":301,"image":302,"meta":3063,"navigation":304,"path":6,"readingTime":305,"seo":3064,"stem":7,"__hash__":3065},"posts\u002F2025-09-decouvrir-markdown.md",[2717],{"name":89},{"type":91,"value":2719,"toc":3054},[2720,2737,2753,2757,2836,2842,2846,2849,2883,2886,2915,2919,2931,2952,2956,2963,3003,3020,3024,3051],[94,2721,2722,2723,2726,2727,992,2730,992,2733,2736],{},"Le Markdown est un langage de ",[98,2724,2725],{},"balisage léger"," qui permet de mettre en forme\ndu texte avec quelques symboles simples (",[284,2728,2729],{},"*",[284,2731,2732],{},"#",[284,2734,2735],{},"[ ]",", etc.). Vous le\nretrouverez partout : Notebooks Capytale, GitHub, HedgeDoc, Notion, et même\nce blog.",[349,2738,2739],{},[94,2740,2741,2742,2745,2746,1957,2749,2752],{},"Le Markdown est un format ",[98,2743,2744],{},"texte brut",". Vous pouvez sauvegarder votre\ntravail dans un simple fichier ",[284,2747,2748],{},".md",[284,2750,2751],{},".txt"," — il restera lisible dans\ntrente ans, sans logiciel propriétaire.",[103,2754,2756],{"id":2755},"mise-en-forme-courante","Mise en forme courante",[681,2758,2759,2769],{},[684,2760,2761],{},[687,2762,2763,2766],{},[690,2764,2765],{},"Objectif",[690,2767,2768],{},"Code",[697,2770,2771,2787,2802,2816,2826],{},[687,2772,2773,2779],{},[702,2774,2775,2776],{},"Texte en ",[98,2777,2778],{},"gras",[702,2780,2781,1957,2784],{},[284,2782,2783],{},"**gras**",[284,2785,2786],{},"__gras__",[687,2788,2789,2794],{},[702,2790,2775,2791],{},[925,2792,2793],{},"italique",[702,2795,2796,1957,2799],{},[284,2797,2798],{},"*italique*",[284,2800,2801],{},"_italique_",[687,2803,2804,2811],{},[702,2805,2775,2806],{},[925,2807,2808],{},[98,2809,2810],{},"gras et italique",[702,2812,2813],{},[284,2814,2815],{},"***gras et italique***",[687,2817,2818,2821],{},[702,2819,2820],{},"Lien vers un site",[702,2822,2823],{},[284,2824,2825],{},"[libellé](https:\u002F\u002Fnsi.rocks)",[687,2827,2828,2831],{},[702,2829,2830],{},"Image",[702,2832,2833],{},[284,2834,2835],{},"![texte alternatif](url-image.png)",[94,2837,393,2838,2841],{},[98,2839,2840],{},"texte alternatif"," d'une image sert à deux choses : indiquer le contenu\nen cas de lien cassé, et permettre aux lecteurs malvoyants d'accéder à\nl'information via une synthèse vocale. Ne le négligez pas.",[103,2843,2845],{"id":2844},"listes","Listes",[94,2847,2848],{},"Les listes non ordonnées utilisent un tiret. Indentez de deux espaces pour\nimbriquer.",[1131,2850,2852],{"className":2624,"code":2851,"language":300,"meta":289,"style":289},"- item\n  - sous-item\n  - sous-item\n- item\n",[284,2853,2854,2863,2871,2877],{"__ignoreMap":289},[1139,2855,2856,2860],{"class":1141,"line":305},[1139,2857,2859],{"class":2858},"sP4rz","-",[1139,2861,2862],{"class":1148}," item\n",[1139,2864,2865,2868],{"class":1141,"line":290},[1139,2866,2867],{"class":2858},"  -",[1139,2869,2870],{"class":1148}," sous-item\n",[1139,2872,2873,2875],{"class":1141,"line":647},[1139,2874,2867],{"class":2858},[1139,2876,2870],{"class":1148},[1139,2878,2879,2881],{"class":1141,"line":1169},[1139,2880,2859],{"class":2858},[1139,2882,2862],{"class":1148},[94,2884,2885],{},"Les listes ordonnées utilisent des chiffres :",[1131,2887,2889],{"className":2624,"code":2888,"language":300,"meta":289,"style":289},"1. premier point\n2. deuxième point\n3. troisième point\n",[284,2890,2891,2899,2907],{"__ignoreMap":289},[1139,2892,2893,2896],{"class":1141,"line":305},[1139,2894,2895],{"class":2858},"1.",[1139,2897,2898],{"class":1148}," premier point\n",[1139,2900,2901,2904],{"class":1141,"line":290},[1139,2902,2903],{"class":2858},"2.",[1139,2905,2906],{"class":1148}," deuxième point\n",[1139,2908,2909,2912],{"class":1141,"line":647},[1139,2910,2911],{"class":2858},"3.",[1139,2913,2914],{"class":1148}," troisième point\n",[103,2916,2918],{"id":2917},"titres","Titres",[94,2920,2921,2922,2924,2925,2927,2928,412],{},"Le nombre de ",[284,2923,2732],{}," détermine le niveau du titre — du plus important (",[284,2926,2732],{},") au\nplus discret (",[284,2929,2930],{},"######",[1131,2932,2934],{"className":2624,"code":2933,"language":300,"meta":289,"style":289},"# Titre principal\n## Sous-titre\n### Niveau 3\n",[284,2935,2936,2942,2947],{"__ignoreMap":289},[1139,2937,2938],{"class":1141,"line":305},[1139,2939,2941],{"class":2940},"syb_3","# Titre principal\n",[1139,2943,2944],{"class":1141,"line":290},[1139,2945,2946],{"class":2940},"## Sous-titre\n",[1139,2948,2949],{"class":1141,"line":647},[1139,2950,2951],{"class":2940},"### Niveau 3\n",[103,2953,2955],{"id":2954},"insérer-du-code","Insérer du code",[94,2957,2958,2959,2962],{},"Pour un ",[98,2960,2961],{},"bloc de code",", encadrez-le par trois backticks. Précisez le\nlangage juste après le premier groupe pour bénéficier de la coloration\nsyntaxique.",[1131,2964,2966],{"className":2624,"code":2965,"language":300,"meta":289,"style":289},"```py\ndef addition(a, b):\n    return a + b\n```\n",[284,2967,2968,2973,2984,2998],{"__ignoreMap":289},[1139,2969,2970],{"class":1141,"line":305},[1139,2971,2972],{"class":1148},"```py\n",[1139,2974,2975,2978,2981],{"class":1141,"line":290},[1139,2976,2977],{"class":1144},"def",[1139,2979,2980],{"class":1364}," addition",[1139,2982,2983],{"class":1148},"(a, b):\n",[1139,2985,2986,2989,2992,2995],{"class":1141,"line":647},[1139,2987,2988],{"class":1144},"    return",[1139,2990,2991],{"class":1148}," a ",[1139,2993,2994],{"class":1144},"+",[1139,2996,2997],{"class":1148}," b\n",[1139,2999,3000],{"class":1141,"line":1169},[1139,3001,3002],{"class":1148},"```\n",[437,3004,3005],{},[94,3006,3007,3008,3011,3012,3015,3016,3019],{},"Sur un clavier AZERTY classique, le backtick (",[284,3009,3010],{},"`",") s'obtient avec\n",[284,3013,3014],{},"AltGr + 7"," sous Windows, et ",[284,3017,3018],{},"Option + è"," sur macOS.",[103,3021,3023],{"id":3022},"aller-plus-loin","Aller plus loin",[94,3025,3026,3027,3030,3031,3033,3034,3037,3038,3030,3041,3033,3044,3030,3047,3050],{},"Le Markdown reconnaît aussi les ",[98,3028,3029],{},"citations"," (",[284,3032,1405],{},"), les ",[98,3035,3036],{},"tableaux",", les\n",[98,3039,3040],{},"séparateurs",[284,3042,3043],{},"---",[98,3045,3046],{},"cases à cocher",[284,3048,3049],{},"- [ ]","). Apprenez la base,\nle reste viendra naturellement à l'usage.",[1319,3052,3053],{},"html pre.shiki code .sP4rz, html code.shiki .sP4rz{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .syb_3, html code.shiki .syb_3{--shiki-light:#005CC5;--shiki-light-font-weight:bold;--shiki-default:#005CC5;--shiki-default-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold}html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":289,"searchDepth":290,"depth":290,"links":3055},[3056,3057,3058,3059,3060],{"id":2755,"depth":290,"text":2756},{"id":2844,"depth":290,"text":2845},{"id":2917,"depth":290,"text":2918},{"id":2954,"depth":290,"text":2955},{"id":3022,"depth":290,"text":3023},"2025-09-22","Un format texte universel pour rédiger des notes lisibles, exportables et durables. L'essentiel en quelques minutes.",{},{"title":5,"description":3062},"Ng9B4WU9aVIpBj9L3ViXZxWc0CntczZlkIAwdxFGDcQ",{"id":3067,"title":13,"authors":3068,"body":3070,"category":452,"date":3151,"description":3152,"extension":300,"featured":301,"image":302,"meta":3153,"navigation":304,"path":14,"readingTime":305,"seo":3154,"stem":15,"__hash__":3155},"posts\u002F2025-09-utiliser-ent-capytale.md",[3069],{"name":89},{"type":91,"value":3071,"toc":3147},[3072,3079,3083,3090,3112,3120,3124,3127,3144],[94,3073,3074,3075,3078],{},"Tout au long de l'année, vous utiliserez ",[98,3076,3077],{},"Capytale",", accessible depuis l'ENT\nde la région. Quelques étapes à connaître pour ne pas perdre de temps en début\nde séance.",[103,3080,3082],{"id":3081},"activer-votre-compte-ent","Activer votre compte ENT",[94,3084,3085,3086,3089],{},"À réaliser ",[98,3087,3088],{},"dans l'ordre",", une seule fois :",[111,3091,3092,3100,3103,3106,3109],{},[114,3093,3094,3095,490],{},"Rendez-vous sur ",[541,3096,3099],{"href":3097,"rel":3098},"https:\u002F\u002Fenthdf.fr",[545],"enthdf.fr",[114,3101,3102],{},"Sélectionnez « Élève » puis « Lycée ».",[114,3104,3105],{},"Saisissez l'identifiant figurant sur la feuille distribuée en classe.",[114,3107,3108],{},"Pour le mot de passe : votre code d'activation s'il vous a été remis,\nsinon le mot de passe temporaire communiqué par votre enseignant.",[114,3110,3111],{},"Renseignez ensuite une adresse mail dans votre profil — vous serez\nautonome pour les futures réinitialisations.",[625,3113,3114],{},[94,3115,3116,3117,3119],{},"En cas de souci, contactez-moi via Pronote ou à ",[284,3118,286],{},". Précisez\nun mot de passe temporaire à l'envoi, et changez-le dès la première connexion.",[103,3121,3123],{"id":3122},"rejoindre-une-activité-capytale","Rejoindre une activité Capytale",[94,3125,3126],{},"Une fois connecté à l'ENT :",[111,3128,3129,3135,3141],{},[114,3130,3131,3132,3134],{},"Ouvrez l'application ",[98,3133,3077],{}," depuis le bureau de l'ENT.",[114,3136,3137,3138,490],{},"Saisissez le code d'activité (4 caractères) communiqué en classe dans le\nchamp en haut à gauche, puis validez avec ",[98,3139,3140],{},"Go",[114,3142,3143],{},"Votre activité s'ouvre — Notebook Python, console, éditeur, selon le cas.",[94,3145,3146],{},"Le travail est sauvegardé automatiquement. Pensez tout de même à fermer\nproprement l'onglet à la fin de la séance.",{"title":289,"searchDepth":290,"depth":290,"links":3148},[3149,3150],{"id":3081,"depth":290,"text":3082},{"id":3122,"depth":290,"text":3123},"2025-09-08","Activer son compte ENT, ouvrir Capytale, rejoindre une activité — la méthode pas à pas pour bien démarrer l'année.",{},{"title":13,"description":3152},"sSDCF7CUdfSZYk6XdKAl7NuR1bRQSFxNsoFsMB5y9M4",{"id":3157,"title":9,"authors":302,"body":3158,"category":302,"date":302,"description":3401,"extension":300,"featured":301,"image":302,"meta":3402,"navigation":304,"path":10,"readingTime":305,"seo":3403,"stem":11,"__hash__":3409},"posts\u002F2025-09-logiciel-libre-open-source.md",{"type":91,"value":3159,"toc":3394},[3160,3163,3167,3178,3189,3195,3199,3263,3267,3326,3338,3342,3349,3352,3370,3375,3379],[94,3161,3162],{},"Vous avez sans doute croisé les expressions « logiciel libre » et\n« open-source ». Elles désignent des réalités proches mais distinctes — et\nqui structurent une part importante du numérique que nous utilisons au\nquotidien.",[103,3164,3166],{"id":3165},"logiciel-libre-open-source-quelle-différence","Logiciel libre, open-source : quelle différence",[94,3168,3169,3170,3173,3174,3177],{},"Un ",[98,3171,3172],{},"logiciel libre"," est un programme dont l'utilisation, l'étude, la\nmodification et la redistribution sont autorisées sans restriction. Cette\ndéfinition est portée historiquement par la ",[98,3175,3176],{},"Free Software Foundation"," et\nrevendique une dimension éthique : la liberté est première.",[94,3179,3180,3181,3184,3185,3188],{},"L'",[98,3182,3183],{},"open-source"," désigne un modèle de développement où le code source est\npublic. La définition portée par l'",[98,3186,3187],{},"Open Source Initiative"," insiste\ndavantage sur les bénéfices techniques et économiques.",[94,3190,3191,3192,490],{},"En pratique, la quasi-totalité des logiciels libres sont open-source, et\nréciproquement. Les deux mouvements se rejoignent sur un point essentiel :\n",[98,3193,3194],{},"le code est lisible, modifiable, partageable",[103,3196,3198],{"id":3197},"pourquoi-ça-compte","Pourquoi ça compte",[681,3200,3201,3211],{},[684,3202,3203],{},[687,3204,3205,3208],{},[690,3206,3207],{},"Atout",[690,3209,3210],{},"Ce que ça change pour vous",[697,3212,3213,3223,3233,3243,3253],{},[687,3214,3215,3220],{},[702,3216,3217],{},[98,3218,3219],{},"Coût",[702,3221,3222],{},"La plupart des logiciels libres sont gratuits, sans abonnement ni licence à renouveler.",[687,3224,3225,3230],{},[702,3226,3227],{},[98,3228,3229],{},"Personnalisation",[702,3231,3232],{},"Le code étant disponible, des forks (variantes) répondent souvent à des besoins spécifiques.",[687,3234,3235,3240],{},[702,3236,3237],{},[98,3238,3239],{},"Communauté",[702,3241,3242],{},"Forums, dépôts publics, contributeurs — vous obtenez de l'aide rapidement.",[687,3244,3245,3250],{},[702,3246,3247],{},[98,3248,3249],{},"Transparence",[702,3251,3252],{},"Vous (ou un expert tiers) pouvez vérifier l'absence de fonctions cachées.",[687,3254,3255,3260],{},[702,3256,3257],{},[98,3258,3259],{},"Pérennité",[702,3261,3262],{},"Un projet abandonné par son créateur peut être repris par d'autres.",[103,3264,3266],{"id":3265},"quelques-exemples-qui-vous-parleront","Quelques exemples qui vous parleront",[190,3268,3269,3278,3287,3295,3301,3309,3318],{},[114,3270,3271,3272,3277],{},"Le système d'exploitation ",[541,3273,3276],{"href":3274,"rel":3275},"https:\u002F\u002Ffr.wikipedia.org\u002Fwiki\u002FLinux",[545],"Linux",",\nqui équipe la grande majorité des serveurs du monde.",[114,3279,3280,3281,3286],{},"L'éditeur Python ",[541,3282,3285],{"href":3283,"rel":3284},"https:\u002F\u002Fthonny.org",[545],"Thonny",", conçu pour l'apprentissage.",[114,3288,3289,3290,490],{},"Le navigateur ",[541,3291,3294],{"href":3292,"rel":3293},"https:\u002F\u002Fwww.mozilla.org\u002Ffr\u002Ffirefox\u002Fnew\u002F",[545],"Firefox",[114,3296,3297,3298,490],{},"Le moteur de jeu ",[541,3299,562],{"href":2047,"rel":3300},[545],[114,3302,3303,3304,490],{},"La suite bureautique ",[541,3305,3308],{"href":3306,"rel":3307},"https:\u002F\u002Ffr.libreoffice.org\u002F",[545],"LibreOffice",[114,3310,3311,3312,3317],{},"Le framework ",[541,3313,3316],{"href":3314,"rel":3315},"https:\u002F\u002Fnuxt.com",[545],"Nuxt",", avec lequel ce site est construit.",[114,3319,3320,3321,490],{},"Le logiciel de CAO ",[541,3322,3325],{"href":3323,"rel":3324},"https:\u002F\u002Ffreecad.org",[545],"FreeCAD",[140,3327,3329],{"title":3328},"Framasoft, un point d'entrée",[94,3330,3331,3332,3337],{},"L'association ",[541,3333,3336],{"href":3334,"rel":3335},"https:\u002F\u002Fframasoft.org",[545],"Framasoft"," propose des alternatives\nlibres à de nombreux services en ligne propriétaires (mail, sondages,\nvisioconférence, écriture collaborative). Une porte d'entrée idéale.",[103,3339,3341],{"id":3340},"comment-lexplorer","Comment l'explorer",[94,3343,3344,3345,3348],{},"Le meilleur point de départ consiste tout simplement à ",[98,3346,3347],{},"utiliser"," des\nlogiciels libres au quotidien — Firefox, LibreOffice, Thonny, VS Codium…\nQuand vous maîtrisez un outil, regarder son code source devient bien plus\naccessible.",[94,3350,3351],{},"Pour la programmation Python, deux explorations utiles :",[190,3353,3354,3362],{},[114,3355,3356,3361],{},[541,3357,3360],{"href":3358,"rel":3359},"https:\u002F\u002Fgithub.com\u002Fthonny\u002Fthonny",[545],"github.com\u002Fthonny\u002Fthonny"," — Thonny\nest lui-même écrit en Python. Lisez-en quelques modules pour voir comment\nun vrai logiciel s'organise.",[114,3363,3364,3369],{},[541,3365,3368],{"href":3366,"rel":3367},"https:\u002F\u002Fgithub.com\u002FTheAlgorithms\u002FPython",[545],"github.com\u002FTheAlgorithms\u002FPython","\n— un répertoire collaboratif de centaines d'algorithmes classiques, avec\ndes implémentations lisibles et commentées.",[625,3371,3372],{},[94,3373,3374],{},"Ne vous attendez pas à lire un code source de bout en bout comme un livre.\nChoisissez une fonction qui vous intrigue, suivez le fil. La curiosité\nguide ; la patience consolide.",[103,3376,3378],{"id":3377},"en-résumé","En résumé",[190,3380,3381,3384,3391],{},[114,3382,3383],{},"Le logiciel libre n'est ni parfait ni magique : certains projets sont\nabandonnés, d'autres sont mal maintenus. C'est normal.",[114,3385,3386,3387,3390],{},"Mais l'écosystème dans son ensemble est d'une ",[98,3388,3389],{},"richesse considérable",",\net il a façonné une grande partie d'Internet.",[114,3392,3393],{},"En tant qu'élève de NSI ou de SNT, vous gagnerez beaucoup à fréquenter\nce monde — par curiosité d'abord, par pratique ensuite.",{"title":289,"searchDepth":290,"depth":290,"links":3395},[3396,3397,3398,3399,3400],{"id":3165,"depth":290,"text":3166},{"id":3197,"depth":290,"text":3198},{"id":3265,"depth":290,"text":3266},{"id":3340,"depth":290,"text":3341},{"id":3377,"depth":290,"text":3378},"[object Object]",{},{"title":9,"description":3404},{"Libre, gratuit, open-source":3405,"date":3406,"category":297,"authors":3407},"ce que recouvrent ces mots, pourquoi ils comptent, et comment vous pouvez explorer cet écosystème sans complexe.","2025-09-30",[3408],{"name":89},"D1R9H35apPwojOAJfjWIKz4ouf6nsUHxG2EG4HmhAzw",{"id":3411,"title":53,"authors":302,"body":3412,"category":302,"date":302,"description":3401,"extension":300,"featured":301,"image":302,"meta":4300,"navigation":304,"path":54,"readingTime":305,"seo":4301,"stem":55,"__hash__":4307},"posts\u002F2026-04-semaine-langues-nlp.md",{"type":91,"value":3413,"toc":4290},[3414,3421,3425,3451,3455,3458,3539,3555,3564,3582,3586,3660,3664,3671,3746,3750,3771,3836,3840,4051,4055,4275,4277,4287],[94,3415,3416,3417,3420],{},"À l'occasion de la ",[98,3418,3419],{},"Semaine des langues",", nous avons exploré comment les\nordinateurs « lisent » le langage humain. Voici le déroulé de la séance,\npour celles et ceux qui veulent rejouer les expériences à la maison.",[103,3422,3424],{"id":3423},"modules-python-utilisés","Modules Python utilisés",[190,3426,3427,3433,3439,3445],{},[114,3428,3429,3432],{},[284,3430,3431],{},"spacy"," — traitement du langage naturel (tokenisation, lemmatisation).",[114,3434,3435,3438],{},[284,3436,3437],{},"deep-translator"," — traduction via plusieurs services en ligne.",[114,3440,3441,3444],{},[284,3442,3443],{},"wordcloud"," — génération de nuages de mots.",[114,3446,3447,3450],{},[284,3448,3449],{},"matplotlib"," — affichage du nuage.",[103,3452,3454],{"id":3453},"comparer-des-chaînes-un-mot-de-passe-trop-simple","Comparer des chaînes : un mot de passe trop simple",[94,3456,3457],{},"L'opération la plus élémentaire sur des chaînes consiste à les comparer.",[1131,3459,3463],{"className":3460,"code":3461,"language":3462,"meta":289,"style":289},"language-py shiki shiki-themes github-light github-light github-dark","mot_passe = \"chateau\"\nreponse = input(\"Quel est le mot de passe ? \")\nif reponse == mot_passe:\n    print(\"Vous pouvez accéder aux documents secrets.\")\nelse:\n    print(\"Mot de passe incorrect.\")\n","py",[284,3464,3465,3476,3494,3508,3520,3528],{"__ignoreMap":289},[1139,3466,3467,3470,3473],{"class":1141,"line":305},[1139,3468,3469],{"class":1148},"mot_passe ",[1139,3471,3472],{"class":1144},"=",[1139,3474,3475],{"class":1368}," \"chateau\"\n",[1139,3477,3478,3481,3483,3486,3489,3492],{"class":1141,"line":290},[1139,3479,3480],{"class":1148},"reponse ",[1139,3482,3472],{"class":1144},[1139,3484,3485],{"class":1585}," input",[1139,3487,3488],{"class":1148},"(",[1139,3490,3491],{"class":1368},"\"Quel est le mot de passe ? \"",[1139,3493,2646],{"class":1148},[1139,3495,3496,3499,3502,3505],{"class":1141,"line":647},[1139,3497,3498],{"class":1144},"if",[1139,3500,3501],{"class":1148}," reponse ",[1139,3503,3504],{"class":1144},"==",[1139,3506,3507],{"class":1148}," mot_passe:\n",[1139,3509,3510,3513,3515,3518],{"class":1141,"line":1169},[1139,3511,3512],{"class":1585},"    print",[1139,3514,3488],{"class":1148},[1139,3516,3517],{"class":1368},"\"Vous pouvez accéder aux documents secrets.\"",[1139,3519,2646],{"class":1148},[1139,3521,3522,3525],{"class":1141,"line":1617},[1139,3523,3524],{"class":1144},"else",[1139,3526,3527],{"class":1148},":\n",[1139,3529,3530,3532,3534,3537],{"class":1141,"line":1639},[1139,3531,3512],{"class":1585},[1139,3533,3488],{"class":1148},[1139,3535,3536],{"class":1368},"\"Mot de passe incorrect.\"",[1139,3538,2646],{"class":1148},[625,3540,3541],{},[94,3542,3543,3544,992,3547,3550,3551,3554],{},"Quelles sont les limites de cette méthode ? Essayez ",[284,3545,3546],{},"\"Chateau\"",[284,3548,3549],{},"\" chateau\"",",\n",[284,3552,3553],{},"\"chateau \"",". Discutez : faut-il être tolérant ? À quel prix ?",[94,3556,3557,3558,3563],{},"Pour aller plus loin, le projet ",[541,3559,3562],{"href":3560,"rel":3561},"https:\u002F\u002Fgandalf.lakera.ai\u002F",[545],"Gandalf"," propose\nun chatbot qu'il faut convaincre de révéler un mot de passe — une excellente\nintroduction aux failles des modèles de langage.",[94,3565,3566,3567,3572,3573,3030,3576,3581],{},"Le site ",[541,3568,3571],{"href":3569,"rel":3570},"https:\u002F\u002Fneal.fun\u002Fpassword-game\u002F",[545],"The Password Game"," ludifie le\nchoix d'un mot de passe en empilant des règles absurdes. Sous le capot, ces\nrègles s'appuient sur des ",[98,3574,3575],{},"expressions régulières",[541,3577,3580],{"href":3578,"rel":3579},"https:\u002F\u002Fregex101.com",[545],"regex101.com","\npermet de les tester).",[103,3583,3585],{"id":3584},"traduire-un-texte-en-quelques-lignes","Traduire un texte en quelques lignes",[1131,3587,3589],{"className":3460,"code":3588,"language":3462,"meta":289,"style":289},"from deep_translator import GoogleTranslator\n\ntexte = \"La Tour Eiffel, située sur le Champ de Mars à Paris, est l'une des structures les plus célèbres du monde.\"\n\ntraduction = GoogleTranslator(source='auto', target='en').translate(texte)\nprint(traduction)\n",[284,3590,3591,3603,3607,3617,3621,3652],{"__ignoreMap":289},[1139,3592,3593,3595,3598,3600],{"class":1141,"line":305},[1139,3594,1569],{"class":1144},[1139,3596,3597],{"class":1148}," deep_translator ",[1139,3599,1563],{"class":1144},[1139,3601,3602],{"class":1148}," GoogleTranslator\n",[1139,3604,3605],{"class":1141,"line":290},[1139,3606,1577],{"emptyLinePlaceholder":304},[1139,3608,3609,3612,3614],{"class":1141,"line":647},[1139,3610,3611],{"class":1148},"texte ",[1139,3613,3472],{"class":1144},[1139,3615,3616],{"class":1368}," \"La Tour Eiffel, située sur le Champ de Mars à Paris, est l'une des structures les plus célèbres du monde.\"\n",[1139,3618,3619],{"class":1141,"line":1169},[1139,3620,1577],{"emptyLinePlaceholder":304},[1139,3622,3623,3626,3628,3631,3634,3636,3639,3641,3644,3646,3649],{"class":1141,"line":1617},[1139,3624,3625],{"class":1148},"traduction ",[1139,3627,3472],{"class":1144},[1139,3629,3630],{"class":1148}," GoogleTranslator(",[1139,3632,3633],{"class":2858},"source",[1139,3635,3472],{"class":1144},[1139,3637,3638],{"class":1368},"'auto'",[1139,3640,992],{"class":1148},[1139,3642,3643],{"class":2858},"target",[1139,3645,3472],{"class":1144},[1139,3647,3648],{"class":1368},"'en'",[1139,3650,3651],{"class":1148},").translate(texte)\n",[1139,3653,3654,3657],{"class":1141,"line":1639},[1139,3655,3656],{"class":1585},"print",[1139,3658,3659],{"class":1148},"(traduction)\n",[103,3661,3663],{"id":3662},"découper-un-texte-la-tokenisation","Découper un texte : la tokenisation",[94,3665,3666,3667,3670],{},"Avant tout traitement, on découpe le texte en unités appelées ",[98,3668,3669],{},"tokens",".\nUn token est généralement un mot, parfois un signe de ponctuation, plus\nrarement une expression complète.",[1131,3672,3674],{"className":3460,"code":3673,"language":3462,"meta":289,"style":289},"import spacy\n\nnlp = spacy.load(\"fr_core_news_sm\")\ndoc = nlp(\"Apple a annoncé le nouvel iPhone à San Francisco.\")\ntokens = [token.text for token in doc]\nprint(tokens)\n",[284,3675,3676,3683,3687,3702,3717,3739],{"__ignoreMap":289},[1139,3677,3678,3680],{"class":1141,"line":305},[1139,3679,1563],{"class":1144},[1139,3681,3682],{"class":1148}," spacy\n",[1139,3684,3685],{"class":1141,"line":290},[1139,3686,1577],{"emptyLinePlaceholder":304},[1139,3688,3689,3692,3694,3697,3700],{"class":1141,"line":647},[1139,3690,3691],{"class":1148},"nlp ",[1139,3693,3472],{"class":1144},[1139,3695,3696],{"class":1148}," spacy.load(",[1139,3698,3699],{"class":1368},"\"fr_core_news_sm\"",[1139,3701,2646],{"class":1148},[1139,3703,3704,3707,3709,3712,3715],{"class":1141,"line":1169},[1139,3705,3706],{"class":1148},"doc ",[1139,3708,3472],{"class":1144},[1139,3710,3711],{"class":1148}," nlp(",[1139,3713,3714],{"class":1368},"\"Apple a annoncé le nouvel iPhone à San Francisco.\"",[1139,3716,2646],{"class":1148},[1139,3718,3719,3722,3724,3727,3730,3733,3736],{"class":1141,"line":1617},[1139,3720,3721],{"class":1148},"tokens ",[1139,3723,3472],{"class":1144},[1139,3725,3726],{"class":1148}," [token.text ",[1139,3728,3729],{"class":1144},"for",[1139,3731,3732],{"class":1148}," token ",[1139,3734,3735],{"class":1144},"in",[1139,3737,3738],{"class":1148}," doc]\n",[1139,3740,3741,3743],{"class":1141,"line":1639},[1139,3742,3656],{"class":1585},[1139,3744,3745],{"class":1148},"(tokens)\n",[103,3747,3749],{"id":3748},"réduire-un-mot-à-sa-forme-canonique-la-lemmatisation","Réduire un mot à sa forme canonique : la lemmatisation",[94,3751,3752,3753,992,3756,3550,3759,3762,3763,3766,3767,3770],{},"En français, un même mot prend de nombreuses formes : ",[925,3754,3755],{},"mange",[925,3757,3758],{},"mangeait",[925,3760,3761],{},"mangeront","… Le ",[98,3764,3765],{},"lemme"," est la forme « de référence » (ici : ",[925,3768,3769],{},"manger",").\nLes moteurs de recherche s'appuient sur les lemmes pour retrouver tous les\ndocuments pertinents quelle que soit la flexion.",[1131,3772,3774],{"className":3460,"code":3773,"language":3462,"meta":289,"style":289},"import spacy\n\nnlp = spacy.load(\"fr_core_news_sm\")\ndoc = nlp(\"Les enfants jouaient à la balle dans le parc.\")\nlemmes = [token.lemma_ for token in doc]\nprint(lemmes)\n",[284,3775,3776,3782,3786,3798,3811,3829],{"__ignoreMap":289},[1139,3777,3778,3780],{"class":1141,"line":305},[1139,3779,1563],{"class":1144},[1139,3781,3682],{"class":1148},[1139,3783,3784],{"class":1141,"line":290},[1139,3785,1577],{"emptyLinePlaceholder":304},[1139,3787,3788,3790,3792,3794,3796],{"class":1141,"line":647},[1139,3789,3691],{"class":1148},[1139,3791,3472],{"class":1144},[1139,3793,3696],{"class":1148},[1139,3795,3699],{"class":1368},[1139,3797,2646],{"class":1148},[1139,3799,3800,3802,3804,3806,3809],{"class":1141,"line":1169},[1139,3801,3706],{"class":1148},[1139,3803,3472],{"class":1144},[1139,3805,3711],{"class":1148},[1139,3807,3808],{"class":1368},"\"Les enfants jouaient à la balle dans le parc.\"",[1139,3810,2646],{"class":1148},[1139,3812,3813,3816,3818,3821,3823,3825,3827],{"class":1141,"line":1617},[1139,3814,3815],{"class":1148},"lemmes ",[1139,3817,3472],{"class":1144},[1139,3819,3820],{"class":1148}," [token.lemma_ ",[1139,3822,3729],{"class":1144},[1139,3824,3732],{"class":1148},[1139,3826,3735],{"class":1144},[1139,3828,3738],{"class":1148},[1139,3830,3831,3833],{"class":1141,"line":1639},[1139,3832,3656],{"class":1585},[1139,3834,3835],{"class":1148},"(lemmes)\n",[103,3837,3839],{"id":3838},"mini-moteur-de-recherche-par-lemmes","Mini moteur de recherche par lemmes",[1131,3841,3843],{"className":3460,"code":3842,"language":3462,"meta":289,"style":289},"import spacy\n\nnlp = spacy.load(\"fr_core_news_sm\")\n\ndocuments = [\n    \"La chatte mange des croquettes.\",\n    \"Elle aime marcher dans le parc.\",\n    \"Les enfants jouaient à la balle.\",\n    \"J'aime lire des livres sur la nature.\"\n]\n\ndef lemmatiser(texte: str) -> str:\n    return ' '.join(token.lemma_ for token in nlp(texte))\n\nlemm_docs = [lemmatiser(d) for d in documents]\nrequete = lemmatiser(input(\"Entrez votre terme de recherche : \"))\n\nfor original, lemm in zip(documents, lemm_docs):\n    if requete in lemm:\n        print(original)\n",[284,3844,3845,3851,3855,3867,3871,3881,3888,3895,3902,3908,3913,3918,3939,3959,3964,3985,4007,4012,4028,4042],{"__ignoreMap":289},[1139,3846,3847,3849],{"class":1141,"line":305},[1139,3848,1563],{"class":1144},[1139,3850,3682],{"class":1148},[1139,3852,3853],{"class":1141,"line":290},[1139,3854,1577],{"emptyLinePlaceholder":304},[1139,3856,3857,3859,3861,3863,3865],{"class":1141,"line":647},[1139,3858,3691],{"class":1148},[1139,3860,3472],{"class":1144},[1139,3862,3696],{"class":1148},[1139,3864,3699],{"class":1368},[1139,3866,2646],{"class":1148},[1139,3868,3869],{"class":1141,"line":1169},[1139,3870,1577],{"emptyLinePlaceholder":304},[1139,3872,3873,3876,3878],{"class":1141,"line":1617},[1139,3874,3875],{"class":1148},"documents ",[1139,3877,3472],{"class":1144},[1139,3879,3880],{"class":1148}," [\n",[1139,3882,3883,3886],{"class":1141,"line":1639},[1139,3884,3885],{"class":1368},"    \"La chatte mange des croquettes.\"",[1139,3887,3550],{"class":1148},[1139,3889,3890,3893],{"class":1141,"line":1645},[1139,3891,3892],{"class":1368},"    \"Elle aime marcher dans le parc.\"",[1139,3894,3550],{"class":1148},[1139,3896,3897,3900],{"class":1141,"line":1650},[1139,3898,3899],{"class":1368},"    \"Les enfants jouaient à la balle.\"",[1139,3901,3550],{"class":1148},[1139,3903,3905],{"class":1141,"line":3904},9,[1139,3906,3907],{"class":1368},"    \"J'aime lire des livres sur la nature.\"\n",[1139,3909,3911],{"class":1141,"line":3910},10,[1139,3912,1636],{"class":1148},[1139,3914,3916],{"class":1141,"line":3915},11,[1139,3917,1577],{"emptyLinePlaceholder":304},[1139,3919,3921,3923,3926,3929,3932,3935,3937],{"class":1141,"line":3920},12,[1139,3922,2977],{"class":1144},[1139,3924,3925],{"class":1364}," lemmatiser",[1139,3927,3928],{"class":1148},"(texte: ",[1139,3930,3931],{"class":1585},"str",[1139,3933,3934],{"class":1148},") -> ",[1139,3936,3931],{"class":1585},[1139,3938,3527],{"class":1148},[1139,3940,3942,3944,3947,3950,3952,3954,3956],{"class":1141,"line":3941},13,[1139,3943,2988],{"class":1144},[1139,3945,3946],{"class":1368}," ' '",[1139,3948,3949],{"class":1148},".join(token.lemma_ ",[1139,3951,3729],{"class":1144},[1139,3953,3732],{"class":1148},[1139,3955,3735],{"class":1144},[1139,3957,3958],{"class":1148}," nlp(texte))\n",[1139,3960,3962],{"class":1141,"line":3961},14,[1139,3963,1577],{"emptyLinePlaceholder":304},[1139,3965,3967,3970,3972,3975,3977,3980,3982],{"class":1141,"line":3966},15,[1139,3968,3969],{"class":1148},"lemm_docs ",[1139,3971,3472],{"class":1144},[1139,3973,3974],{"class":1148}," [lemmatiser(d) ",[1139,3976,3729],{"class":1144},[1139,3978,3979],{"class":1148}," d ",[1139,3981,3735],{"class":1144},[1139,3983,3984],{"class":1148}," documents]\n",[1139,3986,3988,3991,3993,3996,3999,4001,4004],{"class":1141,"line":3987},16,[1139,3989,3990],{"class":1148},"requete ",[1139,3992,3472],{"class":1144},[1139,3994,3995],{"class":1148}," lemmatiser(",[1139,3997,3998],{"class":1585},"input",[1139,4000,3488],{"class":1148},[1139,4002,4003],{"class":1368},"\"Entrez votre terme de recherche : \"",[1139,4005,4006],{"class":1148},"))\n",[1139,4008,4010],{"class":1141,"line":4009},17,[1139,4011,1577],{"emptyLinePlaceholder":304},[1139,4013,4015,4017,4020,4022,4025],{"class":1141,"line":4014},18,[1139,4016,3729],{"class":1144},[1139,4018,4019],{"class":1148}," original, lemm ",[1139,4021,3735],{"class":1144},[1139,4023,4024],{"class":1585}," zip",[1139,4026,4027],{"class":1148},"(documents, lemm_docs):\n",[1139,4029,4031,4034,4037,4039],{"class":1141,"line":4030},19,[1139,4032,4033],{"class":1144},"    if",[1139,4035,4036],{"class":1148}," requete ",[1139,4038,3735],{"class":1144},[1139,4040,4041],{"class":1148}," lemm:\n",[1139,4043,4045,4048],{"class":1141,"line":4044},20,[1139,4046,4047],{"class":1585},"        print",[1139,4049,4050],{"class":1148},"(original)\n",[103,4052,4054],{"id":4053},"nuage-de-mots-à-partir-des-lemmes","Nuage de mots à partir des lemmes",[1131,4056,4058],{"className":3460,"code":4057,"language":3462,"meta":289,"style":289},"import spacy\nfrom wordcloud import WordCloud\nimport matplotlib.pyplot as plt\n\nnlp = spacy.load(\"fr_core_news_sm\")\ntexte = \"...\"  # remplacez par un texte conséquent\ndoc = nlp(texte)\n\n# On retire les mots vides (le, la, et, etc.)\nlemmes = [token.lemma_ for token in doc if not token.is_stop and token.is_alpha]\n\nnuage = WordCloud(width=800, height=400, background_color='white').generate(' '.join(lemmes))\n\nplt.figure(figsize=(10, 5))\nplt.imshow(nuage, interpolation='bilinear')\nplt.axis('off')\nplt.show()\n",[284,4059,4060,4066,4078,4091,4095,4107,4119,4128,4132,4137,4168,4172,4219,4223,4245,4260,4270],{"__ignoreMap":289},[1139,4061,4062,4064],{"class":1141,"line":305},[1139,4063,1563],{"class":1144},[1139,4065,3682],{"class":1148},[1139,4067,4068,4070,4073,4075],{"class":1141,"line":290},[1139,4069,1569],{"class":1144},[1139,4071,4072],{"class":1148}," wordcloud ",[1139,4074,1563],{"class":1144},[1139,4076,4077],{"class":1148}," WordCloud\n",[1139,4079,4080,4082,4085,4088],{"class":1141,"line":647},[1139,4081,1563],{"class":1144},[1139,4083,4084],{"class":1148}," matplotlib.pyplot ",[1139,4086,4087],{"class":1144},"as",[1139,4089,4090],{"class":1148}," plt\n",[1139,4092,4093],{"class":1141,"line":1169},[1139,4094,1577],{"emptyLinePlaceholder":304},[1139,4096,4097,4099,4101,4103,4105],{"class":1141,"line":1617},[1139,4098,3691],{"class":1148},[1139,4100,3472],{"class":1144},[1139,4102,3696],{"class":1148},[1139,4104,3699],{"class":1368},[1139,4106,2646],{"class":1148},[1139,4108,4109,4111,4113,4116],{"class":1141,"line":1639},[1139,4110,3611],{"class":1148},[1139,4112,3472],{"class":1144},[1139,4114,4115],{"class":1368}," \"...\"",[1139,4117,4118],{"class":1157},"  # remplacez par un texte conséquent\n",[1139,4120,4121,4123,4125],{"class":1141,"line":1645},[1139,4122,3706],{"class":1148},[1139,4124,3472],{"class":1144},[1139,4126,4127],{"class":1148}," nlp(texte)\n",[1139,4129,4130],{"class":1141,"line":1650},[1139,4131,1577],{"emptyLinePlaceholder":304},[1139,4133,4134],{"class":1141,"line":3904},[1139,4135,4136],{"class":1157},"# On retire les mots vides (le, la, et, etc.)\n",[1139,4138,4139,4141,4143,4145,4147,4149,4151,4154,4156,4159,4162,4165],{"class":1141,"line":3910},[1139,4140,3815],{"class":1148},[1139,4142,3472],{"class":1144},[1139,4144,3820],{"class":1148},[1139,4146,3729],{"class":1144},[1139,4148,3732],{"class":1148},[1139,4150,3735],{"class":1144},[1139,4152,4153],{"class":1148}," doc ",[1139,4155,3498],{"class":1144},[1139,4157,4158],{"class":1144}," not",[1139,4160,4161],{"class":1148}," token.is_stop ",[1139,4163,4164],{"class":1144},"and",[1139,4166,4167],{"class":1148}," token.is_alpha]\n",[1139,4169,4170],{"class":1141,"line":3915},[1139,4171,1577],{"emptyLinePlaceholder":304},[1139,4173,4174,4177,4179,4182,4185,4187,4190,4192,4195,4197,4200,4202,4205,4207,4210,4213,4216],{"class":1141,"line":3920},[1139,4175,4176],{"class":1148},"nuage ",[1139,4178,3472],{"class":1144},[1139,4180,4181],{"class":1148}," WordCloud(",[1139,4183,4184],{"class":2858},"width",[1139,4186,3472],{"class":1144},[1139,4188,4189],{"class":1585},"800",[1139,4191,992],{"class":1148},[1139,4193,4194],{"class":2858},"height",[1139,4196,3472],{"class":1144},[1139,4198,4199],{"class":1585},"400",[1139,4201,992],{"class":1148},[1139,4203,4204],{"class":2858},"background_color",[1139,4206,3472],{"class":1144},[1139,4208,4209],{"class":1368},"'white'",[1139,4211,4212],{"class":1148},").generate(",[1139,4214,4215],{"class":1368},"' '",[1139,4217,4218],{"class":1148},".join(lemmes))\n",[1139,4220,4221],{"class":1141,"line":3941},[1139,4222,1577],{"emptyLinePlaceholder":304},[1139,4224,4225,4228,4231,4233,4235,4238,4240,4243],{"class":1141,"line":3961},[1139,4226,4227],{"class":1148},"plt.figure(",[1139,4229,4230],{"class":2858},"figsize",[1139,4232,3472],{"class":1144},[1139,4234,3488],{"class":1148},[1139,4236,4237],{"class":1585},"10",[1139,4239,992],{"class":1148},[1139,4241,4242],{"class":1585},"5",[1139,4244,4006],{"class":1148},[1139,4246,4247,4250,4253,4255,4258],{"class":1141,"line":3966},[1139,4248,4249],{"class":1148},"plt.imshow(nuage, ",[1139,4251,4252],{"class":2858},"interpolation",[1139,4254,3472],{"class":1144},[1139,4256,4257],{"class":1368},"'bilinear'",[1139,4259,2646],{"class":1148},[1139,4261,4262,4265,4268],{"class":1141,"line":3987},[1139,4263,4264],{"class":1148},"plt.axis(",[1139,4266,4267],{"class":1368},"'off'",[1139,4269,2646],{"class":1148},[1139,4271,4272],{"class":1141,"line":4009},[1139,4273,4274],{"class":1148},"plt.show()\n",[103,4276,878],{"id":877},[94,4278,4279,4280,3030,4283,4286],{},"Ces techniques de ",[98,4281,4282],{},"NLP",[925,4284,4285],{},"Natural Language Processing",") sous-tendent une\ngrande partie des outils que vous utilisez au quotidien : moteurs de\nrecherche, correcteurs, assistants vocaux, traducteurs automatiques. Et\nelles forment l'ossature classique sur laquelle les grands modèles de\nlangage (LLM) sont venus se greffer plus récemment.",[1319,4288,4289],{},"html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sP4rz, html code.shiki .sP4rz{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":289,"searchDepth":290,"depth":290,"links":4291},[4292,4293,4294,4295,4296,4297,4298,4299],{"id":3423,"depth":290,"text":3424},{"id":3453,"depth":290,"text":3454},{"id":3584,"depth":290,"text":3585},{"id":3662,"depth":290,"text":3663},{"id":3748,"depth":290,"text":3749},{"id":3838,"depth":290,"text":3839},{"id":4053,"depth":290,"text":4054},{"id":877,"depth":290,"text":878},{},{"title":53,"description":4302},{"Mots de passe, traduction, tokens, lemmes, nuage de mots":4303,"date":4304,"category":650,"authors":4305},"un parcours du traitement automatique du langage en Python.","2026-04-09",[4306],{"name":89},"1rX8-eviyHTuE_rGr4-_MHNHb2OD_FjL_F93dV2sE0E",1788015771732]