a:8:{s:5:"child";a:1:{s:0:"";a:1:{s:3:"rss";a:1:{i:0;a:6:{s:4:"data";s:2:"

";s:7:"attribs";a:1:{s:0:"";a:1:{s:7:"version";s:3:"2.0";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:1:{s:0:"";a:1:{s:7:"channel";a:1:{i:0;a:6:{s:4:"data";s:31:"
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:7:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:12:"Blog de dada";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:24:"https://www.dadall.info/";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:8:"language";a:1:{i:0;a:5:{s:4:"data";s:2:"fr";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:56:"DevOps, bidouilleur et routard plein de logiciels libres";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:13:"lastBuildDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 01 Dec 2024 17:55:00 +0100";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:9:"generator";a:1:{i:0;a:5:{s:4:"data";s:6:"PluXml";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"item";a:8:{i:0;a:6:{s:4:"data";s:21:"
		 
		
		
		
		
		
	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:35:"Vélo, Sigma Blaze et Impression 3D";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:78:"https://www.dadall.info/index.php?article769/velo-sigma-blaze-et-impression-3d";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:78:"https://www.dadall.info/index.php?article769/velo-sigma-blaze-et-impression-3d";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:4182:"<br><div><br></div><div>Mes activités informatiques devenant, à mes yeux, de moins en moins passionnantes à raconter, je me retrouve un peu perdu quant à l'alimentation de ce blog. Je sais que j'ai déjà digressé en parlant films, séries ou encore impression 3D alors permettez-moi de parler vélo.</div><div><br></div><div>Je ne sais pas si vous l'avez remarqué mais pas mal de libristes sont aussi des <a href="https://fr.wiktionary.org/wiki/v%C3%A9lotaf" title="vélotafeurs">vélotafeurs</a>. Du moins, vu de ma fenêtre <a href="https://diaspodon.fr/home" title="Mastodon">Mastodon</a>. Ils et elles ont réussi à me refiler le virus. Bon, il n'en fallait pas beaucoup : mon bout de ville devenant piéton, j'ai vite trouvé très utile et très simple de sauter sur un vélo pour aller un peu partout.</div><div><h3>Sigma Blaze</h3></div><div>Le <a href="https://sigmasport.com/fr/product/blaze/" title="Blaze">Blaze</a> de la marque Sigma est un feu arrière pour vélo. Il a ceci de fabuleux qu'il s'allume quand on rentre dans une sombre et qu'il s'allume quand on freine. Oui, vous avez bien lu : le feu rouge se comporte comme celui de tous les autres véhicules : il s'allume quand on freine. Magie ? Non, un accéléromètre.</div><div>Je me demande encore pourquoi l'intégralité des feux de vélo ne propose pas cette simple option. D'un côté, je me demande aussi pourquoi des cyclistes continuent d'utiliser des lumières qui clignotent alors que c'est interdit. Un feu peut être à <a href="https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000032401362" title="intensité variable">intensité variable</a>  (rouge classique, rouge fort signalant le freinage) mais <a href="https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000042266141" title="pas clignotant">pas clignotant</a>. Bref.</div><div><br></div><div>J'ai acheté ce gadget pour l'ajouter à mon équipement actuel. Problème : je n'ai pas la place sur la tige de ma selle pour deux lumières s'enroulant autour. Mon vénérable MBK Mirage récupéré chez <a href="https://atelierdynamo.fr/" title="Dynamo">Dynamo</a> n'est pas vraiment prévu pour ce genre d'engins. Qu'à cela ne tienne, j'ai une imprimante 3D et un peu de plastique !<br></div><div><h3>Impression 3D</h3></div><div>Il m'aura fallu un pied à coulisse, l'excellent <a href="https://fosstodon.org/@FreeCAD" title="FreeCAD">FreeCAD</a>  et quelques heures pour réussir à modéliser ça : <br></div><div><br></div><div align="center"><img src="https://www.dadall.info/data/medias/impression3d/sigma_s.png"><br></div><div><br></div><div>Ce dispositif va se fixer sur les tiges de ma selle à l'aide de de colliers de serrage. Je me suis clairement inspiré de ce que j'ai pu trouver sur <a href="https://www.printables.com/fr" title="Printables">Printables</a>. Y'a vraiment des gens avec des idées incroyables chez les <i>makers</i> !<br></div><div>Je peux maintenant enrouler le Blaze sous ma selle et laisser la vielle lumière en dessous, sur la tige, en double éclairage de nuit. J'en suis très content !</div><div><br></div><div align="center"><img src="https://www.dadall.info/data/medias/impression3d/sigma_blaze_mount.png"><br></div><div><br></div><div>N'imaginez pas que la photo ci-dessus représente la première version de support. J'ai fait pas moins de 6 itérations avant d'être plus ou moins satisfait. J'ai d'abord raté les trous des serflex, puis fait une pièce trop fine pour que l'élastique se tende suffisamment autour de la tige, puis décidé de rallonger la tige pour plus de sérénité puis j'ai ajouté une buttée.<br></div><div><br></div><div>J'ai imprimé la pièce en PETG. Pour le moment, ça devrait faire l'affaire. En cas de soucis dus à l'exposition prolongée aux éléments, je la referais en ASA.</div><h3>Plus tard...</h3><div>Ce billet ayant maintenant plus de 12 mois d’existence dans mes brouillons, je vous confirme que mon impression est top, qu'elle fait parfaitement son travail et qu'elle est très apprécié sur&nbsp;<a href="https://www.printables.com/model/596780-sigma-blaze-mount" title="Printables">Printables</a>. Content !</div><div><br></div>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Sun, 01 Dec 2024 17:55:00 +0100";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"dada";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:1;a:6:{s:4:"data";s:21:"
		 
		
		
		
		
		
	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:48:"Bloquer la version de NodeJS pour Mastodon 4.2.0";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:91:"https://www.dadall.info/index.php?article770/bloquer-la-version-de-nodejs-pour-mastodon-420";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:91:"https://www.dadall.info/index.php?article770/bloquer-la-version-de-nodejs-pour-mastodon-420";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:3164:"<div><br></div><div>La toute dernière version de Mastodon s'accompagne d'un petit souci d'administration si vous utilisez Debian 12 (Bookworm) comme système d'exploitation pour votre serveur : NodeJS.</div><div><br></div><div>En effet, la version de NodeJS officiellement supportée est, malgré ce que dit la documentation, la 16.x et pas plus alors que Debian 12 embarque la version 18 dans ses valises. Pas de 18, pas de 20, donc. Enfin, pas exactement. Il est possible de les utiliser au prix d'une bidouille officiellement diffusée dans les réponses aux différents soucis relayés dans&nbsp;<a href="https://github.com/mastodon/mastodon/issues/26541#issuecomment-1683978219" title="Github">Github</a>. <br></div><div><br></div><div>Enfin, si comme moi, vous n'avez pas envie de vous embêter plus que ça, voici comment faire pour être tranquille.</div><div><br></div><div><h3>Installer le dépôt NodeJS 16 pour Debian 12</h3></div><div>On commence par les keys :</div><div><br></div><div><pre>sudo apt-get update<br>sudo apt-get install -y ca-certificates curl gnupg<br>sudo mkdir -p /etc/apt/keyrings<br>curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg</pre></div><div><br></div><div>On ajout le dépôt : <br></div><div><br></div><div><pre>sudo echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x bookworm main<br>deb-src [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x bookworm main" &gt; /etc/apt/sources.list.d/nodesource.list</pre></div><div><br></div><div>On fait le pinning qui va bien : <br></div><div><br></div><div>Dans <i>/etc/apt/preferences.d/nodejs-mastodon</i> ajoutez : <br></div><div><br></div><div><pre>Package: nodejs*<br>Pin: release o=Debian*<br>Pin-Priority: -1<br><br>Package: *<br>Pin: release o=deb.nodesource.com<br>Pin-Priority: 99</pre></div><div><br></div><div>Vous pouvez maintenant supprimer la version NodeJS de Debian et installer la version des dépôts que vous venez d'ajouter : <br></div><div><pre>apt update<br>apt purge nodejs<br>apt install apt install nodejs=16.20.2-deb-1nodesource1</pre></div><div><br></div><div>Un apt-cache pour vérifier tout ça : <br></div><div><br></div><div><pre>nodejs:<br>&nbsp; Installed: 16.20.2-deb-1nodesource1<br>&nbsp; Candidate: 16.20.2-deb-1nodesource1<br>&nbsp; Version table:<br>&nbsp;&nbsp;&nbsp;&nbsp; 18.13.0+dfsg1-1 -1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 500 http://deb.debian.org/debian bookworm/main amd64 Packages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 150 http://deb.debian.org/debian unstable/main amd64 Packages<br>&nbsp;*** 16.20.2-deb-1nodesource1 500<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 500 https://deb.nodesource.com/node_16.x bookworm/main amd64 Packages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 100 /var/lib/dpkg/status</pre></div><div><br></div><div>Vous êtes tranquille maintenant ! Du moins, tant que NodeJS 14 est maintenu, ce qui commence à&nbsp;<a href="https://nodejs.dev/fr/about/releases/" title="devenir un souci">devenir un souci</a>.</div><div><br></div>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 28 Sep 2023 11:00:00 +0200";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"dada";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:2;a:6:{s:4:"data";s:21:"
		 
		
		
		
		
		
	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:34:"J&#039;ai récupéré un PinePhone";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:70:"https://www.dadall.info/index.php?article768/jai-recupere-un-pinephone";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:70:"https://www.dadall.info/index.php?article768/jai-recupere-un-pinephone";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:5241:"<div><br></div><div>Pour les plus pressés d'entre vous, voici ce que je peux déjà raconter autour du PinePhone :<br></div><div><ul><li>Ce n'est pas un téléphone pour un usage classique.</li><li>J'ai la version classique, pas la pro.<br></li><li>Il a la taille d'un OnePlus 5T, c'est pas petit.</li><li>Il n'est absolument pas fluide.</li><li>Oui, on peut se SSH dedans et c'est trop cool.</li><li>Pourquoi l'appareil photo ?</li></ul><div align="center"><img src="https://www.dadall.info/data/medias/logo/pine64_logo.png"></div><div><h3>Un PinePhone ?</h3></div><div>C'est un téléphone de la société étasunienne <a href="https://fr.wikipedia.org/wiki/Pine64" title="Pine64">Pine64</a>. Cette entreprise propose aussi une montre que <a href="https://www.dadall.info/article761/pinetime-jai-craque-pour-une-montre-connectee" title="j'ai déjà testé">j'ai déjà testée</a>  et qui prend un peu la poussière depuis qu'elle a pris l'eau. C'est malheureux, l'unique bouton de la montre ne marche plus qu'une fois sur cinq.</div><div><br></div><div>Bref, c'est un smartphone, ou ordiphone, qui a la particularité d'utiliser directement GNU/Linux en lieu et place d'Android. Pour les bidouilleurs, c'est le pied, d'où mon intérêt pour la bête. <br></div><div><br></div><div>Niveau puissance, sur le papier, la machine s'en sort bien moins bien que mon vénérable OP5T qui fêtera ses 6 ans à la fin de l'année. Le décor est posé : on n’achète pas ce téléphone pour jouer. <br></div><div><h3>La bidouille</h3></div><div>Gros plaisir : j'ai déjà changé trois fois de système d'exploitation. Imaginez quelqu'un dire ça avec son téléphone classique. Impossible.</div><div><br></div><div>Il est arrivé avec <a href="https://postmarketos.org/" title="postmarketOS">postmarketOS</a>, le système officiel de Pine64 basé sur Alpine Linux. Sans intérêt pour moi, j'ai tout de suite effacé la bête pour y mettre un vrai OS, un truc basé sur du sérieux, sur Debian : <a href="https://fr.wikipedia.org/wiki/Mobian" title="Mobian">Mobian</a>  !</div><div><br></div><div>Quelques dizaines de minutes plus tard, un peu déçu, je changeais à nouveau pour Manjaro ARM. C'était un peu mieux mais je suis retourné sur Mobian par principe. Pour les curieux, la liste des distributions disponibles est <a href="https://wiki.pine64.org/wiki/PinePhone_Software_Releases" title="par ici">par ici</a>.</div><div><br></div><div>C'est agréablement simple de passer d'un OS à l'autre. On est loin des emmerdes avec Android. Ici, on branche le téléphone au PC, on le démarre en appuyant sur la touche supérieure du volume et y'a plus qu'à écrire une des images fournies par des bénévoles. C'est trop bien !</div><div><br></div><div>Bon, j'aurais pu pousser mes testes un peu plus loin et tester un système basé sur KDE mais c'était trop dur. J'ai trop de traumatismes avec ce machin depuis la version 4.<br></div><div><h3>Les applications</h3></div><div>Ici, c'est un peu l'échec complet pour le moment et je ne parle pas des applications de tous les jours comme celles des transports en commun ou bancaires : y'a pas, pas la peine de râler ! <br></div><div><br></div><div>Je me sers beaucoup de <a href="https://fr.wikipedia.org/wiki/Signal_(application)" title="Signal">Signal</a>  et je n'ai pas trouvé le moyen de m'en servir avec Mobian. J'ai aperçu un truc dans Manjaro ARM mais c'était clairement bancal. Je me sers encore un peu de Telegram, idem. Vous voulez naviguer sur Internet ? Ça sera avec Firefox et ça sera poussif. Ceci-dit, ça affiche la page d'accueil du Monde sans crasher le téléphone : on est pas si loin d'un truc costaud.</div><div><br></div><div>Y'a un truc cool quand-même : l'interface. Elle fait du bien, elle change, c'est frais. Les dernières versions d'Android me filant des boutons, un truc simple à la GNOME, c'est quand-même top. <br></div><div><h3>Les appels</h3></div><div>Pour tester les appels, j'ai du utiliser mon imprimante 3D pour <a href="https://www.printables.com/fr/model/163403-nanosim-microsim-reduction" title="imprimer un adaptateur">imprimer un adaptateur</a>  NanoSIM vers MicroSIM, ma carte SIM étant bien trop petite pour le PinePhone. Après 15min de blabla, mes deux oreilles étaient dans un état de surchauffe inquiétant. Je ne sais pas si c'est le coup de froid qui me gonfle depuis une semaine ou le DAS du Pinephone qui est foireux. Ce n'est pas encourageant.</div><div><h3>Alors ?</h3></div><div>Dans l'ensemble, ça rappel un peu FirefoxOS ou Ubuntu Phone (oui, j'ai testé les deux, on ne rigole pas). On a un truc qui marchotte, qui est rigolo mais qui ne fait pas grand chose au delà du très simple. Contrairement à la PineTime qui, avec <a href="https://gadgetbridge.org/" title="GadgetBridge">GadgetBridge</a>, fait presque aussi bien que la concurrence.</div><div>Avec cette histoire, j'ai décidé de sortir ma tablette du tiroir sous Ubuntu Touch, la Aquaris M10 FHD. Elle tourne toujours, on dirait même que les dernières mises à jour la rendent très agréable à utiliser. M'enfin, pour du simple.</div><div><br></div><div>Un gros merci au fédigens qui m'a revendu son Pinephone :bisou:<br></div><div><br></div></div>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 21 Feb 2023 20:52:00 +0100";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"dada";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:3;a:6:{s:4:"data";s:21:"
		 
		
		
		
		
		
	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:22:"Twitter va bien, merci";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:66:"https://www.dadall.info/index.php?article767/twitter-va-bien-merci";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:66:"https://www.dadall.info/index.php?article767/twitter-va-bien-merci";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:4025:"<div><br></div><div>Cette période est épuisante. Entre la météo qui s'accorde enfin avec la saison et les projecteurs braqués sur Mastodon, un bout de Fédivers, je n'en peux plus.</div><div><br></div><div>Pour me détendre, je vais vous confirmer ce que certains craignent et ce que certains espèrent : Twitter va très bien. À n'en point douter.</div><div><br></div><div>Pourquoi ? Si vous vous posez la question, c'est que vous n'êtes pas un habitué des médias dits « alternatifs » et ce n'est pas grave. C'est une façon de faire et d'échanger qui n'est pas pour tout le monde. Des accros au rugby aux influenceuses, l'alternatif n'est d'aucun intérêt.</div><div><br></div><div>Quand je dis que Twitter va bien, c'est la manière dont il a façonné la consommation des échanges entre les gens via le microblogging, comme on dit, qui va très bien.<br></div><ul><li>Un réseau doit être centré.</li><li>Il faut un chef ou un groupe de chefs qui prennent la responsabilité de ce qui peut y être partagé.</li><li>Il faut écrire en 240 caractères.</li><li>Il faut faire des threads, ou des fils, pour être compris.</li><li>Il faut que la modération provienne d'une seule entité.</li><li>Une marque verte bizarre certifie l’identité de quelque chose.</li><li>Et j'en passe.</li></ul><div>Il faudra du temps pour que cette façon de voir le monde change, si elle doit changer. <br></div><div><br></div><div>Et ça n'est pas grave.</div><div><br></div><div>Cela fait des années que j'évolue dans un monde où ces règles paraissent idiotes. Ce ne sont pas les personnes qui se servent de Twitter qui sont idiots, ce sont les règles qu'elles et ils suivent et qu'ils et elles s'amusent, parfois avec élégance, à contourner qui sont idiotes. Je le pense et je le répéterai à qui veut l'entendre sans sourciller.</div><div><br></div><div>Est-ce grave ? Non, pas du tout.</div><div><br></div><div>Les histoires de Musk ne me sont d'aucun intérêt. Il a repris un réseau qui a posé des règles qui me sont étrangères. Au mieux, je soupire, au pire, je vois dévaler des gens dans mon fil d'actualité qui ne comprennent pas pourquoi Mastodon ne permet pas de faire du Twitter.</div><div><br></div><div>Et ça n'est pas grave.</div><div><br></div><div>J'ai, par le passé, écrit que ces règles étaient désastreuses et qu'elles influençaient le monde dans lequel nous vivons. Je le pense toujours. J'ai simplement pris le temps de fuir toutes les cochonneries qui s'y attachent comme les sites d’actualités à base de tweet ou de photo Instagram, les journaux qui vivent de faits divers, et j'ai déconnecté tout ce que je pouvais pour éviter des recommandations basées sur l'actualité véhiculée par les médias sociaux commerciaux. Alors, oui, effectivement, je ne suis plus au courant de grand-chose de « hypant ».</div><div><br></div><div>Et ça n'est pas grave.<br></div><div><br></div><div>Nous ne sommes pas toutes et tous obligé d'évoluer aux mêmes endroits avec les mêmes codes. Le Fédivers a ceci de joli qu'il permet à des gens aux codes différents de communiquer. Ailleurs, c'est pour le moment impossible mais rien ne presse et migrer d'un réseau à l'autre ne vous réconfortera pas forcément.</div><div><br></div><div>Et ça n'est pas grave.</div><div><br></div><div>La façon de voir le monde qu'offre le logiciel Mastodon est encore jeune. Elle a évolué et va évoluer. Sa dernière version permet, par exemple, d'afficher la liste des voisins bloqués. C'est une incroyable fonctionnalité par la transparence qu'elle offre. Elle n'est pas magique mais elle offre des informations supplémentaires sur ce que les modérateurs qui vous accueilleront font. C'est essentiel. Imaginez Twitter afficher la liste des comptes bloqués et les raisons du blocage ? Oui, vous pouvez sourire.<br></div><div><br></div><div>Enfin, Mastodon continue de faire du Mastodon.</div><div>Twitter continue de produire du Twitter et va bien, merci.</div><div><br></div>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 22 Nov 2022 20:09:00 +0100";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"dada";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:4;a:6:{s:4:"data";s:21:"
		 
		
		
		
		
		
	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:47:"Brancher un capteur CO2 Ampel à Home Assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:91:"https://www.dadall.info/index.php?article766/brancher-un-capteur-co2-ampel-a-home-assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:91:"https://www.dadall.info/index.php?article766/brancher-un-capteur-co2-ampel-a-home-assistant";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:11039:"<br><div>J'ai ajouté à mon attirail de domotique un capteur de concentration de CO2. Pourquoi ? Pour pouvoir encore plus sereinement laisser tourner mon imprimante quand je suis un peu loin, mais pas que (<strike>covid</strike>). Il ne m'est encore jamais rien arrivé mais ce n'est pas une raison pour ne pas ajouter une bretelle à la ceinture.<br></div><div align="center"><img src="https://www.dadall.info/data/medias/logo/home_assistant_logo.png" width="319" height="319"></div><div><div><br></div><div>Mon choix s'est porté sur le <a href="https://learn.watterott.com/breakouts/co2-ampel/" title="CO2-Ampel">CO2-Ampel</a>  de Watterott. Oui, j'ai pris le même modèle que <a href="https://framapiaf.org/@framasky" title="Framasky">Framasky</a>, à savoir celui avec un module wifi qui expose trois données : la concentration de CO2, la température et l’humidité.</div><div><h3>Le projet <br></h3>L'idée est d'ajouter ce capteur à mon installation personnelle de <a href="https://www.home-assistant.io/" title="Home Assistant">Home Assistant</a>. Branché à ce machin, je pourrais déclencher une série d'actions pour limiter les dégâts en cas de soucis. La plus importante étant de tout de suite couper le courant de ma machine via sa prise connectée, une <a href="https://www.nextinpact.com/article/68048/shelly-plug-s-prise-connectee-avec-mesure-consommation-presque-parfaite" title="Shelly Plus S">Shelly Plus S</a>.<br><h3>Le souci <br></h3>Le souci est assez basique : le boîtier n'est pas du tout lisible par Home Assistant. Pour qu'ils se causent entre eux, je dois réussir à parcourir la page web proposée par le boîtier pour en sortir du texte lisible par HA. En bon langage de dév : faut scrapper le HTML pour sortir du JSON lisible par HA.<br><h3>Le développement <br></h3>Y'a plus qu'à coder un bout de python, avec <a href="https://fr.wikipedia.org/wiki/Flask_(framework)" title="flask">flask</a>, pour convertir le HTML qui m'intéresse en JSON puis poser le bout de code dans mon routeur pour qu'il vive sa plus belle vie au milieu de mon infrastructure maison.<br><br><div style="color: #d4d4d4;background-color: #1e1e1e;font-family: 'Droid Sans Mono', 'monospace', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span style="color: #c586c0;"> </span></div><div><span style="color: #c586c0;"> import</span><span style="color: #d4d4d4;"> time </span></div><div><span style="color: #c586c0;"> import</span><span style="color: #d4d4d4;"> requests</span></div><div><span style="color: #c586c0;"> import</span><span style="color: #d4d4d4;"> os</span></div><div><span style="color: #c586c0;"> import</span><span style="color: #d4d4d4;"> json</span></div><div><span style="color: #c586c0;"> import</span><span style="color: #d4d4d4;"> flask</span></div><br><div><span style="color: #d4d4d4;"> app = flask.Flask(</span><span style="color: #9cdcfe;">__name__</span><span style="color: #d4d4d4;">)</span></div><div><span style="color: #d4d4d4;"> url_ampel = </span><span style="color: #ce9178;">'http://192.168.1.195'</span></div><br><div><span style="color: #dcdcaa;"> @app.route</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">'/json'</span><span style="color: #d4d4d4;">, </span><span style="color: #9cdcfe;">methods</span><span style="color: #d4d4d4;">=[</span><span style="color: #ce9178;">'GET'</span><span style="color: #d4d4d4;">])</span></div><div><span style="color: #569cd6;"> def</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">home</span><span style="color: #d4d4d4;">():</span></div><div><span style="color: #d4d4d4;">     html_text = requests.get(url_ampel, timeout=3).text</span></div><br><div><span style="color: #d4d4d4;">     </span><span style="color: #4ec9b0;">dict</span><span style="color: #d4d4d4;"> = {</span></div><span style="color: #d4d4d4;">         </span><span style="color: #ce9178;">"co2"</span><span style="color: #d4d4d4;">: html_text[</span><span style="color: #b5cea8;">115</span><span style="color: #d4d4d4;">:html_text.find(</span><span style="color: #ce9178;">'br'</span><span style="color: #d4d4d4;">,</span><span style="color: #b5cea8;">72</span><span style="color: #d4d4d4;">)-</span><span style="color: #b5cea8;">3</span><span style="color: #d4d4d4;">],</span><div><span style="color: #d4d4d4;">         </span><span style="color: #ce9178;">"temp"</span><span style="color: #d4d4d4;">: html_text[</span><span style="color: #b5cea8;">140</span><span style="color: #d4d4d4;">:html_text.find(</span><span style="color: #ce9178;">'br'</span><span style="color: #d4d4d4;">,</span><span style="color: #b5cea8;">140</span><span style="color: #d4d4d4;">)-</span><span style="color: #b5cea8;">3</span><span style="color: #d4d4d4;">],</span></div><div><span style="color: #d4d4d4;">         </span><span style="color: #ce9178;">"humi"</span><span style="color: #d4d4d4;">: html_text[</span><span style="color: #b5cea8;">167</span><span style="color: #d4d4d4;">:html_text.find(</span><span style="color: #ce9178;">'br'</span><span style="color: #d4d4d4;">,</span><span style="color: #b5cea8;">167</span><span style="color: #d4d4d4;">)-</span><span style="color: #b5cea8;">3</span><span style="color: #d4d4d4;">]</span></div><div><span style="color: #d4d4d4;">     }</span></div><div><span style="color: #d4d4d4;"><br></span></div><div><span style="color: #d4d4d4;">     </span><span style="color: #c586c0;">return</span><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">dict</span></div><br><div><span style="color: #d4d4d4;"> app.run(</span><span style="color: #9cdcfe;">host</span><span style="color: #d4d4d4;">=</span><span style="color: #ce9178;">"192.168.1.1"</span><span style="color: #d4d4d4;">,</span><span style="color: #9cdcfe;">port</span><span style="color: #d4d4d4;">=</span><span style="color: #b5cea8;">9455</span><span style="color: #d4d4d4;">)</span></div><div><span style="color: #d4d4d4;"><br></span></div></div></div><div><br></div><div>Ici, le code va interroger le boîtier sur son IP (192.168.1.195) pour récupérer l'intégralité du HTML (html_text). J'ai déjà chopé la position dans ce <i>string</i> des trois infos que je veux (115, 140, 167) et comme elles peuvent légèrement varier en taille, je récupère ce qu'il y a jusqu'au prochain retour à la ligne, pour être large. Le tout est stocké dans un dictionnaire et exposé sur le réseau sur l'IP du <a href="https://www.turris.com/en/mox/overview/" title="Turris Mox">Turris Mox</a>  et via le port 9455.</div><div><h3>Le script d'init dans le Turris</h3></div><div>Une fois que le code est fonctionnel, il va bien falloir le mettre dans le Turris Mox pour qu'il vive en autonomie. Voici donc le contenu du fichier <b>ampel_json</b> qui sera dans <i>/etc/init.d/</i>. <br></div><div><br></div><div><div style="color: #d4d4d4;background-color: #1e1e1e;font-family: 'Droid Sans Mono', 'monospace', monospace;font-weight: normal;font-size: 14px;line-height: 19px;white-space: pre;"><div><span style="color: #6a9955;"> #!/bin/sh /etc/rc.common</span></div><br><div><span style="color: #4fc1ff;"> START</span><span style="color: #d4d4d4;">=</span><span style="color: #b5cea8;">99</span></div><div><span style="color: #4fc1ff;"> USE_PROCD</span><span style="color: #d4d4d4;">=</span><span style="color: #b5cea8;">1</span></div><div><span style="color: #d4d4d4;"> </span></div><div><span style="color: #4fc1ff;"> APPBINARY</span><span style="color: #d4d4d4;">=</span><span style="color: #ce9178;">"/root/ampel/ampel_json.py"</span></div><br><div><span style="color: #d4d4d4;"> start_service() {        </span></div><div><span style="color: #d4d4d4;">   procd_open_instance</span></div><div><span style="color: #d4d4d4;">   procd_set_param command python3 </span><span style="color: #f44747;">$</span><span style="color: #d4d4d4;">APPBINARY</span></div><div><span style="color: #d4d4d4;">   procd_set_param respawn</span></div><div><span style="color: #d4d4d4;">   procd_close_instance</span></div><div><span style="color: #d4d4d4;"> }                 </span></div><div><span style="color: #d4d4d4;"> </span></div><div><span style="color: #d4d4d4;"> stop() {          </span></div><div><span style="color: #d4d4d4;">   kill </span><span style="color: #f44747;">$</span><span style="color: #d4d4d4;">(ps faux | grep </span><span style="color: #ce9178;">'python3 /etc/root/ampel_json'</span><span style="color: #d4d4d4;"> | awk </span><span style="color: #ce9178;">'{print $2}'</span><span style="color: #d4d4d4;">)</span></div><div><span style="color: #d4d4d4;"> }</span></div></div><p>Le nom est assez important puisque c'est lui que je cherche pour tuer le programme avec la commande stop.<br></p><h3>L'intégration dans HA <br></h3>Alors, déjà, HA, c'est le bordel. Il n'est pas foutu de fournir un truc simple pour modifier sa configuration. Pour lui dire d'aller gazouiller avec un peu de JSON, il faut modifier le fichier <i>configuration.yaml</i> et le seul moyen de faire ça consiste à ajouter l'extension <b>File Editor</b> qui servira d'éditeur de texte...! Bref.<br><br>Une fois que vous avez passé les 15 étapes d'installation de l'add-on, voici une façon de faire parmi tant d'autres :<br><br><pre>sensor:<br>&nbsp; - platform: rest<br>&nbsp;&nbsp;&nbsp; scan_interval: 60<br>&nbsp;&nbsp;&nbsp; name: Ampel CO2<br>&nbsp;&nbsp;&nbsp; resource: http://192.168.1.1:9455/json<br>&nbsp;&nbsp;&nbsp; value_template: '{{value_json.co2}}'<br>&nbsp; - platform: rest<br>&nbsp;&nbsp;&nbsp; scan_interval: 60<br>&nbsp;&nbsp;&nbsp; name: Ampel Temperature<br>&nbsp;&nbsp;&nbsp; resource: http://192.168.1.1:9455/json<br>&nbsp;&nbsp;&nbsp; value_template: '{{value_json.temp}}'<br>&nbsp; - platform: rest<br>&nbsp;&nbsp;&nbsp; scan_interval: 60<br>&nbsp;&nbsp;&nbsp; name: Ampel Humidity<br>&nbsp;&nbsp;&nbsp; resource: http://192.168.1.1:9455/json<br>&nbsp;&nbsp;&nbsp; value_template: '{{value_json.humi}}'</pre>Ce que ces lignes de YAML font est, encore et toujours quand on a compris, assez simple : elles vont créer 3 entités : Ampel CO2, Ampel Temperature et Ampel Humidity et va les rafraîchir toutes les minutes. <br></div><div>Loin de moi l'idée de passer pour un expert en Home Assistant alors n'hésitez pas à venir me tirer les oreilles, cordialement, en commentaire.</div><div><h4>Au final</h4></div><div>Au final ? J'ai un capteur de CO2 qui refile des données à un truc de domotique installé sur un Raspberry Pi 4 ! J'ai plus qu'à faire une règle qui dit que si la concentration en CO2 est trop élevée, il faut couper la prise de la machine, et zou, c'est plié.</div><div><br></div><div>Enfin, ça fait tellement longtemps que je ne fais plus réellement de développement que j'ai souffert à chaque étape. Heureusement, la logique d'il y a 10 ans est toujours la même. Merci aux copines et copains dev' qui m'ont gentiment donné les bonnes bibliothèques à utiliser ! J'me suis quand-même bien marré !<br></div><div><br></div></div>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Mon, 22 Aug 2022 10:40:00 +0200";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"dada";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:5;a:6:{s:4:"data";s:21:"
		 
		
		
		
		
		
	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:33:"Coucou Firefox, ciao Firefox Snap";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:77:"https://www.dadall.info/index.php?article764/coucou-firefox-ciao-firefox-snap";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:77:"https://www.dadall.info/index.php?article764/coucou-firefox-ciao-firefox-snap";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:3512:"<div><br></div><div>Je ne suis pas un anti-snap. Je n'ai rien contre cette technologie, ni contre les AppImage ou encore les Flatpak. D'ailleurs, d'après ma mémoire défaillante, je n'ai jamais utilisé de Flatpak et je n'ai que quelques AppImage : <a href="https://github.com/prusa3d/PrusaSlicer" title="PrusaSlicer">PrusaSlicer</a>  et <a href="https://github.com/Ultimaker/Cura" title="Cura">Cura</a>.</div><div><br></div><div>Par contre, des snap, je m'en sers à travers ma distribution bureautique <i>slash</i> gaming de tous les jours : Ubuntu. <br></div><div><br></div><div>Depuis la 22.04, c'est-à-dire environ 3 mois, je sais que mon système est noyauté par ce machin-là et je m'en fiche, au point de presque passer pour un vilain quand je l'affirme publiquement. Juste, ça marche et c'est tout ce que je demande. Enfin, ça, c'était avant, comme le dit une vielle pub pour des lunettes.</div><div><h2>Les soucis</h2></div><div>C'est un poncif mais c'est important de le rappeler : dans notre beau monde moderne, un ordinateur de bureau sans navigateur, ça ne sert strictement à rien. Et mon navigateur d'amour, c'est Firefox.</div><div><br></div><div>Du coup, quand je ne me suis rendu compte qu'il ne se comportait pas comme je le voulais, j'ai commencé à grincer des dents :</div><div>- Un insupportable comportement erratique du curseur</div><div>- Plantage plusieurs fois par jour pour un simple redimensionnement de la fenêtre<br></div><div>- Certaines extensions inutilisables <br></div><div>- Mise à jour sans mon accord mettant en PLS mon ADSL</div><div><br></div><div>Bref, trop c'est trop : un navigateur instable, c'est un drame. Du coup, ça dégage. Je vous propose un rapide tuto inspiré de <a href="https://www.linuxtricks.fr/wiki/ubuntu-installer-firefox-en-deb-plutot-que-snap" title="Linuxtricks.fr">Linuxtricks.fr</a>. </div><div><h3>Retrouver Firefox sans snap</h3></div><div>On supprimer les paquets :<br></div><div><pre>snap remove firefox &amp;&amp; apt remove firefox</pre></div><div>On vérifie que le snap est bien loin (si y'a rien, c'est bon) :<br></div><div><pre>snap list&nbsp; | grep firefox</pre></div><div>On installe le PPA de Mozilla Team :<br></div><div><pre>add-apt-repository ppa:mozillateam/ppa</pre></div><div>On fait un peu de pinning en créant un fichier /etc/apt/preferences.d/firefox-for-nosnaps avec ça dedans :<br></div><div><pre>Package: firefox*<br>Pin: release o=Ubuntu*<br>Pin-Priority: -1<br><br>Package: *<br>Pin: release o=LP-PPA-mozillateam<br>Pin-Priority: 9<br></pre></div><div>Un gros <i>apt update</i> et <i>apt install firefox</i> et c'est tout bon.</div><div><h2>Et alors ?</h2></div><div>Ça me fatigue de devoir faire ça. Vraiment. <br></div><div>Si je me sers des variantes LTS d'Ubuntu, c'est bien pour être le plus feignant possible. Ne viendez pas me dire que je ferais mieux de me servir de Debian pour de la bureautique, c'est non. Debian tourne sur les serveurs que je gère : chacun son rôle.</div><div>Les LTS devraient me permettre d'utiliser un PC avec le moins de bidouille possible et là, j'ai l'impression de me servir d'un fork d'Ubuntu chelou. C'est chiant.</div><div><br></div><div>Pour finir ce rapide billet et titiller les <i>pas-contents-des-choix-de-canonical</i>, rappelez-vous que Mir et Unity ont disparu d'eux-mêmes, abandonnés pas une communauté qui a déclaré ne pas y trouver le moindre intérêt. Qui sait, avec Snap, ça va peut-être finir comme ça ? Patience.</div><div><br></div>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Wed, 13 Jul 2022 09:58:00 +0200";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"dada";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:6;a:6:{s:4:"data";s:21:"
		 
		
		
		
		
		
	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:42:"Des extensions GNOME Shell à ne pas rater";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:86:"https://www.dadall.info/index.php?article763/des-extensions-gnome-shell-a-ne-pas-rater";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:86:"https://www.dadall.info/index.php?article763/des-extensions-gnome-shell-a-ne-pas-rater";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:5414:"<div><br></div><div>On a tendance à l'oublier mais <strike>le meilleur environnement graphique pour GNU/Linux qu'est</strike> GNOME Shell peut encore s'améliorer avec des extensions toutes bêtes qu'il est facile de piocher en cliquant <a href="https://extensions.gnome.org/" title="par ici">par ici</a>. Comme il y en a à foison, voici les miennes que j'aime tout plein.</div><div><h2>OpenWeather</h2></div><div><a href="https://extensions.gnome.org/extension/750/openweather/" title="OpenWeather">OpenWeather</a> permet de récupérer facilement les informations météorologiques de la ville de votre choix. <br></div><div><br></div><div align="center"><img src="https://www.dadall.info/data/medias/extensions/openweather.png"></div><div><br></div><div>C'est simple, c'est rapide et efficace pour choisir entre l’imperméable et la veste sans devoir regarder dehors.</div><div><h2>Sound Input &amp; Output Device Chooser </h2></div><div>Vous avez deux ou trois sorties audio ? Vous passez du casque aux haut-parleurs régulièrement ? Installez tout de suite <a href="https://extensions.gnome.org/extension/906/sound-output-device-chooser/" title="cette extension">cette extension</a> pour changer d'entrée ou de sorties en littéralement deux clics. Impeccable pour moi qui traîne 5 entrées ou sorties différentes.</div><div><br></div><div align="center"><img src="https://www.dadall.info/data/medias/extensions/soundselect.png"></div><div><br></div><div><h2>CPU Power Manager</h2></div><div><a href="https://extensions.gnome.org/extension/945/cpu-power-manager/" title="Cette extension">Cette extension</a> est spécifique aux PC portables avec des processeurs récents. Elle permet de contrôler les ressources CPU en un clin d’œil. Perso, je m'en sers quand je suis en déplacement ou loin d'un chargeur : couper le <i>boost</i> ou drastiquement castrer la fréquence maximum du CPU permet de laisser la batterie souffler, tout comme vos oreilles en limitant le besoin de ventilation.</div><div><br></div><div align="center"><img src="https://www.dadall.info/data/medias/extensions/cpupowermanagement.png"></div><div><br></div><div>À l'opposé, si vous êtes du genre brutasse, vous pouvez forcer votre machine à tourner à 100% de ses capacités. Moyennement conseillé.<br></div><div><h2>Caffeine</h2></div><div><a href="https://extensions.gnome.org/extension/517/caffeine/" title="Caffeine">Caffeine</a> est vachement chouette quand vous êtes en train de bidouiller quelque chose en suivant le mode d'emploi affiché sur l'écran de votre PC. En quoi, me direz-vous ? En l'empêchant de se mettre en veille ! C'est con mais c'est diablement appréciable. <br></div><div>Accessoirement, en télétravail, ça vous permet de rester affiché comme étant en ligne alors que vous étendez du linge, ou autre. <br></div><div><h2>Hue Lights </h2><div align="center"><img src="https://www.dadall.info/data/medias/extensions/hueconnect.png"></div><div><br></div></div><div>Oui, j'ai ce genre de chose et je ne vous cache pas que j'adore jouer avec ces conneries. Comme vous l'avez deviné, <a href="https://extensions.gnome.org/extension/3737/hue-lights/" title="Hue Lights">Hue Lights</a> permet d'allumer, d'éteindre, de manipuler vos équipements Philips Hue depuis votre PC. Chouette !</div><div><h2 class="extension-name" id="extension_name">Freon</h2><div>J'aime bien connaître la température à l'intérieur de ma tour et la vitesse de rotation des ventilateurs. C'est à la fois mon côté geek qui veut ça mais aussi <a href="https://www.dadall.info/article729/controler-son-gpu-avec-radeon-profile" title="mes problème de chauffe">mes problèmes de chauffe</a>, et par les temps qui courent, ce n'est plus un petit problème. Ça peut coûter cher. Bref, pour assouvir ce besoin, je me sers de <a href="https://extensions.gnome.org/extension/841/freon/" title="Freon">Freon</a>. C'est simple, sobre et ça se glisse bien dans l'interface.</div><div><h2>Multi Monitor Add-On</h2></div><div>Nous sommes de plus en plus à avoir deux, si ce n'est plus, écrans. Souvent en mode plein écran, je fatiguais de ne pas pouvoir lire les infos ajoutées par les extensions citées tout à long de ce billet sur l'écran « moins » utilisé. Pour corriger le tir : <a href="https://extensions.gnome.org/extension/921/multi-monitors-add-on/" title="Multi Monitor">Multi Monitor</a>  ! Les infos sont présentes sur mes deux moniteurs, ou trois quand je suis au boulot : <a href="https://www.youtube.com/c/Abr%C3%A8ge/videos" title="tip top">tip top</a>, Mesdames et Messieurs !<br></div></div><div><h2>Quelques mentions spéciales</h2></div><div>Peut-on parler des extensions Shell sans parler du fameux <a href="https://extensions.gnome.org/extension/1319/gsconnect/" title="GSConnect">GSConnect</a>  ? Un gros incontournable pour celles et ceux qui veulent contrôler leur PC depuis un smartphone et (un peu moins) inversement. Parlons aussi de <a href="https://extensions.gnome.org/extension/53/pomodoro/" title="Pomodoro">Pomodoro</a>  qui peut vous aider à rythmer vos journées en télétravail. Pour la route, <a href="https://extensions.gnome.org/extension/120/system-monitor/" title="System-monitor">System-monitor</a>  qui ajoute sous vos yeux des informations sur l'état des ressources du PC.</div><div><br></div><div>Et vous, vous vous servez de quoi ? <br></div><div><br></div>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Thu, 17 Mar 2022 07:42:00 +0100";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"dada";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}i:7;a:6:{s:4:"data";s:21:"
		 
		
		
		
		
		
	";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";s:5:"child";a:2:{s:0:"";a:5:{s:5:"title";a:1:{i:0;a:5:{s:4:"data";s:55:"Rapport d&#039;incident : j&#039;ai cassé diaspodon.fr";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:84:"https://www.dadall.info/index.php?article762/rapport-dincident-jai-casse-diaspodonfr";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:4:"guid";a:1:{i:0;a:5:{s:4:"data";s:84:"https://www.dadall.info/index.php?article762/rapport-dincident-jai-casse-diaspodonfr";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:11:"description";a:1:{i:0;a:5:{s:4:"data";s:3759:"<div><br></div><div>Il y a des jours où la confiance vous embarque bêtement. <br></div><div><br></div><div>Fin février, je me lançais dans la mise à niveau de l'intégralité de l'infrastructure qui propulse les différents services que j'ai sous ma responsabilité : des instances Mobilizon, Peertube, Pixelfed et Mastodon. Une mise à niveau, c'est quand on passe d'une version majeure à une autre d'un système d'exploitation. Ce n'est jamais anodin (<i>update</i> != <i>upgrade</i>).</div><div><h2>Étape 1 - 27 février 2022 - 15h45</h2></div><div>Après avoir testé avec succès ces mises à niveau sur des serveurs de moindre importance, plein de confiance, je finis par couper diaspodon.fr pour m'en occuper. D'abord, un <i>dump</i> de la base de données PostgreSQL 9.6 puis un <i>snapshot</i> complet des volumes et, hop, la mise à niveau.</div><div><h2>Étape 2 - 27 février 2022 - 16h30</h2></div><div>Une fois la mise à niveau terminée sans problème, je relance le serveur, teste un ou deux trucs et retourne vaquer à mes occupations passionnantes du moment (coucou <a href="https://fr.wikipedia.org/wiki/Total_War:_Warhammer_3" title="TWW3">TWW3</a>).</div><div><h2>Étape 3 - 4 mars 2022 environ</h2></div><div>Une semaine plus tard, Greenman me signale qu'on ne peut plus correctement le mentionner (le fameux @ + pseudo). Pas grave, me dis-je, c'est le seul avec ce souci. 48h plus tard, après un week-end chargé, je suis réveillé par des SMS des copains qui signalent tous une inactivité bizarre depuis au moins 9h. C'est cassé.</div><div><h2>Étape 4 - 7 mars 2022 - 10h ~ 12h</h2></div><div>La documentation était pourtant claire : à la fin de la mise à niveau (cf Étape 1), il fallait impérativement mettre à jour les index des bases de données pour éviter le cauchemar absolu : les <i>duplicated entries</i>. Chose que <a href="https://diaspodon.fr/@dada/107870659794464156" title="je n'ai pas faite sans sourciller">je n'ai pas faite sans sourciller</a>. Devinez quoi ? J'ai du en virer, de ces cochonneries. Merci encore à <a href="https://framapiaf.org/@framasky" title="Luc">Luc</a>  pour son aide formidable. Une fois corrigé à la main les dizaines de <i>duplicate</i>, je passe à la mise à jour qui fini par passer.</div><div>La tant attendue et redoutée mise à niveau de PostgreSQL 9.6 à PostgreSQL 13 est correctement finalisée. Il était temps.<br></div><div><h2>Étape 5 - 7 mars 2022 - 12h ~ 13h</h2></div><div>J'ai l'impression de voir le bout du tunnel quand, finalement, non. Sidekiq, outil nécessaire au fonctionnement de Mastodon, refuse de redémarrer. <br></div><div>Il s'avère, chers ami-e-s, que Debian 11 n'est pas complètement compatible avec la configuration officielle de Mastodon. Cette version de Debian n'a plus les bonnes dépendances pour faire tourner <b>jemalloc</b>, bidule connu des admin d'instance Mastodon pour contrôler la consommation en mémoire du logiciel. Quand, le 28 février, j'ai nettoyé les vieux paquets « inutilisés », j'ai cassé une deuxième fois l'instance.</div><div><br></div><div>Une fois compris, j'ai réinstallé les dépendances Ruby de Mastodon en virant l'option&nbsp; <i>RUBY_CONFIGURE_OPTS=--with-jemalloc</i> et l’occurrence dans la configuration du service systemd de sidekiq.</div><div><h2>Étape 6 - 7 mars 2022 - 13h15</h2></div><div>Sauvé. <a href="https://diaspodon.fr/web/statuses/107915202557657763" title="On est en ligne.">On est en ligne.</a> </div><div><h2>Une conclusion</h2></div><div>Lisez la doc, ou <a href="https://wiki.fiat-tux.fr/books/administration-syst%C3%A8mes/page/migration-d%E2%80%99une-version-majeure-de-postgresql-%C3%A0-une-autre/revisions/78" title="Luc">Luc</a>, bordel !</div><div><br></div>";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}s:7:"pubDate";a:1:{i:0;a:5:{s:4:"data";s:31:"Tue, 08 Mar 2022 10:56:00 +0100";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}s:32:"http://purl.org/dc/elements/1.1/";a:1:{s:7:"creator";a:1:{i:0;a:5:{s:4:"data";s:4:"dada";s:7:"attribs";a:0:{}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}s:27:"http://www.w3.org/2005/Atom";a:1:{s:4:"link";a:1:{i:0;a:5:{s:4:"data";s:0:"";s:7:"attribs";a:1:{s:0:"";a:3:{s:3:"rel";s:4:"self";s:4:"type";s:19:"application/rss+xml";s:4:"href";s:36:"https://www.dadall.info/feed.php?rss";}}s:8:"xml_base";s:0:"";s:17:"xml_base_explicit";b:0;s:8:"xml_lang";s:0:"";}}}}}}}}}}}}s:4:"type";i:128;s:7:"headers";a:5:{s:4:"date";s:29:"Wed, 01 Jan 2025 12:42:58 GMT";s:12:"content-type";s:34:"application/rss+xml; charset=UTF-8";s:27:"access-control-allow-origin";s:1:"*";s:16:"x-xss-protection";s:13:"1; mode=block";s:15:"x-frame-options";s:10:"SAMEORIGIN";}s:5:"build";i:1734952776;s:13:"cache_version";i:1;s:4:"hash";s:40:"7df71f616a434d6e11814395606db93b037f38ef";s:21:"cache_expiration_time";i:1735736178;s:23:"__cache_expiration_time";i:1735736178;}