{
    "version": "https://jsonfeed.org/version/1",
    "title": "Christophe Avonture Blog",
    "home_page_url": "https://www.avonture.be/fr/blog/",
    "description": "Christophe Avonture Blog",
    "items": [
        {
            "id": "https://www.avonture.be/fr/blog/ollama-ai-explain/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/ollama-ai-explain/",
            "title": "ai-explain : l'ELI5 des scripts et des erreurs, directement dans votre terminal",
            "summary": "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.",
            "date_modified": "2026-11-12T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Intelligence artificielle (IA)",
                "Ollama",
                "Zsh",
                "Linux",
                "Bash",
                "Docker",
                "Git"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/duckdb-json-csv/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/duckdb-json-csv/",
            "title": "DuckDB - Interroger des fichiers JSON et CSV en SQL, sans base de données",
            "summary": "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.",
            "date_modified": "2026-11-09T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Base de données",
                "Docker",
                "Linux"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/devcontainer-container-name/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/devcontainer-container-name/",
            "title": "Devcontainer - Nommer son container et le regrouper dans Docker Desktop",
            "summary": "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.",
            "date_modified": "2026-11-05T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "DevContainer",
                "Docker",
                "VS Code"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/wsl-docker-vhdx-cleanup/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/wsl-docker-vhdx-cleanup/",
            "title": "Le build cache Docker a avalé 180 Go — voici comment les récupérer",
            "summary": "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.",
            "date_modified": "2026-11-02T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Docker",
                "Microsoft Windows",
                "WSL (Windows Subsystem for Linux)"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/docusaurus-typo-report-component/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/docusaurus-typo-report-component/",
            "title": "Laissez vos lecteurs signaler les problèmes — un widget de feedback multi-types pour Docusaurus",
            "summary": "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.",
            "date_modified": "2026-10-29T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Docusaurus",
                "Composant / UI",
                "PHP",
                "React",
                "Sécurité"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/open-webui-advanced/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/open-webui-advanced/",
            "title": "Open WebUI — au-delà du chat : modèles, RAG, Tools et clés d'API",
            "summary": "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.",
            "date_modified": "2026-10-26T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Intelligence artificielle (IA)",
                "Docker",
                "Ollama",
                "Auto-hébergé"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/ollama-ai-data/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/ollama-ai-data/",
            "title": "ai-data : laissez un LLM local écrire vos one-liners jq et awk",
            "summary": "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.",
            "date_modified": "2026-10-22T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Intelligence artificielle (IA)",
                "Ollama",
                "Zsh",
                "fzf"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/linux-yq/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/linux-yq/",
            "title": "yq — Le processeur YAML que vous savez déjà utiliser",
            "summary": "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.",
            "date_modified": "2026-10-19T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Bash",
                "Docker",
                "Linux"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/ollama-ai-diagram/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/ollama-ai-diagram/",
            "title": "ai-diagram : d'une phrase (ou d'un compose.yaml) à un diagramme Mermaid",
            "summary": "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.",
            "date_modified": "2026-10-15T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Intelligence artificielle (IA)",
                "Ollama",
                "Zsh",
                "Documentation as Code"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/hyperfine/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/hyperfine/",
            "title": "hyperfine — arrêtez de deviner quelle commande est la plus rapide, mesurez-la",
            "summary": "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.",
            "date_modified": "2026-10-12T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Bash",
                "Docker",
                "Linux"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/docusaurus-blog-map/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/docusaurus-blog-map/",
            "title": "Dessiner une carte de mon propre blog",
            "summary": "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.",
            "date_modified": "2026-10-08T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Docusaurus",
                "React",
                "Composant / UI",
                "Node.js",
                "Documentation as Code"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/docusaurus-ask-my-blog-bubble/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/docusaurus-ask-my-blog-bubble/",
            "title": "La troisième porte : une bulle de chat flottante, et la fonctionnalité que personne ne trouvait",
            "summary": "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.",
            "date_modified": "2026-10-05T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Docusaurus",
                "React",
                "Composant / UI"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/ssh-config-tips/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/ssh-config-tips/",
            "title": "Générateur de config SSH : stanzas wildcard, alias et connexions automatisées",
            "summary": "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.",
            "date_modified": "2026-10-01T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "SSH (Secure Shell)",
                "Linux",
                "Microsoft Windows"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/docusaurus-ask-my-blog/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/docusaurus-ask-my-blog/",
            "title": "Ask My Blog : transformer 259 articles en 2 160 questions cherchables",
            "summary": "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.",
            "date_modified": "2026-09-28T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Docusaurus",
                "Intelligence artificielle (IA)",
                "Ollama",
                "React",
                "Composant / UI",
                "Node.js"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/docker-dive/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/docker-dive/",
            "title": "Docker Dive — Radiographiez vos images et éliminez le gaspillage",
            "summary": "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.",
            "date_modified": "2026-09-24T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Docker",
                "Linux",
                "Qualité du code"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/2026/09/24/docker-dive/files/docker-dive-optimization/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/2026/09/24/docker-dive/files/docker-dive-optimization/",
            "title": "Docker dive optimization",
            "summary": "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",
            "date_modified": "2026-09-24T00:00:00.000Z",
            "tags": []
        },
        {
            "id": "https://www.avonture.be/fr/blog/ollama-ai-docs/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/ollama-ai-docs/",
            "title": "ai-translate & ai-summarize : des documents confidentiels, traités 100 % en local",
            "summary": "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.",
            "date_modified": "2026-09-21T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Intelligence artificielle (IA)",
                "Ollama",
                "Zsh",
                "Docker"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/docling/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/docling/",
            "title": "Docling - Convertir PDF, Word, PowerPoint, Excel et HTML en Markdown, accéléré par GPU",
            "summary": "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.",
            "date_modified": "2026-09-17T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Docker",
                "Markdown",
                "Python",
                "Intelligence artificielle (IA)",
                "Documentation as Code"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/atuin-bash-history/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/atuin-bash-history/",
            "title": "Atuin — Boostez votre historique shell avec une base de données consultable et horodatée",
            "summary": "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.",
            "date_modified": "2026-09-14T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Bash",
                "Linux",
                "Zsh"
            ]
        },
        {
            "id": "https://www.avonture.be/fr/blog/docusaurus-copy-as-markdown/",
            "content_html": null,
            "url": "https://www.avonture.be/fr/blog/docusaurus-copy-as-markdown/",
            "title": "Ajouter un bouton « Copy as Markdown » à votre blog Docusaurus",
            "summary": "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.",
            "date_modified": "2026-09-10T00:00:00.000Z",
            "author": {
                "name": "Christophe",
                "url": "https://bsky.app/profile/avonture.be"
            },
            "tags": [
                "Docusaurus",
                "Markdown",
                "React",
                "Composant / UI"
            ]
        }
    ]
}