[
  {
    "slug": "fix-markdown-pdf-mermaid-export-error",
    "kind": "article",
    "publishedOn": "2025-07-18",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "Corriger l’export Mermaid avec Markdown PDF",
    "summary": "Vérifier la version du script Mermaid quand les diagrammes disparaissent du PDF.",
    "path": "/content/blog/fr/fix-markdown-pdf-mermaid-export-error.002f389c8d77.md",
    "imageSizes": {
      "/content/blog/assets/fix-markdown-pdf-mermaid-export-error/618d04abeda8.jpg": {
        "width": 2809,
        "height": 2099
      },
      "/content/blog/assets/fix-markdown-pdf-mermaid-export-error/2a400b3591ff.jpg": {
        "width": 1224,
        "height": 292
      },
      "/content/blog/assets/fix-markdown-pdf-mermaid-export-error/dbb0b39591b7.jpg": {
        "width": 1224,
        "height": 508
      }
    },
    "cover": "/content/blog/assets/fix-markdown-pdf-mermaid-export-error/766792adc6fd.jpg"
  },
  {
    "slug": "colorful-cli-with-ansi-escape-codes",
    "kind": "article",
    "publishedOn": "2025-04-12",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "Un terminal en couleurs avec les codes ANSI",
    "summary": "Utiliser les séquences ANSI pour distinguer les états dans une sortie CLI.",
    "path": "/content/blog/fr/colorful-cli-with-ansi-escape-codes.62faf698873f.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/colorful-cli-with-ansi-escape-codes/bf86e674e0c4.jpg"
  },
  {
    "slug": "fas-paper-roadmap",
    "kind": "article",
    "publishedOn": "2025-04-01",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "Carte des techniques de détection des fausses identités faciales",
    "summary": "Un parcours de quarante articles sur les jeux de données, les méthodes et leur évaluation.",
    "path": "/content/blog/fr/fas-paper-roadmap.b64358ec69c3.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/fas-paper-roadmap/d2483bf19175.jpg"
  },
  {
    "slug": "download-from-google-drive-using-python",
    "kind": "article",
    "publishedOn": "2025-02-19",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "Télécharger des fichiers Google Drive avec Python",
    "summary": "Gérer la confirmation et le téléchargement en flux, puis choisir l’API officielle si nécessaire.",
    "path": "/content/blog/fr/download-from-google-drive-using-python.64cc2788e942.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/download-from-google-drive-using-python/6e2af5a3dd4c.webp"
  },
  {
    "slug": "github-markdown-advanced-syntax",
    "kind": "article",
    "publishedOn": "2025-01-13",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "Cinq syntaxes GitHub Markdown utiles",
    "summary": "Des exemples de tâches, alertes, notes et ancres pour un README plus lisible.",
    "path": "/content/blog/fr/github-markdown-advanced-syntax.ce216b605df8.md",
    "imageSizes": {
      "/content/blog/assets/github-markdown-advanced-syntax/f50d5b642be3.jpg": {
        "width": 1224,
        "height": 756
      }
    },
    "cover": "/content/blog/assets/github-markdown-advanced-syntax/f95adfcfd00e.webp"
  },
  {
    "slug": "extract-font-info-by-python",
    "kind": "article",
    "publishedOn": "2024-12-26",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "Lire les métadonnées des polices avec Python",
    "summary": "Explorer les noms, la table des caractères et les mesures de mise en page avec fontTools.",
    "path": "/content/blog/fr/extract-font-info-by-python.18908723f037.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/extract-font-info-by-python/e46339160260.webp"
  },
  {
    "slug": "graph-convolutional-networks",
    "kind": "article",
    "publishedOn": "2024-12-05",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "Introduction aux réseaux convolutifs sur graphes",
    "summary": "Suivre un exemple à trois nœuds pour comprendre l’agrégation dans un GCN.",
    "path": "/content/blog/fr/graph-convolutional-networks.fceee0e74f93.md",
    "imageSizes": {
      "/content/blog/assets/graph-convolutional-networks/e30e59d73288.jpg": {
        "width": 3721,
        "height": 1668
      }
    },
    "cover": "/content/blog/assets/graph-convolutional-networks/aae5b21e1ac5.webp"
  },
  {
    "slug": "fourier-transform",
    "kind": "article",
    "publishedOn": "2024-12-02",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "Introduction à la transformée de Fourier",
    "summary": "Des ondes sinusoïdales au spectre, avec des graphiques interactifs.",
    "path": "/content/blog/fr/fourier-transform.f2d99ac512b6.md",
    "imageSizes": {
      "/content/blog/assets/fourier-transform/60c45d0f6141.png": {
        "width": 1920,
        "height": 1978
      }
    },
    "cover": "/content/blog/assets/fourier-transform/2d5915c160f6.webp"
  },
  {
    "slug": "torch-layernorm-mismatch",
    "kind": "article",
    "publishedOn": "2024-08-20",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "Pourquoi le calcul manuel de LayerNorm diffère",
    "summary": "Comparer la variance de PyTorch avec le calcul utilisé par LayerNorm.",
    "path": "/content/blog/fr/torch-layernorm-mismatch.75824e3dcc03.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/torch-layernorm-mismatch/77e51e1e30aa.webp"
  },
  {
    "slug": "impl-normalized-levenshtein-similarity",
    "kind": "article",
    "publishedOn": "2024-05-16",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "Implémenter le score ANLS",
    "summary": "Calculer la similarité normalisée avec torchmetrics et le seuil utilisé par ST-VQA.",
    "path": "/content/blog/fr/impl-normalized-levenshtein-similarity.42667ebae5dc.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/impl-normalized-levenshtein-similarity/beabe67a25de.webp"
  },
  {
    "slug": "gosu-usage",
    "kind": "article",
    "publishedOn": "2024-02-03",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "Changer d’utilisateur dans un conteneur avec gosu",
    "summary": "Utiliser gosu dans un point d’entrée et vérifier les signaux et les limites du TTY.",
    "path": "/content/blog/fr/gosu-usage.2c6ec6d72a5f.md",
    "imageSizes": {},
    "cover": "/content/blog/assets/gosu-usage/a18176ea0d8e.webp"
  },
  {
    "slug": "login-rtf8207w",
    "kind": "article",
    "publishedOn": "2023-09-04",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "Accéder à un routeur RTF8207W",
    "summary": "Identifier la version, trouver l’adresse d’administration et vérifier les conditions d’accès.",
    "path": "/content/blog/fr/login-rtf8207w.b2474c088a47.md",
    "imageSizes": {
      "/content/blog/assets/login-rtf8207w/79386cc3d28a.jpg": {
        "width": 1184,
        "height": 688
      }
    },
    "cover": "/content/blog/assets/login-rtf8207w/c2a6a326421a.webp"
  },
  {
    "slug": "llm-long-context",
    "kind": "article",
    "publishedOn": "2026-10-26",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "De 512 à un million de tokens : comment le contexte des LLM s’est agrandi",
    "summary": "Quelques zéros suffiraient pour lire tout un roman ? Il faut encore gérer les positions, terminer les calculs et réussir le contrôle de lecture. Un million de tokens, cela fait plusieurs factures.",
    "path": "/content/blog/fr/llm-long-context.4a6600fb7912.md",
    "imageSizes": {
      "/content/blog/assets/llm-long-context/0e698e0187f6.png": {
        "width": 1697,
        "height": 995
      },
      "/content/blog/assets/llm-long-context/9922e97e5772.png": {
        "width": 725,
        "height": 680
      }
    },
    "cover": "/content/blog/assets/llm-long-context/4550d418eafb.webp"
  },
  {
    "slug": "llm-rag-rise-and-decline",
    "kind": "article",
    "publishedOn": "2026-11-08",
    "author": "Z. Yuan",
    "locale": "fr",
    "title": "Essor et déclin du RAG",
    "summary": "Du retrait de l’index sémantique de Cursor au retour de BM25 : comment le long contexte, le cache et les agents transforment la recette du RAG, sans supprimer le besoin de trouver les bonnes preuves.",
    "path": "/content/blog/fr/llm-rag-rise-and-decline.4c9235d490c0.md",
    "imageSizes": {
      "/content/blog/assets/llm-rag-rise-and-decline/715d62fda93a.svg": {
        "width": 400,
        "height": 650
      },
      "/content/blog/assets/llm-rag-rise-and-decline/fb4344cd6163.svg": {
        "width": 400,
        "height": 570
      },
      "/content/blog/assets/llm-rag-rise-and-decline/c8097f47e5d1.svg": {
        "width": 400,
        "height": 476
      },
      "/content/blog/assets/llm-rag-rise-and-decline/150fc47e269f.svg": {
        "width": 400,
        "height": 680
      }
    },
    "cover": "/content/blog/assets/llm-rag-rise-and-decline/6245112b8af3.webp",
    "showCover": true
  }
]
