<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projets on Antoine Boucher</title><link>https://antoineboucher.info/CV/blog/fr/projects/</link><description>Recent content in Projets on Antoine Boucher</description><generator>Hugo</generator><language>fr</language><lastBuildDate>Mon, 13 Apr 2026 12:00:00 +0000</lastBuildDate><atom:link href="https://antoineboucher.info/CV/blog/fr/projects/index.xml" rel="self" type="application/rss+xml"/><item><title>Dimension (mathlib)</title><link>https://antoineboucher.info/CV/blog/fr/projects/dimension/</link><pubDate>Mon, 13 Apr 2026 12:00:00 +0000</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/dimension/</guid><description>&lt;h1 id="dimension"&gt;Dimension&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://github.com/antoinebou12/Dimension"&gt;&lt;img src="https://img.shields.io/github/last-commit/antoinebou12/Dimension" alt="GitHub last commit"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/antoinebou12/Dimension"&gt;Dépôt&lt;/a&gt; · &lt;a href="https://docs.rs/mathlib"&gt;mathlib sur docs.rs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;mathlib&lt;/strong&gt; est une crate Rust pour l’algèbre linéaire dense et creuse, les décompositions, la mathématique 3D, le clustering, les graphes, les transformations, et plus encore — avec des démos &lt;strong&gt;WebAssembly&lt;/strong&gt; et des fonctionnalités &lt;strong&gt;SIMD&lt;/strong&gt; / &lt;strong&gt;GPU&lt;/strong&gt; optionnelles. Le dépôt Dimension regroupe cette crate avec de la cinématique, de la physique, des expériences de rendu et de la documentation.&lt;/p&gt;
&lt;h2 id="démarrage-rapide"&gt;Démarrage rapide&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd mathlib &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; cargo build
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd mathlib &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; cargo test
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voir le &lt;a href="https://github.com/antoinebou12/Dimension#readme"&gt;README&lt;/a&gt; à la racine et &lt;a href="https://github.com/antoinebou12/Dimension/blob/main/docs/DOCS.md"&gt;docs/DOCS.md&lt;/a&gt; pour l’architecture et des exemples.&lt;/p&gt;</description></item><item><title>ESP32-7SEG</title><link>https://antoineboucher.info/CV/blog/fr/projects/esp32-7seg/</link><pubDate>Mon, 13 Apr 2026 12:00:00 +0000</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/esp32-7seg/</guid><description>&lt;h1 id="esp32-7seg"&gt;ESP32-7SEG&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://github.com/antoinebou12/ESP32-7SEG"&gt;&lt;img src="https://img.shields.io/github/last-commit/antoinebou12/ESP32-7SEG" alt="GitHub last commit"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/antoinebou12/ESP32-7SEG"&gt;Dépôt&lt;/a&gt; · &lt;a href="https://github.com/antoinebou12/ESP32-7SEG/blob/main/LICENSE"&gt;Licence MIT&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Firmware pour une carte &lt;strong&gt;ESP32 FireBeetle&lt;/strong&gt; qui pilote un &lt;strong&gt;afficheur 7 segments Adafruit&lt;/strong&gt; (backpack I2C) et expose une &lt;strong&gt;interface web locale&lt;/strong&gt; pour les modes minuteur et la gestion WiFi.&lt;/p&gt;
&lt;h2 id="interface-web"&gt;Interface web&lt;/h2&gt;
&lt;p&gt;Le serveur intégré sert un panneau &lt;strong&gt;Timer Control&lt;/strong&gt; dans le navigateur :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Modes &lt;strong&gt;chronomètre&lt;/strong&gt; et &lt;strong&gt;compte à rebours&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Raccourcis &lt;strong&gt;10 min&lt;/strong&gt;, &lt;strong&gt;5 min&lt;/strong&gt;, &lt;strong&gt;1 min&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Saisie &lt;strong&gt;minutes&lt;/strong&gt; et &lt;strong&gt;secondes&lt;/strong&gt; manuelle, bouton &lt;strong&gt;Start&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reset WiFi&lt;/strong&gt; pour effacer les identifiants stockés et reconfigurer l’appareil&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="matériel"&gt;Matériel&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ESP32 FireBeetle (v1.0)&lt;/li&gt;
&lt;li&gt;Afficheur 7 segments Adafruit avec backpack I2C&lt;/li&gt;
&lt;li&gt;Platine d’essai et fils de liaison (SCL, SDA, VCC, GND)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="logiciel"&gt;Logiciel&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Projet &lt;a href="https://platformio.org/"&gt;PlatformIO&lt;/a&gt; ; voir &lt;a href="https://github.com/antoinebou12/ESP32-7SEG/blob/main/platformio.ini"&gt;&lt;code&gt;platformio.ini&lt;/code&gt;&lt;/a&gt; pour la carte et les bibliothèques.&lt;/li&gt;
&lt;li&gt;Le dépôt inclut aussi des sous-projets &lt;strong&gt;Android&lt;/strong&gt; et &lt;strong&gt;firmware&lt;/strong&gt; pour une stack plus complète autour du même matériel.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="démarrage-rapide"&gt;Démarrage rapide&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/antoinebou12/ESP32-7SEG.git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd ESP32-7SEG
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ouvrir le projet dans PlatformIO (ou Arduino IDE avec les bibliothèques équivalentes), compiler et flasher l’ESP32. Au démarrage, lire l’adresse IP dans le &lt;strong&gt;moniteur série&lt;/strong&gt;, puis l’ouvrir dans un navigateur sur le même réseau pour utiliser l’interface web.&lt;/p&gt;</description></item><item><title>HDR-10bpp-Display-Test</title><link>https://antoineboucher.info/CV/blog/fr/projects/hdr-10bpp-display-test/</link><pubDate>Mon, 01 Jan 2024 12:00:00 +0000</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/hdr-10bpp-display-test/</guid><description>&lt;h2 id="hdr-10bpp-display-test"&gt;HDR-10bpp-Display-Test&lt;/h2&gt;
&lt;p&gt;Petit projet pour vérifier les capacités &lt;strong&gt;HDR 4K&lt;/strong&gt; sur Linux, notamment une profondeur de &lt;strong&gt;10 bits par canal&lt;/strong&gt;. Utile pour valider chaîne graphique, pilotes et écran.&lt;/p&gt;
&lt;h3 id="démarrage"&gt;Démarrage&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/antoinebou12/hdr-10bpp-display-test"&gt;Dépôt GitHub&lt;/a&gt;&lt;/p&gt;
&lt;h4 id="prérequis-exemple-debianubuntu"&gt;Prérequis (exemple Debian/Ubuntu)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Serveur X, Python 3, GTK 3&lt;/li&gt;
&lt;li&gt;ImageJ (affichage 10 bits), ImageIO&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt-get install xserver-xorg python3 python3-gi python3-gi-cairo gir1.2-gtk-3.0 imagej
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Les procédures détaillées et scripts sont décrits en anglais dans le README du dépôt.&lt;/p&gt;</description></item><item><title>Media center (Docker Compose)</title><link>https://antoineboucher.info/CV/blog/fr/projects/mediaboxdockercompose/</link><pubDate>Mon, 01 Jan 2024 12:00:00 +0000</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/mediaboxdockercompose/</guid><description>&lt;p&gt;&lt;a href="https://github.com/antoinebou12/MediaBoxDockerCompose"&gt;&lt;img src="https://img.shields.io/github/last-commit/antoinebou12/MediaBoxDockerCompose" alt="GitHub last commit"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/antoinebou12/MediaBoxDockerCompose"&gt;Dépôt&lt;/a&gt; · &lt;a href="https://github.com/antoinebou12/MediaBoxDockerCompose/blob/master/LICENSE"&gt;Licence MIT&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Stack média en Docker Compose : récupération (torrents et Usenet), chaîne *Arr, sous-titres, lecture avec &lt;strong&gt;Plex&lt;/strong&gt; ou &lt;strong&gt;Jellyfin&lt;/strong&gt;, demandes et supervision. Les volumes et chemins suivent le &lt;code&gt;docker-compose.yml&lt;/code&gt; du dépôt (variable &lt;code&gt;ROOT&lt;/code&gt;, etc.).&lt;/p&gt;
&lt;h2 id="contenu-de-la-stack"&gt;Contenu de la stack&lt;/h2&gt;
&lt;p&gt;Regroupement par rôle (détails dans le &lt;a href="https://github.com/antoinebou12/MediaBoxDockerCompose/blob/master/docker-compose.yml"&gt;fichier compose&lt;/a&gt;) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clients et indexeurs&lt;/strong&gt; — Deluge, NZBGet, Jackett, NZBHydra2, Prowlarr&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatisation&lt;/strong&gt; — Sonarr, Radarr, Lidarr, Bazarr, CouchPotato ; Readarr (livres) ; Whisparr ; Tdarr (transcodage)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bibliothèques et demandes&lt;/strong&gt; — Plex, Jellyfin, Ombi, Jellyseerr, Tautulli&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complément&lt;/strong&gt; — Stash (organisateur de bibliothèque spécialisé)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exploitation&lt;/strong&gt; — Netdata, Dashmachine, Filebrowser&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="démarrage-rapide"&gt;Démarrage rapide&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Installer &lt;a href="https://docs.docker.com/get-docker/"&gt;Docker&lt;/a&gt; et Compose sur la machine.&lt;/li&gt;
&lt;li&gt;Cloner le dépôt et renseigner les variables d’environnement (fichier &lt;code&gt;.env&lt;/code&gt; du dépôt, chemins type &lt;code&gt;ROOT&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Depuis le dossier du projet :&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/antoinebou12/MediaBoxDockerCompose.git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd MediaBoxDockerCompose
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;L’ancienne commande &lt;code&gt;docker-compose up -d&lt;/code&gt; reste valable ; le &lt;a href="https://github.com/antoinebou12/MediaBoxDockerCompose#readme"&gt;README&lt;/a&gt; du dépôt décrit la procédure en anglais.&lt;/p&gt;</description></item><item><title>RetroArch Web Games</title><link>https://antoineboucher.info/CV/blog/fr/projects/retroarch-web-games/</link><pubDate>Mon, 01 Jan 2024 12:00:00 +0000</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/retroarch-web-games/</guid><description>&lt;h2 id="retroarch-web-games"&gt;RetroArch Web Games&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/antoinebou12/retroarch-web-games"&gt;retroarch-web-games&lt;/a&gt; — RetroArch dans le navigateur via Docker, avec jeux NES, SNES, Mega Drive et Game Boy pré-téléchargés.&lt;/p&gt;
&lt;h3 id="fonctionnalités"&gt;Fonctionnalités&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Jeux fournis avec l’image&lt;/li&gt;
&lt;li&gt;Lecteur web auto-hébergé&lt;/li&gt;
&lt;li&gt;Déploiement simple avec Docker / Docker Compose&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="utilisation"&gt;Utilisation&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker-compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Image Docker : &lt;a href="https://hub.docker.com/r/antoinebou13/retroarch-web-games"&gt;hub.docker.com/r/antoinebou13/retroarch-web-games&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Les détails supplémentaires sont en anglais dans le dépôt GitHub.&lt;/p&gt;</description></item><item><title>Portfolio</title><link>https://antoineboucher.info/CV/blog/fr/projects/porfolio/</link><pubDate>Sat, 30 Dec 2023 12:00:00 +0000</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/porfolio/</guid><description>&lt;h2 id="projet-portfolio"&gt;Projet portfolio&lt;/h2&gt;
&lt;p&gt;Site personnel statique généré avec &lt;strong&gt;Hugo&lt;/strong&gt;. Dépôt : &lt;a href="https://github.com/antoinebou12/portfolio"&gt;github.com/antoinebou12/portfolio&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Analyseur de bandes-annonces</title><link>https://antoineboucher.info/CV/blog/fr/projects/movietraileranalyzer/</link><pubDate>Mon, 06 Sep 2021 22:42:23 +0800</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/movietraileranalyzer/</guid><description>&lt;p&gt;Voir le projet sur &lt;a href="https://github.com/antoinebou12/MovieTrailerAnalyzer/tree/main"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Classificateur de fichiers</title><link>https://antoineboucher.info/CV/blog/fr/projects/fileclassifier/</link><pubDate>Mon, 06 Sep 2021 22:42:23 +0800</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/fileclassifier/</guid><description>&lt;h1 id="fileclassifier"&gt;FileClassifier&lt;/h1&gt;
&lt;p&gt;Outil en ligne de commande qui organise automatiquement les fichiers d’un dossier en catégories selon leur type (images, documents, vidéos, etc.). Classifieur extensible avec prise en charge optionnelle de la modélisation de sujets.&lt;/p&gt;
&lt;h2 id="fonctionnalités"&gt;Fonctionnalités&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Organisation automatique par types de fichiers&lt;/li&gt;
&lt;li&gt;Catégories prédéfinies pour les formats courants&lt;/li&gt;
&lt;li&gt;Classifieur extensible (modélisation de sujets)&lt;/li&gt;
&lt;li&gt;Structure de sortie configurable&lt;/li&gt;
&lt;li&gt;Léger et simple à utiliser&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/antoinebou12/FileClassifier.git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd FileClassifier
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pip install poetry
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;poetry install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La suite (usage, options, exemples) est documentée en anglais dans le &lt;a href="https://github.com/antoinebou12/FileClassifier"&gt;dépôt&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>D2COpenAIPlugin</title><link>https://antoineboucher.info/CV/blog/fr/projects/d2copenaiplugin/</link><pubDate>Mon, 06 Sep 2021 22:42:23 +0800</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/d2copenaiplugin/</guid><description>&lt;h1 id="d2copenaiplugin"&gt;D2COpenAIPlugin&lt;/h1&gt;
&lt;p&gt;Consultez le projet &lt;a href="https://github.com/antoinebou12/D2COpenAIPlugin/tree/main"&gt;sur GitHub&lt;/a&gt;.&lt;br&gt;
Démo en ligne : &lt;a href="https://openai-uml-plugin.vercel.app"&gt;openai-uml-plugin.vercel.app&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Rejoignez la &lt;a href="https://openai.com/waitlist/plugins"&gt;liste d’attente des extensions ChatGPT&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;D2COpenAIPlugin est une extension pour ChatGPT qui permet de générer des diagrammes avec &lt;strong&gt;PlantUML&lt;/strong&gt; ou &lt;strong&gt;Mermaid&lt;/strong&gt;, directement depuis la conversation.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://raw.githubusercontent.com/antoinebou12/UMLOpenAIPlugin/main/docs/DiagramGeneratorPlugin.gif" alt="https://github.com/antoinebou12/UMLOpenAIPlugin/docs/DiagramGeneratorPlugin.gif"&gt;
&lt;img src="https://github.com/antoinebou12/D2COpenAIPlugin/assets/13888068/638e6ef6-b006-4f63-a7b8-b765fc0d8a41" alt="image"&gt;&lt;/p&gt;
&lt;h2 id="fonctionnalités"&gt;Fonctionnalités&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Diagrammes PlantUML ou Mermaid&lt;/li&gt;
&lt;li&gt;Intégration avec ChatGPT&lt;/li&gt;
&lt;li&gt;Interface orientée création de schémas&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation-aperçu"&gt;Installation (aperçu)&lt;/h2&gt;
&lt;p&gt;Prérequis typiques : Python 3.10+, FastAPI, uvicorn. Cloner le dépôt, installer les dépendances (poetry ou &lt;code&gt;requirements-dev.txt&lt;/code&gt;), configurer les variables d’environnement et un jeton bearer, puis lancer l’API (par ex. &lt;code&gt;uvicorn app:app --host 127.0.0.1 --port 5003&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>DasherControl</title><link>https://antoineboucher.info/CV/blog/fr/projects/dashcontrol/</link><pubDate>Mon, 06 Sep 2021 22:42:23 +0800</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/dashcontrol/</guid><description>&lt;h1 id="dashercontrol"&gt;DasherControl&lt;/h1&gt;
&lt;p&gt;Tableau de bord configurable avec grille d’éléments (iframes, favoris, etc.) et contrôle basique de conteneurs &lt;strong&gt;Docker&lt;/strong&gt;, développé en &lt;strong&gt;Vue.js&lt;/strong&gt; et &lt;strong&gt;Rust&lt;/strong&gt; (Rocket).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"&gt;
&lt;img src="https://img.shields.io/github/workflow/status/antoinebou13/DasherControl/build" alt="GitHub Workflow Status"&gt;
&lt;img src="https://img.shields.io/github/v/release/antoinebou13/DasherControl" alt="GitHub release (latest by date)"&gt;&lt;/p&gt;
&lt;h2 id="objectif"&gt;Objectif&lt;/h2&gt;
&lt;p&gt;Centraliser les applications web du homelab (Sonarr, Jellyfin, etc.) sans multiplier les onglets, et préparer des widgets (applets) pour les tâches récurrentes — reverse proxy, SSL, supervision — avec une expérience proche d’un bureau de widgets, persistée en base.&lt;/p&gt;</description></item><item><title>PlantUMLApi</title><link>https://antoineboucher.info/CV/blog/fr/projects/plantumlapi/</link><pubDate>Mon, 06 Sep 2021 22:42:23 +0800</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/plantumlapi/</guid><description>&lt;h1 id="plantumlapi"&gt;PlantUMLApi&lt;/h1&gt;
&lt;p&gt;Interface Python vers un serveur &lt;strong&gt;PlantUML&lt;/strong&gt; : génération de diagrammes UML et assimilés à partir d’un langage texte simple. Par défaut le client cible le serveur public PlantUML, mais il peut pointer vers n’importe quelle instance.&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pip install plantumlapi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ou depuis les sources :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pip install git+https://github.com/antoinebou12/plantumlapi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="ligne-de-commande"&gt;Ligne de commande&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;plantumlapi --help
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La référence complète des options et de l’API Python est en anglais dans le &lt;a href="https://github.com/antoinebou12/plantumlapi"&gt;dépôt&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>RawAnalyser</title><link>https://antoineboucher.info/CV/blog/fr/projects/rawanalyser/</link><pubDate>Mon, 06 Sep 2021 22:42:23 +0800</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/rawanalyser/</guid><description>&lt;p&gt;&lt;a href="https://github.com/antoinebou12/RawAnalyser"&gt;Dépôt GitHub&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="rawanalyser"&gt;RawAnalyser&lt;/h1&gt;
&lt;p&gt;Outil Python pour l’analyse d’images RAW : détection de clipping noir/blanc, calcul gamma, planéité et vignettage (réf. Algolux), inspection des pixels Bayer.&lt;/p&gt;
&lt;h2 id="prérequis"&gt;Prérequis&lt;/h2&gt;
&lt;p&gt;Python 2.7 ou 3 selon la branche du dépôt, avec notamment numpy, scipy, pyqt5, plotly, matplotlib, etc. (liste complète dans le README du projet).&lt;/p&gt;
&lt;h2 id="usage"&gt;Usage&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;python rawanalyser.py --help
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La documentation détaillée des options et workflows est en anglais sur &lt;a href="https://github.com/antoinebou12/RawAnalyser"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Serilog.Sinks.SentrySDK</title><link>https://antoineboucher.info/CV/blog/fr/projects/serilog.sinks.sentrysdk/</link><pubDate>Mon, 06 Sep 2021 22:42:23 +0800</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/serilog.sinks.sentrysdk/</guid><description>&lt;h1 id="serilogsinkssentrysdk"&gt;Serilog.Sinks.SentrySDK&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Sink Serilog&lt;/strong&gt; pour &lt;strong&gt;Sentry&lt;/strong&gt; : centraliser logs et erreurs dans Sentry avec le SDK officiel.&lt;/p&gt;
&lt;p&gt;S’inspire de &lt;a href="https://github.com/serilog-contrib/serilog-sinks-sentry"&gt;serilog-contrib/serilog-sinks-sentry&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="état-du-projet"&gt;État du projet&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/antoinebou12/Serilog.Sinks.SentrySDK/actions/workflows/tests.yml"&gt;&lt;img src="https://github.com/antoinebou12/Serilog.Sinks.SentrySDK/actions/workflows/tests.yml/badge.svg" alt=".NET Core Test"&gt;&lt;/a&gt;
&lt;a href="https://github.com/antoinebou12/Serilog.Sinks.SentrySDK/actions/workflows/CI.yml"&gt;&lt;img src="https://github.com/antoinebou12/Serilog.Sinks.SentrySDK/actions/workflows/CI.yml/badge.svg" alt=".NET Core CI"&gt;&lt;/a&gt;
&lt;a href="https://github.com/antoinebou12/Serilog.Sinks.SentrySDK/actions/workflows/codeql.yml"&gt;&lt;img src="https://github.com/antoinebou12/Serilog.Sinks.SentrySDK/actions/workflows/codeql.yml/badge.svg" alt="CodeQL"&gt;&lt;/a&gt;
&lt;a href="https://codecov.io/gh/antoinebou12/Serilog.Sinks.SentrySDK"&gt;&lt;img src="https://codecov.io/gh/antoinebou12/Serilog.Sinks.SentrySDK/branch/main/graph/badge.svg?token=DKLJUGCpI4" alt="codecov"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="paquets-nuget"&gt;Paquets NuGet&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Paquet&lt;/th&gt;
 &lt;th&gt;NuGet&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Serilog.Sinks.SentrySDK&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://www.nuget.org/packages/Serilog.Sinks.SentrySDK/"&gt;Lien&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://www.nuget.org/packages/Serilog.Sinks.SentrySDK/"&gt;&lt;img src="https://img.shields.io/nuget/v/Serilog.Sinks.SentrySDK.svg" alt="NuGet"&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Serilog.Sinks.SentrySDK.AspNetCore&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://www.nuget.org/packages/Serilog.Sinks.SentrySDK.AspNetCore/"&gt;Lien&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://www.nuget.org/packages/Serilog.Sinks.SentrySDK.AspNetCore/"&gt;&lt;img src="https://img.shields.io/nuget/v/Serilog.Sinks.SentrySDK.AspNetCore.svg" alt="NuGet"&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="installation-et-configuration"&gt;Installation et configuration&lt;/h2&gt;
&lt;p&gt;Exemples &lt;code&gt;dotnet add package&lt;/code&gt;, configuration dans &lt;code&gt;Program.cs&lt;/code&gt; / &lt;code&gt;appsettings.json&lt;/code&gt;, et options avancées : voir le &lt;a href="https://github.com/antoinebou12/Serilog.Sinks.SentrySDK"&gt;README en anglais&lt;/a&gt; sur GitHub.&lt;/p&gt;</description></item><item><title>WordUnveil</title><link>https://antoineboucher.info/CV/blog/fr/projects/wordunveil/</link><pubDate>Mon, 06 Sep 2021 22:42:23 +0800</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/wordunveil/</guid><description>&lt;h1 id="wordunveil"&gt;WordUnveil&lt;/h1&gt;
&lt;p&gt;&lt;img src="https://img.shields.io/badge/license-MIT-green" alt="License"&gt;
&lt;img src="https://img.shields.io/badge/-RedwoodJS-B7410E?logo=redwoodjs" alt="Redwood"&gt;
&lt;img src="https://img.shields.io/badge/-GraphQL-E10098?logo=graphql" alt="GraphQL"&gt;
&lt;img src="https://img.shields.io/badge/-Prisma-2D3748?logo=prisma" alt="Prisma"&gt;
&lt;img src="https://img.shields.io/badge/-MySQL-4479A1?logo=mysql" alt="MySQL"&gt;&lt;/p&gt;
&lt;p&gt;Variante multilingue du jeu Wordle pour découvrir du vocabulaire tout en jouant. Stack : RedwoodJS, GraphQL, Prisma et MySQL.&lt;/p&gt;
&lt;h2 id="démarrage"&gt;Démarrage&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;En développement&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd WordUnveil
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yarn install
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cp .env.default .env
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yarn rw prisma migrate dev
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yarn rw exec seed
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yarn rw dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Docker Compose&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker-compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;PostgreSQL seul&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker run --name&lt;span style="color:#f92672"&gt;=&lt;/span&gt;db -e POSTGRES_USER&lt;span style="color:#f92672"&gt;=&lt;/span&gt;admin -e POSTGRES_PASSWORD&lt;span style="color:#f92672"&gt;=&lt;/span&gt;admin -p &lt;span style="color:#e6db74"&gt;&amp;#39;5432:5432&amp;#39;&lt;/span&gt; -d postgres
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="déploiement"&gt;Déploiement&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yarn rw deploy baremetal production --first-run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Bibliothèque Python MarketWatch</title><link>https://antoineboucher.info/CV/blog/fr/projects/marketwatch/</link><pubDate>Mon, 06 Sep 2021 12:00:00 +0000</pubDate><guid>https://antoineboucher.info/CV/blog/fr/projects/marketwatch/</guid><description>&lt;h1 id="bibliothèque-python-marketwatch"&gt;Bibliothèque Python MarketWatch&lt;/h1&gt;
&lt;p&gt;&lt;img src="https://img.shields.io/pypi/v/marketwatch" alt="PyPI"&gt;
&lt;img src="https://img.shields.io/pypi/pyversions/marketwatch" alt="PyPI - Python Version"&gt;
&lt;img src="https://img.shields.io/pypi/l/marketwatch" alt="PyPI - License"&gt;
&lt;img src="https://img.shields.io/pypi/dm/marketwatch" alt="PyPI - Downloads"&gt;
&lt;img src="https://img.shields.io/github/last-commit/antoinebou12/marketwatch" alt="GitHub last commit"&gt;
&lt;a href="https://github.com/antoinebou12/marketwatch/actions/workflows/python-test.yml"&gt;&lt;img src="https://github.com/antoinebou12/marketwatch/actions/workflows/python-test.yml/badge.svg" alt="Python Test and Build"&gt;&lt;/a&gt;
&lt;img src="https://raw.githubusercontent.com/antoinebou12/marketwatch/main/.github/badge/coverage.svg" alt="Coverage"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.marketwatch.com"&gt;MarketWatch&lt;/a&gt; · &lt;a href="https://antoinebou12.github.io/marketwatch/"&gt;Documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Client Python pour le &lt;strong&gt;jeu boursier&lt;/strong&gt; MarketWatch (connexion, cours, portefeuille, ordres, etc.). S’appuie sur des travaux antérieurs de la communauté (voir le dépôt pour les crédits).&lt;/p&gt;
&lt;p&gt;Les détails d’API, exemples et changelog complets sont en anglais sur &lt;a href="https://github.com/antoinebou12/marketwatch"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>