deblan.io-gemini/blog/feed.xml
2024-01-05 22:48:52 +01:00

644 lines
60 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>Blog - Simon Vieille</title>
<link>https://www.deblan.io/</link>
<description>DevOp animé par la culture du libre et du hacking</description>
<language>fr</language>
<item>
<title><![CDATA[Murph v1.23 et Custom Menu v3.11]]></title>
<link href="https://www.deblan.io/post/658/murph-v1-23-custom-menu-v3-11" type="text/html">https://www.deblan.io/post/658/murph-v1-23-custom-menu-v3-11</link>
<link href="gemini://deblan.io/posts/658.gmi" type="text/gemini" />
<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 <a href="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><a href="https://doc.murph-project.org/"><img src="/uploads/content/658/screenshot_20231106.png" alt="Documentation Murph" /></a></p>
<p>Quant à <a href="https://deblan.gitnet.page/side_menu_doc/">Custom Menu</a>, la version <a href="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><img src="/uploads/content/658/screenshot_20231106_1.png" alt="Custom Menu" /></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>
<guid isPermaLink="false">658</guid>
<pubDate>Mon, 06 Nov 2023 11:30:00 +0100</pubDate>
<category><![CDATA[Développement]]></category>
<category><![CDATA[Logiciel libre]]></category>
<category><![CDATA[Projets personnels]]></category>
</item>
<item>
<title><![CDATA[Matrix-Synapse : migrer de SQLite à PostgreSQL]]></title>
<link href="https://www.deblan.io/post/655/matrix-synapse-migrer-de-sqlite-a-postgresql" type="text/html">https://www.deblan.io/post/655/matrix-synapse-migrer-de-sqlite-a-postgresql</link>
<link href="gemini://deblan.io/posts/655.gmi" type="text/gemini" />
<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 <a href="https://matrix-org.github.io/synapse/latest/setup/installation.html">les packages livrés par matrix.org</a>.</p>
<p>Quelques recomandations avant d'opérer la migration :</p>
<ul>
<li>Avoir l'espace disque nécessaire pour accueillir une copie de la base de données SQLite</li>
<li>Avoir l'espace disque nécessaire pour héberger les données dans PostgreSQL</li>
<li>Communiquer auprès de vos utilisateur·rice·s car la procédure prendra des heures et le service sera inaccessible</li>
</ul>
<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>
<pre><code class="window language-bash">$ sudo systemctl stop matrix-synapse.service
$ sudo cp -v /var/lib/matrix-synapse/homeserver.db{,.bk}
</code></pre>
<p>Ensuite, il faut installer PostgreSQL. Je reprend la procédure de la <a href="https://www.postgresql.org/download/linux/debian/">documentation officielle</a>.</p>
<pre><code class="window language-bash">$ sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" &gt; /etc/apt/sources.list.d/pgdg.list'
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get -y install postgresql
$ passwd postgres # Changement du mot de passe de l'utilisateur "postgres"
</code></pre>
<p>Éditer le fichier <code>/etc/postgresql/15/main/pg_hba.conf</code> puis opérer ces modifications :</p>
<pre><code class="window language-diff">-local all postgres peer
+local all all peer
-host all all 127.0.0.1/32 scram-sha-256
+host all all 127.0.0.1/32 md5
-host all all ::1/128 scram-sha-256
+host all all ::1/128 md5
</code></pre>
<p>On relance ensuite PostgreSQL :</p>
<pre><code class="window language-bash">$ sudo systemctl start postgresql.service
</code></pre>
<p>C'est maintenant le moment de créer une base et un compte nommés <code>matrix</code>.</p>
<pre><code class="window language-bash">$ su - postgres
$ createuser --pwprompt matrix # Conserver le mot de passe que vous allez saisir pour plus tard
$ createdb -e -E UNICODE --template=template0 --locale=C -O matrix matrix
$ psql -d matrix
synapse=# GRANT ALL ON SCHEMA public TO matrix;
</code></pre>
<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><code class="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>
<pre><code class="window language-bash">$ sudo apt-get install tmux
$ tmux
$ synapse_port_db --curses \
--sqlite-database /var/lib/matrix-synapse/homeserver.db \
--postgres-config /etc/matrix-synapse/homeserver.yaml
</code></pre>
<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>
<pre><code class="window language-bash">$ sudo systemctl start matrix-synapse.service
</code></pre>
<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>
<p>Je pense avoir donné toutes les indications pour que cela se passe bien. N'hésitez pas à laisser un commentaire si vous rencontrez un problème.</p>
]]></description>
<guid isPermaLink="false">655</guid>
<pubDate>Sun, 10 Sep 2023 18:30:00 +0200</pubDate>
<category><![CDATA[Informatique]]></category>
</item>
<item>
<title><![CDATA[Remote i3-wm WS : ma télécommande pour bureau GNU/Linux (v2)]]></title>
<link href="https://www.deblan.io/post/654/remote-i3-wm-ws-ma-telecommande-pour-bureau-gnu-linux-v2" type="text/html">https://www.deblan.io/post/654/remote-i3-wm-ws-ma-telecommande-pour-bureau-gnu-linux-v2</link>
<link href="gemini://deblan.io/posts/654.gmi" type="text/gemini" />
<description><![CDATA[<p>En février 2018, je publiais l'article <a href="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 <a href="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><img src="/uploads/content/654/remotei32.png" alt="Remote i3-wm GO" /></p>
<p>Pour démarrer le projet, télécharger la dernière version depuis <a href="https://gitnet.fr/deblan/remote-i3wm-go/releases">Gitnet</a> puis générer un fichier de configuration en partant du <a href="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>
<pre><code class="window language-bash">$ DISPLAY=:0 ./app-linux-amd64 config.yaml
</code></pre>
<p>Une fois démarré, l'interface web est par défaut accessible à l'adresse <code>http://127.0.0.1:4000</code>.</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 <a href="https://gitnet.fr/deblan/remote-i3wm-go">dépot du projet</a>.</p>
<p>La première version avait sucité un certain intérêt, j'espère que cette nouvelle version plus simple à déployer vous plaira !</p>
]]></description>
<guid isPermaLink="false">654</guid>
<pubDate>Sun, 27 Aug 2023 14:45:00 +0200</pubDate>
<category><![CDATA[Logiciel libre]]></category>
<category><![CDATA[Projets personnels]]></category>
</item>
<item>
<title><![CDATA[Signez la pétition pour empêcher la France dobliger les navigateurs tels que Firefox de Mozilla à censurer des sites web]]></title>
<link href="https://www.deblan.io/post/653/signez-la-petition-pour-empecher-la-france-d-obliger-les-navigateurs-tels-que-firefox-de-mozilla-a-censurer-des-sites-web" type="text/html">https://www.deblan.io/post/653/signez-la-petition-pour-empecher-la-france-d-obliger-les-navigateurs-tels-que-firefox-de-mozilla-a-censurer-des-sites-web</link>
<link href="gemini://deblan.io/posts/653.gmi" type="text/gemini" />
<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 ladopter 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 à lautomne.</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><div class="ejs-link rounded-2xl shadow-md p-2 md:p-8 flex justify-start bg-box" style="width: 100%">
<a href="https://foundation.mozilla.org/fr/campaigns/sign-our-petition-to-stop-france-from-forcing-browsers-like-mozillas-firefox-to-censor-websites/" class="ejs-link--anchor ejs-link--anchor--with-image" target="_blank" rel="noopener">
<div class="ejs-link-content">
<div class="ejs-link-content--title mb-5">Signez notre pétition pour empêcher la France dobliger les navigateurs tels que Firefox de Mozilla à censurer des sites web </div>
<div class="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 lespace 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 à dautres gouvernements pour à leur tour transformer les navigateurs en outils de censure gouvernementale.</div>
<div class="ejs-link-content--link">
<span class="deblan-icon deblan-icon-link"></span>
https://foundation.mozilla.org/fr/campaigns/sign-our-petition-to-stop-france-from-forcing-browsers-like-mozillas-firefox-to-censor-websites/
</div>
</div>
<div class="ejs-link--image rounded-full" style="background-image: url('https://assets.mofoprod.net/network/images/mozilla-og-image-min.original.jpg'), url('/build/images/quick-post-load2.4e8364df.png')"></div>
</a>
</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><div class="ejs-link rounded-2xl shadow-md p-2 md:p-8 flex justify-start bg-box" style="width: 100%">
<a href="https://blog.mozilla.org/netpolicy/2023/06/27/francaise-bloquer-sites/" class="ejs-link--anchor ejs-link--anchor--with-image" target="_blank" rel="noopener">
<div class="ejs-link-content">
<div class="ejs-link-content--title mb-5"> La proposition française de bloquer les sites web via le navigateur nuira gravement à linternet ouvert mondial </div>
<div class="ejs-link-content--description">Dans une tentative louable, mais périlleuse de lutter contre la fraude en ligne, la France sapprête à obliger les créateurs de navigateurs à mettre en œuvre une fonctionnalité technique relevant de la dystopie.</div>
<div class="ejs-link-content--link">
<span class="deblan-icon deblan-icon-link"></span>
https://blog.mozilla.org/netpolicy/2023/06/27/francaise-bloquer-sites/
</div>
</div>
<div class="ejs-link--image rounded-full" style="background-image: url('https://assets.mofoprod.net/network/images/mozilla-og-image-min.original.jpg'), url('/build/images/quick-post-load2.4e8364df.png')"></div>
</a>
</div>]]></description>
<guid isPermaLink="false">653</guid>
<pubDate>Thu, 17 Aug 2023 13:00:00 +0200</pubDate>
<category><![CDATA[Politique]]></category>
</item>
<item>
<title><![CDATA[Internet devient-il un Minitel 2.0 ou un bien commun ? - Benjamin Bayart - RTS Libre à lire !]]></title>
<link href="https://www.deblan.io/post/652/internet-devient-il-un-minitel-2-0-ou-un-bien-commun-benjamin-bayart-rts-libre-a-lire" type="text/html">https://www.deblan.io/post/652/internet-devient-il-un-minitel-2-0-ou-un-bien-commun-benjamin-bayart-rts-libre-a-lire</link>
<link href="gemini://deblan.io/posts/652.gmi" type="text/gemini" />
<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>
<guid isPermaLink="false">652</guid>
<pubDate>Sat, 05 Aug 2023 11:28:00 +0200</pubDate>
<category><![CDATA[Contenu externe]]></category>
<category><![CDATA[Politique]]></category>
</item>
<item>
<title><![CDATA[Murph v1.20 is out! 📣]]></title>
<link href="https://www.deblan.io/post/651/murph-v1-20-is-out" type="text/html">https://www.deblan.io/post/651/murph-v1-20-is-out</link>
<link href="gemini://deblan.io/posts/651.gmi" type="text/gemini" />
<description><![CDATA[<p>Une nouvelle version de <strong>Murph</strong> a été publiée le 27 juillet 2023 🥳</p>
<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>Voici une liste des changements importants :</p>
<ul>
<li>Le contrôleur pour gérer les utilisateurs est maintenant intégré au squelette pour faciliter la surcharge dans les projets spécifiques</li>
<li>Le générateur de CRUD va automatiquement créer des templates pour l'affichage d'une entité et celui du formulaire d'édition</li>
<li>Il est maintenant possible d'injecter des paramètres dans le formulaire des filtres dans le CRUD</li>
<li>Un nouveau champ <code>BooleanField</code> a été ajouté pour afficher une données booléenne dans la liste du CRUD</li>
<li>De nouveaux blocs Twig font leur apparition dans le template <code>index.html.twig</code> du CRUD</li>
<li>Le générateur de page permet de définir le bloc <code>ChoiceBlock</code></li>
<li>L'affichage des détails d'un fichier dans le gestionnaire de fichier est améliorée</li>
<li>On peut définir une fonction personnalisée pour générer les noms de fichier dans le service <code>FileUploadHandler</code></li>
<li>La fonction Twig <code>entity_to_array</code> possède deux nouveaux paramètres pour filtrer les données</li>
<li>Les paramètres <code>core.site.name</code> et <code>core.site.logo</code> ne sont plus obligatoires</li>
</ul>
<p>Des corrections divers ont été apportées comme la correction d'un bug avec PostgreSQL.</p>
<p>Les journaux complets sont disponibles sur la <a href="https://doc.murph-project.org/changelog/core/">📘 documentation</a>.</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>
<guid isPermaLink="false">651</guid>
<pubDate>Fri, 28 Jul 2023 10:30:00 +0200</pubDate>
<category><![CDATA[Développement]]></category>
<category><![CDATA[Logiciel libre]]></category>
<category><![CDATA[Projets personnels]]></category>
</item>
<item>
<title><![CDATA[Je n'ai rien à cacher.]]></title>
<link href="https://www.deblan.io/post/650/je-nai-rien-a-cacher" type="text/html">https://www.deblan.io/post/650/je-nai-rien-a-cacher</link>
<link href="gemini://deblan.io/posts/650.gmi" type="text/gemini" />
<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 ? Jaimerais tout savoir sur votre vie privée.</p>
<p>Comment oseriez-vous répondre non ? Lorsque vous navez 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>
<guid isPermaLink="false">650</guid>
<pubDate>Wed, 05 Jul 2023 13:19:00 +0200</pubDate>
<category><![CDATA[Contenu externe]]></category>
</item>
<item>
<title><![CDATA[Capture, un reverse proxy pour analyser les requêtes de vos applications]]></title>
<link href="https://www.deblan.io/post/648/capture-un-proxy-pour-analyser-les-requetes-de-vos-applications" type="text/html">https://www.deblan.io/post/648/capture-un-proxy-pour-analyser-les-requetes-de-vos-applications</link>
<link href="gemini://deblan.io/posts/648.gmi" type="text/gemini" />
<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 <a href="https://github.com/ofabricio">Fabricio</a> et les sources sont disponibles sur <a href="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 <a href="https://gitnet.fr/deblan/capture">Gitnet</a>.</p>
<p><img src="https://upload.deblan.org/u/2023-05/64746afd.png" alt="Capture" /></p>
<p>Voici les méthodes basiques pour lancer capture :</p>
<pre><code class="window language-bash">$ capture -url=https://example.com/
$ docker run -p 9000:9000 -p 9001:9001 deblan/capture -url=https://example.com/
</code></pre>
<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>
<pre><code class="window language-bash">$ cat .capture.ini
url = https://example.com/
port = 9000
dashboard = 9001
captures = 16
$ capture
</code></pre>
<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>
<guid isPermaLink="false">648</guid>
<pubDate>Wed, 07 Jun 2023 09:00:00 +0200</pubDate>
<category><![CDATA[Développement]]></category>
<category><![CDATA[Projets personnels]]></category>
</item>
<item>
<title><![CDATA[Affaire du 8 décembre : le chiffrement des communications assimilé à un comportement terroriste]]></title>
<link href="https://www.deblan.io/post/649/affaire-du-8-decembre-le-chiffrement-des-communications-assimile-a-un-comportement-terroriste" type="text/html">https://www.deblan.io/post/649/affaire-du-8-decembre-le-chiffrement-des-communications-assimile-a-un-comportement-terroriste</link>
<link href="gemini://deblan.io/posts/649.gmi" type="text/gemini" />
<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>
<p><strong>J'ai honte.</strong></p>
]]></description>
<guid isPermaLink="false">649</guid>
<pubDate>Mon, 05 Jun 2023 13:20:00 +0200</pubDate>
<category><![CDATA[Contenu externe]]></category>
<category><![CDATA[Politique]]></category>
</item>
<item>
<title><![CDATA[Un modèle pour démarrer un script shell]]></title>
<link href="https://www.deblan.io/post/647/modele-pour-demarrer-script-shell" type="text/html">https://www.deblan.io/post/647/modele-pour-demarrer-script-shell</link>
<link href="gemini://deblan.io/posts/647.gmi" type="text/gemini" />
<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>
<div class="code-window"></div>
<iframe width="100%" style="min-height: 50vh; border: 2px solid #1d2231; border-bottom-left-radius: 1rem; border-bottom-right-radius: 1rem" src="https://gitnet.fr/deblan/shell-base/src/branch/main/script?embed=1"></iframe>
<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><img src="/uploads/content/647/screenshot_20230521.png" alt="" /></p>
<p>Le code source est disponible sur <a href="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>
<guid isPermaLink="false">647</guid>
<pubDate>Sun, 21 May 2023 19:00:00 +0200</pubDate>
<category><![CDATA[Développement]]></category>
</item>
<item>
<title><![CDATA[Quoi de neuf sur les internets ? #1]]></title>
<link href="https://www.deblan.io/post/646/quoi-de-neuf-sur-les-internets-1" type="text/html">https://www.deblan.io/post/646/quoi-de-neuf-sur-les-internets-1</link>
<link href="gemini://deblan.io/posts/646.gmi" type="text/gemini" />
<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> <div class="ejs-link rounded-2xl shadow-md p-2 md:p-8 flex justify-start bg-box">
<a href="https://zonetuto.fr/intelligence-artificielle/jai-lance-un-mini-chatgpt-en-local-sur-mon-cpu-avec-gpt4all/" class="ejs-link--anchor ejs-link--anchor--with-image" target="_blank">
<div class="ejs-link-content">
<div class="ejs-link-content--title mb-5">J&#039;ai lancé un mini ChatGPT en local sur mon CPU avec GPT4All</div>
<div class="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>
<div class="ejs-link-content--link">
<span class="deblan-icon deblan-icon-link"></span>https://zonetuto.fr/intelligence-artificielle/jai-lance-un-mini-chatgpt-en-local-sur-mon-cpu-avec-gpt4all/</div>
</div>
<div class="ejs-link--image rounded-full" style="background-image: url('https://zonetuto.fr/wp-content/uploads/2023/04/chatgpt-gpt4all-robot-ia-illustration.jpg'), url('/build/images/quick-post-load2.4e8364df.png')"></div>
</a>
</div>
<hr > <div class="ejs-link rounded-2xl shadow-md p-2 md:p-8 flex justify-start bg-box">
<a href="https://lehollandaisvolant.net/?d=2023/05/04/19/21/50-ne-confondons-pas-hierarchie-et-expertise" class="ejs-link--anchor ejs-link--anchor--with-image" target="_blank">
<div class="ejs-link-content">
<div class="ejs-link-content--title mb-5">Ne confondons pas hiérarchie et expertise -</div>
<div class="ejs-link-content--description">« Le chef a toujours raison. » On rigole de cette « règle », mais cest essentiellement ça qui fait que beaucoup de choses ne tournent plus rond un peu partout. Que ce soit dans une entreprise, à la tête dun pays, ou dans une association, une équ…</div>
<div class="ejs-link-content--link">
<span class="deblan-icon deblan-icon-link"></span>https://lehollandaisvolant.net/?d=2023/05/04/19/21/50-ne-confondons-pas-hierarchie-et-expertise</div>
</div>
<div class="ejs-link--image rounded-full" style="background-image: url('https://lehollandaisvolant.net/favicon.ico'), url('/build/images/quick-post-load2.4e8364df.png')"></div>
</a>
</div>
<hr > <div class="ejs-link rounded-2xl shadow-md p-2 md:p-8 flex justify-start bg-box">
<a href="https://github.com/mifi/editly" class="ejs-link--anchor ejs-link--anchor--with-image" target="_blank">
<div class="ejs-link-content">
<div class="ejs-link-content--title mb-5">GitHub - mifi/editly: Slick, declarative command line video editing &amp; API</div>
<div class="ejs-link-content--description">Slick, declarative command line video editing & API - GitHub - mifi/editly: Slick, declarative command line video editing & API</div>
<div class="ejs-link-content--link">
<span class="deblan-icon deblan-icon-link"></span>https://github.com/mifi/editly</div>
</div>
<div class="ejs-link--image rounded-full" style="background-image: url('https://opengraph.githubassets.com/a7e8c5c68095879f8165094e8804bb8ca8e6c87b84635f0fa6e8ecd36eda3068/mifi/editly'), url('/build/images/quick-post-load2.4e8364df.png')"></div>
</a>
</div>
<hr > <div class="ejs-link rounded-2xl shadow-md p-2 md:p-8 flex justify-start bg-box">
<a href="https://www.nextinpact.com/lebrief/71614/mozilla-arrive-doucement-sur-mastodon-avec-sa-propre-instance" class="ejs-link--anchor ejs-link--anchor--with-image" target="_blank">
<div class="ejs-link-content">
<div class="ejs-link-content--title mb-5">Mozilla arrive (doucement) sur Mastodon avec sa propre instance</div>
<div class="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>
<div class="ejs-link-content--link">
<span class="deblan-icon deblan-icon-link"></span>https://www.nextinpact.com/lebrief/71614/mozilla-arrive-doucement-sur-mastodon-avec-sa-propre-instance</div>
</div>
<div class="ejs-link--image rounded-full" style="background-image: url('https://cdnx.nextinpact.com/data-next/images/bd/wide-linked-media/1986.jpg'), url('/build/images/quick-post-load2.4e8364df.png')"></div>
</a>
</div>
<p >J'ai tenté de mélanger différents sujets, dans l'espoir que ce nouveau format vous aura plu. </p><p >À bientôt !<br></p>]]></description>
<guid isPermaLink="false">646</guid>
<pubDate>Tue, 09 May 2023 14:00:00 +0200</pubDate>
<category><![CDATA[Contenu externe]]></category>
<category><![CDATA[Quoi de neuf sur les internets ?]]></category>
</item>
<item>
<title><![CDATA[Mozilla arrive (doucement) sur Mastodon avec sa propre instance]]></title>
<link href="https://www.deblan.io/post/645/mozilla-arrive-doucement-sur-mastodon-avec-sa-propre-instance" type="text/html">https://www.deblan.io/post/645/mozilla-arrive-doucement-sur-mastodon-avec-sa-propre-instance</link>
<link href="gemini://deblan.io/posts/645.gmi" type="text/gemini" />
<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 &hellip;</p>
]]></description>
<guid isPermaLink="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>
<link href="https://www.deblan.io/post/642/100eme-publication-et-3eme-anniversaire-de-custom-menu" type="text/html">https://www.deblan.io/post/642/100eme-publication-et-3eme-anniversaire-de-custom-menu</link>
<link href="gemini://deblan.io/posts/642.gmi" type="text/gemini" />
<description><![CDATA[<p>Il y a trois ans, <a href="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><a href="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 <a href="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>
<guid isPermaLink="false">642</guid>
<pubDate>Tue, 28 Mar 2023 13:37:00 +0200</pubDate>
<category><![CDATA[Logiciel libre]]></category>
<category><![CDATA[Projets personnels]]></category>
</item>
<item>
<title><![CDATA[Gitea et forgejo v1.19.0 sont dans les bacs 🥳]]></title>
<link href="https://www.deblan.io/post/641/gitea-et-forgejo-v1-19-0-sont-dans-les-bacs" type="text/html">https://www.deblan.io/post/641/gitea-et-forgejo-v1-19-0-sont-dans-les-bacs</link>
<link href="gemini://deblan.io/posts/641.gmi" type="text/gemini" />
<description><![CDATA[<p>Le 20 mars dernier a été publiée <a href="https://github.com/go-gitea/gitea/releases/tag/v1.19.0">la version v1.19.0 de Gitea</a> ! <a href="https://forgejo.dev/">Forgejo, le soft fork de Gitea</a> poussé par <a href="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>
<ul>
<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 (<a href="https://docs.gitea.io/en-us/incoming-email/">documentation</a>)</li>
<li><a href="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 <a href="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, <a href="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>
</ul>
<p>Bien évidemment, cette nouvelle mouture inclue pas mal de correctifs et d'autres améliorations que vous laisse découvrir dans le<a href="https://github.com/go-gitea/gitea/releases/tag/v1.19.0"> journal des modifications</a>.</p>
<p>Je vous invite à prendre du temps pour découvrir l'ensemble des nouvelles fonctionnalités 🤗</p>
]]></description>
<guid isPermaLink="false">641</guid>
<pubDate>Mon, 27 Mar 2023 08:30:00 +0200</pubDate>
<category><![CDATA[Développement]]></category>
<category><![CDATA[Logiciel libre]]></category>
</item>
<item>
<title><![CDATA[Loi J.O. : refusons la surveillance biométrique]]></title>
<link href="https://www.deblan.io/post/640/loi-jo-refusons-surveillance-biometrique" type="text/html">https://www.deblan.io/post/640/loi-jo-refusons-surveillance-biometrique</link>
<link href="gemini://deblan.io/posts/640.gmi" type="text/gemini" />
<description><![CDATA[<p>Courant mars, lAssemblé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>larticle 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 lespace public. <strong>Il sagit dun 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>
<p><a href="https://www.laquadrature.net/biometrie-jo/" class="btn btn-primary">
Accès au site
</a></p>
]]></description>
<guid isPermaLink="false">640</guid>
<pubDate>Sun, 19 Feb 2023 17:25:00 +0100</pubDate>
<category><![CDATA[Contenu externe]]></category>
<category><![CDATA[Politique]]></category>
</item>
<item>
<title><![CDATA[Générer des images pour le partage sur les réseaux]]></title>
<link href="https://www.deblan.io/post/638/generer-images-partage-reseaux-opengraph" type="text/html">https://www.deblan.io/post/638/generer-images-partage-reseaux-opengraph</link>
<link href="gemini://deblan.io/posts/638.gmi" type="text/gemini" />
<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><img src="/uploads/content/638/inkscape.jpg" alt="Inkscape" /></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><img src="/uploads/content/638/63d97b58.png" alt="OG:IMAGE" /></p>
<p>Le projet est publié sous <strong>licence GPLv3</strong> et <a href="https://gitnet.fr/deblan/og-image">son code est disponible sur Gitnet</a>. J'ai décidé d'utiliser <a href="https://vuejs.org/">VueJS3</a> pour gérer toute la partie interaction et <a href="https://tailwindcss.com/">Tailwind CSS</a> pour la présentation.</p>
<p>Si vous avez envie d'essayer, vous pouvez utiliser <a href="https://deblan.gitnet.page/og-image/">la version en ligne</a>. Elle est hébergée sur <strong>Gitnet Pages</strong>, <a href="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>
<p>La version actuelle est toute neuve et j'aspire à lui ajouter des fonctionnalités. N'hésitez pas à me faire des retours !</p>
<p>En attendant, bon partages 🚀</p>
]]></description>
<guid isPermaLink="false">638</guid>
<pubDate>Mon, 30 Jan 2023 22:25:00 +0100</pubDate>
<category><![CDATA[Logiciel libre]]></category>
<category><![CDATA[Projets personnels]]></category>
</item>
<item>
<title><![CDATA[Détecter les vulnérabilités dans les dépendances de son projet]]></title>
<link href="https://www.deblan.io/post/637/detecter-les-vulnerabilites-dans-les-dependances-de-son-projet" type="text/html">https://www.deblan.io/post/637/detecter-les-vulnerabilites-dans-les-dependances-de-son-projet</link>
<link href="gemini://deblan.io/posts/637.gmi" type="text/gemini" />
<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, <a href="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 (<a href="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 <a href="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 <a href="https://github.com/G-Rath/osv-detector">Github</a> et les <a href="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>
<pre><code class="window language-bash">$ osv-detector Gemfile.lock package-lock.json
</code></pre>
<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>
<pre><code class="window language-bash">Loaded the following OSV databases:
npm (2774 vulnerabilities, including withdrawn - last updated Fri, 13 Jan 2023 20:30:13 GMT)
package-lock.json: found 932 packages
Using db npm (2774 vulnerabilities, including withdrawn - last updated Fri, 13 Jan 2023 20:30:13 GMT)
ansi-html@0.0.7 is affected by the following vulnerabilities:
GHSA-whgm-jr23-g3j9: Uncontrolled Resource Consumption in ansi-html (https://github.com/advisories/GHSA-whgm-jr23-g3j9)
ansi-regex@3.0.0 is affected by the following vulnerabilities:
GHSA-93q8-gq69-wqmw: Inefficient Regular Expression Complexity in chalk/ansi-regex (https://github.com/advisories/GHSA-93q8-gq69-wqmw)
[...]
</code></pre>
<p>J'ai packagé <a href="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>
<pre><code class="window language-bash">$ docker run -it -v "$(pwd):/app" deblan/osv-detector Gemfile.lock package-lock.json
</code></pre>
<p><a href="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>
<guid isPermaLink="false">637</guid>
<pubDate>Fri, 13 Jan 2023 23:25:00 +0100</pubDate>
<category><![CDATA[Développement]]></category>
<category><![CDATA[Informatique]]></category>
</item>
<item>
<title><![CDATA[Woodpecker CI, envoyer du mail dans certaines conditions]]></title>
<link href="https://www.deblan.io/post/636/woodpecker-ci-envoyer-mail-conditions" type="text/html">https://www.deblan.io/post/636/woodpecker-ci-envoyer-mail-conditions</link>
<link href="gemini://deblan.io/posts/636.gmi" type="text/gemini" />
<description><![CDATA[<p>En juin dernier, j'ai migré ma plateforme d'intégration continue vers <a href="https://woodpecker-ci.org/">Woodpecker CI</a> et j'en suis très satisfait.</p>
<p><a href="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>
<pre><code class="language-yaml">pipeline:
foo:
image: vendor/image
when:
- evaluate: 'CI_BUILD_EVENT == "push"'
</code></pre>
<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 <a href="https://github.com/drillster/drone-email">drillster/drone-email</a>, initialement destinée à <a href="https://www.drone.io/">Drone</a>. En combinant cette image et <code>evaluate</code>, je pensais pouvoir réaliser ce que je voulais :</p>
<pre><code class="language-yaml">pipeline:
mail:
image: drillster/drone-email
settings:
host:
from_secret: mail_host
username:
from_secret: mail_username
password:
from_secret: mail_password
from:
from_secret: mail_from
subject: "[{{ repo.owner }}/{{ repo.name }}] Pipeline #{{ build.number }}: {{ build.status }}"
when:
- evaluate: 'CI_STEP_STATUS == "failure" || CI_PREV_PIPELINE_STATUS == "failure"'
</code></pre>
<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é <a href="https://github.com/drillster/drone-email">drillster/drone-email</a> pour créer <a href="https://gitnet.fr/deblan/woodpecker-email">deblan/woodpecker-email</a>. Cette image est totalement orientée vers <a href="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>
<pre><code class="language-yaml">pipeline:
mail:
image: deblan/woodpecker-email
settings:
host:
from_secret: mail_host
username:
from_secret: mail_username
password:
from_secret: mail_password
from:
from_secret: mail_from
subject: "[{{ repo.owner }}/{{ repo.name }}] Pipeline #{{ build.number }}: {{ build.status }}"
evaluate: 'CI_STEP_STATUS == "failure" || CI_PREV_PIPELINE_STATUS == "failure"'
when:
- status: [success, failure]
</code></pre>
<p>Mon problème est résolu !</p>
<p>Le code source est disponible sur <a href="https://gitnet.fr/deblan/woodpecker-email">Gitnet</a> et l'image est à la fois publiée sur <a href="https://hub.docker.com/r/deblan/woodpecker-email">Docker Hub</a> et <a href="https://gitnet.fr/deblan/-/packages/container/woodpecker-email/latest">Gitnet</a>.</p>
]]></description>
<guid isPermaLink="false">636</guid>
<pubDate>Wed, 04 Jan 2023 22:40:00 +0100</pubDate>
<category><![CDATA[Développement]]></category>
<category><![CDATA[Projets personnels]]></category>
</item>
<item>
<title><![CDATA[Bilan de l'année 2022]]></title>
<link href="https://www.deblan.io/post/635/bilan-2022" type="text/html">https://www.deblan.io/post/635/bilan-2022</link>
<link href="gemini://deblan.io/posts/635.gmi" type="text/gemini" />
<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 dannée, un véritable virage a été pris par l'association <a href="https://www.tinternet.net/">Tinternet &amp; Cie</a>. En effet, nous avons décidé de renforcer notre équipe dintervenant⋅e⋅s et demployer 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 <a href="https://doc.murph-project.org/">Murph</a>, mon <a href="https://fr.wikipedia.org/wiki/Content_management_framework">CMF</a> qui repose sur Symfony, et <a href="https://preprod.deblan.cloud/index.php/apps/side_menu/">Custom Menu</a>, une application destinée à Nextcloud.</p>
<p>Tout cela m'amène à des semaines bien remplies mais j'ai bon espoir de bientôt pouvoir respirer et profiter !</p>
]]></description>
<guid isPermaLink="false">635</guid>
<pubDate>Sun, 25 Dec 2022 21:50:00 +0100</pubDate>
<category><![CDATA[Logiciel libre]]></category>
<category><![CDATA[Projets personnels]]></category>
</item>
<item>
<title><![CDATA[Comprendre les enjeux de l'IoT et en fabriquer !]]></title>
<link href="https://www.deblan.io/post/634/comprendre-les-enjeux-de-liot-les-objets-connectes-et-en-fabriquer" type="text/html">https://www.deblan.io/post/634/comprendre-les-enjeux-de-liot-les-objets-connectes-et-en-fabriquer</link>
<link href="gemini://deblan.io/posts/634.gmi" type="text/gemini" />
<description><![CDATA[<p>Le FabLab des fabriques de Besançon et lassociation Tinternet &amp; cie vous invitent pour une journée de découverte et de fabrication le samedi 21 janvier 2022 !</p>
<h2>Programme de la journée</h2>
<ul>
<li><strong>9h30</strong> : Accueil des participants, présentation des intervenants et de la journée.</li>
<li><strong>10h</strong> : Présentation et discussion sur lIoT et la vie privée à travers deux cas dusage
<ul>
<li>Les jouets et les accessoires connectés</li>
<li>La maison connectée</li>
</ul></li>
<li><strong>11h30</strong> : Présentation de notre lIoT à fabriquer</li>
<li><strong>13h</strong> : Repas (offert par Tinternet), moment de convivialité</li>
<li><strong>14h</strong> : Point et discussion sur les objets connectés dans le monde de la santé</li>
<li><strong>15h</strong> : Fabrication et bricolage</li>
<li><strong>16h30</strong> : Présentation et discussion sur limpact environnemental des objets connectés</li>
<li><strong>17h - 17h30</strong> : Fin de la journée</li>
</ul>
<p><a href="https://evenement.tinternet.net/inscription" class="btn btn-primary" target="_blank">Je veux m'inscire</a></p>
]]></description>
<guid isPermaLink="false">634</guid>
<pubDate>Wed, 14 Dec 2022 22:30:00 +0100</pubDate>
<category><![CDATA[Contenu externe]]></category>
</item>
</channel>
</rss>