<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://www.avonture.be/fr/blog/</id>
    <title>Christophe Avonture Blog</title>
    <updated>2026-11-12T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://www.avonture.be/fr/blog/"/>
    <subtitle>Christophe Avonture Blog</subtitle>
    <icon>https://www.avonture.be/fr/img/favicon.png</icon>
    <entry>
        <title type="html"><![CDATA[ai-explain : l'ELI5 des scripts et des erreurs, directement dans votre terminal]]></title>
        <id>https://www.avonture.be/fr/blog/ollama-ai-explain/</id>
        <link href="https://www.avonture.be/fr/blog/ollama-ai-explain/"/>
        <updated>2026-11-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Encore une fonction de la série Ollama au quotidien : envoyez n'importe quel script, message d'erreur ou stack trace à ai-explain et obtenez une explication en langage clair de ce qu'il fait ou de ce qui a planté — 100 % local, sans cloud.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Intelligence artificielle (IA)" term="Intelligence artificielle (IA)"/>
        <category label="Ollama" term="Ollama"/>
        <category label="Zsh" term="Zsh"/>
        <category label="Linux" term="Linux"/>
        <category label="Bash" term="Bash"/>
        <category label="Docker" term="Docker"/>
        <category label="Git" term="Git"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[DuckDB - Interroger des fichiers JSON et CSV en SQL, sans base de données]]></title>
        <id>https://www.avonture.be/fr/blog/duckdb-json-csv/</id>
        <link href="https://www.avonture.be/fr/blog/duckdb-json-csv/"/>
        <updated>2026-11-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Exécutez du vrai SQL — jointures, fonctions de fenêtrage, GROUP BY — directement sur des fichiers JSON et CSV, sans étape d'import, sans serveur, sans schéma à définir. Dockerisé, avec une fonction shell duckdb qui fonctionne depuis n'importe quel dossier. L'outil que je sors dès qu'awk ou jq ne suffisent plus.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Base de données" term="Base de données"/>
        <category label="Docker" term="Docker"/>
        <category label="Linux" term="Linux"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Devcontainer - Nommer son container et le regrouper dans Docker Desktop]]></title>
        <id>https://www.avonture.be/fr/blog/devcontainer-container-name/</id>
        <link href="https://www.avonture.be/fr/blog/devcontainer-container-name/"/>
        <updated>2026-11-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Fini les noms de containers aléatoires comme serene_ganguly dans les devcontainers VS Code : utilisez runArgs pour forcer un nom et regrouper vos containers dans Docker Desktop.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <category label="DevContainer" term="DevContainer"/>
        <category label="Docker" term="Docker"/>
        <category label="VS Code" term="VS Code"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Le build cache Docker a avalé 180 Go — voici comment les récupérer]]></title>
        <id>https://www.avonture.be/fr/blog/wsl-docker-vhdx-cleanup/</id>
        <link href="https://www.avonture.be/fr/blog/wsl-docker-vhdx-cleanup/"/>
        <updated>2026-11-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Le build cache de Docker s'accumule silencieusement dans le disque virtuel VHDX de WSL2 — et Windows ne récupère jamais cet espace tout seul. Voici le correctif complet : trois étapes communes, puis une méthode de compactage qui dépend de vos droits d'administrateur local.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Docker" term="Docker"/>
        <category label="Microsoft Windows" term="Microsoft Windows"/>
        <category label="WSL (Windows Subsystem for Linux)" term="WSL (Windows Subsystem for Linux)"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Laissez vos lecteurs signaler les problèmes — un widget de feedback multi-types pour Docusaurus]]></title>
        <id>https://www.avonture.be/fr/blog/docusaurus-typo-report-component/</id>
        <link href="https://www.avonture.be/fr/blog/docusaurus-typo-report-component/"/>
        <updated>2026-10-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Construisez un widget de feedback lecteur sécurisé et SSR-safe pour votre blog Docusaurus — sélection de texte, 4 types de feedback, API PHP avec nonce HMAC, rate limiting, déduplication, dashboard admin et notifications par email.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <category label="Docusaurus" term="Docusaurus"/>
        <category label="Composant / UI" term="Composant / UI"/>
        <category label="PHP" term="PHP"/>
        <category label="React" term="React"/>
        <category label="Sécurité" term="Sécurité"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Open WebUI — au-delà du chat : modèles, RAG, Tools et clés d'API]]></title>
        <id>https://www.avonture.be/fr/blog/open-webui-advanced/</id>
        <link href="https://www.avonture.be/fr/blog/open-webui-advanced/"/>
        <updated>2026-10-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Open WebUI est bien plus qu'une interface de chat pour Ollama. Presets de modèles avec system prompts, RAG sur vos documents locaux, recherche web, Tools en Python et clés d'API personnelles : de quoi construire un vrai workspace IA local.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Intelligence artificielle (IA)" term="Intelligence artificielle (IA)"/>
        <category label="Docker" term="Docker"/>
        <category label="Ollama" term="Ollama"/>
        <category label="Auto-hébergé" term="Auto-hébergé"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ai-data : laissez un LLM local écrire vos one-liners jq et awk]]></title>
        <id>https://www.avonture.be/fr/blog/ollama-ai-data/</id>
        <link href="https://www.avonture.be/fr/blog/ollama-ai-data/"/>
        <updated>2026-10-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Une fonction zsh qui lit un fichier JSON ou CSV, comprend ses vrais champs et propose 5 commandes jq/awk pratiques adaptées à ce fichier précis — choisies via fzf, puis déposées sur votre ligne de commande (pas exécutées à votre place) pour que vous puissiez voir, modifier et comprendre la commande exacte avant d'appuyer sur Entrée.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Intelligence artificielle (IA)" term="Intelligence artificielle (IA)"/>
        <category label="Ollama" term="Ollama"/>
        <category label="Zsh" term="Zsh"/>
        <category label="fzf" term="fzf"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[yq — Le processeur YAML que vous savez déjà utiliser]]></title>
        <id>https://www.avonture.be/fr/blog/linux-yq/</id>
        <link href="https://www.avonture.be/fr/blog/linux-yq/"/>
        <updated>2026-10-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[yq est à YAML ce que jq est à JSON. Interrogez et modifiez vos fichiers Docker Compose, vos configs CI et n'importe quel document YAML depuis la ligne de commande — aucune installation nécessaire, à part Docker.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Bash" term="Bash"/>
        <category label="Docker" term="Docker"/>
        <category label="Linux" term="Linux"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[ai-diagram : d'une phrase (ou d'un compose.yaml) à un diagramme Mermaid]]></title>
        <id>https://www.avonture.be/fr/blog/ollama-ai-diagram/</id>
        <link href="https://www.avonture.be/fr/blog/ollama-ai-diagram/"/>
        <updated>2026-10-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Une fonction zsh qui transforme une description en langage naturel, ou un fichier de config existant comme un docker-compose.yaml, en diagramme Mermaid — affiché sous forme de bloc de code prêt à coller. Là où docker-python-mermaid exige un script écrit pour chaque format d'entrée, ai-diagram prend ce que vous avez sous la main.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Intelligence artificielle (IA)" term="Intelligence artificielle (IA)"/>
        <category label="Ollama" term="Ollama"/>
        <category label="Zsh" term="Zsh"/>
        <category label="Documentation as Code" term="Documentation as Code"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[hyperfine — arrêtez de deviner quelle commande est la plus rapide, mesurez-la]]></title>
        <id>https://www.avonture.be/fr/blog/hyperfine/</id>
        <link href="https://www.avonture.be/fr/blog/hyperfine/"/>
        <updated>2026-10-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[hyperfine est un outil de benchmark en ligne de commande écrit en Rust. Il exécute vos commandes de nombreuses fois, gère les runs de warmup, calcule des statistiques sur le temps et la mémoire, et vous dit définitivement laquelle est la plus rapide — avec export en Markdown, CSV ou JSON.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Bash" term="Bash"/>
        <category label="Docker" term="Docker"/>
        <category label="Linux" term="Linux"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Dessiner une carte de mon propre blog]]></title>
        <id>https://www.avonture.be/fr/blog/docusaurus-blog-map/</id>
        <link href="https://www.avonture.be/fr/blog/docusaurus-blog-map/"/>
        <updated>2026-10-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Construisez une carte interactive de tout votre corpus Docusaurus — chaque article devient une bulle portant la mascotte du site, dimensionnée selon le nombre d'articles qui pointent vers elle, positionnée par un layout force-directed calculé au build dans Node, si bien que le navigateur ne charge jamais d3-force. Inclut le plugin, le composant canvas et le fallback en liste simple qui garde la page utilisable sans JavaScript.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Docusaurus" term="Docusaurus"/>
        <category label="React" term="React"/>
        <category label="Composant / UI" term="Composant / UI"/>
        <category label="Node.js" term="Node.js"/>
        <category label="Documentation as Code" term="Documentation as Code"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[La troisième porte : une bulle de chat flottante, et la fonctionnalité que personne ne trouvait]]></title>
        <id>https://www.avonture.be/fr/blog/docusaurus-ask-my-blog-bubble/</id>
        <link href="https://www.avonture.be/fr/blog/docusaurus-ask-my-blog-bubble/"/>
        <updated>2026-10-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Une fonctionnalité que vos visiteurs ne trouvent pas n'existe pas. Cet article ajoute une bulle flottante « Ask my blog » à un site Docusaurus — un troisième point d'entrée vers le même index de questions, et le premier qui ne demande aucune connaissance préalable. Avec l'astuce d'exclusion mutuelle qui empêche deux dialogues flottants indépendants de s'ouvrir en même temps.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Docusaurus" term="Docusaurus"/>
        <category label="React" term="React"/>
        <category label="Composant / UI" term="Composant / UI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Générateur de config SSH : stanzas wildcard, alias et connexions automatisées]]></title>
        <id>https://www.avonture.be/fr/blog/ssh-config-tips/</id>
        <link href="https://www.avonture.be/fr/blog/ssh-config-tips/"/>
        <updated>2026-10-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Générez votre config SSH en quelques secondes — puis comprenez comment elle fonctionne : un wildcard élimine chaque ProxyJump et IdentityFile répété, les stanzas de domaine définissent les noms d'utilisateur pour les FQDN, les alias courts ont besoin de leur propre ligne User, et RemoteCommand vous connecte directement en tant qu'utilisateur applicatif.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <category label="SSH (Secure Shell)" term="SSH (Secure Shell)"/>
        <category label="Linux" term="Linux"/>
        <category label="Microsoft Windows" term="Microsoft Windows"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Ask My Blog : transformer 259 articles en 2 160 questions cherchables]]></title>
        <id>https://www.avonture.be/fr/blog/docusaurus-ask-my-blog/</id>
        <link href="https://www.avonture.be/fr/blog/docusaurus-ask-my-blog/"/>
        <updated>2026-09-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Un LLM local lit chaque article du blog et rédige les questions qu'un développeur taperait vraiment dans une barre de recherche, chacune reliée au titre exact qui y répond. Le résultat est un index de questions généré au build et interrogé dans le navigateur avec un simple BM25 — pas d'embeddings, pas de clé d'API, pas de base vectorielle. Pipeline, plugin et composant complets inclus.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Docusaurus" term="Docusaurus"/>
        <category label="Intelligence artificielle (IA)" term="Intelligence artificielle (IA)"/>
        <category label="Ollama" term="Ollama"/>
        <category label="React" term="React"/>
        <category label="Composant / UI" term="Composant / UI"/>
        <category label="Node.js" term="Node.js"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Docker Dive — Radiographiez vos images et éliminez le gaspillage]]></title>
        <id>https://www.avonture.be/fr/blog/docker-dive/</id>
        <link href="https://www.avonture.be/fr/blog/docker-dive/"/>
        <updated>2026-09-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Utilisez dive pour inspecter chaque layer d'une image Docker, repérer les mégaoctets gaspillés par des fichiers supprimés, et passer étape par étape d'une image obèse de 1 Go à un build compact et efficace.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <category label="Docker" term="Docker"/>
        <category label="Linux" term="Linux"/>
        <category label="Qualité du code" term="Qualité du code"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Docker dive optimization]]></title>
        <id>https://www.avonture.be/fr/blog/2026/09/24/docker-dive/files/docker-dive-optimization/</id>
        <link href="https://www.avonture.be/fr/blog/2026/09/24/docker-dive/files/docker-dive-optimization/"/>
        <updated>2026-09-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Analyze a Docker image's actual byte breakdown with dive, auto-fix mechanical waste (unmerged cache-purge layers, missing no-cache flags), propose heavy-tool-for-narrow-need swaps for joint review, and file TODOs for the rest]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[ai-translate & ai-summarize : des documents confidentiels, traités 100 % en local]]></title>
        <id>https://www.avonture.be/fr/blog/ollama-ai-docs/</id>
        <link href="https://www.avonture.be/fr/blog/ollama-ai-docs/"/>
        <updated>2026-09-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Deux fonctions zsh qui traduisent ou résument un document Word, PDF, PowerPoint ou Excel sans qu'un seul octet ne quitte votre machine — Docling extrait le texte en local, un modèle Ollama local fait la traduction ou le résumé. Pensé pour le document que vous ne colleriez jamais dans un outil de traduction cloud.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Intelligence artificielle (IA)" term="Intelligence artificielle (IA)"/>
        <category label="Ollama" term="Ollama"/>
        <category label="Zsh" term="Zsh"/>
        <category label="Docker" term="Docker"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Docling - Convertir PDF, Word, PowerPoint, Excel et HTML en Markdown, accéléré par GPU]]></title>
        <id>https://www.avonture.be/fr/blog/docling/</id>
        <link href="https://www.avonture.be/fr/blog/docling/"/>
        <updated>2026-09-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Une image Docker batteries-included pour Docling, la bibliothèque de conversion de documents d'IBM : PDF, Word, PowerPoint, Excel et HTML transformés en Markdown propre, avec accélération GPU pour les machines qui ont de la VRAM en rab. Un complément à mon article Markitdown — même idée, un moteur plus lourd en dessous.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Docker" term="Docker"/>
        <category label="Markdown" term="Markdown"/>
        <category label="Python" term="Python"/>
        <category label="Intelligence artificielle (IA)" term="Intelligence artificielle (IA)"/>
        <category label="Documentation as Code" term="Documentation as Code"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Atuin — Boostez votre historique shell avec une base de données consultable et horodatée]]></title>
        <id>https://www.avonture.be/fr/blog/atuin-bash-history/</id>
        <link href="https://www.avonture.be/fr/blog/atuin-bash-history/"/>
        <updated>2026-09-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Fatigué de perdre vos commandes dans le labyrinthe du CTRL+R par défaut ? Atuin remplace l'historique de votre shell par une TUI complète adossée à SQLite — horodatage, contexte, synchronisation multi-machines, et une comparaison claire avec la recherche d'historique basée sur FZF.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <author>
            <name>Claude Code</name>
            <uri>https://claude.ai/code</uri>
        </author>
        <category label="Bash" term="Bash"/>
        <category label="Linux" term="Linux"/>
        <category label="Zsh" term="Zsh"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Ajouter un bouton « Copy as Markdown » à votre blog Docusaurus]]></title>
        <id>https://www.avonture.be/fr/blog/docusaurus-copy-as-markdown/</id>
        <link href="https://www.avonture.be/fr/blog/docusaurus-copy-as-markdown/"/>
        <updated>2026-09-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Créez un bouton « Copy as Markdown » et un lien « View raw » pour les articles de votre blog Docusaurus — un plugin exécuté au build qui écrit un miroir en Markdown pur à côté de chaque article, plus le petit composant React qui le récupère et le copie dans le presse-papiers. Code source complet inclus.]]></summary>
        <author>
            <name>Christophe</name>
            <uri>https://bsky.app/profile/avonture.be</uri>
        </author>
        <category label="Docusaurus" term="Docusaurus"/>
        <category label="Markdown" term="Markdown"/>
        <category label="React" term="React"/>
        <category label="Composant / UI" term="Composant / UI"/>
    </entry>
</feed>