<description><![CDATA[<p>Je n'ai pas écrit d'articles depuis quelques temps car mes semaines sont très chargées. Pour autant, je travaille sur de nombreux projets qui me donnent des idées de prochains articles.</p>
<p>Le 1er novembre dernier a été publiée <ahref="https://gitnet.fr/murph/murph-core/releases/tag/v1.23.0">la version v1.23</a> de Murph. Murph est un <strong>framework open-source pour construire des CMS</strong>. Il est développé à l'aide de <strong>Symfony</strong> et permet de gérer des sites web avec <strong>plusieurs noms de domaines et en plusieurs langues</strong>. Il est aussi très efficace pour développer des outils d'administration et des applications métiers. C'est par ce prisme que j'ai beaucoup exploité Murph ces derniers mois, ce qui m'a permis de le mettre à l'épreuve. Je l'ai donc agrémenter de nouvelles fonctionnalités et de correctifs.</p>
<p>Quant à <ahref="https://deblan.gitnet.page/side_menu_doc/">Custom Menu</a>, la version <ahref="https://gitnet.fr/deblan/side_menu/releases/tag/v3.11.0">v3.11.0</a> a été publiée de 5 novembre. Elle apporte une nouvelle fonctionnalité de recherche des applications dans les différents menus. Celle permet de filtrer les applications et permettre de les accéder plus rapidement. J'y pensais depuis quelques temps et c'est un besoin qui m'a été rémonté, c'est donc maintenant disponible !</p>
<p><strong>Murph</strong> et <strong>Custom Menu</strong> sont des projets qui me tiennent vraiment à cœur et je suis heureux de les voir être utilisés par d'autres personnes que moi 😁</p>
<description><![CDATA[<p>Matrix-Synapse est un service de messagerie décentralisé et interopérable avec d'autres messageries. Je l'utilise à titre personnel et dans le cadre d'une association. Il livre un service que je considère sensible, c'est pourquoi les différentes instances sont hébergées sur des infras que je gère.</p>
<p>La configuration par défaut stocke les données de la messagerie dans une base de données SQLite. Cela a bien fonctionné pendant quelques années mais la base de données devient très rapidement obèse (plusieurs Go) et SQLite n'est plus adapté. C'est d'ailleurs recommandé d'utiliser PostgreSQL, naturellement plus adapté compte tenu de la grande quantité de données.</p>
<p>Voici la démarche pour basculer vers PostgreSQL depuis une base SQLite. J'évolue sur des machines sous Debian et j'ai installé Matrix-Synapse via <ahref="https://matrix-org.github.io/synapse/latest/setup/installation.html">les packages livrés par matrix.org</a>.</p>
<p>La première étape est de stopper le service et de faire une copie de la base de données. Je vous invite, si vous le pouvez, à duppliquer la copie de la base sur une autre machine.</p>
<p>Ensuite, il faut installer PostgreSQL. Je reprend la procédure de la <ahref="https://www.postgresql.org/download/linux/debian/">documentation officielle</a>.</p>
<p>Avant de lancer le script de migration, il faut duppliquer temporairement le contenu de <code>/etc/matrix-synapse/conf.d/server_name.yaml</code> dans <code>/etc/matrix-synapse/homeserver.yaml</code>. Éditer le fichier <code>/etc/matrix-synapse/homeserver.yaml</code> pour changer la configuration de la base de données :</p>
<pre><codeclass="window language-yaml">database:
name: psycopg2
args:
host: 127.0.0.1
port: 5432
user: matrix
password: "$3cr€t" # Indiquer le mot de passe saisi lors de la création d'utilisateur
database: matrix
cp_min: 5
cp_max: 10
</code></pre>
<p>Vous pouvez maintenant lancer la migration. Cela prendre un temps plus ou moins important selon le nombre d'enregistrements. Une base de données de 10Go a été migrée en 3 heures. Je vous invite à lancer la commande dans une session <code>tmux</code> ou <code>screen</code>.</p>
<p>Une fois la migration terminée, vous pourrez supprimer le contenu duppliqué de <code>/etc/matrix-synapse/conf.d/server_name.yaml</code> et relancer le service.</p>
<p>Dans le cas où il y aurait un problème, vous pouvez analyser les logs de Matrix-Synapse dans <code>/var/log/matrix-synapse/homeserver.log</code>. De mon coté, j'ai du faire une ou deux requêtes pour corriger des compteurs et tout était documenté dans ces logs.</p>
<description><![CDATA[<p>En février 2018, je publiais l'article <ahref="https://www.deblan.io/post/540/remote-i3-wm-ws-ma-telecommande-pour-bureau-debian-gnu-linux">Remote i3-wm WS : ma télécommande pour bureau Debian GNU/Linux</a> dans lequel je présentais une application pour télécommander un bureau Linux depuis une interface web.</p>
<p>Le projet est écrit en PHP et fonctionne à merveille. Cependant, il manque 2 fonctionnalités majeures : l'authentification de l'utilisateur et permettre de configurer l'interface sans passer par le code source. Cela permettrait de l'exploiter sur des environnements variés. Par ailleurs, le fait qu'il soit écrit en PHP peut faire rebuter son installation.</p>
<p>J'ai décidé de le réécrire complètement en GO en m'appuyant sur le framework <ahref="https://echo.labstack.com/">Echo</a>. Je peux à présent fournir un unique binaire et j'ai intégré un fichier de configuration en YAML pour paramétrer l'authentification et l'interface.</p>
<p>Pour démarrer le projet, télécharger la dernière version depuis <ahref="https://gitnet.fr/deblan/remote-i3wm-go/releases">Gitnet</a> puis générer un fichier de configuration en partant du <ahref="https://gitnet.fr/deblan/remote-i3wm-go/src/branch/main/config.yaml">modèle</a>.<br/>
Il suffira ensuite de lancer le binaire en spécifiant la variable d'environnement <code>DISPLAY</code> et le chemin du fichier de configuration en paramètre :</p>
<p>À l'heure actuelle, je ne compile pour que pour une architecture 64 bits mais je peux en intégrer d'autres si vous le désirez. Le code source est disponible dans le <ahref="https://gitnet.fr/deblan/remote-i3wm-go">dépot du projet</a>.</p>
<description><![CDATA[<p >Le gouvernement veut imposer aux éditeurs de navigateurs web de filtrer des sites selon une liste que le gouvernement gère et tiendrait secrète.</p><p>Si on peut naïvement se dire que ça permettrait de filtrer les sites nauséabonds, <strong>c'est aussi un nouvel outil terrible pour un gouvernement fasciste</strong> qui sera en mesure de censurer ce qu'il veut sans compte à rendre à personne.</p><p>Ce projet est une première car il s'inscrit directement dans les navigateurs (Firefox, Google Chrome, Microsoft Edge, Safari et les autres). </p><p><strong>Les pays qui utilisent des moyens similaires à l'échelle d'un état sont tous des dictatures ou fascistes.</strong></p><p>Je n'accepte pas que la France soit une locomotive pour ces régimes vers lesquels nous nous dirigeons chaque jour qui passe.</p><p>Le gouvernement a présenté le projet de loi devant le Parlement peu avant les vacances d’été et espère l’adopter aussi rapidement et discrètement que possible ; le gouvernement a même engagé la procédure accélérée, le vote devant avoir lieu à l’automne.</p><p>Un des moyens de réagir et de faire porter votre voix et c'est pourquoi je partage cette pétition de la fondation Mozilla. <br></p><divclass="ejs-link rounded-2xl shadow-md p-2 md:p-8 flex justify-start bg-box"style="width: 100%">
<divclass="ejs-link-content--title mb-5">Signez notre pétition pour empêcher la France d’obliger les navigateurs tels que Firefox de Mozilla à censurer des sites web </div>
<divclass="ejs-link-content--description">Le gouvernement français prépare une loi qui pourrait menacer la liberté sur Internet. Le projet de loi visant à sécuriser et réguler l’espace numérique (SREN) obligerait les navigateurs web, comme Firefox de Mozilla, à bloquer des sites web directement au niveau du navigateur. Cette mesure créerait un dangereux précédent et servirait de modèle à d’autres gouvernements pour à leur tour transformer les navigateurs en outils de censure gouvernementale.</div>
</div><p>Pour compléter le lien vers pétition, je vous invite à lire l'article de blog de Mozilla publié en juin dernier.<br></p><divclass="ejs-link rounded-2xl shadow-md p-2 md:p-8 flex justify-start bg-box"style="width: 100%">
<divclass="ejs-link-content--title mb-5"> La proposition française de bloquer les sites web via le navigateur nuira gravement à l’internet ouvert mondial </div>
<divclass="ejs-link-content--description">Dans une tentative louable, mais périlleuse de lutter contre la fraude en ligne, la France s’apprête à obliger les créateurs de navigateurs à mettre en œuvre une fonctionnalité technique relevant de la dystopie.</div>
<description><![CDATA[<p>Nous fêtons cette année [2019] les 50 ans dʹInternet et les 30 ans du WEB conçu au CERN par Tim Berners Lee. Que reste-t-il de ce réseau décentralisé et libre des origines ? Quelles sont les…</p>
]]></description>
<guidisPermaLink="false">652</guid>
<pubDate>Sat, 05 Aug 2023 11:28:00 +0200</pubDate>
<p>Murph est un <strong>framework open-source pour construire des CMS</strong>. Il est développé à l'aide de <strong>Symfony</strong> et permet de gérer des sites web avec <strong>plusieurs noms de domaines et en plusieurs langues</strong>.</p>
<p>Murph est exploité dans de nombreux projets personnels et professionnels avec des besoins spécifiques. L'architecture du CMS et les outils intégrés ont permis de gérér la quasi totalité des besoins. Je vous recommande chaudement de prendre le temps de tester Murph, vous pourriez être supri⋅e⋅s ! 😀</p>
<description><![CDATA[<p>Puis-je vous demander une copie de tous vos emails, de vos messages et photos sur Facebook, et de tous les fichiers sur votre ordinateur ? J’aimerais tout savoir sur votre vie privée.</p>
<p>Comment oseriez-vous répondre non ? Lorsque vous n’avez rien à cacher, vous ne pouvez pas faire de distinction entre ce que vous admettez rendre public et ce qui vous dérange un peu plus.</p>
<description><![CDATA[<p>Capture est un reverse proxy HTTP qui se place entre votre application cliente et une API. Capture génère un tableau de bord en temps réel des requêtes HTTP de votre application et des réponses de l'API (ou de n'importe quel service HTTP). À la manière des debuggeurs réseaux présents dans les navigateurs, vous pouvez analyser les entêtes, les contenus générés, les temps de réponse, etc.</p>
<p>Ce projet a été initialemement développé par <ahref="https://github.com/ofabricio">Fabricio</a> et les sources sont disponibles sur <ahref="https://github.com/ofabricio/capture">Github</a>.</p>
<p>Écrit en GO, il n'était malheureusement plus maintenu depuis près de 2 ans et c'est regrettable car il est simple et performant. J'ai donc entrepris un fork que j'ai commencé à enrechir avec un ou deux correctifs et des améliorations sur l'interface et sa configuration. La sources sont maintenant accessibles sur <ahref="https://gitnet.fr/deblan/capture">Gitnet</a>.</p>
<p>Une des nouvelles fonctionnalités est la capacité à inscrire sa configuration dans un fichier nommé par défaut <code>.capture.ini</code>. En effet, s'il est possible de tout passer en argument, c'est tout de même plus pratique de créer des fichiers de conf spécifiques pour chacun de vos projets.</p>
<p>Vous pouvez bien sur surcharger ses valeurs via les arguments. Il est également possible de spécifier le chemin vers le fichier de conf avec <code>-conf</code>.</p>
<p>Le projet est sous la licence MIT et si vous avez envie de contribuer, ça sera avec grand plaisir ! J'espère vraiment pouvoir faire revivre ce beau projet et qu'il sera utilise à d'autres développeur·euse·s 😄</p>
<description><![CDATA[<p>Si vous prêtez une attention forte à protéger votre vie privée, si vous utilisez des méthodes communications chiffrées, si vous installez des systèmes d'exploitations alternatifs, si vous documentez votre travail ou que vous partagez ces bonnes pratiques alors vous êtes dangereux⋅ses.</p>
<description><![CDATA[<p>J'ai régulièrement le besoin d'écrire des scripts shell un peu évolués. Il y a quelques mois, j'ai commencé à travailler sur un modèle que je met régulièrement à jour. Aujourd'hui, j'ai travaillé sur la couche pour gérer les logs et c'est pourquoi j'écris cet article.</p>
<p>Ce modèle contient les fonctions <code>usage</code> et <code>help</code> pour décrire le fonctionnement du programme. La fonction <code>on_interrupt</code> permet de gérer le signal <code>SIGINT</code> quand le programme est interrompu.</p>
<p>La fonction <code>main</code> est la fonction qui contient le code principal du script. Elle contient la gestion des paramètres passés au script. Par défaut, plusieurs y sont déjà intégrés : <code>-l</code> pour définir le niveau de log désiré et <code>-h</code> pour afficher l'aide.</p>
<p>Enfin, il y a la fonction <code>log</code> pour afficher des messages de debug avec différents niveaux de criticité. Cela permet de générer des messages qui seront affichés ou pas selon les besoins. Les messages sont colorés selon le niveau de criticité et ils sont redirigés vers <code>stderr</code>. Il est également possible d'ajouter la date.</p>
<p>Le code source est disponible sur <ahref="https://gitnet.fr/deblan/shell-base">Gitnet</a> et comme toujours, vous pouvez en faire ce que vous voulez !</p>
<p>En conclusion, le développement de ce modèle de script shell a été un projet passionnant et fructueux. En l'enrichissant régulièrement, j'ai pu créer une base solide pour gérer efficacement les fonctionnalités essentielles d'un script.</p>
<description><![CDATA[<p >Je vous propose une nouvelle série d'articles afin de partager ce qui a marqué ma veille technologique de ces dernières semaines. Je vais donc régulièrement rassembler pour vous une sélection de sites, articles, vidéos et podcasts qui ont suscité mon intérêt et qui je l'espère, vous inspireront également. Alors, installez vous confortablement et laissez-vous guider à travers mes découvertes.</p><divclass="ejs-link rounded-2xl shadow-md p-2 md:p-8 flex justify-start bg-box">
<divclass="ejs-link-content--title mb-5">J'ai lancé un mini ChatGPT en local sur mon CPU avec GPT4All</div>
<divclass="ejs-link-content--description">Oui c'est possible de faire tourner un mini ChatGPT sur votre processeur sans carte graphique et même sur un vieux ordinateur, merci GPT4All</div>
<divclass="ejs-link-content--title mb-5">Ne confondons pas hiérarchie et expertise -</div>
<divclass="ejs-link-content--description">«Le chef a toujours raison. » On rigole de cette «règle», mais c’est essentiellement ça qui fait que beaucoup de choses ne tournent plus rond un peu partout. Que ce soit dans une entreprise, à la tête d’un pays, ou dans une association, une équ…</div>
<divclass="ejs-link-content--title mb-5">GitHub - mifi/editly: Slick, declarative command line video editing & API</div>
<divclass="ejs-link-content--description">Slick, declarative command line video editing & API - GitHub - mifi/editly: Slick, declarative command line video editing & API</div>
<divclass="ejs-link-content--title mb-5">Mozilla arrive (doucement) sur Mastodon avec sa propre instance</div>
<divclass="ejs-link-content--description">Mozilla met un pied dans les réseaux sociaux et annonce sur son blog ouvrir une instance Mastodon en version beta privée. « Au risque d'être à la fois dramatique et cliché, je dirais que les réseaux sociaux sont cassés » lance Ste...</div>
<description><![CDATA[<p>Mozilla met un pied dans les réseaux sociaux et annonce sur son blog ouvrir une instance Mastodon en version beta privée. « Au risque d'être à la fois dramatique et cliché, je dirais que les réseaux sociaux sont cassés » lance Steve Teixeira, récent responsable …</p>
]]></description>
<guidisPermaLink="false">645</guid>
<pubDate>Sat, 06 May 2023 21:30:00 +0200</pubDate>
</item>
<item>
<title><![CDATA[100ème publication et 3ème anniversaire de Custom Menu 🎂]]></title>
<description><![CDATA[<p>Il y a trois ans, <ahref="https://gitnet.fr/deblan/side_menu/releases/tag/v1.0.0">j'ai publié la première version</a> de mon application. Elle a été développée pendant le premier confinement dans le but de remplacer le menu de Nextcloud, qui était devenu inutilisable à cause du grand nombre d'applications que j'avais installées.</p>
<p>Le <strong>27 mars dernier marquait le jour de la 100ème publication de Custom Menu</strong> et aujourd'hui <strong>je suis fiers de souffler sa 3ème bougie</strong> 🎂<br/>
C'est un outil que les gens apprécient et utilisent et c'est aussi quelque chose qui me fait réellement plaisir. Au moment où j'écris ces lignes, <strong>Custom Menu comptabilise 425 milles téléchargements</strong> !</p>
<p>Réalisée initialement sur Nextcloud 18, <strong><ahref="https://deblan.gitnet.page/side_menu_doc">Custom Menu</a> a franchi neufs versions majeures de Nextcloud</strong> grâce à un travail acharné et les nombreuses contributions que j'ai reçus. Les gens n'ont pas hésité à demander des fonctionnalités et à remonter des bugs. Les traducteur·rice·s ont passé pas mal de temps à traduire l'app qui est maintenant disponible dans 9 langues.</p>
<p>En plus du développement de l'application, j'ai aussi pris du temps lui <ahref="https://deblan.gitnet.page/side_menu_doc">créer un site web dédié</a>. On y retrouve les informations essentielles comme un guide d'installation, une FAQ, le journal des modifications, etc.</p>
<p><strong>Merci à toutes celles et ceux qui ont contribué</strong> à la réussite de Custom Menu et <strong>rendez-vous pour de nombreuses autres mises à jour à venir !</strong></p>
]]></description>
<guidisPermaLink="false">642</guid>
<pubDate>Tue, 28 Mar 2023 13:37:00 +0200</pubDate>
<description><![CDATA[<p>Le 20 mars dernier a été publiée <ahref="https://github.com/go-gitea/gitea/releases/tag/v1.19.0">la version v1.19.0 de Gitea</a> ! <ahref="https://forgejo.dev/">Forgejo, le soft fork de Gitea</a> poussé par <ahref="https://codeberg.org/">Codeberg</a> a naturellement publié une nouvelle version dans la foulée.</p>
<p>Gitea est un logiciel sous licence MIT qui permet de gérer le code source de ces projets. C'est une alternative légère et autonome qu'on peut auto-héberger dans un environnement très peu couteux. Gitea offre une interface utilisateur simple, complète et conviviale pour gérer les tâches classiques d'une forge.</p>
<p>Voici une liste des principales nouvelles fonctionnalités proposées dans cette version :</p>
<li>Il est désormais possible de configurer une entête <code>Authorization</code> dans les webhooks réalisées par la forge</li>
<li>Dès lors que c'est configuré, il est maintenant possible de répondre par mail aux notifications des Pull Request et des Issues (<ahref="https://docs.gitea.io/en-us/incoming-email/">documentation</a>)</li>
<li><ahref="https://www.deblan.io/post/623/gitea-1-17-integre-un-registre-de-paquets">Le registre de paquets</a> supporte à présent Cargo, Conda, Chef et <ahref="https://docs.gitea.io/en-us/config-cheat-sheet/#packages-packages">la gestion des quotas</a></li>
<li>On peut maintenant créer des Kanbans au niveau des utilisateurs et des organisations</li>
<li>Les étiquettes peuvent être scopées en utilisant un <code>/</code> pour mieux contextualiserles tickets</li>
<li>Il existe enfin des flux RSS pour suivre les versions et les tags d'un projet</li>
<li>Et parmi les fonctionnalités marquantes, <ahref="https://blog.gitea.io/2022/12/feature-preview-gitea-actions/">on a une première proposition de CI/CD intégrée</a> avec une syntaxe proche de Github Actions. Cette fonctionnalité n'est pas encore prête pour la production mais elle est très prometteuse !</li>
<p>Bien évidemment, cette nouvelle mouture inclue pas mal de correctifs et d'autres améliorations que vous laisse découvrir dans le<ahref="https://github.com/go-gitea/gitea/releases/tag/v1.19.0"> journal des modifications</a>.</p>
<description><![CDATA[<p>Courant mars, l’Assemblée nationale va se prononcer sur le projet de loi relatif aux Jeux olympiques et paralympiques, déjà adopté par le Sénat.</p>
<p>En son sein, <strong>l’article 7 vise à autoriser la vidéosurveillance automatisée (VSA)</strong>, cet outil de surveillance biométrique qui, à travers des algorithmes couplés aux caméras de surveillance, détecte, analyse et classe nos corps et comportements dans l’espace public. <strong>Il s’agit d’un changement d’échelle sans précédent dans les capacités de surveillance et de répression de l’État et de sa police</strong>.</p>
<description><![CDATA[<p><strong>Il existe une quantité importante d'outils pour éditer des images</strong>. Ce sont soit des logiciels à installer ou soit des services en ligne. Mais parmi ces nombreux choix, je n'en ai trouvé aucun qui soit <strong>à la fois libre et qui permettrait de s'abstraire de la mise en page</strong>.</p>
<p>Dès lors que je décide de publier un article sur le blog, je vais partager son lien sur quelques sites dont des réseaux sociaux. Ces réseaux vont récupérer le contenu de la page de l'article et extraire un certain nombre d'informations dont <strong>les données Open Graph</strong>. Le protocole Open Graph permet aux réseaux sociaux de comprendre comment afficher l'aperçu d'une page web partagée par un utilisateur. Les principales données qui sont récupérées sont le titre de la page, sa description et l'image qui sera affichée pour le partage.</p>
<p>J'avais pour habitude d'ouvrir <strong>Inkscape</strong> pour éditer cette image. Cela fonctionne très bien mais ça demande un peu de temps et si je souhaites publier ailleurs que depuis ma machine, c'est tout de suite un casse-tête.</p>
<p>J'ai parcouru le web pour trouver un outil qui répondrait à mes envies et <strong>j'ai finalement décidé d'en développer un</strong> 🤪</p>
<p>Cet outil permet donc de créer une image de la dimension qu'on veut. Vous pourrez saisir un titre, une description et divers informations comme l'auteur et des logos. Il y a quelques options pour changer les couleurs, ajouter une image et un overlay de couleur avec une opacité. Tout le paramétrage est enregistré dans le navigateur.</p>
<p>Le projet est publié sous <strong>licence GPLv3</strong> et <ahref="https://gitnet.fr/deblan/og-image">son code est disponible sur Gitnet</a>. J'ai décidé d'utiliser <ahref="https://vuejs.org/">VueJS3</a> pour gérer toute la partie interaction et <ahref="https://tailwindcss.com/">Tailwind CSS</a> pour la présentation.</p>
<p>Si vous avez envie d'essayer, vous pouvez utiliser <ahref="https://deblan.gitnet.page/og-image/">la version en ligne</a>. Elle est hébergée sur <strong>Gitnet Pages</strong>, <ahref="https://www.deblan.io/post/624/gitnet-heberge-vos-pages-statiques">mon service d'hébergement de pages statiques</a> similaire à Github Pages.<br/>
Vous pouvez utiliser cet outil sans vous tracasser pour vos données car rien n'est stocké sur mon serveur. Toutes les données et les traitements sont réalisés dans votre navigateur, ce qui en fait un outil simple à auto-héberger.</p>
<description><![CDATA[<p>La gestion des dépendances dans un projet est quelque chose de complexe. Il y a autant de gestionnaires qu'il y a de langages et leur politique de gestion des versions varient beaucoup. Par exemple, <ahref="https://getcomposer.org/">composer</a>, le gestionnaire de dépendances de PHP ne fait pas apparaître le numéro de version mineure tandis que npm (<ahref="https://nodejs.org/en/">NodeJS</a>) le fait. Par ailleurs, dès lors qu'un projet est installé et qu'il n'est pas à jour alors il peut avoir un décalage entre les déclarations et la réalité. Il n'est donc pas fiable de regarder ces déclarations de versions pour analyser un projet.</p>
<p>Les gestionnaires de dépendances génèrent (presque) tous des fichiers de lock qui listent les versions installées. <strong>Open Source Vulnerability Detector</strong> aka <ahref="https://github.com/G-Rath/osv-detector">osv-detector</a> s'appuie sur ces fichiers pour lancer des détections de vulnérabilités. Il s'agit d'un projet écrit en Go, léger et très simple d'utilisation. Les sources sont disponibles sur <ahref="https://github.com/G-Rath/osv-detector">Github</a> et les <ahref="https://github.com/G-Rath/osv-detector/releases">binaires y sont également publiés</a>.<br/>
Pour l'utiliser, il suffit de lui passer au moins un fichier de lock et il s'occupe du reste.</p>
<p>Si des vulnérabilités sont détectées alors elles sont listées et le programme retourne un code de sortie à <code>1</code>. Les vulnérabilités sont accompagnées d'un lien pour en apprendre un peu plus comme par exemple les versions corrigées.</p>
<p>J'ai packagé <ahref="https://github.com/G-Rath/osv-detector">osv-detector</a> dans une image docker pour permettre de l'utiliser dans le cadre d'une intégration continue.</p>
<p><ahref="https://github.com/G-Rath/osv-detector">osv-detector</a> est un outil très pratique pour analyser rapidement les dépendances d'un projet et identifier rapidement les vulnérabilités. Il s'intègre parfaitement dans une chaîne de production et peut ainsi aider à s'assurer que le code est sécurisé.</p>
<description><![CDATA[<p>En juin dernier, j'ai migré ma plateforme d'intégration continue vers <ahref="https://woodpecker-ci.org/">Woodpecker CI</a> et j'en suis très satisfait.</p>
<p><ahref="https://woodpecker-ci.org/">Woodpecker CI</a> permet de créer des conditions d'exécution des étapes avec la clause <code>evaluate</code>. Elle doit être définie dans la section <code>when</code> des étapes concernées. Voici un exemple avec une condition sur la valeur de la variable <code>CI_BUILD_EVENT</code> pour l'étape <code>foo</code>.</p>
<p>Je souhaite avoir est une notification par mail quand une étape du pipeline échoue ou dès lors que le précédent pipeline a échoué. L'idée est d'être notifié quand il y a eu un problème et quand il est résolu. L'image plus ou moins officielle pour envoyer du mail est <ahref="https://github.com/drillster/drone-email">drillster/drone-email</a>, initialement destinée à <ahref="https://www.drone.io/">Drone</a>. En combinant cette image et <code>evaluate</code>, je pensais pouvoir réaliser ce que je voulais :</p>
<p>Le problème est que l'expression est évaluée avant la génération du pipeline donc <code>CI_STEP_STATUS</code> n'existe pas encore et l'étape <code>mail</code> est ignorée sauf si le précédent pipeline a échoué.</p>
<p>Pour résoudre mon problème, j'ai forké <ahref="https://github.com/drillster/drone-email">drillster/drone-email</a> pour créer <ahref="https://gitnet.fr/deblan/woodpecker-email">deblan/woodpecker-email</a>. Cette image est totalement orientée vers <ahref="https://woodpecker-ci.org/">Woodpecker CI</a> et permet de définir une <code>evaluate</code> au niveau de <code>settings</code>. J'ai fais en sorte que l'expression soit évaluée au moment de l'exécution de l'étape et si la condition n'est pas validée alors aucun mail n'est envoyé.</p>
<p>Le code source est disponible sur <ahref="https://gitnet.fr/deblan/woodpecker-email">Gitnet</a> et l'image est à la fois publiée sur <ahref="https://hub.docker.com/r/deblan/woodpecker-email">Docker Hub</a> et <ahref="https://gitnet.fr/deblan/-/packages/container/woodpecker-email/latest">Gitnet</a>.</p>
<description><![CDATA[<p>Ces douze derniers mois ont été extrêmement riches avec une activité associative prenante, un projet de construction de maison qui démarre enfin, le démarrage d'une entreprise, un nouveau job et la maintenance de logiciels libres 🙂.</p>
<p>En début d’année, un véritable virage a été pris par l'association <ahref="https://www.tinternet.net/">Tinternet & Cie</a>. En effet, nous avons décidé de renforcer notre équipe d’intervenant⋅e⋅s et d’employer une coordinatrice et nous en sommes très fiers ! Le projet, mené en collaboration avec le département du Doubs, a permis de mettre en œuvre plus de 150 interventions durant le premier semestre dans de nombreux établissements scolaires, notamment des collèges et lycées 👩🏫. Par ailleurs, nous avons également mené de nombreuses permanences pendant lesquelles nous parlions de logiciels libres et de vie privée. Tout cela va continuer en 2023 !</p>
<p>Depuis fin 2021, ma moitié et moi avons démarré un des grands projets de notre vie, la construction d'une maison 🛖. Nous avons du passé de nombreux mois dans les papiers, stressé⋅e⋅s par une situation économique compliquée. Fort heureusement, nous avons eu un peu de chance et les travaux ont démarrés début décembre !</p>
<p>En milieu d'année, j'ai décidé de quitter le poste de responsable informatique dans lequel j'évoluais depuis quelques années. Je désirais me reconcentrer dans le développement web et l'administration système. J'ai donc rejoins Trinaps, un opérateur local avec de belles valeurs et une équipe ultra motivante ! Cela m'a permis d'apprendre Ruby, un langage que j'avais tendance à fuir jusqu'à présent 😌<br/>
À coté de ça, un ami me parlait de son projet d'entreprise intimement lié au RGPD, le Règlement Général sur la Protection des Données et pour un tas de bonnes raisons, j'ai décidé de l'accompagner.</p>
<p>Enfin, j'ai continué de maintenir mes projets avec une attention particulière portée sur <ahref="https://doc.murph-project.org/">Murph</a>, mon <ahref="https://fr.wikipedia.org/wiki/Content_management_framework">CMF</a> qui repose sur Symfony, et <ahref="https://preprod.deblan.cloud/index.php/apps/side_menu/">Custom Menu</a>, une application destinée à Nextcloud.</p>
<description><![CDATA[<p>Le FabLab des fabriques de Besançon et l’association Tinternet & cie vous invitent pour une journée de découverte et de fabrication le samedi 21 janvier 2022 !</p>