<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>/home/lord</title>
    <link>https://lord.re/</link>
    <description>Recent content on /home/lord</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>fr-fr</language>
    <lastBuildDate>Thu, 15 Mar 2018 14:16:24 +0100</lastBuildDate>
    
        <atom:link href="https://lord.re/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Les us et coutumes d&#39;IRC</title>
      <link>https://lord.re/posts/111-traditions-dirc/</link>
      <pubDate>Wed, 20 Jun 2018 11:58:21 +0200</pubDate>
      
      <guid>https://lord.re/posts/111-traditions-dirc/</guid>
      <description>

&lt;p&gt;IRC est l&amp;rsquo;un des plus anciens protocoles de chat sur Internet encore très activement utilisé.
Malgré une perte d&amp;rsquo;intérêt de la part du grand public qui se tourne massivement vers les réseaux sociaux ou alors sur les plateformes verrouillées/privatives de Slack, Discord, Telegram, … IRC reste toujours utilisé près de trente ans après sa création et connait même des &lt;a href=&#34;https://ircv3.net/&#34;&gt;mises à jour du protocole&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;IRC est donc à la fois un protocole mais aussi toute &lt;em&gt;une communauté&lt;/em&gt; avec ses traditions, ses codes et ses ptites habitudes.&lt;/p&gt;

&lt;h2 id=&#34;morning&#34;&gt;Morning&lt;/h2&gt;

&lt;p&gt;Il existe de très nombreux fuseaux horaires utilisés dans le monde mais sur IRC nous avons dépassés ces concepts abstraits.
Au lieu de s&amp;rsquo;appuyer sur UTC pour synchroniser tout ce petit monde, nous nous appuyons sur UGT : l&amp;rsquo;&lt;a href=&#34;http://www.total-knowledge.com/~ilya/mips/ugt.html&#34;&gt;Universal Greetings Time&lt;/a&gt; qui permet de simplifier les rapports :&lt;/p&gt;

&lt;p&gt;Quand une personne arrive dans un salon de discussion c&amp;rsquo;est le matin. Du coup &lt;strong&gt;« Good Morning !»&lt;/strong&gt; , quelque soit l&amp;rsquo;heure chez soit.&lt;/p&gt;

&lt;p&gt;Et quand elle part ?
Bah &lt;strong&gt;« Bonne Nuit ! »&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est super simple et devrait s&amp;rsquo;appliquer dans le monde physique aussi.
Fini de se tracasser et hésiter entre &lt;em&gt;bonsoir&lt;/em&gt; ou *bon aprem*…&lt;/p&gt;

&lt;h2 id=&#34;hl-highlight&#34;&gt;HL : HighLight&lt;/h2&gt;

&lt;p&gt;La plupart des clients IRC sont configurés de sorte que lorsque quelqu&amp;rsquo;un mentionne votre nom, votre client se mette à clignoter/jouer un son/envoi une notif/… bref ça se rate pas.
On appelle cela un highlight ou plus communément &lt;strong&gt;HL&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Évitez de HL les gens pour rien.&lt;/strong&gt;
Et évitez également de HL pleins de monde (à tord) sur un salon.
C&amp;rsquo;est souvent une bonne occasion de réveiller un bot pour kicker le malotru.&lt;/p&gt;

&lt;p&gt;Et tant que j&amp;rsquo;y suis, pour l&amp;rsquo;amour de Gnu, si vous mentionnez quelqu&amp;rsquo;un, foutez pas un &lt;strong&gt;@&lt;/strong&gt; devant.
On est pas sur twitter ou autre, un &lt;strong&gt;@&lt;/strong&gt; devant un nom signifie que c&amp;rsquo;est un &lt;em&gt;opérateur&lt;/em&gt; et aura même tendance à empêcher le client de HL.&lt;/p&gt;

&lt;h2 id=&#34;slaps&#34;&gt;Slaps&lt;/h2&gt;

&lt;p&gt;MSN a les wizz, Facebook les pokes, IRC les slaps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Berthe slaps Guigui around a bit with a large trout.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est amusant cinq minutes.
Mais ça fait bien plus de cinq minutes que l&amp;rsquo;on est sur IRC…&lt;/p&gt;

&lt;h2 id=&#34;don-t-ask-to-ask-just-ask&#34;&gt;Don&amp;rsquo;t ask to ask, just ask&lt;/h2&gt;

&lt;p&gt;Sur les salons de discussions des distributions linux (mais pas seulement), de très nombreux utilisateurs vont et viennent pour avoir un petit coup de main.
C&amp;rsquo;est l&amp;rsquo;endroit idéal pour ça (mieux que les forums dans la majorité des cas je dirai).&lt;/p&gt;

&lt;p&gt;Mais par contre, &lt;strong&gt;ne demandez pas la permission pour poser une question&lt;/strong&gt;.
&lt;del&gt;&lt;em&gt;« Can I ask something ? »&lt;/em&gt;&lt;/del&gt;
Biensûr que vous pouvez poser votre question, mais demander si vous pouvez poser la question est une perte de temps pour tout le monde.&lt;/p&gt;

&lt;p&gt;Posez votre question tout de suite avec courtoisie et le plus clairement possible.
Mais surtout, posez là à votre moteur de recherche favoris avant, ce serait dommage de déranger des gens pour une réponse que l&amp;rsquo;on obtient en moins de trente secondes par soi-même.&lt;/p&gt;

&lt;p&gt;Pas mal de monde traîne passivement sur IRC.
Soyez précis, concis et courtois dans vos questions.&lt;/p&gt;

&lt;h3 id=&#34;xy&#34;&gt;XY&lt;/h3&gt;

&lt;p&gt;Et &lt;em&gt;ne vous ofusquez pas si quelqu&amp;rsquo;un vous demande « Pourquoi vous tentez de faire telle ou telle chose ? »&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Par habitude on reconnait les questions étranges pour tenter d&amp;rsquo;obtenir des effets abscons.
On est typiquement dans un &lt;a href=&#34;http://xyproblem.info/&#34;&gt;XY problem&lt;/a&gt;, donc ne vous braquez pas et expliquez quel est votre problème global plutôt que &lt;em&gt;« Comment faire ceci ? »&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Et vous aurez probablement des suggestions pour trouver un meilleur angle d&amp;rsquo;attaque de votre problème.&lt;/p&gt;

&lt;p&gt;Bon c&amp;rsquo;est pas spécifique à IRC mais c&amp;rsquo;est problème récurrent.&lt;/p&gt;

&lt;h2 id=&#34;idle&#34;&gt;Idle&lt;/h2&gt;

&lt;p&gt;IRC est une messagerie instantanée certes mais généralement les utilisateurs sont passifs.
On est connectés &lt;sup&gt;24&lt;/sup&gt;&amp;frasl;&lt;sub&gt;7&lt;/sub&gt; mais on est pas forcément devant le terminal &lt;sup&gt;24&lt;/sup&gt;&amp;frasl;&lt;sub&gt;7&lt;/sub&gt;.&lt;/p&gt;

&lt;p&gt;N&amp;rsquo;espérez donc pas une réponse instantanée, surtout un dimanche à 4h du matin.
Il n&amp;rsquo;est pas rare de tomber sur des salons de discussions où rien ne se raconte pendant plusieurs jours et puis d&amp;rsquo;un coup : PAF !
Une fulgurance, une activité débordante, bref la vie reprend le dessus.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Chacun à un rythme de clavardage différent.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Bref si vous arrivez sur un salon désespérément calme, lancez une phrase ou deux mais surtout ne commencez pas à chouiner que personne ne répond.
Et non, HL tout le monde ne vous attirera pas la sympathie des occupants.&lt;/p&gt;

&lt;h2 id=&#34;messages-d-away&#34;&gt;Messages d&amp;rsquo;away&lt;/h2&gt;

&lt;p&gt;Bon bha maintenant que vous avez envie de rester connecté &lt;sup&gt;24&lt;/sup&gt;&amp;frasl;&lt;sub&gt;7&lt;/sub&gt; avec votre client irc vous vous demandez : &lt;em&gt;« Mais comment signaler au monde entier quand je suis pas dispo ?! »&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Et bha en fait on s&amp;rsquo;en fout royal.
Si vous répondez pas… bha on comprend assez vite que vous n&amp;rsquo;êtes pas là…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Épargnez-nous les messages d&amp;rsquo;away et les changements de pseudo.&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&#34;amsg&#34;&gt;AMSG&lt;/h2&gt;

&lt;p&gt;Bon je continue de râler encore un coup.
Les amsg sont les messages envoyés à tous les salons de discussions où vous êtes connectés.&lt;/p&gt;

&lt;p&gt;Et bha comme pour les messages d&amp;rsquo;away…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;s&amp;rsquo;en&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;fout.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
C&amp;rsquo;est vrai quoi…
Ce n&amp;rsquo;est généralement que du spam.&lt;/p&gt;

&lt;h2 id=&#34;vous-êtes-toujours-là&#34;&gt;Vous êtes toujours là ?&lt;/h2&gt;

&lt;p&gt;Je vous ai pas dégouté en passant pour un gros con aigri ?&lt;/p&gt;

&lt;p&gt;Bon bha du coup venez sur IRC, c&amp;rsquo;est super sympathique !
Pleins de gens très intéressants (mais aussi des cons comme partout).&lt;/p&gt;

&lt;p&gt;Même si la fréquentation est en légère baisse depuis quelques années, les salons de discussions sont toujours pas mal remplis surtout dans la communauté du logiciel libre.
En tentant d&amp;rsquo;aider des gens, on apprend énormément les rouages internes d&amp;rsquo;un logiciel.
Avec des problèmatiques que l&amp;rsquo;on a pas rencontré personnellement ou autre.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ce n&amp;rsquo;est pas un réseau fédéré mais une myriade de réseaux indépendants&lt;/strong&gt; avec leurs règles et coutumes spécifiques : &lt;a href=&#34;https://freenode.net/&#34;&gt;Freenode&lt;/a&gt; est le réseau de référence pour le monde du Libre.
&lt;a href=&#34;http://geeknode.org/&#34;&gt;Geeknode&lt;/a&gt; est un réseau français versé logiciel libre et neutralité du net hébergeant beaucoup de salons francophones dont une bonne partie de la &lt;a href=&#34;https://ffdn.org&#34;&gt;FFDN&lt;/a&gt;.
Et encore pleins d&amp;rsquo;autres réseaux IRC…&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>14ème article d&#39;avancement du Librem 5</title>
      <link>https://lord.re/posts/110-librem-progress-report-14/</link>
      <pubDate>Fri, 15 Jun 2018 23:22:07 +0100</pubDate>
      
      <guid>https://lord.re/posts/110-librem-progress-report-14/</guid>
      <description>

&lt;p&gt;Ceci est une traduction libre de &lt;a href=&#34;https://puri.sm/posts/librem5-progress-report-14/&#34;&gt;cet article&lt;/a&gt; concernant les avancées de la société Purism concernant le smartphone &lt;strong&gt;Librem 5&lt;/strong&gt;.
L&amp;rsquo;article original est sous licence &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/&#34;&gt;CC BY-SA 4.0&lt;/a&gt; tout comme ma traduction.&lt;/p&gt;

&lt;p&gt;Ce smartphone a bénéficié d&amp;rsquo;un crowdfunding et a pour but d&amp;rsquo;apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec.
Ils collaborent avec le projet &lt;a href=&#34;https://www.gnome.org&#34;&gt;Gnome&lt;/a&gt;, le projet &lt;a href=&#34;https://www.kde.org&#34;&gt;KDE&lt;/a&gt;, &lt;a href=&#34;https://ubports.com/&#34;&gt;UBPorts&lt;/a&gt; et le projet &lt;a href=&#34;https://matrix.org&#34;&gt;Matrix&lt;/a&gt;.
Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.&lt;/p&gt;

&lt;p&gt;Bref voilà l&amp;rsquo;article :&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;Beaucoup de travail a été abattu sur le projet Librem 5 et même s&amp;rsquo;il en reste énormément, nous voulions faire un point des avancées réalisées par l&amp;rsquo;équipe ces deux dernières semaines.
Profitez donc de cette brève mise à jour concernant nos effort récents et nos accomplissements.&lt;/p&gt;

&lt;h2 id=&#34;le-travail-logiciel&#34;&gt;Le travail logiciel&lt;/h2&gt;

&lt;p&gt;Cela représente une importante masse de travail pour le Librem 5.
Il y a toute l&amp;rsquo;infrastructure comme l&amp;rsquo;apparence de l&amp;rsquo;interface utilisateur et les nouvelles bibliothèques et protocoles.
Mais il y a aussi les applications familières qui sont nécessaires.&lt;/p&gt;

&lt;p&gt;Sous le capot, notre &lt;a href=&#34;https://source.puri.sm/Librem5/phosh&#34;&gt;interface téléphone (phosh)&lt;/a&gt; a subit d&amp;rsquo;importantes améliorations ergonomiques principalement concernant l&amp;rsquo;écran de verrouillage.
Un important changement vient du fait que dorénavant le déverrouillage est délégué à &lt;strong&gt;PAM&lt;/strong&gt; pour mieux gérer le verrouillage de l&amp;rsquo;appareil via un code PIN.
Des ajouts de code ont également ont été fait pour mieux gérer de multiples sorties (écrans).
Également, &lt;a href=&#34;https://source.puri.sm/Librem5/libhandy&#34;&gt;libhandy&lt;/a&gt; est notre lib pour l&amp;rsquo;UI &lt;em&gt;handy&lt;/em&gt; (pratique) pour développer des applications GTK+.
Il y a eu l&amp;rsquo;ajout récent d&amp;rsquo;un widget de flèches (&lt;em&gt;HdyArrows&lt;/em&gt;) pour indiquer la direction de balayage de l&amp;rsquo;écran qui sera très utile pour de nombreuses applications, particulièrement pour l&amp;rsquo;écran de déverrouillage.
Qui plus est, libhandy a eu quelques corrections de bugs et une refonte de la gestion du clavier.
Puisque les graphismes sont importants, nous avons ajouté le &lt;a href=&#34;https://lists.freedesktop.org/archives/wayland-devel/2018-March/037532.html&#34;&gt;support d&amp;rsquo;Etnaviv&lt;/a&gt; à weston-simple-dmabuf (un client Wayland pour tester l&amp;rsquo;implémentation du protocole Linux DMA-BUF).
Nous avons aussi completé son &lt;a href=&#34;https://lists.freedesktop.org/archives/wayland-devel/2018-March/037536.html&#34;&gt;support du format NV12&lt;/a&gt;.
C&amp;rsquo;est utilisé pour tester l&amp;rsquo;&lt;a href=&#34;https://github.com/swaywm/wlroots/pull/724&#34;&gt;implémentation&lt;/a&gt; de &lt;a href=&#34;https://github.com/swaywm/wlroots/pull/698&#34;&gt;linux-dmabuf&lt;/a&gt; de &lt;strong&gt;wlroots&lt;/strong&gt;.
Nous aimerions tout particulièrement remercier le projet &lt;strong&gt;wlroots&lt;/strong&gt; et &lt;strong&gt;Weston&lt;/strong&gt; pour leurs revues de code, recommandations et supports.&lt;/p&gt;

&lt;p&gt;Puisqu&amp;rsquo;on peut pas avoir un téléphone qui ne puisse faire d&amp;rsquo;appels téléphoniques, de grands efforts ont été fait sur &lt;a href=&#34;https://source.puri.sm/Librem5/calls&#34;&gt;Calls&lt;/a&gt; qui peut désormais émettre des appels !
(Et si vous l&amp;rsquo;aviez manqué, nous vous encourageons à lire &lt;a href=&#34;https://puri.sm/posts/librem5-progress-report-12/&#34;&gt;l&amp;rsquo;article correspondant&lt;/a&gt;&lt;a href=&#34;https://lord.re/posts/102-librem-progress-report-11-5/&#34;&gt;FR&lt;/a&gt;)
En plus de tout le code écrit, les interfaces ont été documentées dans de code.
L&amp;rsquo;empaquetage pour Debian est en préparation et nous taffons pour inclure un paquet Flatpak créé par un membre de la communauté.&lt;/p&gt;

&lt;p&gt;Chaque smartphone nécessite un clavier visuel (OSK pour On-Screen-Keyboard), donc des efforts de devs ont été fait en ce sens pour les protocoles nécessaires et les upstreamer (les faire accepter par les mainteneurs des projets amonts).
Pour l&amp;rsquo;instant, le protocole &lt;em&gt;virtual-keyboard&lt;/em&gt; &lt;a href=&#34;https://github.com/swaywm/wlroots/pull/999&#34;&gt;a été accepté&lt;/a&gt; pour être inclus dans wlroots.
Le protocole &lt;em&gt;text-input&lt;/em&gt; a été &lt;a href=&#34;https://lists.freedesktop.org/archives/wayland-devel/2018-May/038071.html&#34;&gt;soumis upstream&lt;/a&gt; à l&amp;rsquo;approbation.
Pour tester le protocole. &lt;em&gt;virtual-keyboard&lt;/em&gt;, nous avons créé un prototype basé sur &lt;strong&gt;weston-keyboard&lt;/strong&gt;.
Vous pouvez lire ça plus en détail à propos du dev du clavier visuel dans &lt;a href=&#34;https://puri.sm/posts/dorota-on-the-importance-of-on-screen-keyboards/&#34;&gt;l&amp;rsquo;article de Dorota&lt;/a&gt;&lt;a href=&#34;https://lord.re/posts/109-librem-progress-report-13/&#34;&gt;FR&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;le-travail-matériel&#34;&gt;Le travail matériel&lt;/h2&gt;

&lt;p&gt;Identifier et tester chaque composant matériel qui seront présent dans le dev kit et éventuellement le téléphone est une tâche non trivial.
Après le choix d&amp;rsquo;un composant potentiel et la réception de quelques échantillons pour tests, il faut souvent modifier ou carrément écrire un module kernel avant même de pouvoir tester.
Cela a été le cas pour évaluer et tester des module basse consommation Wifi, ce qui est encore en cours.
Les moteurs de vibrations sont aussi en cours d&amp;rsquo;approvisionnements pour évaluations et les chargeurs de batterie sont testés.
Nous sommes aussi en train d&amp;rsquo;investiguer différentes options pour les caméras.&lt;/p&gt;

&lt;h2 id=&#34;construire-une-communauté&#34;&gt;Construire une communauté&lt;/h2&gt;

&lt;p&gt;La communauté continue d&amp;rsquo;occuper nos pensées.
Nous avons donc monté un &lt;a href=&#34;https://wiki.puri.sm/&#34;&gt;wiki PureOS&lt;/a&gt; qui n&amp;rsquo;est pas encore très étoffé mais qui pourrait devenir un endroit pour trouver de la documentation générale et des informations techniques sur PureOs et les produits Purism.
Nous avons corrigé un soucis sur la mailing-list de la communauté pour être de nouveau fonctionnelle et avons ouvert nos salons de discussion Matrix pour que vous puissiez nous rejoindre avec vos Matrix ID existants.
Pour plus d&amp;rsquo;infos à ce propos, jetez un œil à notre &lt;a href=&#34;https://developer.puri.sm/Volunteering/HowTo.html&#34;&gt;page “volunteer”&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Nous sommes heureux de recevoir des propositions de volontariat qui font un travail formidable pour aider à rendre le Librem5 génial.
Si vous avez suivi ou contribué à nos dépôts de code, sachez que nous venons de migrer de Gogs à GitLab − la nouvelle adresse est &lt;a href=&#34;https://source.puri.sm/&#34;&gt;source.puri.sm&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est tout les amis.
Restez branchés pour de futures nouveautés à venir !&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Beaucoup d&amp;rsquo;avancées logicielles.
C&amp;rsquo;est assez encourageant et on dirait qu&amp;rsquo;un bon rythme s&amp;rsquo;est mis en place avec de la collaboration effective avec d&amp;rsquo;autres projets.&lt;/p&gt;

&lt;p&gt;Par contre c&amp;rsquo;est toujours un peu flippant concernant la partie matos.
Les dev kits devraient pas tarder à être finalisés pour être livrés… j&amp;rsquo;ai du mal à imaginer que la deadline initiale puisse être respectées.
On croise les doigts&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>13ème article d&#39;avancement du Librem 5</title>
      <link>https://lord.re/posts/109-librem-progress-report-13/</link>
      <pubDate>Wed, 13 Jun 2018 09:22:07 +0100</pubDate>
      
      <guid>https://lord.re/posts/109-librem-progress-report-13/</guid>
      <description>

&lt;p&gt;Ceci est une traduction libre de &lt;a href=&#34;https://puri.sm/posts/librem5-progress-report-13/&#34;&gt;cet article&lt;/a&gt; concernant les avancées de la société Purism concernant le smartphone &lt;strong&gt;Librem 5&lt;/strong&gt;.
L&amp;rsquo;article original est sous licence &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/&#34;&gt;CC BY-SA 4.0&lt;/a&gt; tout comme ma traduction.&lt;/p&gt;

&lt;p&gt;Ce smartphone a bénéficié d&amp;rsquo;un crowdfunding et a pour but d&amp;rsquo;apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec.
Ils collaborent avec le projet &lt;a href=&#34;https://www.gnome.org&#34;&gt;Gnome&lt;/a&gt;, le projet &lt;a href=&#34;https://www.kde.org&#34;&gt;KDE&lt;/a&gt;, &lt;a href=&#34;https://ubports.com/&#34;&gt;UBPorts&lt;/a&gt; et le projet &lt;a href=&#34;https://matrix.org&#34;&gt;Matrix&lt;/a&gt;.
Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.&lt;/p&gt;

&lt;p&gt;Bref voilà l&amp;rsquo;article :&lt;/p&gt;

&lt;hr&gt;

&lt;h1 id=&#34;l-importance-des-claviers-visuels&#34;&gt;L&amp;rsquo;importance des claviers visuels&lt;/h1&gt;

&lt;p&gt;Le rôle des claviers ne doit pas être sous-estimé.
Ils sont apparus bien avant les ordinateurs et survivent à l&amp;rsquo;ère des smartphones.
Des millions de gens discutent avec leurs amis en écrivant sur leur cher ordinateur de poche en utilisant la vénérable disposition QWERTY datant de 1873.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est dur d&amp;rsquo;imaginer un smartphone sans dispositif d&amp;rsquo;entrée de texte.
Certains rêvent de mouvement à la &lt;em&gt;Minority Report&lt;/em&gt; mais le &lt;a href=&#34;https://puri.sm/shop/librem-5/&#34;&gt;Librem 5&lt;/a&gt; perpétue la tradition du clavier.&lt;/p&gt;

&lt;p&gt;Ces dernières semaines, je suis devenue la spécialiste de l&amp;rsquo;équipe concernant le clavier.
J&amp;rsquo;ai passé ce temps à m&amp;rsquo;assurer que toutes les pièces s&amp;rsquo;emboîtent bien et à prouver que le prototype fonctionne.
Le prototype peut être vu dans la vidéo ci-dessous.
Il est basé sur rootston (wlroots), GTK et weston-keyboard − notez ces noms, ils auront leur importance plus loin.&lt;/p&gt;


&lt;figure&gt;
    &lt;a href=&#34;https://en.wikipedia.org/wiki/File:Continental_Standard_typewriter_keyboard_-_key_detail.jpg&#34;&gt;
        &lt;img src=&#34;https://lord.re/static/109-qwerty.jpg&#34; alt=&#34;photo d&amp;#39;un clavier de machine à écrire en Qwerty&#34; /&gt;
    &lt;/a&gt;
    
    &lt;figcaption&gt;
        &lt;h4&gt;Une machine à écrire “Continental Standard” Photo issue de Wikipedia&lt;/h4&gt;
        
    &lt;/figcaption&gt;
    
&lt;/figure&gt;


&lt;video class=&#34;wp-video-shortcode&#34; id=&#34;video-52786-1&#34; width=&#34;1024&#34; preload=&#34;metadata&#34; controls=&#34;controls&#34;&gt;&lt;source type=&#34;video/webm&#34; src=&#34;https://videos.puri.sm/librem5/keyboard-l5-edit.webm?_=1&#34; /&gt;&lt;a href=&#34;https://videos.puri.sm/librem5/keyboard-l5-edit.webm&#34;&gt;https://videos.puri.sm/librem5/keyboard-l5-edit.webm&lt;/a&gt;&lt;/video&gt;

&lt;p&gt;Cette tâche s&amp;rsquo;est avéré un voyage intéressant et enrichissant.
Le train Wayland m&amp;rsquo;a baladé des &lt;em&gt;méthodes d&amp;rsquo;entrée&lt;/em&gt; à l&amp;rsquo;Asie, à travers les protocoles, ainsi que les communautés FLOSS.
Je vais tenter de vous décrire mon histoire.&lt;/p&gt;

&lt;h2 id=&#34;ça-doit-pas-être-bien-dur-pas-vrai&#34;&gt;“Ça doit pas être bien dur, pas vrai ?”&lt;/h2&gt;

&lt;p&gt;À la surface, un clavier est un appareil simple.
C&amp;rsquo;est un assortiment de boutons attachés à un ordi.
Appuyez sur un bouton et l&amp;rsquo;ordinateur réagit promptement.
Placer un clavier à l&amp;rsquo;écran ne devrait pas être difficile : il suffit de réserver une portion de l&amp;rsquo;écran pour les touches.
Appui : action.
Ça ressemble à un clavier de téléphone, non ?
Il n&amp;rsquo;apparait pas à l&amp;rsquo;écran tout le temps.
Et il corrige les erreurs.
Pas mal, il y a d&amp;rsquo;autres différences ?&lt;/p&gt;

&lt;p&gt;En fait, les claviers visuels ne sont pas considérés comme des claviers.
Ils font partit d&amp;rsquo;une plus large catégorie appelée : «les méthodes d&amp;rsquo;entrées».
Ces méthodes d&amp;rsquo;entrées peuvent avoir plus de responsabilités que juste permettre d&amp;rsquo;appuyer sur des touches.
On pourrait avoir une touche pour corriger les erreurs de frappe, ou bien choisir une suggestion depuis un dictionnaire, trouver des synonymes, entrer des phrases complètes que j&amp;rsquo;utilise fréquemment comme “Ahoy Matey!”.
Pour les langues asiatiques, il est quasiment indispensable d&amp;rsquo;en utiliser pour écrire.&lt;/p&gt;


&lt;figure&gt;
    &lt;a href=&#34;https://upload.wikimedia.org/wikipedia/commons/9/92/Ibus-anthy-on-gedit.png&#34;&gt;
        &lt;img src=&#34;https://lord.re/static/109-ibus-anthy-on-gedit.png&#34; alt=&#34;Illustration d&amp;#39;anthy un logiciel de méthode d&amp;#39;entrée pour les langues asiatiques&#34; /&gt;
    &lt;/a&gt;
    
    &lt;figcaption&gt;
        &lt;h4&gt;Écrire en japonais en utilisant la méthode d&amp;#39;entrée Anthy. Image issue de Wikipedia&lt;/h4&gt;
        
    &lt;/figcaption&gt;
    
&lt;/figure&gt;


&lt;p&gt;En général, les méthodes d&amp;rsquo;entrée permettent à l&amp;rsquo;utilisateur d&amp;rsquo;entrée du texte, il existe une grande variété de façon de faire.
Elles peuvent afficher un pop-up de suggestions, suggérer des phrases, reconnaître de l&amp;rsquo;écriture manuscrite or proposer carrément proposer des systèmes comme &lt;a href=&#34;http://www.inference.org.uk/dasher/DasherSummary2.html&#34;&gt;Dasher&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;arrive-wayland&#34;&gt;Arrive Wayland&lt;/h2&gt;

&lt;p&gt;Pour moi cependant, la première tâche était de parvenir à taper du bon vieil anglais en appuyant sur des boutons sur l&amp;rsquo;écran.
Le Librem5 utilisera des applications Wayland native exclusivement (grâce à GTK3 et Qt5) et c&amp;rsquo;est un point important pour le clavier.
Wayland est en charge des interfaces humaines comme les claviers, souris, écrans tactiles et méthodes d&amp;rsquo;entrée.
Un compositeur Wayland agit en tant qu&amp;rsquo;intermédiaire entre les appareils et les applications.
Il définit comment les applications se partagent ces appareils.
Imaginez le boxon que ce serait si toutes les applis écoutaient les clavier en même temps !&lt;/p&gt;


&lt;figure&gt;
    &lt;a href=&#34;https://lord.re/static/109-input-methods-diaram.png&#34;&gt;
        &lt;img src=&#34;https://lord.re/static/109-input-methods-diagram.png&#34; alt=&#34;Diagramme montrant la relation entre les différents appareils d&amp;#39;entrée, le compositeur au centre, puis les applis à droite à qui le compositeur redirige les entrée&#34; /&gt;
    &lt;/a&gt;
    
&lt;/figure&gt;


&lt;p&gt;Voilà où la partie technique démarre.
Wayland est un ensemble de protocole.
Il y en a un, &lt;em&gt;wl_keyboard&lt;/em&gt;, définissant comment les applications écoutent les appuis sur le clavier.
De la même façon, un autre (&lt;em&gt;text-input&lt;/em&gt;) défini comment les applications écoutent les méthodes d&amp;rsquo;entrées.
Encore un autre, nommé &lt;em&gt;input-method&lt;/em&gt;, défini comment les application de méthode d&amp;rsquo;entrée communiquent avec le compositeur.
Cela nous donnent trois classes de logiciels qui ont besoin de travailler ensemble pour créer un clavier visuel : application, compositeur et clavier lui même.&lt;/p&gt;

&lt;p&gt;Premier réflexe, j&amp;rsquo;ai regardé comment ces protocoles étaient supportés par les projets existants.
La pièce centrale est le projet wlroots sur lequel nous nous basons pour le compositeur du Librem5.
Il ne supporte aucun de ces protocole et mon intention d&amp;rsquo;ajouter leur support a été chaudement apprécié par les mainteneurs.
Tout n&amp;rsquo;est pas aussi rose cependant.
Le seul clavier implémentant le protocole &lt;em&gt;input-method&lt;/em&gt; est &lt;strong&gt;weston-keyboard&lt;/strong&gt;, qui n&amp;rsquo;est clairement pas fait pour les téléphones.
Le cas du protocole &lt;em&gt;text-input&lt;/em&gt; est encore plus intéressant.
Voyez-vous, j&amp;rsquo;ai menti un peu : il y a en vrai trois protocoles pour cela.
Qw et KWin se reposent essentiellement sur &lt;em&gt;_v2&lt;/em&gt; et GTK et gnome-shell utilisent &lt;em&gt;gtk_input_method&lt;/em&gt; ( tant qu&amp;rsquo;à digresser, le projet &lt;a href=&#34;http://maliit.github.io&#34;&gt;maliit&lt;/a&gt; utilise &lt;em&gt;zwp_text_input_unstable_v1&lt;/em&gt;).
C&amp;rsquo;est un très mauvaise nouvelle car chaque compositeur devra supporter les deux méthodes pour communiquer les entrées textes pour les applis Qt et GTK.&lt;/p&gt;

&lt;p&gt;Le moyen raisonnable de résoudre ça serait de convaincre tout le monde de standardiser un seul protocole.
Avant de plonger plus profondément dans les politiques des communautés, j&amp;rsquo;ai décidé de me salir les mains afin d&amp;rsquo;avoir une meilleure vue des détails.&lt;/p&gt;

&lt;h2 id=&#34;le-travail&#34;&gt;Le travail&lt;/h2&gt;

&lt;p&gt;J&amp;rsquo;ai choppé rootston, GTK3.22 et weston-keyboard et j&amp;rsquo;ai codé le support de wlroots.
Après l&amp;rsquo;arrivée de ce code, &lt;em&gt;gtk_input_method&lt;/em&gt; a été proposé pour devenir le nouvel &lt;em&gt;zwp_text_input_unstable_v3&lt;/em&gt; officiel.
Pendant ce temps, j&amp;rsquo;ai &lt;a href=&#34;https://github.com/swaywm/wlroots/pull/892&#34;&gt;envoyé une pull reguest à wlroots&lt;/a&gt;.
De là a émergée une longue série de discussions avec les devs de wlroots.
Deux conclusions en sont sorties :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;text_input_v3&lt;/em&gt; est très proche de ce qu&amp;rsquo;attend la communauté&lt;/li&gt;
&lt;li&gt;&lt;em&gt;input-method&lt;/em&gt; est à moitié à l&amp;rsquo;abandon, incomplet et duplique de nombreuses fonctionnalités d&amp;rsquo;autres protocoles.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En bref, les deux protocoles nécessitent de du boulot.&lt;/p&gt;

&lt;p&gt;La bonne nouvelle est que ces discussions étaient très approfondies et impliquaient des gens de différents projets ce qui a clarifié ce qui devait être fait.
Pour l&amp;rsquo;instant, je peaufine des propositions pour chacun de ces protocoles qui seront étudiées en profondeurs et qui seront je l&amp;rsquo;espère suffisamment propres pour être adoptés et inclus dans &lt;a href=&#34;https://github.com/wayland-project/wayland-protocols&#34;&gt;les protocoles Wayland&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Avoir de bons protocoles faisant leur job devrait convaincre GTK, Qt et Maliit de s&amp;rsquo;uniformiser sur une façon de faire afin d&amp;rsquo;éviter la duplication du code et des efforts.&lt;/p&gt;

&lt;p&gt;Vous vous demandez peut-être : “Vous avez déjà une implémentation fonctionnelle, pourquoi se préoccuper des autres projets ?”
Dans l&amp;rsquo;équipe Librem 5, nous réalisons à quel point notre projet sera important dans l&amp;rsquo;écosystème Wayland.
Une fois le téléphone sorti, ça sera la référence pour les projets à venir.
Agir dans notre coin, couperai le Librem de certains projets alors que d&amp;rsquo;autres suivraient le reste du monde.
Faire les choses bien et par étape permettra une interopérabilité entre les téléphones Librem et les autres projets sans efforts ce qui améliorera la compatibilité pour tout le monde.&lt;/p&gt;

&lt;h2 id=&#34;la-suite&#34;&gt;La suite ?&lt;/h2&gt;

&lt;p&gt;Le travail sur les protocoles se poursuit et leurs implémentations sera proposé pour leur inclusion dans les libs upstreams (les bibliothèques de codes utilisés par les autres projets).
À un moment, weston-keyboard devra disparaitre ou être radicalement transformé ce qui signifie plus de travail pour la design team.
Les protocoles devraient être standardisés ou presque lorsque nos premières boards arriveront dans les mains du public.
Je suis très curieuse des méthodes d&amp;rsquo;entrées que vous créerez − les idées entendues durant les discussions étaient folles !
Et enfin j&amp;rsquo;espère être témoin de l&amp;rsquo;expérience en la matière de la part des asiatiques ;-)&lt;/p&gt;

&lt;p&gt;Dorota&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Dorota est dans l&amp;rsquo;équipe de dev mobile de chez Purism.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;espère que l&amp;rsquo;unification des protocoles d&amp;rsquo;entrées de Wayland aura effectivement lieu sinon ça risque d&amp;rsquo;être assez chiant à l&amp;rsquo;usage si l&amp;rsquo;on mixe du gtk et du Qt.&lt;/p&gt;

&lt;p&gt;D&amp;rsquo;ailleurs je connaissais pas du tout le projet Maliit.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;aimerai bien une réimplémentation libre de &lt;a href=&#34;http://www.exideas.com/ME/index.php&#34;&gt;MessagEase&lt;/a&gt; que j&amp;rsquo;utilise sur l&amp;rsquo;android.
C&amp;rsquo;est un clavier qui ne tente pas de mimer un clavier de machine à écrire mais est pensé pour être utilisé sur du tactile.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Trifouillage de firmware de clavier</title>
      <link>https://lord.re/posts/107-modifs-firmware-clavier/</link>
      <pubDate>Tue, 05 Jun 2018 22:40:20 +0200</pubDate>
      
      <guid>https://lord.re/posts/107-modifs-firmware-clavier/</guid>
      <description>

&lt;p&gt;Je vous ai déjà parlé de mon clavier fait maison il y a bientôt trois ans dans &lt;a href=&#34;https://lord.re/posts/39-clavier-handmade/&#34;&gt;ce premier article&lt;/a&gt;.
Il est ptet temps de faire la partie 2 ?
Ouai mais non c&amp;rsquo;est trop tard.&lt;/p&gt;

&lt;p&gt;Par contre je viens de modifier un peu la disposition du clavier et du coup c&amp;rsquo;est une bonne occase pour en reparler !
Ça sera un peu la seconde partie en quelque sorte où j&amp;rsquo;aborderai un peu plus la partie programmation du &lt;abbr title=&#34;le logiciel interne de l&#39;appareil&#34;&gt;firmware&lt;/abbr&gt;.&lt;/p&gt;

&lt;h2 id=&#34;s-y-remettre-trois-ans-plus-tard&#34;&gt;S&amp;rsquo;y remettre trois ans plus tard&lt;/h2&gt;

&lt;p&gt;Bon donc ce clavier me sert constamment depuis tout ce temps.
Il fonctionne superbement bien malgré son look… particulier.&lt;/p&gt;


&lt;figure&gt;
    &lt;a href=&#34;https://lord.re/static/107-clavier-juin-2018.jpg&#34;&gt;
        &lt;img src=&#34;https://lord.re/static/107-clavier-juin-2018.jpg&#34; alt=&#34;Photo du clavier au 05/06/2018&#34; /&gt;
    &lt;/a&gt;
    
    &lt;figcaption&gt;
        &lt;h4&gt;Le fameux clavier lors de la rédaction de l&amp;#39;article (admirez le repose poignet à base de SSD et de batterie).&lt;/h4&gt;
        
    &lt;/figcaption&gt;
    
&lt;/figure&gt;


&lt;p&gt;J&amp;rsquo;ai déjà refait une soudure ou deux qui s&amp;rsquo;étaient pétées mais bon rien de bien méchant.
Ça se refait en moins de cinq minutes montre en main.&lt;/p&gt;

&lt;p&gt;Par contre depuis que &lt;a href=&#34;https://lord.re/posts/103-remplacer-groovebasin/&#34;&gt;je réutilise mpd&lt;/a&gt; j&amp;rsquo;ai pas de moyen simple de passer au morceau de musique suivant.
J&amp;rsquo;ai pas de touche multimédia et j&amp;rsquo;ai pas envie de rajouter un raccourci &lt;em&gt;i3&lt;/em&gt; à base de alt ou autre…&lt;/p&gt;

&lt;p&gt;Il me restait toujours deux emplacements de libres sur le clavier mais à des emplacements un peu bâtard du coup pas trop envie d&amp;rsquo;y toucher, je conserve ce Maj droite et ce GUI (la ptite touche menu à droite de la touche windows droite sur un bon vieil azerty des familles).&lt;/p&gt;

&lt;p&gt;Une solution élegante serait de rajouter des touches multimédia par l&amp;rsquo;intermédiaire de la touche &lt;em&gt;Fn&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Bon bon c&amp;rsquo;est parti ?&lt;/p&gt;

&lt;p&gt;Non !&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;ai bien gardé les sources du firmware du clavier dans un ptit &lt;abbr title=&#34;gestionnaire de code source web&#34;&gt;gogs&lt;/abbr&gt; perso.
Par contre j&amp;rsquo;ai plus tout le reste.&lt;/p&gt;

&lt;p&gt;Le reste ?
Bha déjà il faut le compilateur kivabien, c&amp;rsquo;est à dire &lt;em&gt;gcc-avr&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Et il faut le ptit outil pour transferer le binaire de l&amp;rsquo;ordi jusque dans la ptite puce du ptit &lt;abbr title=&#34;Le circuit imprimmé contenant le programme et où toutes les touches sont raccordées&#34;&gt;Teensy&lt;/abbr&gt;.&lt;/p&gt;

&lt;h2 id=&#34;propre-via-gentoo&#34;&gt;Propre via Gentoo&lt;/h2&gt;

&lt;p&gt;Bon bha déjà, ça commence par un &lt;strong&gt;&lt;samp&gt;emerge arduino&lt;/samp&gt;&lt;/strong&gt; avec tout un tas de dépendances des plus effrayantes à base de java et compagnie…&lt;/p&gt;

&lt;p&gt;Ça fait un peu chier mais bon faut le faire.
A man&amp;rsquo;s got to do what a man&amp;rsquo;s got to do !&lt;/p&gt;

&lt;p&gt;Pendant que ça s&amp;rsquo;installe je vais voir la &lt;a href=&#34;https://www.pjrc.com/teensy/troubleshoot.html&#34;&gt;FAQ PJRC&lt;/a&gt; (PJRC est le fabricant du Teensy).&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;The AVR toolchains provided by Gentoo and Arch are broken. They compile .hex files which simply do not work!
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Bon … c&amp;rsquo;est ptet ancien, je verai le moment venu.&lt;/p&gt;

&lt;p&gt;Après arduino, il faut &lt;em&gt;Teensyduino&lt;/em&gt; qui est un add-on pour rajouter le support du Teensy à l&amp;rsquo;IDE arduino.
En gros chaque petit appareil a ses spécificités et cet add-on permet d&amp;rsquo;ajouter tout ce qu&amp;rsquo;il faut pour que l&amp;rsquo;IDE soit pleinement compatible avec le Teensy et puisse également transferer les binaires génerés dans le Teensy.
Ça se télécharge directement depuis &lt;a href=&#34;https://www.pjrc.com/teensy/td_download.html&#34;&gt;le site officiel&lt;/a&gt; de PJRC.&lt;/p&gt;

&lt;p&gt;Quand on lance le truc il faut l&amp;rsquo;installer par-dessus l&amp;rsquo;install arduino.
Bon je lui file &lt;em&gt;/usr/share/arduino&lt;/em&gt; mais non, l&amp;rsquo;installer n&amp;rsquo;en veux pas…&lt;/p&gt;

&lt;p&gt;Bon allez j&amp;rsquo;ai pas envie de perdre deux heures en dégueulassant ma ptite gentoo pour ça.&lt;/p&gt;

&lt;h2 id=&#34;sale-via-debian&#34;&gt;Sale via Debian&lt;/h2&gt;

&lt;p&gt;Bon je créer un &lt;abbr title=&#34;une sorte de machine virtuelle&#34;&gt;chroot&lt;/abbr&gt; jetable donc pas besoin de me faire chier avec de la création d&amp;rsquo;user et compagnie, je veux juste un environnement basique le plus vite possible.&lt;/p&gt;

&lt;p&gt;Donc je choppe &lt;a href=&#34;https://www.arduino.cc/en/Main/Software&#34;&gt;l&amp;rsquo;installer arduino&lt;/a&gt; directement depuis le site Arduino parceque ça ne marchera pas avec la version made in Debian…
J&amp;rsquo;&lt;strong&gt;untar&lt;/strong&gt; le fichier téléchargé.&lt;/p&gt;

&lt;p&gt;Je re-récupère Teensyduino &lt;a href=&#34;https://www.pjrc.com/teensy/td_download.html&#34;&gt;depuis le site officiel PJRC&lt;/a&gt; et je lui donne le dossier où j&amp;rsquo;ai foutu Arduino.
Et ça marche \o/&lt;/p&gt;

&lt;p&gt;Je récupère les sources du firmware depuis mon gogs.
C&amp;rsquo;est un bon gros git avec des sources pour tous pleins d&amp;rsquo;autres claviers également.&lt;/p&gt;

&lt;p&gt;Je récupère aussi pour tester le firmware déjà compilé que j&amp;rsquo;utilise actuellement.&lt;/p&gt;

&lt;p&gt;Je teste de le transférer dans le Teensy histoire de m&amp;rsquo;assurer que tout le bousin est fonctionnel.
Et hop ça fonctionne, je peux passer sereinement passer à la suite.
Bref le ptit quart d&amp;rsquo;heure de création de chroot n&amp;rsquo;aura pas été perdu vu que tout fonctionne comme sur des roulettes.&lt;/p&gt;

&lt;h2 id=&#34;le-firmware-du-clavier&#34;&gt;Le firmware du clavier&lt;/h2&gt;

&lt;p&gt;Je me base sur un &lt;em&gt;firmware libre&lt;/em&gt; assez réputé dans le milieu des bidouilleurs de claviers : &lt;a href=&#34;https://github.com/tmk/tmk_keyboard/&#34;&gt;TMK&lt;/a&gt;.
Le firmware est donc un programme qui tourne dans le Teensy qui possède un tout petit CPU à 16Mhz.&lt;/p&gt;

&lt;p&gt;Il a plusieurs tâches à effectuer.
Il doit comprendre quels boutons sont appuyés, les &lt;abbr title=&#34;Ne détecter qu&#39;un seul appui de touches et non pas plusieurs lors de l&#39;activation d&#39;un bouton&#34;&gt;débouncer&lt;/abbr&gt;, choisir quel signal transmettre à l&amp;rsquo;ordinateur.&lt;/p&gt;

&lt;p&gt;Et comme c&amp;rsquo;est un logiciel, on peut s&amp;rsquo;amuser à tripotter tout ces comportements.
Bon par contre je suis pas codeur donc c&amp;rsquo;est un peu tendu de modifier ça mais par chance le code est commenté de partout avec beaucoup de doc sur le Github avec explications des variables et tout.
Bref un projet bien sympa pour les bidouilleurs du dimanche soir.&lt;/p&gt;

&lt;p&gt;La partie qui m&amp;rsquo;intéresse particulièrement aujourd&amp;rsquo;hui est la modification du &lt;em&gt;keymap&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&#34;lrd-keymap-lrd-c&#34;&gt;lrd/keymap_lrd.c&lt;/h2&gt;

&lt;p&gt;Bon donc tout ce qui concerne spécifiquement mon clavier se trouve donc dans le dossier lrd (ouai je lui ai pas trouvé de nom à ce clavier).
On trouve plus précisément le &lt;em&gt;keymap_lrd.c&lt;/em&gt; qui est utilisé par le firmware (c&amp;rsquo;est défini dans le &lt;em&gt;Makefile&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;Voilà ce qu&amp;rsquo;on y trouve, c&amp;rsquo;est plutôt simple.&lt;/p&gt;

&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-C&#34; data-lang=&#34;C&#34;&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;#34;keymap_common.h&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
&lt;span style=&#34;color:#75715e&#34;&gt;/* 0: BÉPO */&lt;/span&gt;
KEYMAP(GRV,    &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,    &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;,    &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;,    &lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;,   &lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;, FN2,   &lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;,   &lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;,   &lt;span style=&#34;color:#ae81ff&#34;&gt;8&lt;/span&gt;,   &lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt;,   &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,MINS, \
       EQL,    Q,    W,    E,    R,   T,RSFT,   Y,   U,   I,   O,   P,LBRC, \
       TAB,    A,    S,    D,    F,   G, DEL,   H,   J,   K,   L,SCLN,QUOT, \
       LSFT,   Z,    X,    C,    V,   B,BSPC,   N,   M,COMM, DOT,SLSH,RBRC, \
       LCTL,RGUI, BSLS, LGUI, LALT, SPC,RALT, ENT,LEFT,  UP,DOWN,RGHT,FN1),
&lt;span style=&#34;color:#75715e&#34;&gt;/* 1: Fn1 */&lt;/span&gt;
KEYMAP(TRNS,  F1,  F2,  F3,  F4,  F5, ESC,  F6,  F7,  F8,  F9, F10, F11, \
       TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
       TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
       TRNS,TRNS,TRNS,TRNS,TRNS,MPRV,MPLY,MNXT,TRNS,TRNS,TRNS,TRNS,TRNS, \
       TRNS,TRNS,TRNS,TRNS,TRNS,VOLD,MUTE,VOLU,HOME,PGUP,PGDN, END,TRNS),
&lt;span style=&#34;color:#75715e&#34;&gt;/* 2: test */&lt;/span&gt;
KEYMAP(  NO,   A,   B,   C,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO, \
         NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO, \
         NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO, \
         NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO, \
         NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO,  NO),
};
&lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; uint16_t PROGMEM fn_actions[] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {
    [&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ACTION_LAYER_TAP_KEY(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, KC_ESC), &lt;span style=&#34;color:#75715e&#34;&gt;// Vers Fn1
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    [&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ACTION_LAYER_TAP_KEY(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;, KC_ESC), &lt;span style=&#34;color:#75715e&#34;&gt;// Vers Fn1
&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    [&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; ACTION_MODS_KEY(MOD_LSFT, KC_INS),
};&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Bon ça marche par couches, la &lt;em&gt;0&lt;/em&gt; est donc l&amp;rsquo;accès direct des touches classiques, la couche &lt;em&gt;1&lt;/em&gt; correspond aux touches pressées en même temps que &lt;strong&gt;Fn1&lt;/strong&gt;.
La couche &lt;em&gt;2&lt;/em&gt; est un reste d&amp;rsquo;expérimentations que j&amp;rsquo;ai pas pris le temps de virer.&lt;/p&gt;

&lt;p&gt;Ceux qui ont l&amp;rsquo;œil affûté verront que bien que le clavier soit &lt;em&gt;bépo&lt;/em&gt; il est défini en &lt;em&gt;qwerty&lt;/em&gt;.
C&amp;rsquo;est parcequ&amp;rsquo;il est réellement qwerty mais que c&amp;rsquo;est ensuite Xorg qui map ça en bépo.
En vrai un clavier n&amp;rsquo;envoi pas les lettres à l&amp;rsquo;ordinateur mais envoie une valeur numérique et ensuite l&amp;rsquo;OS se démerder pour transformer ce numéro de touche en une lettre en fonction de la configuration.
C&amp;rsquo;est d&amp;rsquo;ailleurs pour ça que certains programmes ont toujours les mêmes raccourcis quelque soit la disposition clavier choisie car ils se basent sur le &lt;abbr title=&#34;numéro de la touche&#34;&gt;&lt;em&gt;keycode&lt;/em&gt;&lt;/abbr&gt; et non le &lt;abbr title=&#34;le symbole définie par la disposition logicielle choisie&#34;&gt;&lt;em&gt;keysym&lt;/em&gt;&lt;/abbr&gt;.&lt;/p&gt;

&lt;p&gt;Pour ceux qui ont les yeux encore plus affûtés, vous aurez également remarqué que j&amp;rsquo;ai pas de touche &lt;strong&gt;Échap&lt;/strong&gt; et que j&amp;rsquo;ai &lt;strong&gt;Fn1&lt;/strong&gt; et &lt;strong&gt;Fn2&lt;/strong&gt;.
Bravo, vous êtes fort (si c&amp;rsquo;est pas le cas, faites semblant, je peux pas déceler vos mensonges à ce sujet).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fn1&lt;/strong&gt; est donc la touche qui déclenche l&amp;rsquo;action &lt;em&gt;[1]&lt;/em&gt; qui est définie en dessous, c&amp;rsquo;est-à-dire &lt;em&gt;ACTION_LAYER_TAP_KEY&lt;/em&gt;.
Cette fonction est G.É.N.I.A.L.E et encore je pourrai insister un peu plus.
En gros cette touche a dorénavant deux fonctions :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Passer sur la couche 1 lorsqu&amp;rsquo;elle est maintenue enfoncée donc &lt;strong&gt;Fn&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Faire &lt;strong&gt;KC_ESC&lt;/strong&gt; lorsqu&amp;rsquo;elle est juste tappée, c&amp;rsquo;est-à-dire &lt;em&gt;Échap&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Voilà deux touches en une.
On a jamais besoin de maintenir &lt;em&gt;Échap&lt;/em&gt; appuyé donc on peut très bien l&amp;rsquo;utiliser de cette façon.
En plus, en étant dans le coin tout en bas à gauche, elle est super accessible de la paume de la main sans viser; dans vim (et ses copains) c&amp;rsquo;est un régal !
Ce système de double touche est plus souvent utilisé avec &lt;em&gt;Espace&lt;/em&gt; ce qui lui a donné son nom de &lt;strong&gt;SpaceFn&lt;/strong&gt; mais il m&amp;rsquo;arrive de jouer de temps à autres donc la touche Espace est déjà bien utilisée…&lt;/p&gt;

&lt;p&gt;L&amp;rsquo;action &lt;em&gt;[2]&lt;/em&gt; est la combinaison de touche &lt;em&gt;MOD_LSFT&lt;/em&gt; et &lt;em&gt;KC_INS&lt;/em&gt; qui s&amp;rsquo;avère être &lt;em&gt;Majuscule + Inser&lt;/em&gt;.
C&amp;rsquo;est un raccourci classique de Xorg pour &lt;samp&gt;Coller&lt;/samp&gt;.
Et hop une touche dédiée pour coller du texte !&lt;/p&gt;

&lt;h2 id=&#34;les-modifs-du-jour&#34;&gt;Les modifs du jour&lt;/h2&gt;

&lt;p&gt;Bon du coup pour rajouter les touches multimédia, j&amp;rsquo;ai bidouillé le fichier keymap sur la couche 1.
J&amp;rsquo;ai ajouté MPRV, MPLY, MNXT qui correspondent à Multimedia Previous, Multimedia Play et Multimedia Next.
Sous Linux, ces touches sont appelées &lt;em&gt;XF86AudioPrev&lt;/em&gt;, &lt;em&gt;XF86AudioPlay&lt;/em&gt; et &lt;em&gt;XF86AudioNext&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Bon bha une fois ces modifs faites, comment qu&amp;rsquo;on compile et on qu&amp;rsquo;on upload ?&lt;/p&gt;

&lt;h2 id=&#34;mise-en-service&#34;&gt;Mise en service&lt;/h2&gt;

&lt;h3 id=&#34;compilation&#34;&gt;Compilation&lt;/h3&gt;

&lt;p&gt;C&amp;rsquo;est tout simple, un simple &lt;samp&gt;&lt;strong&gt;make&lt;/strong&gt;&lt;/samp&gt; va compiler votre nouveau firmware.
Ça va générer pas mal de fichiers dont un fichier avec l&amp;rsquo;extension &lt;em&gt;.hex&lt;/em&gt; .
Dans mon cas c&amp;rsquo;est un ptit fichier de 48Ko contenant tout ce qu&amp;rsquo;il faut.&lt;/p&gt;

&lt;p&gt;Ensuite faut l&amp;rsquo;envoyer.&lt;/p&gt;

&lt;h3 id=&#34;envoi&#34;&gt;Envoi&lt;/h3&gt;

&lt;p&gt;Bon on va filouter.&lt;/p&gt;

&lt;p&gt;Normalement l&amp;rsquo;IDE arduino s&amp;rsquo;attend à compiler lui même le code et tout mais j&amp;rsquo;ai déjà compilé par moi même ce qu&amp;rsquo;il faut avant.
On lui indique donc juste quel type de board on veux trifouiller dans le menu &lt;em&gt;Tools/Boards/Teensy 2.0&lt;/em&gt; .
(houlà j&amp;rsquo;ai vraiment pas l&amp;rsquo;habitude de parler de logiciels graphiques avec des menus…)&lt;/p&gt;

&lt;p&gt;Ensuite pour démarrer la ptite applet d&amp;rsquo;upload on va dans &lt;em&gt;Sketch/Upload&lt;/em&gt;
Ce qui ouvrira une ptite fenêtre.&lt;/p&gt;


&lt;figure&gt;
    
        &lt;img src=&#34;https://lord.re/static/107-teensy.png&#34; alt=&#34;capture d&amp;#39;écran de la popup d&amp;#39;upload du binaire&#34; /&gt;
    
    
    &lt;figcaption&gt;
        &lt;h4&gt;Upload du binaire dans le Teensy&lt;/h4&gt;
        
    &lt;/figcaption&gt;
    
&lt;/figure&gt;


&lt;p&gt;Là on ouvre &lt;em&gt;File/open hex&lt;/em&gt; en allant chercher le fichier géneré précédemment.&lt;/p&gt;

&lt;p&gt;Et maintenant l&amp;rsquo;instant stressant : &lt;strong&gt;Appuyer sur le ptit bouton du teensy&lt;/strong&gt;.
Et normalement une barre de progression va apparaitre et faire son œuvre.&lt;/p&gt;

&lt;h2 id=&#34;test&#34;&gt;Test&lt;/h2&gt;

&lt;p&gt;Tout s&amp;rsquo;est bien passé ?&lt;/p&gt;

&lt;p&gt;Bha… suffit d&amp;rsquo;essayer d&amp;rsquo;utiliser le clavier, pas besoin de débrancher/rebrancher ni rien, c&amp;rsquo;est instantanné.
Ça permet d&amp;rsquo;itérer très rapidement car ça prend moins de 10 secondes entre l&amp;rsquo;édition et le test.&lt;/p&gt;

&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Avoir un clavier où on peut trifouiller intégralement le firmware c&amp;rsquo;est trop bien !
C&amp;rsquo;est un super jouet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TMK&lt;/strong&gt; est un super bac à sable et en plus la doc est géniale.
Sérieux, regardez comment les actions des touches et les touches elles-mêmes sont &lt;a href=&#34;https://github.com/tmk/tmk_keyboard/blob/master/tmk_core/doc/keymap.md&#34;&gt;super bien documentées&lt;/a&gt;.
Mais au delà de l&amp;rsquo;aspect fun c&amp;rsquo;est vraiment fonctionnel comme un vrai clavier lambda si ce n&amp;rsquo;est mieux !&lt;/p&gt;

&lt;p&gt;En dehors de la phase de préparation de l&amp;rsquo;environnement qui est un poil chiante et inintéressante (mais bon rapidement mis en place quand même) c&amp;rsquo;est vraiment super agréable.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Gérer les spamfilters sur UnrealIrcd</title>
      <link>https://lord.re/posts/106-unrealircd-spamfilters/</link>
      <pubDate>Sun, 03 Jun 2018 10:47:28 +0200</pubDate>
      
      <guid>https://lord.re/posts/106-unrealircd-spamfilters/</guid>
      <description>

&lt;p&gt;Unrealircd est un &lt;abbr title=&#34;serveur IRC, c&#39;est à dire un serveur de chat&#34;&gt;ircd&lt;/abbr&gt; très populaire qui a près de vingt ans désormais mais à connu un sursaut d&amp;rsquo;activité ces dernières années pour arriver en version 4.
On l&amp;rsquo;utilise notamment chez &lt;a href=&#34;http://geeknode.org/&#34;&gt;Geeknode&lt;/a&gt; sur les quelques serveurs du réseau.&lt;/p&gt;

&lt;p&gt;Et comme tout réseau IRC qui se respecte, on subit régulièrement des relous qui viennent spammer les salons et les utilisateurs de façon plus ou moins créative.
Un groupe particulièrement chiant passe régulièrement pour faire leur propagande en floodant.&lt;/p&gt;

&lt;p&gt;Bref un moyen de contrer leur spam est donc d&amp;rsquo;utiliser la fonction &lt;a href=&#34;https://www.unrealircd.org/docs/Spamfilter&#34;&gt;Spamfilter&lt;/a&gt; d&amp;rsquo;Unrealircd.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;avais un peu survolé les différentes actions que peuvent faire un ircop &lt;a href=&#34;https://lord.re/posts/55-irc-niveau-5/&#34;&gt;ici&lt;/a&gt; mais là c&amp;rsquo;est spécifique au spamfilter.&lt;/p&gt;

&lt;h2 id=&#34;spamfilter&#34;&gt;Spamfilter&lt;/h2&gt;

&lt;p&gt;La syntaxe est à première vue assez simple mais pourtant toujours un peu spéciale.&lt;/p&gt;

&lt;h3 id=&#34;lister&#34;&gt;Lister&lt;/h3&gt;

&lt;p&gt;Déjà pour lister les filtres déjà existant : &lt;samp&gt;&lt;strong&gt;/spamfilter&lt;/strong&gt;&lt;/samp&gt;.
Ce qui vous sortira un listing de ce genre :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;10:26:33   geeknode  -- │ F simple cpnNPq kill 0 9842810 86400 &amp;quot;supernets&amp;quot; Lord!Lord@geeknode.fuckyeah :iяс.sцреяиетs.ояg сни sцреявоwl
10:26:33   geeknode  -- │ F posix cpnNPq tempshun 0 25184053 86400 racisme Lord!Lord@geeknode.fuckyeah :*vap0r*freenode*
10:26:33   geeknode  -- │ F posix cpnNPq kill 0 25696998 86400 supernets Lord!Lord@geeknode.fuckyeah :*SUPERNETS*
10:26:33   geeknode  -- │ F posix cpnN tempshun 0 26141654 60 spam Lord!Lord@geeknode.fuckyeah :*www.icq-net.eu*
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&#34;ajouter&#34;&gt;Ajouter&lt;/h3&gt;

&lt;p&gt;Bon pour ajouter un nouveau filtre c&amp;rsquo;est assez simple si l&amp;rsquo;on suit la doc&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;samp&gt;/spamfilter add -regex cnNPq kill 0 l0de_spammer \ [lL1][oO0][dD][eE3]\ &lt;/samp&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;En y regardant de plus près on voit quelques trucs chiants :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Le type de spamfilter commence par un &lt;em&gt;-&lt;/em&gt; donc c&amp;rsquo;est pas juste &lt;samp&gt;regex&lt;/samp&gt; ou &lt;samp&gt;simple&lt;/samp&gt; mais &lt;samp&gt;-regex&lt;/samp&gt; ou &lt;samp&gt;-simple&lt;/samp&gt;.
C&amp;rsquo;est le truc que j&amp;rsquo;oublie à chaque fois.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Ensuite, dans la raison il faut remplacer les espaces par des underscore &lt;samp&gt;_&lt;/samp&gt; (le «tiret du 8»).&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Mais surtout dans la regex elle-même, on ne peut pas foutre d&amp;rsquo;espace, il faut les échapper avec &amp;ldquo;&lt;em&gt;&lt;samp&gt;\ &lt;/samp&gt;&lt;/em&gt;&amp;rdquo;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&#34;supprimer&#34;&gt;Supprimer&lt;/h3&gt;

&lt;p&gt;Bon pour l&amp;rsquo;instant cet article n&amp;rsquo;apporte pas grand chose de plus que la page du wiki vous me direz.
C&amp;rsquo;est vrai. :-(&lt;/p&gt;

&lt;p&gt;Mais mais mais je vais me rattraper tout de suite avec cette astuce de sioux !&lt;/p&gt;

&lt;p&gt;En théorie pour supprimer un spamfilter vous devez faire exactement la même commande que lorsque vous en avez mis un en place.
Mais c&amp;rsquo;est pas forcément simple car lorsque vous les listez la syntaxe est pas exactement la meême.
C&amp;rsquo;est vite très chiant à retrouver.&lt;/p&gt;

&lt;p&gt;Mais si vous faites &lt;strong&gt;&lt;samp&gt;/spamfilter del&lt;/samp&gt;&lt;/strong&gt; vous aurez un listing mieux foutu :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;10:41:56   geeknode  -- │ F simple cpnNPq kill 0 9843733 86400 &amp;quot;supernets&amp;quot; Lord!Lord@geeknode.fuckyeah :iяс.sцреяиетs.ояg сни
                        │ sцреявоwl
                        10:41:56   geeknode  -- │ To delete this spamfilter, use /SPAMFILTER del 0x7f7421b79b40
                        10:41:56   geeknode  -- │ -
                        10:41:56   geeknode  -- │ F posix cpnNPq tempshun 0 25184976 86400 racisme Lord!Lord@geeknode.fuckyeah :*vap0r*freenode*
                        10:41:56   geeknode  -- │ To delete this spamfilter, use /SPAMFILTER del 0x7f74216e0080
                        10:41:56   geeknode  -- │ -
                        10:41:56   geeknode  -- │ F posix cpnNPq kill 0 25697921 86400 supernets Lord!Lord@geeknode.fuckyeah :*SUPERNETS*
                        10:41:56   geeknode  -- │ To delete this spamfilter, use /SPAMFILTER del 0x7f74216dfe00
                        10:41:56   geeknode  -- │ -
                        10:41:56   geeknode  -- │ F posix cpnN tempshun 0 26142577 60 spam Lord!Lord@geeknode.fuckyeah :*www.icq-net.eu*
                        10:41:56   geeknode  -- │ To delete this spamfilter, use /SPAMFILTER del 0x7f74216dfd30
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Et surtout ils donnent une commande avec un &lt;em&gt;id&lt;/em&gt; pour le supprimer facilement \o/.&lt;/p&gt;

&lt;p&gt;Joie et Félicité.&lt;/p&gt;

&lt;p&gt;Bon bha voilà, l&amp;rsquo;article avait un peu d&amp;rsquo;intéret quand même (plus pour moi que pour vous car je n&amp;rsquo;arrive vraiment pas à mémoriser cette syntaxe et ce truc pour virer les anciens spamfilters).&lt;/p&gt;

&lt;p&gt;Tiens et tant qu&amp;rsquo;à y être, pour les curieux qui se demandent à quoi ça ressemble quand un spamfilter se déclenche :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;11:16:29   united.geeknode.org  -- │ united.geeknode.org: [Spamfilter] lorddl!lorddl@LFbn-1-7920-9.w92-167.abo.wanadoo.fr matches filter &#39;\ [lL1][oO0][dD][eE3]\ &#39;: [PRIVMSG #testage: &#39;lode lode lode&#39;] [l0de spammer]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On voit sur quel serveur était connectée la personne, son identité, la regex qui a déclenché, le message qu&amp;rsquo;elle a envoyée et enfin le message envoyé comme raison.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est pour ça que si ça déclenche, vous risquez de voir apparaitre des &lt;abbr title=&#34;modérateurs sur IRC&#34;&gt;ircop&lt;/abbr&gt; quelques temps après ;-)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Firefox : Project Fusion - Remplacer le Tor Browser</title>
      <link>https://lord.re/fast-posts/16-firefox-project-fusion/</link>
      <pubDate>Fri, 01 Jun 2018 22:20:50 +0200</pubDate>
      
      <guid>https://lord.re/fast-posts/16-firefox-project-fusion/</guid>
      <description>&lt;p&gt;Ha bha enfin une bonne décision de la part de Mozilla concernant Firefox !&lt;/p&gt;

&lt;p&gt;Le &lt;strong&gt;Project Fusion&lt;/strong&gt; est dans la continuité de Mozilla pour rerendre Firefox sexy.
Après les perfs en remodelant toute la partie sous le capot, c&amp;rsquo;est maintenant la &lt;em&gt;sécurité&lt;/em&gt; qui revient sur le devant.&lt;/p&gt;

&lt;p&gt;Depuis des années il existe le &lt;strong&gt;Tor Browser&lt;/strong&gt; qui est un fork de Firefox avec de nombreuses modifications pour améliorer tout ce qui a attrait à l&amp;rsquo;anonymat et tout ce qui est protection de la vie privée.
Ce fork était geré par l&amp;rsquo;équipe de Tor depuis des années et représentait une importante masse de boulot pour pouvoir suivre le rythme de Firefox et s&amp;rsquo;assurer que tout continue de fonctionner tout en ne leakant pas plus de données.&lt;/p&gt;

&lt;p&gt;Donc maintenant que Firefox tente de regagner désespérément des parts de marché, ils se sont rendu-compte qu&amp;rsquo;inclure des fonctionnalités du Tor Browser dans le vrai Firefox serait un argument marketing intéressant.
Tant mieux !
Du coup il va y avoir pas mal de collaboration entre les deux équipes.
Le but explicite est de rendre le Tor Browser obsolète.&lt;/p&gt;

&lt;p&gt;Bref on devrait bientôt avoir pas mal de fonctionnalités assez poussées mais dans un enrobage bien pensé pour les non-techos.&lt;/p&gt;

&lt;p&gt;Quelques fonctions à venir :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Meilleure résistance aux fingerprintage&lt;/li&gt;
&lt;li&gt;Intégration à Tor&lt;/li&gt;
&lt;li&gt;Le private mode sera boosté aux hormones&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bref avec un peu de chance ça sera une très bonne chose pour tout le monde.
Avec un peu de bol ils gagneront quelques part de marché histoire de mieux résister au vilain Chrome.&lt;/p&gt;

&lt;p&gt;Voilà l&amp;rsquo;&lt;a href=&#34;https://trac.torproject.org/projects/tor/wiki/org/meetings/2018Rome/Notes/FusionProject&#34;&gt;annonce officielle&lt;/a&gt; de la part de Tor.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Utiliser HTTP2 et le PUSH avec Nginx</title>
      <link>https://lord.re/posts/105-nginx-http2-push/</link>
      <pubDate>Fri, 01 Jun 2018 16:10:17 +0200</pubDate>
      
      <guid>https://lord.re/posts/105-nginx-http2-push/</guid>
      <description>

&lt;p&gt;HTTP2 est une nouvelle version du protocole &lt;abbr title=&#34;Hyper Text Transport Protocol&#34;&gt;HTTP&lt;/abbr&gt; qui améliore pas mal de points de l&amp;rsquo;original.&lt;/p&gt;

&lt;p&gt;Tout d&amp;rsquo;abord la sécurité car la plupart des implémentations ne fonctionne qu&amp;rsquo;avec une couche de &lt;abbr title=&#34;Transport Layer Secure&#34;&gt;TLS&lt;/abbr&gt; qui était autrefois réservé au HTTPS.&lt;/p&gt;

&lt;p&gt;Mais surtout les perfs ont été grandement travaillées.
HTTP a été très largement utilisé pendant près de 20 ans avant que le boulot sur son successeur ne commence ce qui a laissé suffisamment de temps pour savoir où ça coinçait et donc comment améliorer le truc.&lt;/p&gt;

&lt;h2 id=&#34;optimisations&#34;&gt;Optimisations&lt;/h2&gt;

&lt;h3 id=&#34;compression-des-headers&#34;&gt;Compression des headers&lt;/h3&gt;

&lt;p&gt;Certaines optimisations ont été un peu controversées comme par exemple le fait de compresser les headers.
Ça permet d&amp;rsquo;échanger un peu moins de données mais la contrepartie est que ce n&amp;rsquo;est plus un vrai protocole texte.&lt;/p&gt;

&lt;p&gt;Pour info, &lt;em&gt;un protocole texte échange des données uniquement sous forme de texte&lt;/em&gt; ce qui permet à un humain de facilement pouvoir le comprendre contrairement à une machine qui devra bosser un peu plus.
L&amp;rsquo;argument de savoir si un protocole texte est bien provoque de nombreux débats depuis pas mal d&amp;rsquo;années.&lt;/p&gt;

&lt;h3 id=&#34;multiplex&#34;&gt;Multiplex&lt;/h3&gt;

&lt;p&gt;Un autre point d&amp;rsquo;amélioration de HTTP2 est le &lt;em&gt;multiplexage des données&lt;/em&gt;.
Auparavant chaque ressource récuperé par le navigateur nécessitait l&amp;rsquo;envoi d&amp;rsquo;une requête au préalable dans une nouvelle connexion &lt;abbr title=&#34;Transport Control Protocol&#34;&gt;TCP&lt;/abbr&gt;.
HTTP1.1 a ajouté le &lt;strong&gt;PIPELINING&lt;/strong&gt; ce qui a permis de réutiliser la même connexion TCP pour plusieurs requêtes et réponses.
Le gain était déjà énorme mais il fallait toujours une requête, avec une réponse distincte pour chaque ressource, le tout dans une seule connexion TCP.
Malheureusement cette technique n&amp;rsquo;était pas utilisé dans tous les cas voire était rare.
HTTP2 lui apporte le &lt;strong&gt;Multiplex&lt;/strong&gt; qui permet de faire à peu près pareil mais encore plus efficace.
Dans une seule requête, un client peut demander plusieurs ressources différentes et toutes les recevoir dans une seule réponse.&lt;/p&gt;

&lt;p&gt;Cette technique a rendu obsolète certains bidouillages mise en place avec HTTP1 tel que le &lt;em&gt;sharding&lt;/em&gt; qui consistait à répartir les ressources sur de nombreux domaines différents pour forcer le navigateur à ouvrir plusieurs connexions simultannées.
Maintenant, une seule connexion est préferrable plutôt que plusieurs.&lt;/p&gt;

&lt;p&gt;Mais pour aller encore un peu plus loin, il existe aussi le &lt;strong&gt;PUSH&lt;/strong&gt;.&lt;/p&gt;

&lt;h3 id=&#34;push-toi-de-là&#34;&gt;Push-toi de là !&lt;/h3&gt;

&lt;p&gt;Lorsqu&amp;rsquo;un client va demander une ressource, le serveur web va envoyer le document voulu, mais il peut également en envoyer d&amp;rsquo;autres qui lui semblent pertinent.&lt;/p&gt;

&lt;p&gt;Le client reçoit les données avant même d&amp;rsquo;en avoir fait la demande ce qui permet (si c&amp;rsquo;est bien utilisé) de ne pas avoir à demander cette ressource et donc de pouvoir l&amp;rsquo;utiliser plus vite.&lt;/p&gt;

&lt;p&gt;Par contre, vous vous douter que si le serveur s&amp;rsquo;amuse à envoyer un fichier inutile, le client n&amp;rsquo;utilisera pas ce fichier et du coup vous aurez consommé de la bande passante pour pas grand chose…&lt;/p&gt;

&lt;h2 id=&#34;et-dans-le-moteur-x&#34;&gt;Et dans le Moteur X ?&lt;/h2&gt;

&lt;h3 id=&#34;h2&#34;&gt;H2&lt;/h3&gt;

&lt;p&gt;Pour utiliser HTTP2, pas grand chose à faire dans votre conf nginx.
Dans le block &lt;samp&gt;&lt;em&gt;server&lt;/em&gt;&lt;/samp&gt; vous devriez avoir un &lt;samp&gt;&lt;em&gt;listen&lt;/em&gt;&lt;/samp&gt; (ou plus).
Sur celui concernant le port 443, ajoutez &lt;samp&gt;&lt;em&gt;http2&lt;/em&gt;&lt;/samp&gt;.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est tout.&lt;/p&gt;

&lt;h3 id=&#34;push&#34;&gt;PUSH&lt;/h3&gt;

&lt;p&gt;Nginx sait pusher du contenu depuis la version &lt;em&gt;1.13.9&lt;/em&gt; sortie en Février 2018.
Je me suis empressé de le mettre en place et de faire quelques tests.&lt;/p&gt;

&lt;p&gt;Bon du coup dans bloc de type &lt;samp&gt;&lt;em&gt;location&lt;/em&gt;&lt;/samp&gt;, depuis l&amp;rsquo;endroit où vous voulez pusher votre contenu, il va falloir rajouter un simple :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;http2_push /css/neodark.css;
    http2_push /favicon.ico;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Et hop votre fichier css et votre favicon seront envoyés.&lt;/p&gt;

&lt;p&gt;Si votre site est simple, ça sera vite torché, mais si vous avez pas mal de trucs ça va vite être chiant.
Et là &lt;a href=&#34;https://github.com/vbrandl&#34;&gt;vbrandl&lt;/a&gt; va vous sauver avec son &lt;a href=&#34;https://github.com/vbrandl/nginx-http2-push-generator&#34;&gt;générateur de conf nginx&lt;/a&gt;.
Vous lui donnez une page web, vous lui dites quels types de ressources vous voulez push, il vous choppe les liens et vous transforme ça en bout de conf nginx à copier/coller.&lt;/p&gt;

&lt;p&gt;Et maintenant pour vérifier que ça marche soit vous utiliser les devtools de chromium qui vous indiques (dans performance) si c&amp;rsquo;est issu d&amp;rsquo;une requête ou d&amp;rsquo;un push.
Ou bien si vous voulez un truc plus simple vous avez &lt;a href=&#34;https://http2-push.io&#34;&gt;http2-push&lt;/a&gt; qui est un ptit site ouaib permettant de tester une URL.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Voilà vous allez probablement pouvoir grapiller quelques ms sur l&amp;rsquo;affichage de votre site ouaib avec ça.
C&amp;rsquo;est en place depuis déjà plusieurs jours ici sans soucis, j&amp;rsquo;ai pas constaté d&amp;rsquo;augmentation de la conso de bande passante (j&amp;rsquo;ai été prudent sur les push).&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&#34;ps&#34;&gt;PS :&lt;/h2&gt;

&lt;p&gt;Comme signalé par &lt;a href=&#34;https://buzut.fr/&#34;&gt;Buzut&lt;/a&gt;, si vous mettez le push comme indiqué dans l&amp;rsquo;article, à chaque requête les ressources seront poussées au visiteur ce qui n&amp;rsquo;est pourtant utile que la première fois.
Il est possible de gérer ça en utilisant un cookie et de ne pusher que lorsque le cookie n&amp;rsquo;existe pas comme c&amp;rsquo;est montré sur &lt;a href=&#34;https://www.nginx.com/blog/nginx-1-13-9-http2-server-push/#selective-push&#34;&gt;l&amp;rsquo;article nginx à ce propos&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Ce qu&#39;il se passe quand on envoie un mail</title>
      <link>https://lord.re/posts/104-ce-quil-se-passe-quand-on-envoi-un-mail/</link>
      <pubDate>Tue, 29 May 2018 12:07:11 +0200</pubDate>
      
      <guid>https://lord.re/posts/104-ce-quil-se-passe-quand-on-envoi-un-mail/</guid>
      <description>

&lt;p&gt;On m&amp;rsquo;a soufflotté dans l&amp;rsquo;oreille que ce sujet pourrait être intéressant.
Et effectivement ça l&amp;rsquo;est.
Enfin… si on s&amp;rsquo;y intéresse…
Bref…&lt;/p&gt;

&lt;p&gt;Quelles sont les étapes qui se passent, par où va transiter les données.
Voyons tout ça.&lt;/p&gt;

&lt;p&gt;Pour l&amp;rsquo;exemple, je vais aborder le cas suivant :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Un mail envoyé depuis un client mail type thunderbird via mon serveur auto-hébergé vers un utilisateur gmail.&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&#34;1-rédaction-du-mail&#34;&gt;1 - Rédaction du mail&lt;/h2&gt;

&lt;p&gt;La partie la plus normale consiste donc à rédiger le texte de votre email.
Il s&amp;rsquo;agit des données à proprement parlé.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est un &lt;em&gt;simple texte&lt;/em&gt; ce qu&amp;rsquo;il y a de plus basique ou bien du &lt;em&gt;texte au format HTML&lt;/em&gt;.
Dès lors que vous ajoutez du formattage à votre texte (du gras/italique/couleur/taille de police/…) c&amp;rsquo;est du HTML.
De lui même, l&amp;rsquo;éditeur de texte va donc transformer votre texte vers le format HTML pour apporter toutes ces subtilités.
Votre destinataire va donc de voir &amp;ldquo;interprêter&amp;rdquo; ce texte HTML pour l&amp;rsquo;afficher avec parfois des résultats différents selon le logiciel.&lt;/p&gt;

&lt;p&gt;Au passage, lorsqu&amp;rsquo;on rédige un mail en HTML contenant des images, celles-ci ne sont pas incluent à proprement parlé il ne s&amp;rsquo;agit que de liens.
Votre lecteur de mail va suivre ces liens pour au moment de la lecture pour vous afficher les images..
C&amp;rsquo;est un moyen de voir si les mails sont consultés ou non et d&amp;rsquo;éventuellement vous profiler (en envoyant une adresse unique à chaque mail).
&lt;em&gt;Il est donc préferrable de désactiver l&amp;rsquo;affichage automatique des images dans les mails.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&#34;2-ajout-des-pièces-jointes&#34;&gt;2 - Ajout des pièces jointes&lt;/h2&gt;

&lt;p&gt;Étape que l&amp;rsquo;on réalise généralement lors d&amp;rsquo;un second mail de type “Oups voilà les pièces-jointes oubliées précédemment”.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Le mail est un protocole de type texte.&lt;/strong&gt;
Cela veux dire que toutes les informations transportées le sont sous forme de texte, aussi bien les métadonnées que les données.
Il faut donc transformer votre fichier en texte avec le &lt;a href=&#34;https://fr.wikipedia.org/wiki/Base64&#34;&gt;codage base64&lt;/a&gt; qui consiste en 64 caractères alphabetiques permettant de coder n&amp;rsquo;importe quelles données.&lt;/p&gt;

&lt;p&gt;Cependant, c&amp;rsquo;est loin d&amp;rsquo;être optimisé :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cat 99-ce-quil-se-passe-quand-on-ouvre-une-page-web.md| base64 | wc -c
23939
cat 99-ce-quil-se-passe-quand-on-ouvre-une-page-web.md| wc -c
17720
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;Un même fichier une fois passé en base64 est près d&amp;rsquo;un tier plus lourd que l&amp;rsquo;original.&lt;/em&gt;
Cela explique pourquoi certaines fois des fichiers juste en dessous de la limite de taille maximale ne passent pas.&lt;/p&gt;

&lt;h2 id=&#34;3-ajout-des-méta-données-utilisateurs&#34;&gt;3 - Ajout des méta-données utilisateurs&lt;/h2&gt;

&lt;p&gt;Bon votre mail contient votre texte et d&amp;rsquo;éventuelles pièces-jointes, c&amp;rsquo;est chouette mais ça va pas aller bien loin.
Il faut donc un destinataire, voir plusieurs destinataires cachés ou non.
Vous allez aussi mettre un sujet à votre mail.
Et dans certains cas indiquer quelle est l&amp;rsquo;adresse d&amp;rsquo;envoi (si vous en avez plusieurs) et/ou de retour.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ce sont les méta-données que vous entrez manuellement.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Mais ce ne sont qu&amp;rsquo;une partie des méta-données du mail puisque votre logiciel va en rajouter ainsi que les différents serveurs qui traiteront votre mail.&lt;/p&gt;

&lt;h2 id=&#34;4-connexion-vers-le-serveur-d-émission&#34;&gt;4 - Connexion vers le serveur d&amp;rsquo;émission&lt;/h2&gt;

&lt;p&gt;Bon bha ça y est vous avez cliqué sur le bouton d&amp;rsquo;envoi et du coup votre logiciel va commencer à parler à une autre machine !&lt;/p&gt;

&lt;p&gt;Votre client mail est appelé un &lt;strong&gt;MUA&lt;/strong&gt; pour &lt;em&gt;Mail User Agent&lt;/em&gt; dont le boulot est de converser avec un &lt;strong&gt;MTA&lt;/strong&gt; pour &lt;em&gt;Mail Transfert Agent&lt;/em&gt; qui lui est chargé de réellement envoyer/recevoir des mails.
Votre client mail donne tout simplement le mail fraîchement préparé au serveur SMTP qui lui a été configuré, en parlant le protocole &lt;strong&gt;SMTP&lt;/strong&gt; (certains logiciels apellent ça serveur d&amp;rsquo;envoi).&lt;/p&gt;

&lt;p&gt;Le protocole SMTP est également un protocole texte assez ancien (plus ancien que le web) mais a connu quelques évolutions comme notamment l&amp;rsquo;authentification et le chiffrement).
Historiquement le port utilisé était le 25 mais c&amp;rsquo;est généralement le port 587 qui est désormais utilisé dans le cas d&amp;rsquo;envoi de mail.
&lt;em&gt;À l&amp;rsquo;usage il s&amp;rsquo;est créé une distinction entre l&amp;rsquo;envoi de mail et la réception.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Un serveur de mail n&amp;rsquo;avait pas de notion d&amp;rsquo;envoi de mail mais juste de transfert, en gros il reçoit un mail sur le port 25 sans savoir si ce mail provient d&amp;rsquo;un autre serveur de mail ou s&amp;rsquo;il provient d&amp;rsquo;un logiciel d&amp;rsquo;envoi de mail.
Avec le temps on a rajouté de l&amp;rsquo;authentification pour l&amp;rsquo;envoi de mail ce qui nécessite un traitement différent et donc un port différent.&lt;/p&gt;

&lt;p&gt;À noter que certains FAI bloquent les connexions vers le port 25 aussi bien dans un sens que dans l&amp;rsquo;autre, à des fins de luttes contre le spam.
Ce blocage est dans le meilleur des cas débrayable et parfois non, ce qui vous empêche d&amp;rsquo;utiliser un serveur mail autre que celui de votre FAI.&lt;/p&gt;

&lt;p&gt;Dans notre exemple, thunderbird se connecte donc à notre serveur de mail auto-hébergé (dans mon salon, donc sans requête DNS).&lt;/p&gt;

&lt;h3 id=&#34;4-1-connexion-tcp-vers-le-serveur-d-émission&#34;&gt;4.1 - Connexion TCP vers le serveur d&amp;rsquo;émission&lt;/h3&gt;

&lt;p&gt;Mon serveur est configuré de sorte qu&amp;rsquo;un mail émis depuis une de mes adresses perso ne peut se faire que s&amp;rsquo;il y a authentification.
Il faut donc se connecter au port dit de &lt;em&gt;soumission&lt;/em&gt; (puisque on y soumet notre mail) c&amp;rsquo;est à dire le port TCP 587.&lt;/p&gt;

&lt;p&gt;Pour l&amp;rsquo;instant c&amp;rsquo;est donc dans mon réseau local.
Je ne part pas tout de suite sur le réseau des réseaux.
Il s&amp;rsquo;agit d&amp;rsquo;une connexion TCP classique en trois parties : &lt;em&gt;“Connexion ?”&lt;/em&gt;, &lt;em&gt;“Ok tu peux te connecter.”&lt;/em&gt;, &lt;em&gt;“Merci, on est connectés.”&lt;/em&gt;.&lt;/p&gt;

&lt;h3 id=&#34;4-2-chiffrement-de-la-connexion&#34;&gt;4.2 - Chiffrement de la connexion&lt;/h3&gt;

&lt;p&gt;Même s&amp;rsquo;il s&amp;rsquo;agit d&amp;rsquo;une connexion sur mon réseau locale, vu qu&amp;rsquo;il y aura authentification, je préferre chiffrer la connexion.
Déjà parceque ça ne mange pas de pain et ensuite ça permet d&amp;rsquo;avoir la même chose aussi bien en local qu&amp;rsquo;en distant via un réseau non sûr.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;D&amp;rsquo;ailleurs de manière globale, ne considérez aucun réseau comme sûr, une machine vérolée volontairement ou non est si vite arrivée…&lt;/strong&gt;&lt;/p&gt;

&lt;h3 id=&#34;4-3-auth&#34;&gt;4.3 - Auth&lt;/h3&gt;

&lt;p&gt;Bon la connexion est désormais sûre, il ne reste plus qu&amp;rsquo;à Thunderbird de vous identifier via les identifiants/mot de passe configurés.
Cette étape permet au serveur d&amp;rsquo;émission de n&amp;rsquo;accepter des mails en votre nom que si les identifiants sont bons pour éviter l&amp;rsquo;envoi de spam dans votre dos.&lt;/p&gt;

&lt;p&gt;Si l&amp;rsquo;une des deux étapes précédentes échoue, votre serveur vous enverra probablement bouler sans ménagement et coupera la connexion TCP ce qui vous gratifiera d&amp;rsquo;un joli message d&amp;rsquo;erreur dans votre Thunderbird.&lt;/p&gt;

&lt;h2 id=&#34;5-vérifs-de-base-antispam-avant-émission&#34;&gt;5 - Vérifs de base antispam avant émission&lt;/h2&gt;

&lt;p&gt;Internet c&amp;rsquo;est la jungle et je pense que vous connaissez tous à peu près l&amp;rsquo;ampleur du spam.
Bref tout le monde tente de s&amp;rsquo;en protéger le plus possible.
Ne pas recevoir de spam c&amp;rsquo;est bien, ne pas en envoyer soi même c&amp;rsquo;est mieux !
Si votre serveur a la malheur d&amp;rsquo;en envoyer vous serez très vite blacklisté de partout il vous faut donc vous protéger pour ne pas finir en tant qu&amp;rsquo;&lt;em&gt;Open relay&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Bon déjà on s&amp;rsquo;est authentifié, c&amp;rsquo;est le minimum syndical.&lt;/p&gt;

&lt;p&gt;Ensuite il existe tout plein de petits réglages sur le serveur afin de limiter les possibles fuites.
Ce sont principalement des ptites restrictions sur les adresses IP autorisées à se connecter ou bien quels domaines sont autorisés à envoyer du mail…
Bref rien de bien méchant, c&amp;rsquo;est du vite vu par le serveur.&lt;/p&gt;

&lt;p&gt;Il est même possible de faire passer le mail sortant dans un antispam mais je ne l&amp;rsquo;ai pas mis en place personnelement mais sachez que c&amp;rsquo;est possible afin de vraiment s&amp;rsquo;assurer que ses utilisateurs n&amp;rsquo;envoient pas de spam.
Sur une installation conséquente c&amp;rsquo;est quasiment indispensable pour ne pas transmettre du spam à la première machine vérolée.&lt;/p&gt;

&lt;p&gt;Dans un second temps, le mail va être signé par le serveur d&amp;rsquo;émission en fonction du domaine d&amp;rsquo;émission du mail : il s&amp;rsquo;agit du &lt;strong&gt;DKIM&lt;/strong&gt; le &lt;em&gt;Domain Key Identified Mail&lt;/em&gt;.
C&amp;rsquo;est une signature qui atteste que le mail provient bien du serveur de mail autorisé par mon nom de domaine (dans mon serveur DNS, j&amp;rsquo;ai annoncé que les mails provenant de mon domaine sont signés par telle clé).
Contrairement à GPG, cette signature vaut pour tous les mails du domaine, ils ne chiffrent pas le message et ne garantissent pas de l&amp;rsquo;identité de l&amp;rsquo;émetteur mais l&amp;rsquo;identité du nom de domaine d&amp;rsquo;émission.
Toutes les personnes utilisant le même nom de domaine pour émettre leur mail auront la même signature.&lt;/p&gt;

&lt;p&gt;Qui plus est cette signature atteste de l&amp;rsquo;intégrité du mail : il prouve qu&amp;rsquo;à partir de votre serveur d&amp;rsquo;émission jusqu&amp;rsquo;à la lecture, le mail n&amp;rsquo;a pas été modifié. (Par contre entre le logiciel rédigeant le mail et le serveur d&amp;rsquo;envoi par contre pas de certitude mais c&amp;rsquo;est généralement un segment de confiance.)&lt;/p&gt;

&lt;p&gt;Bref, cette signature sera placée dans l&amp;rsquo;entête du mail et sera utilisée par les serveurs intermédiaires et finaux afin de vérifier que votre mail soit bien légitime.
Elle ne sert pas directement aux utilisateurs et n&amp;rsquo;est donc que rarement montrée.
&lt;strong&gt;Cette signature atteste uniquement de l&amp;rsquo;authenticité du serveur d&amp;rsquo;émission et de l&amp;rsquo;intégrité du mail à partir du serveur d&amp;rsquo;émission.&lt;/strong&gt;
Elle ne prouve rien concernant l&amp;rsquo;utilisateur lui même, uniquement le serveur !&lt;/p&gt;

&lt;p&gt;Si tout se passe comme il faut, votre mail est donc consideré comme légitime par votre serveur de mail et est donc signé.
Votre serveur de mail va donc transferer ce mail au serveur du destinataire&lt;/p&gt;

&lt;h2 id=&#34;6-trouver-le-serveur-de-destination&#34;&gt;6 - Trouver le serveur de destination&lt;/h2&gt;

&lt;p&gt;Bon, votre mail est donc prêt à partir, mais à partir où ?
Votre serveur de mail va donc trouver quelle machine gère les mails de votre destinataire et qui qui c&amp;rsquo;est qui doit faire ça ?
C&amp;rsquo;est &lt;em&gt;le DNS&lt;/em&gt; !&lt;/p&gt;

&lt;p&gt;Bon truc@gmail.com ça veux dire l&amp;rsquo;utilisateur truc sur le domaine gmail.com, ça devrait être plutôt simple pour le moment.
Du coup votre serveur de mail va demander aux serveurs DNS “À quelle machine je dois me connecter pour envoyer des mails pour gmail.com ?” ce qui correspond à &lt;em&gt;“Quels sont les enregistrements MX pour gmail.com ?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Les &lt;strong&gt;MX records&lt;/strong&gt; sont donc les machines en chargent de la réception du mail : un ptit &lt;strong&gt;dig gmail.com in MX&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;; &amp;lt;&amp;lt;&amp;gt;&amp;gt; DiG 9.12.1 &amp;lt;&amp;lt;&amp;gt;&amp;gt; gmail.com in MX
;; global options: +cmd
;; Got answer:
;; -&amp;gt;&amp;gt;HEADER&amp;lt;&amp;lt;- opcode: QUERY, status: NOERROR, id: 48789
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;gmail.com.                     IN      MX
;; ANSWER SECTION:
gmail.com.              3581    IN      MX      5 gmail-smtp-in.l.google.com.
gmail.com.              3581    IN      MX      10 alt1.gmail-smtp-in.l.google.com.
gmail.com.              3581    IN      MX      20 alt2.gmail-smtp-in.l.google.com.
gmail.com.              3581    IN      MX      30 alt3.gmail-smtp-in.l.google.com.
gmail.com.              3581    IN      MX      40 alt4.gmail-smtp-in.l.google.com.
;; Query time: 0 msec
;; SERVER: 10.0.0.254#53(10.0.0.254)
;; WHEN: Wed May 23 15:48:51 CEST 2018
;; MSG SIZE  rcvd: 161
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Donc là on voit que pour gmail il y a cinq réponses indiquant donc 5 machines à contacter par ordre de priorité du plus petit au plus grand.
Je vais donc devoir tenter de me connecter à &lt;em&gt;gmail-smtp-in.l.google.com.&lt;/em&gt; et si cette machine ne répond pas je passe à &lt;em&gt;alt1.gmail-smtp-in.l.google.com.&lt;/em&gt; et ainsi de suite.
C&amp;rsquo;est un système qui permet d&amp;rsquo;avoir plusieurs machines redondantes assez facilement (si seulement un même mécanisme était utilisé pour d&amp;rsquo;autres protocoles comme le HTTP…).&lt;/p&gt;

&lt;p&gt;Bon c&amp;rsquo;est bien gentil mais c&amp;rsquo;est une demi réponse ça, il me faut une adresse IP, il faut donc faire une requête DNS pour connaitre l&amp;rsquo;adresse IP de &lt;em&gt;gmail-smtp-in-l.google.com.&lt;/em&gt;, ce qui va me donner &lt;em&gt;74.125.133.27&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Si jamais le domaine à qui vous tentez d&amp;rsquo;envoyer un mail ne possède pas de MX record, votre serveur tentera de se connecter directement à l&amp;rsquo;adresse IP rattaché au domaine directement.
Mais bon il faut vraiment être un très mauvais administrateur pour ne pas mettre de MX record à un serveur de mail.&lt;/p&gt;

&lt;p&gt;Comme d&amp;rsquo;habitude on peut voir que le DNS est toujours un point sensible pour la confidentialité et que le choix d&amp;rsquo;un résolveur DNS peut avoir d&amp;rsquo;importantes conséquences pour le respect de la vie privée.&lt;/p&gt;

&lt;h2 id=&#34;7-interconnexion-des-serveurs-émission-réception&#34;&gt;7 - Interconnexion des serveurs émission/réception&lt;/h2&gt;

&lt;p&gt;Allez hop, votre serveur d&amp;rsquo;émission va se connecter donc au serveur de réception pour transmettre votre mail.
Une connexion &lt;strong&gt;TCP&lt;/strong&gt; va être établie et parfois ça sera chiffré, parfois non.
Globalement le chiffrement progresse énormément ces dernières années au point d&amp;rsquo;être quasi systématique.&lt;/p&gt;

&lt;p&gt;Il va quand même falloir montrer patte blanche pour prouver que vous n&amp;rsquo;êtes pas un vil spammeur.&lt;/p&gt;

&lt;p&gt;La base de la base c&amp;rsquo;est de &lt;em&gt;parler le protocole SMTP correctement&lt;/em&gt;.
Certains spammeurs utilisent des logiciels pas très très respectueux du standard et se font repérer et dégager facilement.&lt;/p&gt;

&lt;p&gt;Votre serveur va donc transferer votre mail donc avec ses méta-données et les données.
Et ensuite bha le serveur de réception fait un peu ce qu&amp;rsquo;il veut.&lt;/p&gt;

&lt;h3 id=&#34;7-1-greylisting&#34;&gt;7.1 Greylisting&lt;/h3&gt;

&lt;p&gt;Une méthode très efficace de virer du spam est de faire du greylisting.
&lt;em&gt;Le serveur de réception va dire “Je suis pas dispo réessaye plus tard”.&lt;/em&gt;
Et cinq minutes plus tard votre serveur d&amp;rsquo;émission va retenter et ça marchera.&lt;/p&gt;

&lt;p&gt;La plupart des spammeurs se découragent facilement (ça leur permet de ne pas perdre de temps à retenter…) mais les mails légitimes, eux, retenteront.
Cela engendre par contre un délai de quelques minutes dans la réception des mails mais rapelez-vous : &lt;strong&gt;Les mails ne garantissent absolument pas de délai de livraison !&lt;/strong&gt;
Avec un peu de chance ça sera dans quelques secondes mais rien dans le protocole n&amp;rsquo;empêche de le livrer quelques jours plus tard sans aucun message d&amp;rsquo;erreur ou autre.&lt;/p&gt;

&lt;p&gt;Il me semble que cette technique n&amp;rsquo;est pas employée par Gmail mais assez courante chez les auto-hébergeurs du fait de son efficacité redoutable.&lt;/p&gt;

&lt;h3 id=&#34;7-2-différentes-vérifications&#34;&gt;7.2 Différentes vérifications&lt;/h3&gt;

&lt;p&gt;Chaque serveur possède des règles différentes pour l&amp;rsquo;acceptation des mails.&lt;/p&gt;

&lt;p&gt;Certains ne font que le strict minimum (c&amp;rsquo;est à dire vérifier que le destinataire existe bien), d&amp;rsquo;autres imposent des tailles maximales pour les mails, d&amp;rsquo;autres utilisent des systèmes de réputation…
Chacun fait sa tambouille.&lt;/p&gt;

&lt;p&gt;Dans les grands classiques on trouve la consultation de listes noires publiques via le DNS, ce que l&amp;rsquo;on apelle les &lt;strong&gt;DNSBL&lt;/strong&gt;.
On y vérifie que l&amp;rsquo;adresse IP de votre serveur d&amp;rsquo;envoi n&amp;rsquo;est pas présent dans cette blacklist.
C&amp;rsquo;est donc potentiellement encore un endroit potentiel de fuite d&amp;rsquo;information : votre mail n&amp;rsquo;est pas envoyé aux fournisseurs de DNSBL, juste l&amp;rsquo;ip de votre serveur, ce qui peut être couplé avec l&amp;rsquo;ip du serveur de réception faisant la requête DNS.
Le risque est minime cela-dit.&lt;/p&gt;

&lt;p&gt;Vous obtiendrez parfois un mail de réponse de la part de &lt;em&gt;Mailer Daemon&lt;/em&gt; vous indiquant pourquoi (ou pas) votre mail à été rejeté et ce mail peut prendre jusqu&amp;rsquo;à une semaine pour arriver…&lt;/p&gt;

&lt;h2 id=&#34;8-fin-de-l-émission&#34;&gt;8 - Fin de l&amp;rsquo;émission&lt;/h2&gt;

&lt;p&gt;Bon bha ça y est votre serveur d&amp;rsquo;émission a fini son boulot et donc maintenant le destin de votre mail n&amp;rsquo;est plus entre ses mains.
Votre serveur peut couper la connexion et se rendormir paisiblement.&lt;/p&gt;

&lt;p&gt;Voyons donc ce que fait le serveur de réception désormais.&lt;/p&gt;

&lt;h2 id=&#34;9-antispam&#34;&gt;9 - Antispam&lt;/h2&gt;

&lt;h3 id=&#34;9-1-spf&#34;&gt;9.1 SPF&lt;/h3&gt;

&lt;p&gt;Le serveur de réception va faire la vérification du &lt;strong&gt;SPF&lt;/strong&gt; qui permet de &lt;em&gt;s&amp;rsquo;assurer que le serveur qui a émit le mail est bien autoriser à émettre des mails&lt;/em&gt;.
Pour cela, le serveur de réception va faire une requête DNS particulière qui lui donnera la liste des serveurs autorisés à émettre des mails pour votre domaine.
Si le serveur d&amp;rsquo;émission ne fait pas parti de cette liste, votre mail sera rejeté pour soupçons de spam.
Encore une fois, le DNS va être utilisé.&lt;/p&gt;

&lt;p&gt;Il y a encore un potentiel de fuite d&amp;rsquo;information : le serveur de mail réceptionnant votre mail enverra une requête à son serveur DNS lui indiquant de vérifier quels sont les machines autorisées à envoyer du mail pour tel domaine.
Le serveur DNS peut donc deviner que votre domaine à envoyer un mail à tel autre domaine.&lt;/p&gt;

&lt;h3 id=&#34;9-2-dkim&#34;&gt;9.2 DKIM&lt;/h3&gt;

&lt;p&gt;Tout à l&amp;rsquo;heure, votre serveur a ajouté une &lt;strong&gt;signature DKIM&lt;/strong&gt; sur votre mail et maintenant le serveur de réception va la vérifier.
Ça permet de s&amp;rsquo;assurer que le mail reçu provient bien de votre serveur de mail.
&lt;em&gt;Donc le serveur de réception regarde le mail, et vérifie que la signature correspond bien à ce qui se trouve dans l&amp;rsquo;enregistrement DNS du DKIM.&lt;/em&gt;
Seul votre serveur peut créer une signature valable pour votre domaine.&lt;/p&gt;

&lt;p&gt;En gros SPF assure que le serveur a le droit d&amp;rsquo;envoyer des mails et DKIM prouve que le mail provient bien du domaine.
C&amp;rsquo;est deux technique complémentaires permettant de limiter l&amp;rsquo;envoi de spam en votre nom.&lt;/p&gt;

&lt;p&gt;Si en 2018 vous n&amp;rsquo;avez pas de SPF et de DKIM fonctionnel, vos mails finiront quasi-systèmatiquement dans les spams, à juste titre.
Là encore le DNS joue un grand rôle et se trouve être une potentielle fuite de données.&lt;/p&gt;

&lt;h3 id=&#34;9-3-antispam-basique&#34;&gt;9.3 Antispam basique&lt;/h3&gt;

&lt;p&gt;Encore un peu d&amp;rsquo;antispam mais ce coup-ci ça se base non plus sur le serveur d&amp;rsquo;émission mais sur les méta-données et les données du mail lui-même.&lt;/p&gt;

&lt;p&gt;Là &lt;em&gt;le mail va être analysé selon pleins de critères variés.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Est-ce que la date d&amp;rsquo;émission est crédible ?&lt;/li&gt;
&lt;li&gt;Est-ce que ça parle pas un peu trop de pognon ?&lt;/li&gt;
&lt;li&gt;Est-ce que ça utilise des caractères louches ?&lt;/li&gt;
&lt;li&gt;Est-ce que les entêtes correspondent bien ?&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;C&amp;rsquo;est aussi bien des points techniques que des points plus &amp;ldquo;humains&amp;rdquo;.
À chaque réponse on obtient &lt;strong&gt;un score&lt;/strong&gt; positif ou négatif.&lt;/p&gt;

&lt;h3 id=&#34;9-4-filtre-bayésien&#34;&gt;9.4 Filtre Bayésien&lt;/h3&gt;

&lt;p&gt;Là on pousse encore un peu plus l&amp;rsquo;antispam en faisant une analyse statistique sur les mots présents dans le mail.&lt;/p&gt;

&lt;p&gt;Si votre mail insiste un peu trop sur la longueur des membres, ou bien s&amp;rsquo;attarde un peu trop sur d&amp;rsquo;éventuels gains financiers ou tout autre sujet à la mode, le filtre Bayésien va reconnaître des &lt;em&gt;motifs récurrents&lt;/em&gt; et encore une fois attribué un &lt;em&gt;score de probabilité&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;On cumule ce score à celui précédemment obtenu et à la fin on fait le compte et le résultat final détermine si c&amp;rsquo;est un spam ou non.&lt;/p&gt;

&lt;p&gt;En fonction de ce score le mail sera soit supprimmé, soit placé dans les spams, soit aura le droit d&amp;rsquo;arriver dans la boîte du destinataire.&lt;/p&gt;

&lt;p&gt;Ici le logiciel antispam a accès au mail complet.
&lt;del&gt;Cela pourrai poser un soucis de confidentialité cependant ce filtre n&amp;rsquo;est pas sous-traité à ma connaissance.&lt;/del&gt;
Bon bha finalement on me signale que si certaines entreprises sont spécialisées dans l&amp;rsquo;antispam et reçoivent donc les mails en live pour les analyser et délibérer si oui ou non il s&amp;rsquo;agit d&amp;rsquo;un spam, donc c&amp;rsquo;est encore une fois une fuite potentiel pour votre mail.&lt;/p&gt;

&lt;h2 id=&#34;10-livraison-locale&#34;&gt;10 - Livraison locale&lt;/h2&gt;

&lt;p&gt;Le serveur du destinataire a donc accepté le mail et effectué tous ses tests d&amp;rsquo;antispam, il faut donc maintenant transférer le mail au &lt;strong&gt;LDA&lt;/strong&gt;, le &lt;em&gt;local delivery agent&lt;/em&gt;.
Ce logiciel a pour but de ranger et stocker le mail.&lt;/p&gt;

&lt;p&gt;Son rôle premier est donc de &lt;em&gt;trouver à qui le mail doit être livré&lt;/em&gt; (il peut y avoir des alias ou des redirections par exemple).&lt;/p&gt;

&lt;p&gt;Son second rôle ensuite est de &lt;em&gt;ranger le mail au bon endroit&lt;/em&gt; en fonction de règles définies par le service mais qui peuvent également être écrites par l&amp;rsquo;utilisateur.
Par exemple le mail va être classé dans les newsletters ou bien vous avez créez une règle pour indiquer que tous les mails en provenance de tel utilisateur doivent être placés dans un dossier prédifini.&lt;/p&gt;

&lt;p&gt;Mais n&amp;rsquo;oublions pas que le mail est à destination de Google.
Il est donc fort probable qu&amp;rsquo;en interne l&amp;rsquo;architecture de Gmail soit très complexe et ne soit pas un seul petit serveur mais bien une armada complète pour le stockage (redondant et backuppé) avec répartition de la charge pour pouvoir supporter des millions d&amp;rsquo;utilisateurs mais cette partie est trop complexe pour cet article.&lt;/p&gt;

&lt;p&gt;Bon il y a tout de même une étape cruciale encore.&lt;/p&gt;

&lt;h2 id=&#34;11-indexation&#34;&gt;11 - Indexation&lt;/h2&gt;

&lt;p&gt;Le but de Google est, comme tout le monde sait, d&amp;rsquo;aider à chercher dans vos mails.
Non pas vous aider vous, mais aider les clients de Google.
&lt;em&gt;En tant que marchandise vos mails sont donc lus et analysés et un profil est établi en fonction de tous vos mails.&lt;/em&gt;
Vous êtes donc placé dans différentes cases en fonction de votre courrier.&lt;/p&gt;

&lt;p&gt;Vous êtes inscrits sur tel site, vous prenez des vacances à tel endroit, vous conversez avec telle personne, vous vous êtes abonnez à tel newsletter, vous supprimmez systèmatiquement les mails de telle origine, vous effectuez régulièrement des achats sur tel site…&lt;/p&gt;

&lt;p&gt;En bonus toutes ces informations permettent à gmail de vous afficher rapidement les résultats de recherche dans votre montagne de mail.&lt;/p&gt;

&lt;p&gt;Bref ce service coûte très cher mais par chance est très facilement rentabilisé par Google.&lt;/p&gt;

&lt;h2 id=&#34;12-consultation&#34;&gt;12 - Consultation&lt;/h2&gt;

&lt;p&gt;Bon bha maintenant votre destinataire va vouloir lire votre mail, Gmail étant un webmail avant tout, votre utilisateur va devoir ouvrir la page avec son navigateur web et se tapper &lt;a href=&#34;https://lord.re/posts/99-ce-quil-se-passe-quand-on-ouvre-une-page-web/&#34;&gt;toutes les étapes classiques&lt;/a&gt;.
Le webmail a le rôle de &lt;strong&gt;MUA&lt;/strong&gt; ici.&lt;/p&gt;

&lt;p&gt;Et voilà !
On y est arrivé.&lt;/p&gt;

&lt;h2 id=&#34;tl-dr&#34;&gt;TL;DR&lt;/h2&gt;

&lt;p&gt;Chemin d&amp;rsquo;un mail : &lt;strong&gt;MUA&lt;/strong&gt;→&lt;strong&gt;MTA&lt;/strong&gt;→&lt;strong&gt;MTA&lt;/strong&gt;→&lt;strong&gt;LDA&lt;/strong&gt;→&lt;strong&gt;MUA&lt;/strong&gt;
Avec dans quelques cas des risques de fuites de données de votre mail (surtout du côté des DNS et des MTA).&lt;/p&gt;

&lt;p&gt;Si vous vous autohébergez, vous pouvez à peu près garantir les deux premières étapes pour la confidentialité de votre mail tout au mieux.
Si vous ne vous auto-hébergez pas vous ne pouvez garantir que la première étape au delà … bha … bonne chance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Si vous voulez mieux, il va falloir chiffrer votre mail ;-)&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Remplacer Groovebasin par MPD</title>
      <link>https://lord.re/posts/103-remplacer-groovebasin/</link>
      <pubDate>Sun, 27 May 2018 21:38:11 +0200</pubDate>
      
      <guid>https://lord.re/posts/103-remplacer-groovebasin/</guid>
      <description>

&lt;p&gt;Voilà maintenant des années que j&amp;rsquo;utilise le logiciel &lt;strong&gt;Groovebasin&lt;/strong&gt; pour écouter de la musique.
C&amp;rsquo;est un lecteur audio web. Ça veux dire qu&amp;rsquo;il faut utiliser un serveur web, et un navigateur web pour pouvoir l&amp;rsquo;utiliser.
Ça a de sacrés avantages tel que la disponibilité de votre bibliothèque numérique de partout.
De reprendre la lecture là où vous en étiez, pouvoir contrôler la lecture depuis une autre machine.&lt;/p&gt;

&lt;p&gt;Mais au final ça a ses inconvénients : il faut passer par un navigateur web, ce qui est assez lourd.
L&amp;rsquo;intégration dans le reste du système est compliquée : pas facile de faire des hotkeys pour le contrôler à distance.
Et puis il ne gère pas les notifications du coup pas moyen de voir le titre de la nouvelle chanson qui démarre sans aller chopper la page web.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;ai utilisé pas mal d&amp;rsquo;alternatives : &lt;em&gt;Subsonic&lt;/em&gt; qui est très similaire mais moins bien globalement sauf pour la partie application android (qui gère la création d&amp;rsquo;un cache offline entre autre).
J&amp;rsquo;ai également testé &lt;em&gt;Ampache&lt;/em&gt; il y a très longtemps et ça m&amp;rsquo;avait moyen convaincu.
J&amp;rsquo;ai utilisé quelques temps &lt;em&gt;MOC&lt;/em&gt; qui est un player audio en console que j&amp;rsquo;aimais bien mais du coup on perd toutes les features qu&amp;rsquo;apporte un player web.
Et encore plus longtemps avant j&amp;rsquo;ai utilisé &lt;em&gt;foobar2K&lt;/em&gt; sur windows et encore un peu avant &lt;em&gt;Winamp&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bon du coup… vers quoi me tourner ?&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&#34;mpd&#34;&gt;MPD&lt;/h2&gt;

&lt;p&gt;Music Player Daemon est un projet qui est maintenant assez connu de part son âge.
Il était particulièrement novateur à l&amp;rsquo;époque dans son concept d&amp;rsquo;avoir un serveur musical.
C&amp;rsquo;est une approche pas trop éloigné des players web à la différence que c&amp;rsquo;est pas du web.&lt;/p&gt;

&lt;p&gt;On a donc des clients MPD dédiés plus ou moins variés dont un certains nombre en console.
On peut donc manipuler le serveur avec de nombreux programmes différents, du plus basique (&lt;em&gt;mpc&lt;/em&gt;) à d&amp;rsquo;autres plus lourdingues avec de vrais interfaces graphiques en GTK+ ou QT…
Bref il va forcément y avoir un truc qui va me plaire !&lt;/p&gt;

&lt;h2 id=&#34;ncmpcpp&#34;&gt;NCMPCPP&lt;/h2&gt;

&lt;p&gt;Mon premier réflexe a été de chercher un client console.
Après tout j&amp;rsquo;ai l&amp;rsquo;habitude de manipuler quasiment tous mes softs dans des terminaux désormais et puis bon… jouer de la musique ne nécessite pas d&amp;rsquo;interface graphique.&lt;/p&gt;

&lt;p&gt;Ayant déjà fais mumuse avec la bête il y a quelques années, je me suis retourné vers &lt;strong&gt;ncmpcpp&lt;/strong&gt; qui est l&amp;rsquo;un des clients consoles les plus réputés.&lt;/p&gt;

&lt;p&gt;Et bhé…
J&amp;rsquo;aime pas trop trop.
Je trouve l&amp;rsquo;interface étrange : par défaut on tombe sur la playlist mais du coup si l&amp;rsquo;on veux rajouter une chanson à la playlist là commence la bataille.
Il faut aller dans la bibliothèque.
Trois choix possibles, la première c&amp;rsquo;est &lt;em&gt;Browse /&lt;/em&gt; qui affiche l&amp;rsquo;arborescence de fichier, la seconde est le &lt;em&gt;Search engine&lt;/em&gt; et enfin la &lt;em&gt;Media Library&lt;/em&gt;.
Et c&amp;rsquo;est là que je commence à râler.&lt;/p&gt;

&lt;p&gt;Ptain que l&amp;rsquo;interface est désagréable !
Si l&amp;rsquo;on va dans l&amp;rsquo;arbo de fichier, on cherche une chanson, et si on a le malheur d&amp;rsquo;appuyer sur Entrée paf ça vous la fout en fin de playlist et ça passe dessus…
Mais heuuu pourquoi ce comportement ?
Ça serait compréhensible que ça la foute en fin de playlist mais sans la jouer tout de suite, parcequ&amp;rsquo;une fois la chanson finie bha la playlist est finie.
Ou alors ça la fout à la place du morceau courant du coup la suite de la playlist est pas impactée.
Bref un choix bien étrange.&lt;/p&gt;

&lt;p&gt;Toujours dans la catégorie interface étrange, le &lt;em&gt;Search engine&lt;/em&gt; est d&amp;rsquo;un lourdingue.
Là on peut faire une recherche globale ou alors rechercher uniquement dans un tag précis des fichiers (genre que dans les &amp;ldquo;artists&amp;rdquo; ou que dans les &amp;ldquo;albums&amp;rdquo;) ce qui est vraiment bien.
Par contre pour lancer la recherche faut descendre tout en bas de la liste de choix possible pour aller sur *Search*…
Ptain habituellement les interfaces textes sont tellement plus efficaces.
Et encore une fois gare à vous !
Si vous avez le malheur d&amp;rsquo;appuyer sur Entrée, rebelotte ça vous le fout en bas de playlist et ça passe dessus : la plaie.
Si vous voulez l&amp;rsquo;ajouter dans votre playlist actuelle faut appuyer sur &lt;strong&gt;a&lt;/strong&gt;, là s&amp;rsquo;ouvre un fenêtre vous demandant dans quelle playlist, puis ensuite une autre fenêtre pour savoir où la placer dans la playlist.
Beaucoup trop d&amp;rsquo;étape pour une action aussi basique.&lt;/p&gt;

&lt;p&gt;Et c&amp;rsquo;est pareil pour la &lt;em&gt;Media library&lt;/em&gt;, au moins l&amp;rsquo;interface est cohérente dans sa lourdeur.&lt;/p&gt;

&lt;h2 id=&#34;pms&#34;&gt;PMS&lt;/h2&gt;

&lt;p&gt;J&amp;rsquo;ai vite fait testé un autre client pour MPD du nom de &lt;a href=&#34;https://kimtore.no/pms/&#34;&gt;PMS&lt;/a&gt; qui est plus récent que le vénérable ncmpcpp et qui est actuellement en train de subir une réécriture en Go.
J&amp;rsquo;ai donc testé la version classique avant réécriture qui est annoncé comme stable et pour l&amp;rsquo;instant avec plus de fonctionnalité et pour faire vite j&amp;rsquo;ai pas aimé l&amp;rsquo;interface non plus.
Et puis la doc est … déplorable.
Pas réussi à faire ce que je voulais simplement du coup j&amp;rsquo;ai capitulé en voyant la non-doc.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;ai un peu trop pris mes habitudes avec Groovebasin.
La migration vers autre chose est donc difficile.
Va falloir que je me décroute et du coup avec l&amp;rsquo;aide du Fediverse, j&amp;rsquo;ai décidé de prendre le taureau par les cornes.&lt;/p&gt;

&lt;h2 id=&#34;smpcd&#34;&gt;SMPCD&lt;/h2&gt;

&lt;p&gt;Du coup j&amp;rsquo;ai fait un ptit cahier des charges :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Je veux pas que la musique s&amp;rsquo;arrête pour cause de playlist vide&lt;/li&gt;
&lt;li&gt;Je veux pouvoir revenir au morceau précédent et ptet celui d&amp;rsquo;avant aussi et aussi au précédent…&lt;/li&gt;
&lt;li&gt;Je veux pouvoir le contrôler via des raccourcis claviers&lt;/li&gt;
&lt;li&gt;Je veux des ptites notifs quand ça change de morceau avec le titre/l&amp;rsquo;auteur&lt;/li&gt;
&lt;li&gt;Je veux un truc super léger&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bon bha en fait tout rentre dans un simple script shell.
MPD propose &lt;strong&gt;MPC&lt;/strong&gt; qui est une interface en ligne de commande basique mais qui a accès à toutes les fonctionnalités de MPD.
Si c&amp;rsquo;est pas faisable dans MPC, c&amp;rsquo;est que MPD peut pas faire.&lt;/p&gt;

&lt;p&gt;Allez c&amp;rsquo;est parti pour ce dimanche maussadee !&lt;/p&gt;

&lt;h3 id=&#34;vérifier-que-mpd-tourne&#34;&gt;Vérifier que MPD tourne&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;CheckMPD(){
  if [ ! $(pgrep -x mpd) ]; then
    timeout 3 i3-nagbar -m &amp;quot;MPD ne tourne pas&amp;quot;
    exit 1
  fi
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Cette partie est ultra simple, si le daemon ne tourne pas on quitte&lt;/p&gt;

&lt;h3 id=&#34;la-boucle-qui-fait-tout&#34;&gt;La boucle qui fait tout&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;Loop(){
  while true
  do
    CheckMPD

    if [ $(mpc playlist | wc -l) -lt 30 ]; then
      mpc findadd Title &amp;quot;$(mpc list Title | shuf -n 1)&amp;quot;
    fi

    if [ $(mpc current -f %position%) -gt 15 ]; then
      mpc del 1
    fi

    mpc idle player
    flock -nF /tmp/mpdnotif.lock -c &#39;mpc current -f &amp;quot;%title% - %artist%&amp;quot; | timeout 8 dmenu -g&#39; &amp;amp;
  done
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Voilà la bête.
Au final c&amp;rsquo;est ultra simple, d&amp;rsquo;abord on lance une boucle infinie avec le &lt;em&gt;while true&lt;/em&gt;.
Dans cette boucle d&amp;rsquo;abord on lance la fonction décrite précédemment histoire de pas mouliner pour rien.&lt;/p&gt;

&lt;p&gt;Ensuite le premier if s&amp;rsquo;assure que si la playlist fait moins de 30 morceaux de musique d&amp;rsquo;en rajouter un au hasard depuis la bibliothèque.&lt;/p&gt;

&lt;p&gt;Le second if lui veille à ce que si l&amp;rsquo;on dépasse le quinzième morceau de la playlist de virer le premier morceau de la playlist.
Ça évite de garder un historique des morceaux passés trop long.&lt;/p&gt;

&lt;p&gt;Après se trouve le &lt;em&gt;mpc idle player&lt;/em&gt; qui permet d&amp;rsquo;attendre que MPD fasse une action au de type &lt;em&gt;player&lt;/em&gt; ce qui correspond à passer au morceau précédent/suivant ou juste faire une pause/reprendre.
Ça évite de faire un sleep dans la boucle.&lt;/p&gt;

&lt;p&gt;Et enfin le &lt;em&gt;flock&lt;/em&gt; permet de mettre un vérou (dans /tmp) pour éviter de lancer plusieurs fois simultanément la commande qui suit.
Sans ça, lors d&amp;rsquo;une frénésie de passage à la chanson suivante on se retrouve avec pleins de notifs de morceau suivant.
Et pour afficher la notif j&amp;rsquo;ai rusé, j&amp;rsquo;ai utilisé &lt;em&gt;dmenu&lt;/em&gt; avec la commande &lt;em&gt;timeout&lt;/em&gt;.
&lt;em&gt;timeout&lt;/em&gt; permet de lancer une commande pendant quelques secondes puis de l&amp;rsquo;interrompre.
Dans mon cas je lance un dmenu à qui j&amp;rsquo;ai passé les informations depuis &lt;em&gt;mpc current&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&#34;dmenu-mpd&#34;&gt;DMENU MPD&lt;/h2&gt;

&lt;p&gt;Dmenu est amour et des gens ont déjà bidouillé des scripts pour manipuler MPD via dmenu.
Mais globalement c&amp;rsquo;était soit overkill soit pas tout à fait ce que je cherchais.
Du coup j&amp;rsquo;ai fait mon mien qui est ultra simple :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#! /bin/sh
mpc listall | dmenu -i | mpc insert
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ouai c&amp;rsquo;est ultra basique.
Le but est juste de lister tous les morceaux dispo dans la bibli et de pouvoir en chercher un et de l&amp;rsquo;ajouter à la playlist.
Il suffit d&amp;rsquo;ajouter un ptit raccourcis pour lancer ça depuis &lt;strong&gt;i3&lt;/strong&gt; et le tour est joué.&lt;/p&gt;

&lt;h2 id=&#34;adaptation-de-dmenu&#34;&gt;Adaptation de Dmenu&lt;/h2&gt;

&lt;p&gt;J&amp;rsquo;adore dmenu, c&amp;rsquo;est un outil formidable.
Je m&amp;rsquo;en sert pour pleins de trucs comme lancer des commandes, pour récupérer mes mots de passe, pour lancer mes films, pour contrôler la musique et aussi pour les notifs.
Le souc c&amp;rsquo;est que pour les notifs… bha ce couillon il choppe le focus du clavier.
Du coup à peine lancé vous vous retrouvez &amp;ldquo;coincé&amp;rdquo; dans dmenu.&lt;/p&gt;

&lt;p&gt;Du coup au début j&amp;rsquo;ai fouillé dans la doc i3 pour contrer cette habitude.
J&amp;rsquo;ai aussi demandé sur leur salon irc mais pas de bol c&amp;rsquo;était l&amp;rsquo;heure de la sieste.
Du coup j&amp;rsquo;ai cherché plus globalement sur le net mais rien de bien probant.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Et si en fait c&amp;rsquo;était pas du fait d&amp;rsquo;i3 mais de dmenu lui même ?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Allons voir un peu le code de dmenu.
Je sais que c&amp;rsquo;est du C et je n&amp;rsquo;ai que de vagues notions de C mais bon c&amp;rsquo;est made in Suckless, ça devrait être concis.&lt;/p&gt;

&lt;p&gt;Un ptit tour dans &lt;em&gt;/usr/portage/distfiles/&lt;/em&gt; et un &lt;em&gt;cp&lt;/em&gt; plus tard et me voilà avec le code de dmenu.
17 fichiers !
Ça va je devrais pouvoir m&amp;rsquo;y retrouver.&lt;/p&gt;

&lt;p&gt;Commençons direct par le &lt;em&gt;dmenu.c&lt;/em&gt; qui fait 750 lignes.
Bingo, visiblement c&amp;rsquo;est quasiment tout le code de dmenu qui reste plutôt lisible même pour un noob de mon genre.&lt;/p&gt;

&lt;p&gt;Bon va quand même falloir un peu fouiller.
Je commence par chercher &lt;em&gt;focus&lt;/em&gt; qui n&amp;rsquo;a que 11 occurrences.
Il y a des trucs qui paraissent pas mal et je vois que ça parle de &lt;em&gt;grabfocus()&lt;/em&gt;.
Intéressant !&lt;/p&gt;

&lt;p&gt;Cherchons un peu ce qu&amp;rsquo;il y a avec &lt;em&gt;grab&lt;/em&gt; et ses 12 occurrences.
Une fonction &lt;em&gt;grabfocus(void)&lt;/em&gt; des plus pertinentes !
Et en plus en toute fin de fichier elle est appelée, à ce qui ressemble le lancement de dmenu.&lt;/p&gt;

&lt;p&gt;Bon bha yapuka !&lt;/p&gt;

&lt;p&gt;En début de main() il y a le parse des arguments, je rajoute une nouvelle option &lt;em&gt;-g&lt;/em&gt; pour ne pas grab le focus, j&amp;rsquo;initialise la variable juste avant bien entendu.
Et je rajoute un ptit (en vrai deux) if pour vérifier la présence de cette nouvelle variable pour ne pas appeler la fonction &lt;em&gt;grabkeyboard()&lt;/em&gt; et voilà.&lt;/p&gt;

&lt;p&gt;Je &lt;strong&gt;make&lt;/strong&gt; et je teste.
Ça marche du premier coup \o/.&lt;/p&gt;

&lt;p&gt;Bon j&amp;rsquo;en profite pour modifier le man, et l&amp;rsquo;ajouter dans la liste des options et voilà.
Je fait génère le patch et je fout ce patch dans &lt;em&gt;/etc/portage/patches/x11-misc/dmenu&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Je réinstalle dmenu à la gentoo avec &lt;strong&gt;emerge dmenu -av&lt;/strong&gt; et quelques secondes plus tard je teste en vrai et ça fonctionne, le man est mis à jour aussi.&lt;/p&gt;

&lt;p&gt;Bon bha cette partie a été au final torchée en trente minutes.
Finalement le C c&amp;rsquo;est facile et Gentoo est toujours aussi formidable.&lt;/p&gt;

&lt;h2 id=&#34;raccourcis-claviers&#34;&gt;Raccourcis claviers&lt;/h2&gt;

&lt;p&gt;Bon maintenant je veux pouvoir faire pause/suivant/précédent avec des raccourcis claviers.
Pas de bol j&amp;rsquo;ai pas de touches multimédia sur mon clavier.&lt;/p&gt;

&lt;p&gt;Il faudrait que je modifie un ptit coup le firmware du clavier pour en ajouter avec Fn mais j&amp;rsquo;ai un peu la flemme.
Je n&amp;rsquo;ai pas conservé l&amp;rsquo;IDE arduino…
Bref ça sera pour une prochaine fois.&lt;/p&gt;

&lt;p&gt;Pour l&amp;rsquo;instant me contenterai de créer un raccourcis clavier i3 classique sur des touches non utilisées même si c&amp;rsquo;est moins propre.&lt;/p&gt;

&lt;h2 id=&#34;publication-des-codes&#34;&gt;Publication des codes&lt;/h2&gt;

&lt;p&gt;Pour l&amp;rsquo;instant je publie pas SMPCD (Shell Media Player Client Daemon) car je pense qu&amp;rsquo;en l&amp;rsquo;utilisant quelques jours j&amp;rsquo;y apporterai des modifs mais je le ferai vous inquiétez pas.
Si jamais vous le voulez vraiment n&amp;rsquo;hésitez pas à demander.&lt;/p&gt;

&lt;p&gt;Pour dmenu pour l&amp;rsquo;instant j&amp;rsquo;ai annoncé ce que j&amp;rsquo;avais fait sur le chan irc de Suckless sans trop de réponse donc pour l&amp;rsquo;instant ça reste chez moi.
Pour les intéressés je le fout &lt;a href=&#34;https://lord.re/static/103-dmenu-4.8-nograb.patch&#34;&gt;ici&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Présentation de Calls. L&#39;appli du Librem 5 pour les appels</title>
      <link>https://lord.re/posts/102-librem-progress-report-11-5/</link>
      <pubDate>Fri, 18 May 2018 18:22:07 +0100</pubDate>
      
      <guid>https://lord.re/posts/102-librem-progress-report-11-5/</guid>
      <description>

&lt;p&gt;Ceci est une traduction libre de &lt;a href=&#34;https://puri.sm/posts/introducing-calls/&#34;&gt;cet article&lt;/a&gt; concernant les avancées de la société Purism concernant le smartphone &lt;strong&gt;Librem 5&lt;/strong&gt;.
L&amp;rsquo;article original est sous licence &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/&#34;&gt;CC BY-SA 4.0&lt;/a&gt; tout comme ma traduction.&lt;/p&gt;

&lt;p&gt;Ce smartphone a bénéficié d&amp;rsquo;un crowdfunding et a pour but d&amp;rsquo;apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec.
Ils collaborent avec le projet &lt;a href=&#34;https://www.gnome.org&#34;&gt;Gnome&lt;/a&gt;, le projet &lt;a href=&#34;https://www.kde.org&#34;&gt;KDE&lt;/a&gt;, &lt;a href=&#34;https://ubports.com/&#34;&gt;UBPorts&lt;/a&gt; et le projet &lt;a href=&#34;https://matrix.org&#34;&gt;Matrix&lt;/a&gt;.
Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.&lt;/p&gt;

&lt;p&gt;Bref voilà l&amp;rsquo;article :&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;

&lt;p&gt;De loin, la fonctionnalité la plus critique d&amp;rsquo;un téléphone est la possibilité d&amp;rsquo;émettre et recevoir des appels via le réseau téléphonique publique en utilisant des numéros de téléphones.
Même si chez Purism nous souhaitons implémenter des systèmes de communications permettant plus de sécurité et un meilleur respect de la vie privée que ce que l&amp;rsquo;on peut attendre via le réseau téléphonique publique, ce moyen est le plus utilisé pour le moment et nous ne pouvons nous permettre de vendre un téléphone ne pouvant pas téléphoner. &lt;a href=&#34;#⁰&#34;&gt;⁰&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mon boulot a été de coder un dialer (numéroteur) et la gestion des appels.
Comme tous nos développements sur le Librem 5, le but est de réutiliser le plus de code existant possible et de viser l&amp;rsquo;intégration dans la plateforme Gnome qui est utilisée par défaut par notre PureOS.
Il n&amp;rsquo;y a pour le moment pas de dialer dans le projet Gnome donc nous pousserons son adoption.&lt;/p&gt;

&lt;h2 id=&#34;idées-initiales&#34;&gt;Idées initiales&lt;/h2&gt;

&lt;p&gt;Après quelques recherches, le but initial était de réutiliser le framework &lt;a href=&#34;https://telepathy.freedesktop.org/&#34;&gt;Telepathy&lt;/a&gt;, l&amp;rsquo;idée étant que nous pourrions un numéroteur utilisant le réseau publique et d&amp;rsquo;utiliser le dialer &lt;a href=&#34;https://en.wikipedia.org/wiki/Session_Initiation_Protocol&#34;&gt;SIP&lt;/a&gt; car Telepathy possède déjà un gestionnaire de connexion PSTN (réseau publique téléphonique) et SIP.
Qui plus est, le gestionnaire de connexion PSTN &lt;a href=&#34;https://git.merproject.org/mer-core/telepathy-ring&#34;&gt;telepathy-ring&lt;/a&gt; est déjà utilisé dans des téléphones sur le marché.
Et même si il possède quelques soucis, je trouve Telepathy vraiment génial :-)&lt;/p&gt;

&lt;p&gt;Pour aller plus loin, mon collègue François Téchené a écrit &lt;a href=&#34;https://lord.re/posts/83-librem-progress-report-8/&#34;&gt;un article&lt;/a&gt; décrivant un approche basé sur les fonctionnalité plutôt que sur les applications concernant l&amp;rsquo;expérience utilisateur.
Telepathy pourrait fournir les fondations d&amp;rsquo;une telle approche.&lt;/p&gt;

&lt;p&gt;Il est bon de noter cependant que Telepathy n&amp;rsquo;est pas en odeur de sainteté.
De nombreuses voix parmi le projet Gnome préferraient sa mort.
Telepathy est un système complexe où le moindre changement est difficile à apporter.
Pour se faire, il faut synchroniser ces changements dans les spécifications de l&amp;rsquo;API D-Bus et dans une multitude de composants divers.
Une longue discussion à propos de Telepathy et de son éventuel remplacement a eu lieu dans la mailing-list Gnomes&amp;rsquo;s desktop-devel en &lt;a href=&#34;https://mail.gnome.org/archives/desktop-devel-list/2017-August/thread.html#00112&#34;&gt;Aout&lt;/a&gt; et &lt;a href=&#34;https://mail.gnome.org/archives/desktop-devel-list/2017-September/thread.html#00047&#34;&gt;Septembre&lt;/a&gt; 2017.&lt;/p&gt;

&lt;h2 id=&#34;élargissement-du-débat&#34;&gt;Élargissement du débat&lt;/h2&gt;

&lt;p&gt;Après avoir commencé quelques travaux préliminaires sur le code de Telepathy, étant donné que notre but est que ça devienne le dialer de Gnome, et que notre intention est d&amp;rsquo;utiliser le framework contesté qu&amp;rsquo;est Telepathy, &lt;a href=&#34;https://mail.gnome.org/mailman/listinfo/desktop-devel-list&#34;&gt;j&amp;rsquo;ai contacté&lt;/a&gt; la fameuse mailing-list pour voir ce qu&amp;rsquo;ils en pensaient.&lt;/p&gt;

&lt;p&gt;La discussion s&amp;rsquo;est penché sur les soucis généraux et la consolidation des différents systèmes de communication.
La première conclusion a été que créé un système à base de fonctionnalité est pour le moins compliqué.
Comme lors de la première discussion de 2017, un Telepathy-NG (nouvelle génération) serait la meilleure solution.
C&amp;rsquo;est une future tâche que nous envisageront une fois les fonctions basiques déjà en place.
Pour l&amp;rsquo;instant, il n&amp;rsquo;y avait aucune réticence à propos d&amp;rsquo;un dialer PSTN reposant sur Telepathy.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;ai aussi discuté via IRC avec Robert McQueen, l&amp;rsquo;un des auteurs originels de Telepathy.
Le gestionnaire de connexion telepathy-ring utilise le framework de téléphonie mobile &lt;a href=&#34;https://01.org/ofono&#34;&gt;oFono&lt;/a&gt;.
Étant donné la difficulté d&amp;rsquo;écrire un client Telepathy, Robert suggera qu&amp;rsquo;il serait probablement plus simple de créer une interface utilisateur (UI) avec une fine couche d&amp;rsquo;abstraction implémentant d&amp;rsquo;abord un backend oFono puis, plus tard, un backend plus complexe sur Telepathy.
Nous avons suivi son conseil et notre dialer adopte donc cette approche.&lt;/p&gt;

&lt;h2 id=&#34;bienvenue-calls&#34;&gt;Bienvenue Calls&lt;/h2&gt;


&lt;figure&gt;
    &lt;a href=&#34;https://lord.re/static/102-call-screenshot-phone-0-small.png&#34;&gt;
        &lt;img src=&#34;https://lord.re/static/102-call-screenshot-phone-0-small.png&#34; alt=&#34;Capture d&amp;#39;écran montrant l&amp;#39;interface du dialer.&#34; /&gt;
    &lt;/a&gt;
    
&lt;/figure&gt;


&lt;p&gt;Notre programme s&amp;rsquo;appelle &lt;em&gt;Calls&lt;/em&gt;.
Il a une interface utilateur (UI) en GTK +3 et utilise oFono à travers une fine couche d&amp;rsquo;abstraction.
Nous utilisons également notre &lt;a href=&#34;https://code.puri.sm/Librem5/libhandy&#34;&gt;libhandy&lt;/a&gt; pour le widget du numéroteur.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;« Peut-il téléphoner ?! »&lt;/strong&gt;
Oui, il peut ! 🙂&lt;/p&gt;

&lt;video class=&#34;wp-video-shortcode&#34; id=&#34;video-52730-1&#34; width=&#34;960&#34; height=&#34;540&#34; preload=&#34;metadata&#34; controls=&#34;controls&#34;&gt;&lt;source type=&#34;video/webm&#34; src=&#34;https://puri.sm/wp-content/uploads/2018/05/calls-demo-01-04.webm?_=1&#34; /&gt;&lt;a href=&#34;https://puri.sm/wp-content/uploads/2018/05/calls-demo-01-04.webm&#34;&gt;https://puri.sm/wp-content/uploads/2018/05/calls-demo-01-04.webm&lt;/a&gt;&lt;/video&gt;

&lt;h2 id=&#34;les-rouages-internes&#34;&gt;Les rouages internes&lt;/h2&gt;

&lt;p&gt;Le diagramme est représentation à la UML de la couche d&amp;rsquo;abstraction dans Calls :&lt;/p&gt;


&lt;figure&gt;
    &lt;a href=&#34;https://lord.re/static/102-provider-abstraction-02.png&#34;&gt;
        &lt;img src=&#34;https://lord.re/static/102-provider-abstraction-02.png&#34; alt=&#34;Diagramme UML de la couche d&amp;#39;abstraction&#34; /&gt;
    &lt;/a&gt;
    
&lt;/figure&gt;


&lt;p&gt;Les classes sont des GInterfaces.
Pour vous donner une meilleure idées de la sémantique derrière chaque interface, voici un tableau des objets que les implémentations pourront utiliser :&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Interface&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;objets d&amp;rsquo;implémentation&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Provider&lt;/td&gt;
&lt;td&gt;oFono Manager, Telepathy Account Manager&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;Origin&lt;/td&gt;
&lt;td&gt;oFono Modem/VoiceCallManager, Telepathy Account&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;Call&lt;/td&gt;
&lt;td&gt;oFono VoiceCall, Telepathy Channel&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Le nom “Origin” a été choisi puisqu&amp;rsquo;il s&amp;rsquo;agit de l&amp;rsquo;objet à l&amp;rsquo;origine d&amp;rsquo;un appel.&lt;/p&gt;

&lt;p&gt;La super-interface MessageSource est utilisée pour traiter les messages de l&amp;rsquo;utilisateur.
La couche d&amp;rsquo;abstraction est une fine couche pour l&amp;rsquo;UI donc l&amp;rsquo;implémentation est amenée à afficher des informations, comme des erreurs ou des warnings ou autre, d&amp;rsquo;une manière appropriée pour l&amp;rsquo;utilisateur.
Même si les méthodes ne renvoient pas d&amp;rsquo;erreurs d&amp;rsquo;information mais à la place s&amp;rsquo;attendent à ce que l&amp;rsquo;implémentation fournissent des signaux de type &lt;em&gt;messages&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Le &lt;a href=&#34;https://gitlab.gnome.org/Community/Purism/calls&#34;&gt;code source&lt;/a&gt; est disponible dans gitlab Gnome de notre repo community.&lt;/p&gt;

&lt;h2 id=&#34;modems-ofono-et-modemmanager&#34;&gt;Modems, oFono et ModemManager&lt;/h2&gt;

&lt;p&gt;La démo d&amp;rsquo;en haut utilise un &lt;a href=&#34;http://simcomm2m.com/En/module/detail.aspx?id=86&#34;&gt;modem SIM7100E&lt;/a&gt; de chez SIMCom que vous pourrez voir monter sur notre board prototype avec la bordure rouge en bas à droite de l&amp;rsquo;écran.
Comme la plupart des modems cellulaires, il supporte à la fois les &lt;a href=&#34;https://en.wikipedia.org/wiki/Hayes_command_set&#34;&gt;commandes AT&lt;/a&gt; ainsi que les &lt;a href=&#34;https://osmocom.org/projects/quectel-modems/wiki/QMI&#34;&gt;QMI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Lorsque le SIM7100E a été branché pour la première fois, oFono ne le reconnaissait pas.
Cependant, il existe un second framework de téléphonie mobile, &lt;a href=&#34;https://www.freedesktop.org/wiki/Software/ModemManager/&#34;&gt;ModemManager&lt;/a&gt; qui l&amp;rsquo;a reconnu et pouvait passer des appels, envoyer des SMS et faire des connexions de données out of the box.
Nous avons alors considérer de l&amp;rsquo;utiliser à la place d&amp;rsquo;oFono mais malheureusement, le &lt;a href=&#34;https://www.freedesktop.org/software/ModemManager/api/latest/gdbus-org.freedesktop.ModemManager1.Call.html&#34;&gt;support des appels audio&lt;/a&gt; est rudimentaire et ne supporte pas les services additionnels comme la mise en attente ou les conférences.&lt;/p&gt;

&lt;p&gt;Alors que QMI est préferrable aux commandes AT, oFono ne supporte pas les appels via QMI.
Donc pour pouvoir faire des appels vocaux, nous avons besoins d&amp;rsquo;un nouveau driver pour le SIM7100E utilisant les commandes AT.
Ce drive a été &lt;a href=&#34;https://lists.ofono.org/pipermail/ofono/2018-April/018144.html&#34;&gt;upstreamé&lt;/a&gt; (partagé à la communauté).&lt;/p&gt;

&lt;h2 id=&#34;ensuite&#34;&gt;Ensuite&lt;/h2&gt;

&lt;p&gt;Nous avons abattu un certain travail jusqu&amp;rsquo;à présent mais il reste de nombreuses tâches à accomplir.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ajouter des sonneries. Pour le moment le programme ne joue aucun son lors d&amp;rsquo;un appel entrant. Il va falloir également jouer les tonalités DTMF quand l&amp;rsquo;utilisateur composera des numéros.&lt;/li&gt;
&lt;li&gt;Implémenter un journal d&amp;rsquo;appel et son intégration avec Gnome Contacts. Pour l&amp;rsquo;instant Calls ne journalise rien, nous avons donc besoin d&amp;rsquo;un format de stockage ainsi qu&amp;rsquo;une UI. Nous devons également être capable de chercher des contacts depuis Calls et ajouter des contact depuis le journal d&amp;rsquo;appel.&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;UI est simple mais fonctionnelle. Nous sommes bien loin du niveau de finition que nos designers &lt;a href=&#34;https://gitlab.gnome.org/Community/Design/app-mockups/blob/master/calls/calls.png&#34;&gt;envisagent&lt;/a&gt;. De nombreux efforts pour retravailler et polir l&amp;rsquo;interface seront nécessaires.&lt;/li&gt;
&lt;li&gt;Implémenter les réglages téléphoniques dans Gnome Settings. Nous avons besoin d&amp;rsquo;une nouvelle page pour les réglages spécifiques comme la sélection du réseau mobile et autres.&lt;/li&gt;
&lt;li&gt;Gérer les multiples SIM et les connexions des modems. Pour l&amp;rsquo;instant Calls est une simple interface pour les objets DBus OFono et ne peut qu&amp;rsquo;utiliser des modems déjà fonctionnels. Nous avons besoin de mécanisme permettant de configurer quel modems doit utiliser Calls et pour les connecter automatiquement quand l&amp;rsquo;appareil démarre.&lt;/li&gt;
&lt;li&gt;Implémenter un backend Telepathy pour avoir un support des appels SIP ainsi que les autres protocoles supportés par Telepathy.&lt;/li&gt;
&lt;li&gt;Le choix final des modems n&amp;rsquo;a pas encore été fait donc nous ne poussons pas trop les efforts vers le SIM7100E, juste assez pour tester Calls. Nous pourrions implémenter le support de QMI dans oFono si nous décidions d&amp;rsquo;adopter ce modem. À vrai dire, alors que j&amp;rsquo;écrit cet article il y a &lt;a href=&#34;https://lists.ofono.org/pipermail/ofono/2018-May/thread.html#18171&#34;&gt;une discussion&lt;/a&gt; sur leur mailing-list pour le support QMI. Cependant nous pourrions implémenter le support de services supplémentaires dans ModemManager, qui est plus dans l&amp;rsquo;alignement de la plateforme Gnome.&lt;/li&gt;
&lt;li&gt;Ajouter le support des services supplémentaires et les opérations complexes. ModemManager a un support rudimentaire des appels tout comme Calls actuellement. Nous voulons être sûr que notre dialer aura un support complet des standards de la téléphonie mobile.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;C&amp;rsquo;est tout pour le moment, restez branché pour de futurs infos ! 🙂&lt;/p&gt;

&lt;h3 id=&#34;⁰&#34;&gt;⁰&lt;/h3&gt;

&lt;p&gt;Une entreprise qui ne sera pas nommé vendait des téléphones basés sur GNU/Linux mais ceux-ci n&amp;rsquo;étaient pas capable d&amp;rsquo;émettre des appels téléphoniques quand ils sont sortis.
Cinq ans plus tard, j&amp;rsquo;ai acheté un de ces téléphones et l&amp;rsquo;ai apporté à mon &lt;a href=&#34;https://lug.org.uk/&#34;&gt;LUG&lt;/a&gt; local.
Et biensûr, la première question a été : “Est-ce qu&amp;rsquo;il peut téléphoner ?! haha!”
La réputation n&amp;rsquo;est plus à faire une fois que l&amp;rsquo;on vend un téléphone qui ne peux pas téléphoner !&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Ça avance petit à petit.
C&amp;rsquo;est pas mal du tout mais ça rassure pas…
La deadline approche et bha ça paraît toujours aussi distant pour les fonctions basiques et le choix du matos.
Gardons confiance.&lt;/p&gt;

&lt;p&gt;Leur collaboration avec l&amp;rsquo;écosystème existant fait toujours plaisir et augure un bon avenir.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Les maux des GAFAM</title>
      <link>https://lord.re/posts/101-maux-des-gafam/</link>
      <pubDate>Tue, 15 May 2018 11:23:29 +0100</pubDate>
      
      <guid>https://lord.re/posts/101-maux-des-gafam/</guid>
      <description>

&lt;p&gt;Il est de bon ton de critiquer les GAFAM.
C&amp;rsquo;est un sport assez commun.
Aussi bien chez les libristes/techniciens qui sont au fait des enjeux techniques de la chose mais également désormais la presse spécialisée voire &lt;a href=&#34;https://www.nouvelobs.com/tech/20180213.OBS2112/les-gafa-regnent-sur-nos-smartphones-reprenons-le-controle.html&#34;&gt;pas spécialisée du tout&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Bref le discours devient assez connu et commun.
&lt;strong&gt;C&amp;rsquo;est bien&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Par contre le remède n&amp;rsquo;est que très rarement abordé.&lt;/p&gt;

&lt;h2 id=&#34;un-remède-mais-pour-quelle-maladie&#34;&gt;Un remède mais pour quelle maladie ?&lt;/h2&gt;

&lt;p&gt;La maladie en elle-même n&amp;rsquo;est pas unique.
&lt;em&gt;Le terme “GAFAM” c&amp;rsquo;est déjà trop générique et pourtant ça regroupe des maux radicalement différents.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Et si on essayait de décomposer cet accronyme et voir un peu ce que ça regroupe ?
La liste qui suit ne sera pas exhaustive du tout mais donnera un bon aperçu.&lt;/p&gt;

&lt;h2 id=&#34;g&#34;&gt;G&lt;/h2&gt;

&lt;p&gt;Google, le fameux moteur de recherche.&lt;/p&gt;

&lt;p&gt;Ha le bon vieux temps où ce n&amp;rsquo;était qu&amp;rsquo;un moteur de recherche est révolu mais bon qu&amp;rsquo;est-ce qu&amp;rsquo;on leur reproche désormais ?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Hégémonie sur la recherche web&lt;/em&gt; : ils font la pluie et le beau temps sur la visibilité d&amp;rsquo;un site web. Si demain ils modifient leur algoritme d&amp;rsquo;indexation, ils peuvent chambouler la vie d&amp;rsquo;un site web (en bien ou en mal).&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Hégémonie sur le navigateur web&lt;/em&gt; : ils font la pluie et le beau temps sur la façon dont le web évolue. S&amp;rsquo;ils décident d&amp;rsquo;utiliser de nouvelles balises HTML hors standard bha… tant pis pour les autres. S&amp;rsquo;ils décident d&amp;rsquo;ajouter un blocage de pub nativement dans leur navigateur… bha tant pis pour les régie pubs autre que la leur.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Roi de la pub&lt;/em&gt; : la pub en elle même n&amp;rsquo;est pas l&amp;rsquo;élément génant mais en fait ça veux surtout dire roi de l&amp;rsquo;espionnage. Ce n&amp;rsquo;est pas “juste de la pub”. La pub que vend Google à ses clients est ultra ciblée. Et pour cibler le pigeon, il faut le connaître par cœur. Donc on l&amp;rsquo;espionne constamment partout pour recouper les données et monter non pas un simple profil mais une identité complète.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Omniprésent&lt;/em&gt; : ils ont une galaxie de site web (google, youtube, maps, plus, …), une myriade d&amp;rsquo;appareils (android, chromecast, chromebooks, des enceintes, des thermostats, quelques voitures, …), une petite collection d&amp;rsquo;OS (android, chromeOS bientôt fuschia). Même hors ligne on sent sa présence permanente.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ça fait peur.
On ne peut absolument pas leur échapper sans être très précautionneux et en ayant des connaissances techniques assez poussées.
Et le pire c&amp;rsquo;est que ça ne va pas s&amp;rsquo;arranger de si-tôt.&lt;/p&gt;

&lt;h2 id=&#34;a&#34;&gt;A&lt;/h2&gt;

&lt;p&gt;Apple, la plus grosse capitalisation boursière actuelle (proche du 18ème PIB mondial).&lt;/p&gt;

&lt;p&gt;En quarante ans, ils sont passés d&amp;rsquo;une entreprise pro-bidouilleurs à une église diabolisant la personnalisation, empêchant la réparation et compliquant la propriété privée.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;La forme avant le reste&lt;/em&gt; : c&amp;rsquo;est un reproche assez récurrent. Ils préferrent sortir un produit qui sera plus joli/léger plutôt que réparable/upgradable.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;C&amp;rsquo;est comme ça et puis c&amp;rsquo;est tout&lt;/em&gt; : quand on achète un produit Apple, on utilise un produit Apple comme Apple accepte qu&amp;rsquo;on l&amp;rsquo;utilise. Très peu de personnalisation, c&amp;rsquo;est tout verouillé de partout. Une autre personne avec un produit Apple aura le même que vous. Une chance qu&amp;rsquo;on puisse changer le fond d&amp;rsquo;écran !&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Vous avez le droit de l&amp;rsquo;utiliser&lt;/em&gt; : quand on achète un produit Apple, on utilise un produit Apple comme Apple accepte qu&amp;rsquo;on l&amp;rsquo;utilise. C&amp;rsquo;est tout juste s&amp;rsquo;il vous appartient. Vous n&amp;rsquo;avez pas le droit de l&amp;rsquo;utiliser différemment. Surtout pas utiliser leurs logiciels sur un autre OS ou leur OS sur un autre matériel. Bref on se retrouve vite enfermé dans toute une philosophie, un écosystème… Bref une religion.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Le culte Apple&lt;/em&gt; : Ouai c&amp;rsquo;est fatigant toute cette ambiance qui règne autour. Non, c&amp;rsquo;est pas forcément mieux pour un graphiste… À l&amp;rsquo;inverse, c&amp;rsquo;est pas forcément beaucoup plus cher à matos de même qualité et même intégration. T&amp;rsquo;as-tu vraiment besoin de remplacer ton matos toutes les cinq minutes ? Non tu n&amp;rsquo;utilises pas 50% des perfs de ton téléphone actuel, donc les 15% de perf supplémentaires du nouveau te changeront rien.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Finalement on ne leur reproche pas du tout la même chose que Google.
&lt;del&gt;Pas de soucis de vie privée.&lt;/del&gt;
&lt;del&gt;Pas de pistage intempestif.&lt;/del&gt;
On me signale qu&amp;rsquo;en fait leurs produits embarquent un SuperCookie permettant d&amp;rsquo;identifier leurs utilisateurs.
En gros on s&amp;rsquo;en fout un peu d&amp;rsquo;eux.
Ils posent pas trop de soucis, c&amp;rsquo;est plutôt leur clientèle qui est toxique.&lt;/p&gt;

&lt;p&gt;Le moyen facile pour éviter leurs travers est de ne pas acheter leurs produits et c&amp;rsquo;est bon vous êtes safe.&lt;/p&gt;

&lt;p&gt;On peut se réjouir que le “Don&amp;rsquo;t be evil” s&amp;rsquo;applique plutôt à eux, car avec les semi-remorques de lingots qu&amp;rsquo;ils possèdent ils pourraient faire des dégats massifs.&lt;/p&gt;

&lt;h2 id=&#34;f&#34;&gt;F&lt;/h2&gt;

&lt;p&gt;Facebook, le grand registre mondial de l&amp;rsquo;humanité.&lt;/p&gt;

&lt;p&gt;Le plus récent des GAFAM et pourtant l&amp;rsquo;un des plus néfastes mais soit-disant légèrement sur le déclin.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Omniprésence sur le web&lt;/em&gt; : il est difficile d&amp;rsquo;ouvrir une page web sans envoyer une requête vers leur serveur. Partout des scripts, des images, des boutons qui pointent vers leurs machines.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Point d&amp;rsquo;accès unique&lt;/em&gt; : pour de nombreuses personnes l&amp;rsquo;Internet peut se résumer à Facebook.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Créer des identités vraiment poussées&lt;/em&gt; : dans le but de vendre de la pub encore une fois. Un publicitaire peut cibler &amp;ldquo;les personnes entre 16 et 18 ans de couleur blanche habitant tel quartier à tendance technophile n&amp;rsquo;aimant pas le rap&amp;rdquo; et savoir que sa pub atteindra X personnes. Flippant.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Omniprésence qui se répend hors du web&lt;/em&gt; : avec le rachat de Whatsapp ils se font une joie de capter les conversations des gens. En sachant que Whatsapp s&amp;rsquo;est forgé une popularité massive dans les pays en voie de développement grâce à leurs apps tournant sur n&amp;rsquo;importe quel type de téléphone, le déclin est pas près d&amp;rsquo;arriver. Et puis ils sont plutôt bien placé dans la VR grâce au rachat d&amp;rsquo;Occulus. Ha et si vous êtes plutôt Instagram… bha c&amp;rsquo;est aussi Facebook. Bref…&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Là c&amp;rsquo;est bien moins ragoutant qu&amp;rsquo;Apple et on a les mêmes travers que Google.
Bref pour la vie privée c&amp;rsquo;est le désastre complet.
On a déjà vu/lu des centaines d&amp;rsquo;articles à ce propos mais c&amp;rsquo;est réellement un bourbier immense.&lt;/p&gt;

&lt;h2 id=&#34;a-1&#34;&gt;A&lt;/h2&gt;

&lt;p&gt;Amazon, le ptit libraire qui héberge la moitié du net Américain.&lt;/p&gt;

&lt;p&gt;Je ne parlerai pas de leur business physique de vente de trucs mais uniquement de leur business informatique.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Tout le monde l&amp;rsquo;utilise&lt;/em&gt; : ils se taillent une belle part de l&amp;rsquo;hébergement cloud, surtout aux US. Leurs offres de stockage sont également massivement utilisée pour tout et n&amp;rsquo;importe quoi.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Ils obéissent aux lois US&lt;/em&gt; : c&amp;rsquo;est un reproche à faire également aux autres mais c&amp;rsquo;est un reproche un point plus génant pour eux dans le sens où en tant qu&amp;rsquo;utilisateur, on est pas forcément au courant qu&amp;rsquo;on se retrouve sur leur infra. Et du coup potentiellement on visite un site français mais qui en fait est hébergé par Amazon et du coup potentiellement à disposition de la NSA, CIA, FBI, …&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Alexa l&amp;rsquo;espion à la maison&lt;/em&gt; : Bon sur ce point c&amp;rsquo;est comme le truc de Google. Heureusement personne n&amp;rsquo;accepterai d&amp;rsquo;acheter un micro à placer chez soit qui écoute constamment tout ce qu&amp;rsquo;il se passe à la maison. Hein ! Personne ne ferait ça !&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Moins de reproches du fait qu&amp;rsquo;ils ne sont que prestataire et au final ne touchent pas vraiment les données qu&amp;rsquo;ils hébergent.
D&amp;rsquo;ailleurs peut-on leur reprocher de se plier aux loi US ?&lt;/p&gt;

&lt;h2 id=&#34;m&#34;&gt;M&lt;/h2&gt;

&lt;p&gt;Microsoft, le logiciel mou qui tente désespérément de se faire une place sur l&amp;rsquo;Internet.&lt;/p&gt;

&lt;p&gt;Comme pour Amazon, je ne parlerai que de leurs pratiques concernant Internet/la vie privée.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Leur cloud fait tourner plus de Linux que de Windows&lt;/em&gt; : hahahahaahhahahaha. Le plus gros vendeur d&amp;rsquo;OS proprio qui est l&amp;rsquo;un des plus gros loueur de Linux. Voilà c&amp;rsquo;est juste pour les troller.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;GAFA, pas GAFAM&lt;/em&gt; : ouai pas de bol pour eux, ils se font souvent zapper. Ils existent presque pas sur Internet.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Hégémonie sur les PC&lt;/em&gt; : bon allez on va quand même parler de leur position dominante sur les OS grâce à la vente liée et le lobbying massif. Et quand à ça on saupoudre d&amp;rsquo;un peu d&amp;rsquo;espionnite dans Win10 et un soupçon de pubs on obtient un OS techniquement en amélioration mais au détriment de l&amp;rsquo;utilisateur.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Ils chient sur les mails&lt;/em&gt; : envoyer du mail chez Microsoft est une plaie. Il faut avoir bonne réputation, mais comment avoir bonne réputation si on peut pas leur envoyer de mail ? C&amp;rsquo;est simple ! En ouvrant un compte chez eux et en les suppliant de bien vouloir recevoir vos mails. Donc voilà, si vous êtes pas un très gros du secteur bien établi, vous ne pourrez leur envoyer des mails qu&amp;rsquo;en montrant patte blanche. Appliquer les bonnes consignes des serveurs de mails ne suffira pas.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bon bha que dire si ce n&amp;rsquo;est qu&amp;rsquo;en fait on s&amp;rsquo;en fout un peu d&amp;rsquo;eux.
Même si ces derniers années ils s&amp;rsquo;améliorent énormément en découvrant l&amp;rsquo;Opensource et le Libre, leur faible présence sur le net ne les rend pas trop hostiles en dehors de leur attitude merdique concernant les mails.&lt;/p&gt;

&lt;h2 id=&#34;verdict-quel-est-le-soucis&#34;&gt;Verdict quel est le soucis ?&lt;/h2&gt;

&lt;p&gt;Bon bha une partie vient de la position dominante dans un domaine.&lt;/p&gt;

&lt;p&gt;Donc &lt;strong&gt;utiliser des alternatives&lt;/strong&gt; est déjà un bon moyen de rendre plus inoffensif ces géants.&lt;/p&gt;

&lt;p&gt;Ensuite concernant la vie privée, la première chose la plus évidente est d&amp;rsquo;&lt;em&gt;arrêter de coller nos données ailleurs que chez soit&lt;/em&gt;.
N&amp;rsquo;écoutez pas les sirènes du cloud.
Le cloud c&amp;rsquo;est l&amp;rsquo;ordinateur de quelqu&amp;rsquo;un d&amp;rsquo;autre.
Et si ce quelqu&amp;rsquo;un d&amp;rsquo;autre vous le prête grâcieusement c&amp;rsquo;est bien pour faire tourner son business et rarement par bonté d&amp;rsquo;âme (bien que ce soit parfois le cas, hein &lt;a href=&#34;https://framasoft.org&#34;&gt;Framasoft&lt;/a&gt;).&lt;/p&gt;

&lt;h2 id=&#34;arrêtez-de-nourrir-le-cloud&#34;&gt;Arrêtez de nourrir le cloud !&lt;/h2&gt;

&lt;p&gt;Ne postez plus vos photos de soirée sur Facebook.
S&amp;rsquo;il vous plaît, épargnez la vie privée de vos enfants qui n&amp;rsquo;ont pas forcément envie de voir publier leurs premiers instants et les suivants.
Cessez de distiller la moindre de vos pensées dans des tweets (tiens j&amp;rsquo;avais pas parlé d&amp;rsquo;eux).
Je ne vous demande pas de vous couper du monde, juste d&amp;rsquo;agir plus raisonnablement en le faisant différement et plus posément.&lt;/p&gt;

&lt;p&gt;Tout ce que vous poussez dans le cloud sera archivé, stocké, analysé, monétisé et qui sait un jour se retournera contre vous.&lt;/p&gt;

&lt;h2 id=&#34;le-point-godwin-obligatoire&#34;&gt;Le point Godwin obligatoire&lt;/h2&gt;

&lt;p&gt;Bon pour enfoncer le clou je me dois de faire cette digression.&lt;/p&gt;

&lt;p&gt;Je vais faire court mais si vous voulez plus de détails il existe un livre ainsi que la page &lt;a href=&#34;https://en.wikipedia.org/wiki/IBM_and_the_Holocaust&#34;&gt;wikipedia anglaise&lt;/a&gt; qui détaille un peu.&lt;/p&gt;

&lt;p&gt;Le régime nazi a travaillé main dans la main avec IBM pour créer une base de donnée (via recensement) de la population allemande dans les années 1930.
Cette base de donnée à base de cartes perforées a permis de trier/classer/analyser le recensement avec une précision telle qu&amp;rsquo;elle a grandement aidé à peupler les camps de concentration.&lt;/p&gt;

&lt;p&gt;Il faut bien voir que lors de l&amp;rsquo;établissement de la base de donnée Hitler n&amp;rsquo;avait pas encore commencé sa purge massive.
Il ne s&amp;rsquo;agissait que d&amp;rsquo;un simple recensement utilisant les balbutiements de l&amp;rsquo;outil informatique.
Ce recensement était tout à fait légitime et le monde ne savait pas encore quelle serait l&amp;rsquo;utilisation de ces données.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Les bases de données de Google et Facebook feraient rêver plus d&amp;rsquo;un Hitler.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sachez qu&amp;rsquo;une fois en leur main, &lt;em&gt;les données qu&amp;rsquo;accumulent Google et Facebook ne sont très probablement jamais supprimmées&lt;/em&gt;.
Et gardez en tête que &lt;strong&gt;ce qui est légal/normal/admis aujourd&amp;rsquo;hui ne le sera pas forcément demain&lt;/strong&gt;.&lt;/p&gt;

&lt;h2 id=&#34;montez-votre-site-ouaib&#34;&gt;Montez votre site ouaib !&lt;/h2&gt;

&lt;p&gt;Plutôt que d&amp;rsquo;engraisser les vendeurs de vie privée, montez votre blog, votre galerie photo, réfugiez-vous sur une instance Mastodon proche de chez vous.
Faites vivre les alternatives que sont les &lt;a href=&#34;https://chatons.org/&#34;&gt;chatons&lt;/a&gt;.
Utilisez un navigateur web respectueux (non gagner 2ms sur l&amp;rsquo;ouverture d&amp;rsquo;une page web n&amp;rsquo;est pas indispensable).&lt;/p&gt;

&lt;p&gt;Alors vous allez vite me dire que ça demande des compétences.
Bha oui et non.
Vous n&amp;rsquo;êtes pas obligé d&amp;rsquo;y aller à fond tout de suite en vous auto-hébergeant et tout.
Mais vous pouvez commencer simplement par exemple via l&amp;rsquo;excellente initiative Framasoft que sont les &lt;a href=&#34;https://frama.site/&#34;&gt;Framasite&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>11ème article d&#39;avancement du Librem 5</title>
      <link>https://lord.re/posts/100-librem-progress-report-11/</link>
      <pubDate>Fri, 11 May 2018 09:22:07 +0100</pubDate>
      
      <guid>https://lord.re/posts/100-librem-progress-report-11/</guid>
      <description>

&lt;p&gt;Ceci est une traduction libre de &lt;a href=&#34;https://puri.sm/posts/librem5-progress-report-11/&#34;&gt;cet article&lt;/a&gt; concernant les avancées de la société Purism concernant le smartphone &lt;strong&gt;Librem 5&lt;/strong&gt;.
L&amp;rsquo;article original est sous licence &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/&#34;&gt;CC BY-SA 4.0&lt;/a&gt; tout comme ma traduction.&lt;/p&gt;

&lt;p&gt;Ce smartphone a bénéficié d&amp;rsquo;un crowdfunding et a pour but d&amp;rsquo;apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec.
Ils collaborent avec le projet &lt;a href=&#34;https://www.gnome.org&#34;&gt;Gnome&lt;/a&gt;, le projet &lt;a href=&#34;https://www.kde.org&#34;&gt;KDE&lt;/a&gt;, &lt;a href=&#34;https://ubports.com/&#34;&gt;UBPorts&lt;/a&gt; et le projet &lt;a href=&#34;https://matrix.org&#34;&gt;Matrix&lt;/a&gt;.
Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.&lt;/p&gt;

&lt;p&gt;Bref voilà l&amp;rsquo;article :&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;Salut tout le monde !
Beaucoup d&amp;rsquo;avancements depuis mon dernier rapport de design.
Jusqu&amp;rsquo;à maintenant je n&amp;rsquo;ai rapporté que les avancées design sur le plan &lt;em&gt;software&lt;/em&gt;, mais nos efforts ne s&amp;rsquo;y limitent évidemment pas.
L&amp;rsquo;expérience que ressent une personne vis-à-vis d&amp;rsquo;un appareil physique est également très importante.
Cet article résumera les récentes décisions prises d&amp;rsquo;un point de vue logiciel mais également matériel.&lt;/p&gt;

&lt;h2 id=&#34;penser-à-l-interface-physique&#34;&gt;Penser à l&amp;rsquo;interface physique&lt;/h2&gt;

&lt;p&gt;Notre but avec le Librem 5 est d&amp;rsquo;améliorer l&amp;rsquo;identité visuelle de la lignée Librem tout en restant proche de notre look humble et minimaliste qui nous caractérise.&lt;/p&gt;

&lt;p&gt;Le principal challenge d&amp;rsquo;un design de boitier est un compromis entre l&amp;rsquo;esthétisme, l&amp;rsquo;ergonomie, la praticité et les limitations techniques.&lt;/p&gt;

&lt;p&gt;Comme vous le savez, le Librem 5 est particulier car contrairement à la tendance actuelle, nous auront un processeur et un chipset distincts.
La consommation électrique est un facteur majeur à prendre en compte mais également la capacité de la batterie ainsi que l&amp;rsquo;arrangement des circuits imprimmés et ne voulons pas sacrifier l&amp;rsquo;endurance de la batterie pour quelques milimètres d&amp;rsquo;épaisseurs. Cela-dit :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nous visons désormais un écran d&amp;rsquo;une taille d&amp;rsquo;environ 5.5 à 5.7 pouces avec un ration de 18:9 ce qui nous permettrait d&amp;rsquo;inclure une plus grande batterie sans impacter le format du téléphone.&lt;/li&gt;
&lt;li&gt;Nous allons également opter pour une forme chanfrein (voir la photo), au lieu de l&amp;rsquo;habituel bord arrondi. Non seulement c&amp;rsquo;est élégant, mais ça permettra une meilleure préhension tout en donnant un peu plus d&amp;rsquo;espace pour les composants internes.&lt;/li&gt;
&lt;/ul&gt;


&lt;figure&gt;
    &lt;a href=&#34;https://lord.re/static/100-l5-v1-turn-around.jpg&#34;&gt;
        &lt;img src=&#34;https://lord.re/static/100-l5-v1-turn-around.jpg&#34; alt=&#34;Concept de design du Librem 5 en version 1&#34; /&gt;
    &lt;/a&gt;
    
&lt;/figure&gt;


&lt;h2 id=&#34;simplification-de-l-interface-utilisateur&#34;&gt;Simplification de l&amp;rsquo;interface utilisateur&lt;/h2&gt;

&lt;p&gt;Au fur et à mesure de l&amp;rsquo;avancement du Librem5, nous sommes conscient du planning serré en visant une sortie en Janvier 2019, et sommes donc concentrés sur la robustesse et l&amp;rsquo;efficacité pour la première version de l&amp;rsquo;interface mobile (&amp;ldquo;phosh&amp;rdquo;), que nous allons pousser pour devenir l&amp;rsquo;interface mobile de Gnome Shell.&lt;/p&gt;

&lt;p&gt;Nous avons donc revus les fonctionnalités et décidé de diviser le design et son implémentation en plusieurs phases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La Phase 1&lt;/strong&gt; définie une interface la plus simple en terme de fonctionnalité et d&amp;rsquo;utilisation. C&amp;rsquo;est ce qui sera livré avec le téléphone en Janvier 2019.&lt;/p&gt;


&lt;figure&gt;
    &lt;a href=&#34;https://lord.re/static/100-l5-shell-1.jpg&#34;&gt;
        &lt;img src=&#34;https://lord.re/static/100-l5-shell-1.jpg&#34; alt=&#34;Concept des différents éléments d&amp;#39;interface de l&amp;#39;interface phosh.&#34; /&gt;
    &lt;/a&gt;
    
&lt;/figure&gt;


&lt;p&gt;Cela inclu :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un écran de verrouillage.&lt;/li&gt;
&lt;li&gt;Un écran de déverrouillage à base de code PIN pour protéger la session.&lt;/li&gt;
&lt;li&gt;Un écran d&amp;rsquo;accueil affichant une liste paginée d&amp;rsquo;applications.&lt;/li&gt;
&lt;li&gt;Une barre en haut affichant des informations utiles comme l&amp;rsquo;heure, le niveau de batterie, le volume audio, le niveau de signal réseau.&lt;/li&gt;
&lt;li&gt;Une barre du bas simulant un bouton de retour (uniquement visible quand une application est ouverte).&lt;/li&gt;
&lt;li&gt;Un clavier virtuel.&lt;/li&gt;
&lt;li&gt;Des notifications d&amp;rsquo;appels entrants.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le multi-tâche, la recherche ou les notifications ne seront implémentés qu&amp;rsquo;en &lt;strong&gt;phase 2&lt;/strong&gt; et donc disponible plus tard.&lt;/p&gt;

&lt;p&gt;Même si la “phase 1” ne correspond pas à l&amp;rsquo;offre pléthorique habituellement proposé, nous pensons que cette interface minimale sera extrèmement simple à appréhender ce qui favorisera une adoption sans heurts.
Cela sera un très bon point de départ.&lt;/p&gt;

&lt;h2 id=&#34;designer-l-application-contacts&#34;&gt;Designer l&amp;rsquo;application Contacts&lt;/h2&gt;

&lt;p&gt;L&amp;rsquo;application *&lt;em&gt;Contacts&lt;/em&gt; sera au centre des fonctionnalités de communication.
C&amp;rsquo;est l&amp;rsquo;application qui aura en charge la gestion des contacts pour les autres applications comme &lt;strong&gt;Calls&lt;/strong&gt; ou &lt;strong&gt;Messages&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Pour cela, nous sommes en train d&amp;rsquo;adapter l&amp;rsquo;applications &lt;a href=&#34;https://wiki.gnome.org/Apps/Contacts&#34;&gt;Contacts&lt;/a&gt; existante en designant son agencement mobile et en ajoutant de nouveaux champs nécessaires pour les différentes applications.&lt;/p&gt;


&lt;figure&gt;
    &lt;a href=&#34;https://lord.re/static/100-contact-adaptive-design.jpg&#34;&gt;
        &lt;img src=&#34;https://lord.re/static/100-contact-adaptive-design.jpg&#34; alt=&#34;Différents écrans de l&amp;#39;interface de l&amp;#39;appli Contacts à la fois sur ordinateur et sur mobile.&#34; /&gt;
    &lt;/a&gt;
    
&lt;/figure&gt;


&lt;h2 id=&#34;librem-5-fractal-team-hackfest-à-strasbourg&#34;&gt;Librem 5 &amp;amp; Fractal team hackfest à Strasbourg&lt;/h2&gt;

&lt;p&gt;Cette semaine, certains membre de l&amp;rsquo;équipe Librem 5 (incluant moi-même) seront au &lt;a href=&#34;https://wiki.gnome.org/Hackfests/Fractal2018&#34;&gt;Fractal Hackfest 2018&lt;/a&gt; à Strasbourg dans le but d&amp;rsquo;aider l&amp;rsquo;&lt;a href=&#34;https://wiki.gnome.org/Apps/Fractal&#34;&gt;équipe Fractal&lt;/a&gt; à créer application basée sur &lt;a href=&#34;https://matrix.org&#34;&gt;Matrix&lt;/a&gt; à la fois jolie et sécurisée à la fois sur ordinateur que sur plateforme mobile.
J&amp;rsquo;espère faire un rapport sur les fonctionnalités de communication du Librem 5 dans un futur article où j&amp;rsquo;aborderai ce qu&amp;rsquo;il se sera passé au Fractal Hackfest.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Bon bien entendu quand vous lisez &amp;ldquo;je&amp;rdquo; dans cet article, ce n&amp;rsquo;est pas moi mais l&amp;rsquo;auteur original François Téchené membre de Purism.&lt;/p&gt;

&lt;p&gt;Les modifications de concept de design physique sont intéressantes.
Mine de rien les modes des smartphone a pas mal changé depuis la création du crowdfunding et ce nouveau design (provisoire) est déjà plus sympa et accuse moins le coup.
J&amp;rsquo;aime beaucoup le fait qu&amp;rsquo;ils ne cherchent pas à faire le smartphone le plus fin possible.
Perso ça ne me gène pas d&amp;rsquo;avoir un appareil un peu épais, surtout si ça permet d&amp;rsquo;avoir une meilleure batterie et un téléphone mieux branlé.&lt;/p&gt;

&lt;p&gt;Concernant le logiciel, certains vont probablement râler mais bon la deadline est vraiment courte.
Même s&amp;rsquo;ils repartent de briques existantes, le monde GNU/Linux est quand même pas vraiment adapter au téléphone et du coup tout le userspace est à créer ou presque.
Bref c&amp;rsquo;est bien qu&amp;rsquo;ils annoncent que dans un premier temps ça sera léger.
Il y a plus qu&amp;rsquo;à espérer qu&amp;rsquo;ils ne s&amp;rsquo;arrêteront pas à la Phase 2 mais poursuivent les efforts par la suite.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Ce qu&#39;il se passe quand on ouvre une page web</title>
      <link>https://lord.re/posts/99-ce-quil-se-passe-quand-on-ouvre-une-page-web/</link>
      <pubDate>Tue, 08 May 2018 23:12:50 +0200</pubDate>
      
      <guid>https://lord.re/posts/99-ce-quil-se-passe-quand-on-ouvre-une-page-web/</guid>
      <description>

&lt;p&gt;Vous ouvrez très probablement des dizaines voir des centaines de pages web tous les jours.
C&amp;rsquo;est devenu naturel à tel point qu&amp;rsquo;on ne se rend pas compte de toute la magie à l&amp;rsquo;œuvre pour nous afficher notre drogue moderne.&lt;/p&gt;

&lt;p&gt;Déjà commençons par une petite mise au point : je vais causer principalement de Web mais pas trop d&amp;rsquo;Internet car souvenez-vous : &lt;a href=&#34;https://lord.re/posts/90-webinternet/&#34;&gt;Web ≠ Internet&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est parti !&lt;/p&gt;

&lt;h2 id=&#34;comprendre-l-adresse&#34;&gt;Comprendre l&amp;rsquo;adresse&lt;/h2&gt;

&lt;p&gt;Imaginons que vous vous comportiez bien en utilisant la barre d&amp;rsquo;adresse (et non la barre de recherche).
Vous entrez donc &lt;em&gt;lord.re/posts&lt;/em&gt; .&lt;/p&gt;

&lt;p&gt;Votre navigateur va devoir transformer ça en une véritable URL.&lt;/p&gt;

&lt;p&gt;Donc premièrement il va rajouter le protocole utilisé.
Ça veux dire qu&amp;rsquo;il va rajouter &lt;em&gt;http://&lt;/em&gt; devant pour indiquer &lt;strong&gt;Hyper Text Transport Protocol&lt;/strong&gt;.
Peut-être que les navigateurs utiliseront http&lt;em&gt;s&lt;/em&gt; par défaut bientôt ce qui permettrait d&amp;rsquo;utiliser une version plus sécurisée du web par défaut mais c&amp;rsquo;est pas encore le cas.&lt;/p&gt;

&lt;p&gt;L&amp;rsquo;adresse est donc &lt;strong&gt;&lt;a href=&#34;http://lord.re/posts&#34;&gt;http://lord.re/posts&lt;/a&gt;&lt;/strong&gt; avec les différents composants :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;http://&lt;/em&gt; étant le protocole&lt;/li&gt;
&lt;li&gt;&lt;em&gt;lord.re&lt;/em&gt; est le nom de la machine sur laquelle vous vous connectez&lt;/li&gt;
&lt;li&gt;&lt;em&gt;posts&lt;/em&gt; est le document que vous voulez voir&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;À partir de là, le navigateur va pouvoir passer à la suite.&lt;/p&gt;

&lt;h2 id=&#34;requête-dns&#34;&gt;Requête DNS&lt;/h2&gt;

&lt;p&gt;Bon c&amp;rsquo;est bien gentil, votre ordinateur sait quel serveur contacter mais il ne sait pas où il se trouve.
Votre navigateur ne peut se connecter qu&amp;rsquo;à des adresses IP, il lui faut donc faire la correspondance entre le nom de la machine et son adresse IP.
Ce service est assuré par l&amp;rsquo;OS et plus spécifiquement &lt;em&gt;le service de résolution de nom&lt;/em&gt; couramment appelé &lt;strong&gt;DNS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Votre navigateur demande donc à votre OS : &lt;em&gt;« Quelle est l&amp;rsquo;adresse IP de lord.re ? »&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Votre OS va donc consulter le serveur DNS qui est configuré et celui-ci lui donnera une adresse IP de la forme &lt;em&gt;92.167.84.9&lt;/em&gt; si c&amp;rsquo;est une IPv4 ou bien &lt;em&gt;2001:0db8:1234:4321:1234:4321:1234:4321&lt;/em&gt; en IPv6 (oui c&amp;rsquo;est beaucoup moins simple à retenir).&lt;/p&gt;

&lt;p&gt;Avec un peu de chance cette information ne vous aura nécessité l&amp;rsquo;envoi que d&amp;rsquo;un paquet DNS et la réception d&amp;rsquo;un paquet DNS.
On a donc déjà 2 paquets qui ont voyagé.
Votre OS transmettra ensuite cette réponse à votre navigateur qui pourra établir la connexion IP et TCP.&lt;/p&gt;

&lt;h2 id=&#34;création-des-paquets-ip&#34;&gt;Création des paquets IP&lt;/h2&gt;

&lt;p&gt;Lorsque deux machines se connectent pour ensuite parler, elles le font via le &lt;strong&gt;protocole IP&lt;/strong&gt; (IPv4 ou IPv6).
Les données sont tronçonnées en de multiples morceaux.
Chaque morceau est placé dans un paquet IP.
En gros un paquet IP c&amp;rsquo;est une enveloppe avec l&amp;rsquo;entête (écrit sur l&amp;rsquo;enveloppe) et les données dedans.&lt;/p&gt;

&lt;p&gt;Ces entêtes IP contiennent (entre autre) l&amp;rsquo;adresse IP d&amp;rsquo;émission du paquet (pour pouvoir revenir) ainsi que l&amp;rsquo;adresse IP de réception (pour pouvoir atteindre la destination).&lt;/p&gt;

&lt;p&gt;Bref le navigateur est désormais capable de joindre le destinataire final en demandant à l&amp;rsquo;OS de créer des paquets IP.
Le réseau se chargera de les amener au bon endroit et de faire le retour également.
Mais ça c&amp;rsquo;est une autre histoire passionnante.&lt;/p&gt;

&lt;h2 id=&#34;établissement-de-la-connexion-tcp&#34;&gt;Établissement de la connexion TCP&lt;/h2&gt;

&lt;p&gt;Si vous voulez parler via le protocole http, alors les paquets sont émis à destination du port &lt;em&gt;80&lt;/em&gt; si c&amp;rsquo;est en https, alors ce sera le port &lt;em&gt;443&lt;/em&gt; et seront émis depuis un port aléatoire de votre ordinateur.&lt;/p&gt;

&lt;p&gt;Mais dis-moi Jamie, c&amp;rsquo;est quoi un port ?
&lt;em&gt;La notion de port est ce qui permet à un ordinateur d&amp;rsquo;établir plus d&amp;rsquo;une connexion simultanée.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Vous n&amp;rsquo;allez pas vous connecter juste à un ordinateur en réalité mais à 1 port d&amp;rsquo;un ordinateur.
Un même ordinateur pourra faire tourner plusieurs logiciels simultanément qui attendront chacun des connexions sur des ports différents.
De ce fait un seul ordinateur peut à la fois parler http et https mais également faire serveur mail sur le port 25 par exemple et pourquoi pas aussi serveur de discussion via le port 6667…&lt;/p&gt;

&lt;p&gt;Les ordinateurs en ont 65535 ce qui leur laisse pas mal de marge de manœuvre (et encore autant en UDP).
&lt;em&gt;Un port est donc un point d&amp;rsquo;entrée et/ou de sortie de votre OS sur le réseau.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Donc reprenons :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;votre ordinateur va envoyer une demande de connexion tcp vers le port 80 ou 443 du serveur web (TCP SYN).&lt;/li&gt;
&lt;li&gt;Lorsque le serveur web va recevoir cette demande, s&amp;rsquo;il est disponible, il enverra un paquet comme quoi il accepte cette connexion (TCP ACK).&lt;/li&gt;
&lt;li&gt;Et enfin votre ordinateur à la réception de l&amp;rsquo;acceptation enverra un accusé de réception attestant que la connexion est établie (TCP SYNACK).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cet échange s&amp;rsquo;appelle le &lt;strong&gt;TCP Handshake&lt;/strong&gt; ou &lt;em&gt;3way-handshak&lt;/em&gt; ou &lt;em&gt;la poignée de main TCP&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;TCP est dit fiable car il s&amp;rsquo;assure que chaque paquet envoyé est reçu et dans le bon ordre.
Si des paquets ne sont pas reçus, TCP le renverra.
Ce système fonctionne grâce à des accusés de réception et le fait que chaque paquet est numéroté.&lt;/p&gt;

&lt;p&gt;On est donc dans le meilleur des cas à 5 paquets échangés et toujours 0 info à se mettre sous la dent.&lt;/p&gt;

&lt;h2 id=&#34;établissement-tls&#34;&gt;Établissement TLS&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;TLS&lt;/strong&gt; est la couche de protection qui fait la différence entre le HTTP et le HTTPS.
Ce fameux petit &lt;strong&gt;s&lt;/strong&gt; qui veux dire &lt;em&gt;secure&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est lui le garant de la sécurité et de la confidentialité de vos données mais malheureusement ce n&amp;rsquo;est pas infaillible mais je ne pousserai pas dans ces détails.
Cette étape n&amp;rsquo;intervient donc que lorsque l&amp;rsquo;adresse rentrée est en HTTPS.&lt;/p&gt;

&lt;p&gt;Bref maintenant votre ordinateur (le client) va parler SSL/TLS (SSL étant le nom de l&amp;rsquo;ancien protocole) avec le serveur.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Votre client indique quel domaine il veux contacter ( lord.re dans notre exemple) en clair.&lt;/li&gt;
&lt;li&gt;Il y tout d&amp;rsquo;abord la négociation de la méthode de chiffrement pour que le client et le serveur puisse utiliser la même.&lt;/li&gt;
&lt;li&gt;Le serveur envoi son certificat au client.&lt;/li&gt;
&lt;li&gt;Le client vérifie que ce certificat est de confiance (en regardant qui l&amp;rsquo;a signé et si ce tiers est de confiance)&lt;/li&gt;
&lt;li&gt;Si c&amp;rsquo;est ok, le client choisi une clé de chiffrement temporaire qu&amp;rsquo;il chiffre via la clé publique du serveur&lt;/li&gt;
&lt;li&gt;Le serveur web déchiffre cette clé temporaire grâce à sa clé privée&lt;/li&gt;
&lt;li&gt;Les échanges suivant sont chiffrés via la clé temporaire échangée de manière sécurisée.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si les rouages sous le capot vous intéresse le bon vieux wikipedia possède &lt;a href=&#34;https://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique&#34;&gt;une page plutôt pas mal&lt;/a&gt; à ce sujet.&lt;/p&gt;

&lt;p&gt;Autant vous dire que les méthode de chiffrements sont variées allant du vraiment blindé à la passoire.
Sachez que généralement les sites sont plutôt moyens et que généralement les banques sont dans le tout juste passable voir passoire…
Le site SSLLabs de Qualys propose un excellent &lt;a href=&#34;https://www.ssllabs.com/ssltest/&#34;&gt;test de niveau de sécurité TLS&lt;/a&gt; bien foutu ce qui vous permettra de juger de la sécurité d&amp;rsquo;un site (mais ça ne fait pas tout).&lt;/p&gt;

&lt;p&gt;Bref l&amp;rsquo;utilisation de TLS a un léger impact sur les performances mais garantie (dans la grande majorité des cas) que les données échangées ne sont pas lisibles par quiconque et ne sont pas non plus alterées, c&amp;rsquo;est donc indispensable.&lt;/p&gt;

&lt;p&gt;Bon bon bon, notre compteur atteint désormais les 11 paquets échangés et toujours pas de données utiles pour votre navigateur mais ça arrive à la prochaine étape. (spoiler pas vraiment mais presque)&lt;/p&gt;

&lt;h2 id=&#34;http&#34;&gt;HTTP&lt;/h2&gt;

&lt;p&gt;Bon maintenant que la connexion est établie pour de bon et qu&amp;rsquo;elle est éventuellement chiffrée, ça va enfin pouvoir parler http.&lt;/p&gt;

&lt;p&gt;Votre navigateur (le client web) va donc dire quel domaine il veux contacter, quel document il souhaiterait recevoir ainsi que quelques métadonnées.
Voilà un exemple de requête :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt; GET /posts/ HTTP/1.1
&amp;gt; Host: lord.re
&amp;gt; User-Agent: curl/7.59.0
&amp;gt; Accept: */*
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On y voit quel document je demande, ainsi que la version du protocole que j&amp;rsquo;utilise, quel hôte (le domaine) je demande, quel est mon navigateur (curl/7.59.0) et quels sont les types de données que j&amp;rsquo;accepte (&lt;em&gt;/&lt;/em&gt; signifie tous les types).&lt;/p&gt;

&lt;p&gt;Une des choses fondamentales à voir est que le navigateur et le serveur se parle en s&amp;rsquo;envoyant du texte lisible par un humain.
C&amp;rsquo;est donc très facile à débugguer et inspecter pour un humain, ce n&amp;rsquo;est par contre plus le cas avec HTTP2 qui ajoute de la compression et n&amp;rsquo;échange plus ces entêtes sous forme textuelle mais binaire.&lt;/p&gt;

&lt;p&gt;Cependant cet exemple n&amp;rsquo;est pas super représentatif car &lt;em&gt;curl n&amp;rsquo;est pas un navigateur classique&lt;/em&gt; mais un logiciel en ligne de commande un peu spécifique.
Voyons plutôt à quoi ça ressemble avec un bon vieux Firefox des familles :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt; GET /posts/ HTTP/1.1
&amp;gt; Host: lord.re
&amp;gt; User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0
&amp;gt; Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
&amp;gt; Accept-Language: en-US,en;q=0.5
&amp;gt; Accept-Encoding: gzip, deflate, br
&amp;gt; DNT: 1
&amp;gt; Connection: keep-alive
&amp;gt; Upgrade-Insecure-Requests: 1
&amp;gt; If-Modified-Since: Mon, 30 Apr 2018 21:59:32 GMT
&amp;gt; If-None-Match: W/&amp;quot;5ae791c4-21f57&amp;quot;
&amp;gt; Cache-Control: max-age=0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Et là il y a beaucoup plus d&amp;rsquo;infos dont certaines permettent de vous profiler/espionner/suivre.&lt;/p&gt;

&lt;p&gt;Le &lt;em&gt;User-Agent&lt;/em&gt; indique quel navigateur vous utilisez et souvent quel OS vous utilisez.&lt;/p&gt;

&lt;p&gt;Le &lt;em&gt;Accept&lt;/em&gt; est aussi plus spécifique en spécifiant également la langue et quel formats de compression de données vous pouvez gérer.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;DNT&lt;/em&gt; est là pour indiquer que vous ne souhaitez pas être traqué et n&amp;rsquo;est généralement pas mis par défaut et rarement pris en compte par les serveurs malheuresement.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Connection&lt;/em&gt; indique la façon dont vous voulez que la connexion soit gerée.
Ici on indique que l&amp;rsquo;on reste connecté (au sens TCP) même une fois les données transferées, ce qui permet de réutiliser cette même connexion dans le cas où il y aurait d&amp;rsquo;autres requêtes par la suite.
Bien évidemment au bout de quelques secondes/minutes c&amp;rsquo;est tout de même coupé.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Upgrade-Insecure-Requests&lt;/em&gt; indique que le navigateur web accepte de passer en HTTPS si c&amp;rsquo;est possible.&lt;/p&gt;

&lt;p&gt;Les trois derniers éléments de la requêtes sont relatifs au cache du navigateur qui indique qu&amp;rsquo;il a déjà des données en cache afin que le serveur s&amp;rsquo;adapte.&lt;/p&gt;

&lt;p&gt;Bref c&amp;rsquo;est beaucoup plus verbeux que le bon vieux curl mais ça apporte quelques raffinements bien utiles tout de même.&lt;/p&gt;

&lt;p&gt;Ce coup-ci de multiples paquets seront nécessaires et contiendront enfin vos vrais données.
Maintenant votre navigateur va attendre la réponse du serveur.&lt;/p&gt;

&lt;h2 id=&#34;création-de-la-page&#34;&gt;Création de la page&lt;/h2&gt;

&lt;p&gt;Vous voulez désormais recevoir le document demandé mais pas si vite!
Tout ne se déroule pas toujours aussi facilement.&lt;/p&gt;

&lt;p&gt;Deux cas sont possible, le document est dit &lt;em&gt;statique&lt;/em&gt; et de ce fait existe dans un fichier qui vous est transmis ou bien ce n&amp;rsquo;est pas le cas.&lt;/p&gt;

&lt;p&gt;Et là je parle pas d&amp;rsquo;&lt;em&gt;erreur 404&lt;/em&gt; mais juste que le document que vous demandez doit être généré juste avant l&amp;rsquo;envoi et que ces données sont volatiles.
Elles peuvent être regénérées mais ne sont pas un vrai fichier sur un disque dur quelque part, dans ce cas c&amp;rsquo;est dit &lt;em&gt;dynamique&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Le serveur reçoit votre requête http et en fonction de celle-ci va créer une page.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est par exemple le cas des pages web en &lt;strong&gt;PHP&lt;/strong&gt; utilisés par de nombreux sites (notamment Facebook ou plus simplement les sites utilisant le moteur Wordpress).
Les pages sont générées par le serveur à la volée et vous sont transmises.
Cette technique est désormais communes et s&amp;rsquo;est développé peu après le début du web vers la fin des années 90.&lt;/p&gt;

&lt;p&gt;Il existe un troisième cas qui est de plus en plus répandu et qui est bien plus récent puisqu&amp;rsquo;il a débarqué ces dix dernières années où le contenu brut est envoyé au navigateur web mais c&amp;rsquo;est le navigateur web lui même qui va générer la page.
Cette technologie s&amp;rsquo;appuie largement sur le langage &lt;em&gt;Javascript qui s&amp;rsquo;exécute dans votre navigateur&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Sachez d&amp;rsquo;ailleurs qu&amp;rsquo;il est possible de désactiver Javascript dans votre navigateur ce qui rend ces sites inutilisables.
Qui plus est, beaucoup de ces sites posent des problèmes d&amp;rsquo;accessibilités et parfois de référencement mais que voulez-vous ma petite dame, c&amp;rsquo;est la mode.&lt;/p&gt;

&lt;h2 id=&#34;réception-de-la-page&#34;&gt;Réception de la page&lt;/h2&gt;

&lt;p&gt;À l&amp;rsquo;étape HTTP on a vu la requête envoyée par le navigateur, ici nous allons voir la réponse HTTP reçue :&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt; HTTP/1.1 200 OK
&amp;lt; Server: nginx
&amp;lt; Date: Fri, 13 Apr 2018 17:29:43 GMT
&amp;lt; Content-Type: text/html
&amp;lt; Content-Length: 134839
&amp;lt; Connection: keep-alive
&amp;lt; Vary: Accept-Encoding
&amp;lt; Last-Modified: Thu, 12 Apr 2018 11:25:23 GMT
&amp;lt; ETag: &amp;quot;5acf4223-20eb7&amp;quot;
&amp;lt; X-Cache-Status: MISS
&amp;lt; Accept-Ranges: bytes
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;On voit la &lt;em&gt;version du protocole&lt;/em&gt; ainsi que le &lt;em&gt;code de retour&lt;/em&gt; (200 qui signifie OK, vous connaissez probablement 404 qui signifie document introuvable, 403 interdiction de voir le document, …).
On voit quel est le &lt;em&gt;serveur&lt;/em&gt; (nginx est l&amp;rsquo;un des logiciel les plus répandu), la &lt;em&gt;date&lt;/em&gt;, le &lt;em&gt;type de donnée&lt;/em&gt; du document voulu, sa &lt;em&gt;taille&lt;/em&gt;, la &lt;em&gt;dernière modif&lt;/em&gt; du document et des informations concernant le &lt;em&gt;cache&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Ensuite, il y a les données, c&amp;rsquo;est à dire le document demandé.&lt;/p&gt;

&lt;h2 id=&#34;lire-la-page&#34;&gt;Lire la page&lt;/h2&gt;

&lt;p&gt;Votre navigateur vient donc de recevoir votre page web, il va la lire et regarder son contenu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Une page web ce n&amp;rsquo;est qu&amp;rsquo;un fichier texte formatté d&amp;rsquo;une certaine façon.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ce fichier texte va donc devoir être transformé en un document plus regardable qu&amp;rsquo;un simple fichier texte.
Le navigateur va afficher &lt;em&gt;les images qui sont liées à la page&lt;/em&gt;, appliquer un &lt;em&gt;style définie dans un fichier CSS&lt;/em&gt;, placer &lt;em&gt;une/des vidéo ou jouer des sons&lt;/em&gt;, pourquoi pas &lt;em&gt;afficher des éléments en 3D&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Pour chacun de ces éléments, votre navigateur va refaire toutes les étapes précédentes avec d&amp;rsquo;éventuelles subtilités.
Par exemple si un document est sur le même domaine que la page actuelle, le navigateur pourra zapper l&amp;rsquo;étape du DNS et en fonction du protocole utilisé (si c&amp;rsquo;est du HTTP2 par exemple ou 1.1 avec quelques options) le navigateur pourra réutiliser la connexion TCP en cours ainsi que la session TLS actuelle.&lt;/p&gt;

&lt;p&gt;Bref le navigateur va recevoir en premier lieu, à peu près tout le texte de la page (sauf s&amp;rsquo;il y a filouterie via javascript) puis recevra les autres éléments, mais le navigateur tentera de faire le rendu au plus tôt et le modifiera à chaque fois qu&amp;rsquo;il recevra de nouveaux éléments.&lt;/p&gt;

&lt;p&gt;Par exemple le &lt;strong&gt;CSS&lt;/strong&gt; est un fichier texte s&amp;rsquo;occupant de styliser la page en y définissant des couleurs, le placement des éléments et tout ce qui a attrait à l&amp;rsquo;esthétisme.
Une même page web peut avoir plusieurs fichiers CSS.&lt;/p&gt;

&lt;p&gt;Toujours à ce propos, une même page web peut contenir de nombreuses images (no shit Sherlock) ou de nombreux Javascript.
Mais là où ça devient problèmatique, c&amp;rsquo;est que ces différents contenus ne proviennent pas forcément du site que vous consultez mais de sites extérieurs.&lt;/p&gt;

&lt;p&gt;Par exemple tous les boutons de réseaux sociaux, sont très généralement issus de ces fameux réseaux sociaux eux-mêmes ce qui implique que même si vous ne cliquez pas sur ces boutons, les sites en questions collectent tout de même l&amp;rsquo;information que vous avez consultez telle-page, même sans y être connecté (via un champs &lt;em&gt;referer&lt;/em&gt; de la requête http, qui contient l&amp;rsquo;adresse web de la requête précédente).
Bref, un désastre pour les performances mais aussi la vie privée.&lt;/p&gt;

&lt;h2 id=&#34;exécuter-le-javascript&#34;&gt;Exécuter le javascript&lt;/h2&gt;

&lt;p&gt;Une fois que votre navigateur a également reçu les javascripts, il va les exécuter.
Ce sont des sortes de &lt;em&gt;mini programmes&lt;/em&gt; qui à l&amp;rsquo;origine étaient très limités mais qui au fil du temps ont de plus en plus de possibilités ce qui a amené à la création des web applications.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est eux qui permettent par exemple de créer des ptits graphs en live, qui affichent les prix les plus à jour sur les sites marchands, qui rafraîchissent partiellement la page pour afficher le nouveau contenu, bref tout &lt;strong&gt;ce qui est un peu dynamique sur une page provient de Javascript&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est d&amp;rsquo;ailleurs souvent un nid à emmerdes dans le sens où certains s&amp;rsquo;en servent pour chopper quelques données sur vous, pour miner de la crypto monnaie dans votre dos, pour utiliser votre processeur un peu trop intensivement juste pour afficher des effets négligeables…
Bref je suis pas un fan inconditionnel de Javascript et &lt;em&gt;je recommande de n&amp;rsquo;activer Javascript qu&amp;rsquo;au cas par cas&lt;/em&gt; afin de vous épargner (ainsi que votre machine) tout plein d&amp;rsquo;emmerdes.&lt;/p&gt;

&lt;p&gt;Et voilà votre page web est complète et aura nécessité de nombreux aller-retours un peu partout dans le monde.
J&amp;rsquo;ai pas mal insisté sur le nombre de paquets car il faut bien voir que chacun des paquets fais un aller-retour (le paquet fait l&amp;rsquo;aller, l&amp;rsquo;accusé de réception le retour), ce qui implique à chaque fois une certaine latence.
Ça explique en partie la lenteur d&amp;rsquo;ouverture de certaines pages.&lt;/p&gt;

&lt;p&gt;Le second facteur de lenteur est tout simplement la quantité de données de tous les documents nécessaires à la page web.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Cet article est une nouvelle version d&amp;rsquo;un &lt;a href=&#34;https://iloth.net/2016/10/ce-quil-se-passe-quand-on-ouvre-une-page-web/&#34;&gt;article publié&lt;/a&gt; sur le site d&amp;rsquo;&lt;a href=&#34;https://iloth.net&#34;&gt;Iloth&lt;/a&gt; un gentil Fournisseur d&amp;rsquo;Accès Internet dont je suis membre.
Je l&amp;rsquo;ai réécrit pour l&amp;rsquo;améliorer et le rendre un poil plus digeste et plus à jour.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Des fissures dans le Fediverse</title>
      <link>https://lord.re/fast-posts/15-fissures-dans-le-fediverse/</link>
      <pubDate>Mon, 30 Apr 2018 15:37:53 +0200</pubDate>
      
      <guid>https://lord.re/fast-posts/15-fissures-dans-le-fediverse/</guid>
      <description>

&lt;p&gt;La popularité récente de Mastodon mais plus largement du &lt;strong&gt;Fédiverse&lt;/strong&gt; est intéressante.
Mais.
Ouai fallait mettre un &amp;ldquo;mais&amp;rdquo;.
Mais, il commence à montrer quelques signes de fissures.&lt;/p&gt;

&lt;h2 id=&#34;la-fédération&#34;&gt;La fédération&lt;/h2&gt;

&lt;p&gt;Mastodon s&amp;rsquo;appuie donc sur du logiciel libre pour créer un réseau social fonctionnant sur le même principe que Twitter.
Sauf que contrairement à Twitter, c&amp;rsquo;est un logiciel libre parlant un protocole ouvert s&amp;rsquo;appelant &lt;em&gt;ActivityPub&lt;/em&gt; et &lt;em&gt;OStatus&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Cette différence peut sembler mineure mais est en fait la force de ce réseau social : le protocole étant ouvert et documenté, il est possible pour plusieurs personnes de monter un serveur qui saura parler avec le reste du réseau.&lt;/p&gt;

&lt;p&gt;On est donc sur un ensemble de serveurs parlant le même langages et &lt;strong&gt;pouvant&lt;/strong&gt; donc communiquer entre eux.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est un peu comme les mails.
Il existe tout pleins de fournisseurs de mails qui acceptent de parler entre eux.
Vous pouvez donc via votre adresse @gmail.com envoyer un mail à quelqu&amp;rsquo;un chez @yahoo.fr .
Tout comme sur mastodon, sur votre instance @octodon.social vous pouvez tooter votre ami se trouvant sur @mamot.fr .&lt;/p&gt;

&lt;p&gt;Les serveurs bossent ensemble et forment un seul et unique grand réseau aggloméré.&lt;/p&gt;

&lt;p&gt;Pour que ça soit effectivement le cas il faut donc &lt;em&gt;1 langage commun&lt;/em&gt; + &lt;em&gt;accepter de se féderer&lt;/em&gt;.
Le langage commun c&amp;rsquo;est sous le capot, le choix d&amp;rsquo;un protocole ouvert et normalisé.
Par contre accepter de se fédérer c&amp;rsquo;est de la décision humaine.&lt;/p&gt;

&lt;p&gt;Bref maintenant qu&amp;rsquo;on a vu ce qu&amp;rsquo;est en gros la fédération voyons les quelques soucis qui émergent en pratique dans le Fediverse.&lt;/p&gt;

&lt;h2 id=&#34;la-mort-d-une-instance-populaire&#34;&gt;La mort d&amp;rsquo;une instance populaire&lt;/h2&gt;

&lt;p&gt;Le Fediverse est donc peuplé d&amp;rsquo;environ 2000 instances Mastodon (mais pas que…).
Les utilisateurs (Près de 1.5Millions) sont donc répartis entre ces instances.&lt;/p&gt;

&lt;p&gt;Witches.town était l&amp;rsquo;une de ces instances.
Pas la plus populaire mais pas non plus la plus petite des instances.
Elle était maintenue par une personne.
Une seule personne.
Et pas de bol cette personne a décidée d&amp;rsquo;arrêter et du coup pas mal des sorcières ont dû trouver une nouvelle cabane.&lt;/p&gt;

&lt;p&gt;Heureusement tout a été plutôt bien fait avec un long délai avant que ce ne soit effectif et pas mal de bonnes âmes ont proposées des places sur d&amp;rsquo;autres instances.
Mais ça risque d&amp;rsquo;arriver de façon un peu plus chaotique les prochaines fois.&lt;/p&gt;

&lt;p&gt;Il est donc important de bien choisir son instance Mastodon.
Et il est même possible de monter sa propre instance perso afin de le gérer au plus proche de ses besoins.&lt;/p&gt;

&lt;h2 id=&#34;pleroma-vs-mastodon-social&#34;&gt;Pleroma vs Mastodon.social&lt;/h2&gt;

&lt;p&gt;Je vous ai teasé que le Fediverse n&amp;rsquo;était pas uniquement composé d&amp;rsquo;instances Mastodon.&lt;/p&gt;

&lt;p&gt;On y trouve également d&amp;rsquo;autres logiciels tels que &lt;em&gt;Gnu.social&lt;/em&gt; qui est la suite de status.net qui était la suite d&amp;rsquo;identi.ca …
Bref c&amp;rsquo;est un projet qui a une vie assez longue désormais et qui est toujours en place.
Il me semble que c&amp;rsquo;est ce logiciel qui a créé le protocole OStatus (tout du moins ses ancêtres de fork).&lt;/p&gt;

&lt;p&gt;Mais ce n&amp;rsquo;est pas tout.
Le Fediverse grandit de plus en plus désormais et de nouvelles alternatives émergent régulièrement.&lt;/p&gt;

&lt;p&gt;Une qui commence à avoir pas mal le vent en poupe est &lt;a href=&#34;https://pleroma.social/&#34;&gt;Pleroma&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Mais pas de chance, l&amp;rsquo;une des plus grosses instances (mastodon.social) a décidé de &lt;em&gt;silence&lt;/em&gt; une instance pleroma ainsi que quelques devs pleroma.
Parceque visiblement Pleroma a une vision légèrement différente sur la façon de faire les choses que les mainteneurs de mastodon.social.
Bref drama drama drama.&lt;/p&gt;

&lt;p&gt;Est-ce que le Fediverse va se scinder avec d&amp;rsquo;une part un Fediverse avec seulement Mastodon d&amp;rsquo;un côté et les autres de l&amp;rsquo;autre ?
On ne le sait pas mais peut-être que ça pourrait arriver si la situation ne se désamorce pas.&lt;/p&gt;

&lt;h2 id=&#34;irc&#34;&gt;IRC&lt;/h2&gt;

&lt;p&gt;Quittons le Fediverse un instant.
&lt;em&gt;Il fût un temps où le meilleur des protocoles de chat en ligne (IRC) était un seul et unique réseau féderé.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Vous pouviez vous connecter à n&amp;rsquo;importe lequel des serveurs existant à l&amp;rsquo;époque et vous vous retrouviez connecté à tout l&amp;rsquo;IRC.
Tous les chans du monde accessibles en un point.
Tout le monde au même point.&lt;/p&gt;

&lt;p&gt;Puis il y a eu mésentente et coups-bas, un nouveau réseau parallèle s&amp;rsquo;est formé pour ensuite tout refusionner.
Et ensuite quelques temps après commencer à se fractionner de partout.
En cinq ans on est passé d&amp;rsquo;un modèle décentralisé fédéré à un modèle multi-centralisé non fédéré.
Trente ans plus tard l&amp;rsquo;IRC est toujours morcellé en de nombreux réseaux.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est ce que risque le Fediverse.&lt;/p&gt;

&lt;p&gt;Si vous voulez plus d&amp;rsquo;infos concernant l&amp;rsquo;histoire d&amp;rsquo;IRC, la &lt;a href=&#34;https://en.wikipedia.org/wiki/Irc#History&#34;&gt;page anglaise de Wikipedia&lt;/a&gt; en a un ptit résumé.&lt;/p&gt;

&lt;p&gt;Le seul réseau fédéré qui malgré les années l&amp;rsquo;est encore est le SMTP : &lt;strong&gt;les mails&lt;/strong&gt;.
Et pourtant Google et Microsoft s&amp;rsquo;acharnent à briser cette fédération.&lt;/p&gt;

&lt;h2 id=&#34;préserver-la-fédération&#34;&gt;Préserver la fédération&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Le meilleur moyen de protéger la fédération est de morceler le plus possible les instances.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Plus les instances sont nombreuses et petites moins elles ont d&amp;rsquo;intéret à briser la fédération et s&amp;rsquo;isoler.
Au contraire, plus une instance devient importante moins la fédération a d&amp;rsquo;intéret pour elle.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Mais d&amp;rsquo;ailleurs pourquoi vouloir à tout point garder la fédération ?&lt;/em&gt;
Parceque le succès d&amp;rsquo;un réseau social est directement lié à son nombre d&amp;rsquo;utilisateur afin de bénéficier de &lt;a href=&#34;https://fr.wikipedia.org/wiki/Effet_r%C3%A9seau&#34;&gt;l&amp;rsquo;effet de réseau&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Pour virer ces crasses que sont Facebook, Twitter et tous les autres réseaux sociaux propriétaires, il faut une alternative crédible et fonctionnelle.
Le Fediverse pourrait l&amp;rsquo;être.&lt;/p&gt;

&lt;p&gt;Bon sur ce je vous laisse, je retourne à &lt;a href=&#34;http://fediverse.party/&#34;&gt;la fête du Fediverse&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PS : Tiens wikipedia n&amp;rsquo;a pas d&amp;rsquo;article concernant le Fediverse.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PS2 :&lt;/em&gt; Ha bha trois heures après finalement il y a &lt;a href=&#34;https://fr.wikipedia.org/wiki/Fediverse&#34;&gt;un article Fediverse dans le wikipedia FR&lt;/a&gt;. Je comptais m&amp;rsquo;y atteler demain pour fêter le travail mais finalement j&amp;rsquo;ai été pris de vitesse.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Mes déboires Hardware de ce début 2018</title>
      <link>https://lord.re/fast-posts/14-deboires-hardware-2018/</link>
      <pubDate>Sat, 28 Apr 2018 17:39:07 +0200</pubDate>
      
      <guid>https://lord.re/fast-posts/14-deboires-hardware-2018/</guid>
      <description>

&lt;p&gt;Bon bha ça y est j&amp;rsquo;en vois je bout.&lt;/p&gt;

&lt;h2 id=&#34;gros-nordi&#34;&gt;Gros nordi&lt;/h2&gt;

&lt;p&gt;Mon ordi de bureau m&amp;rsquo;a fait quelques misères.
Impossible de booter.
Ça plantait inlassablement à divers moments du boot, &lt;em&gt;parfois dès le POST, parfois au niveau de grub&lt;/em&gt;, par chance je parvenais à booter pour quelques minutes une fois sur Y.
Bref de l&amp;rsquo;aléatoire comme j&amp;rsquo;aime (keuf keuf).&lt;/p&gt;

&lt;p&gt;Bon, je vais voir le bios (j&amp;rsquo;ai toujours pas pris l&amp;rsquo;habitude de dire l&amp;rsquo;UEFI…).
Hmmm je fouille, je fait d&amp;rsquo;ailleurs l&amp;rsquo;&lt;em&gt;update bios en version 2.0&lt;/em&gt; (wahou ça doit être tellement mieux avec une update majeure).&lt;/p&gt;

&lt;p&gt;Bof pareil.
Je &lt;em&gt;ClearCmos&lt;/em&gt; avec le ptit bouton qui va bien.
Suspens.
Tiens il se passe plus rien.
…
Ha bha je suis pas dans la merde.
…
Ha si ça booot… pas.
Erf.
On sent qu&amp;rsquo;ils se passent des trucs pas net quand on clearcmos, ça prend un temps fou à faire on sait pas trop quoi avant de réellement booter (surement l&amp;rsquo;AMD PSP qui doit booter aussi son ptit OS et faire ses saloperies dans mon dos).&lt;/p&gt;

&lt;p&gt;Bon j&amp;rsquo;enlève les barrettes de ram je les permuttent, je vire les SSD.
Rien à faire.&lt;/p&gt;

&lt;p&gt;Il y a bien le &lt;em&gt;DrDebug&lt;/em&gt; qui est en fait un code à deux caractères hexa affiché sur la mobo pendant le boot pour indiquer les erreurs.
Mais ce cher Docteur indique pleins de trucs qui alternent sans cesse puis ça part en boucle.&lt;/p&gt;

&lt;p&gt;Je fais une ptite vidéo de la carte mère qui agonise et j&amp;rsquo;envoie ça par mail au support d&amp;rsquo;Asrock.&lt;/p&gt;

&lt;p&gt;Bref après deux jours d&amp;rsquo;emmerdes et un bon week-end, je contacte Amazon pour un ptit RMA.
Comme à leur habitude c&amp;rsquo;est d&amp;rsquo;une rapidité déconcertante et je teste donc la nouvelle mobo identique.&lt;/p&gt;

&lt;p&gt;Je l&amp;rsquo;installe dans le boitier, je fout le cpu, toute la ram, la carte graphique, les différents connecteurs, les SSD, le ventirad et c&amp;rsquo;est parti !
Je vois le logo de la mobo (ce qui est déjà rare).
Je vois même mon bon vieux grub violet mochtoque.
Et là pouf ça reboot !&lt;/p&gt;

&lt;p&gt;-____−&lt;/p&gt;

&lt;p&gt;Bon bha c&amp;rsquo;est pas la mobo déjà une bonne chose.
J&amp;rsquo;ai une réponse d&amp;rsquo;Asrock et du coup je leur parle pas du RMA pour voir ce qu&amp;rsquo;ils proposent.
Après quelques manips que j&amp;rsquo;avais déjà effectué, ils me demandent de faire une autre vidéo en virant absolument tout sauf le cpu.&lt;/p&gt;

&lt;p&gt;Et là Miracle ça marche, ça ne redémarre plus en boucle.&lt;/p&gt;

&lt;p&gt;Bon bha.
Heuuu.
Je met la ram.
Ça marche.
Je fout le GPU.
Ça marche.
hmmmm
Je fout les SSD.
Ça marche.
Je fout les connecteurs USB et Audio du boitier.
Ça marche.
Je fout les connecteurs des boutons Power et Reset.
Ça déconne.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HOLY SHIT !!!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cette petite merde de bouton reset qui déconne et qui se déclenche seul de temps à autres.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RAGEQUIT&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&#34;ptit-nordi&#34;&gt;Ptit nordi&lt;/h2&gt;

&lt;p&gt;Mon &lt;a href=&#34;https://lord.re/fast-posts/12-panne-bender/&#34;&gt;vieux Bender&lt;/a&gt; était malade.&lt;/p&gt;

&lt;p&gt;Une extinction inopinée le mois dernier dans un mystère le plus total m&amp;rsquo;avais un peu troublé mais sans plus.
J&amp;rsquo;étais pas spécialement pressé de le réparer car avec l&amp;rsquo;usage je me rend compte que je suis de moins en moins dépendant envers mon nas.
J&amp;rsquo;utilise désormais Netflix et mon instance Groovebasin comblent mes besoins multimédias.
Qui plus est le skeudur de backup étant via usb, j&amp;rsquo;ai pu le foutre sur une autre machine…&lt;/p&gt;

&lt;p&gt;Sauf que là en ayant plus accès à mon gros ordi ça devient un peu plus gênant de plus avoir accès à mes mots de passes (qui sont synchro entre ces deux machines).
D&amp;rsquo;autant plus quand il devient nécessaire de passer voir les impôts, accéder à Amazon et d&amp;rsquo;autres comptes.&lt;/p&gt;

&lt;p&gt;Bref j&amp;rsquo;ai profité de la convalescence du gros ordi pour tester son alim dans le ptit ordi.&lt;/p&gt;

&lt;p&gt;Yatta ça fonctionne.&lt;/p&gt;

&lt;p&gt;Bon bha je commande une ptite alim au format SFX et c&amp;rsquo;est reglé.
Bon je prend un ptit skeudur 8To aussi au passage pour éviter d&amp;rsquo;en commander un dans quelques temps et donc diminuer un poil l&amp;rsquo;empreinte carbone (on se trouve des excuses).&lt;/p&gt;

&lt;p&gt;Et bha pas de bol.
Je reçois un 4To -____-&lt;/p&gt;

&lt;p&gt;Bon bha je vais le renvoyer aussi et espérer recevoir un 8To assez vite.&lt;/p&gt;

&lt;p&gt;Voilà à plus ;-)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Mon environnement auto-hébergé</title>
      <link>https://lord.re/posts/98-environnement-autoheberge/</link>
      <pubDate>Fri, 27 Apr 2018 22:07:29 +0200</pubDate>
      
      <guid>https://lord.re/posts/98-environnement-autoheberge/</guid>
      <description>

&lt;p&gt;Ça fait un ptit moment que je voulais faire un point des services autoheberge que j&amp;rsquo;utilise.&lt;/p&gt;

&lt;h2 id=&#34;mails&#34;&gt;Mails&lt;/h2&gt;

&lt;p&gt;Allez on commence par les mails.
Je vous ai déjà pas mal bassinné avec ça mais bon un ptit point rapide.
&lt;strong&gt;Vos mails sont une grande partie de votre identité numérique.&lt;/strong&gt;
Ils regorgent d&amp;rsquo;identifiants, de factures, de conversations, de pièces-jointes…&lt;/p&gt;

&lt;p&gt;Bref, ça se refile pas au premier venu qui vous regarde gentiment avec des grands yeux et un grand sourire en vous disant qu&amp;rsquo;il s&amp;rsquo;en occupera gratuitement.
C&amp;rsquo;est l&amp;rsquo;un des services les plus importants à auto-héberger mais c&amp;rsquo;est aussi le plus chiant.&lt;/p&gt;

&lt;p&gt;Avoir un serveur de mail pleinement fonctionnel n&amp;rsquo;est pas si difficile en soit.
Par contre faire en sorte qu&amp;rsquo;il fonctionne encore dix ans plus tard sans perdre de mail et voir ses mails acceptés partout… ce n&amp;rsquo;est pas la même affaire.
Je ne le recommande donc pas à tout le monde.
Pour le webmail j&amp;rsquo;ai longtemps utilisé Roundcube mais je suis désormais sur &lt;a href=&#34;https://www.rainloop.net/&#34;&gt;Rainloop&lt;/a&gt;.
L&amp;rsquo;interface est un poil plus joli que Roundcube et passe mieux sur téléphone.&lt;/p&gt;

&lt;p&gt;Et dans le fond j&amp;rsquo;utilise Postfix, Dovecot, &lt;a href=&#34;https://lord.re/posts/46-rspamd-rmilter/&#34;&gt;Rspamd&lt;/a&gt;, &lt;a href=&#34;https://lord.re/posts/87-sisyphus-antispam/&#34;&gt;Sisyphus&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;rss&#34;&gt;RSS&lt;/h2&gt;

&lt;p&gt;Dans les services web, un dont je suis ultra friand est l&amp;rsquo;aggrégateur de flux RSS/Atom.
Dans mon cas c&amp;rsquo;est &lt;a href=&#34;https://tt-rss.org/&#34;&gt;Tiny Tiny RSS&lt;/a&gt;.
Malgré l&amp;rsquo;attitude quelque peu particulière du main dev, ce logiciel est excellent et super fiable.
Mon instance a soufflée sa 11ème bougie récemment, sa base de donnée s&amp;rsquo;est déjà fait migrer plusieurs fois et tout fonctionne encore sans aucune prise de tête.
Juste de temps à autres une update via l&amp;rsquo;interface web et hop je le backup même plus tellement je suis inconsc^W mal-habitué.&lt;/p&gt;

&lt;p&gt;Les RSS sont ma source principale de news et autres.
J&amp;rsquo;adore le fait de pouvoir chopper des news de blogs très rarement mis à jour sans devoir vérifier constamment.
Et contrairement à Fb et compagnie c&amp;rsquo;est pas filtré, tout le contenu des créateurs est publié sans le faire passer à la caisse.&lt;/p&gt;

&lt;h2 id=&#34;musique&#34;&gt;Musique&lt;/h2&gt;

&lt;p&gt;Pour la musique j&amp;rsquo;ai une instance &lt;a href=&#34;https://github.com/andrewrk/groovebasin&#34;&gt;Groovebasin&lt;/a&gt; qui tourne.
Ça stream de la musique, gère les playlists, sait importer de la musique via youtubedl, ça normalize et surtout ça génère une playlist infinie.
Malheureusement c&amp;rsquo;est maintenant à l&amp;rsquo;abandon et il n&amp;rsquo;y a plus de mise à jour ni rien depuis des mois.&lt;/p&gt;

&lt;p&gt;Un des reproches est que l&amp;rsquo;interface n&amp;rsquo;est pas du tout adaptée aux appareils tactiles (il faut double cliquer et parfois faire un clic droit)…
En dehors de ça pas grand chose à reprocher.
Je pense qu&amp;rsquo;il va tout de même falloir migrer si les developpements ne reprennent pas mais j&amp;rsquo;ai pas encore trouvé vers quoi.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;ai déjà testé Ampache, Subsonic pour lequel je me suis même pris une licence d&amp;rsquo;un an, mpd, mais au final j&amp;rsquo;ai préferé Groovebasin.&lt;/p&gt;

&lt;h2 id=&#34;galeries-photo&#34;&gt;Galeries photo&lt;/h2&gt;

&lt;p&gt;J&amp;rsquo;en ai deux en parallèle sur la même base de photos.
La première basée sur &lt;a href=&#34;https://www.sye.dk/sfpg/&#34;&gt;SFPG&lt;/a&gt; en PHP mais sans base de donnée ni rien.
Pas mal du tout.
Ça marche sans broncher mais pas super moderne.&lt;/p&gt;

&lt;p&gt;Puis j&amp;rsquo;ai découvert &lt;a href=&#34;https://git.zx2c4.com/PhotoFloat/about/&#34;&gt;PhotoFloat&lt;/a&gt; qui est par contre bien plus moderne.
Plus besoin de rafraîchir la page, ça charge quasi instantanément.
Bien plus agréable à utiliser mais c&amp;rsquo;est en Python, faut générer la galerie à chaque fois qu&amp;rsquo;on rajoute des photos (générateur de site statique quoi).
Pas de bol c&amp;rsquo;est plus trop maintenu (c&amp;rsquo;est le dev qui a aussi pondu les excellent &lt;a href=&#34;https://lord.re/posts/36-gestionnaire-passwords/&#34;&gt;Password-store&lt;/a&gt; et aussi &lt;a href=&#34;https://www.wireguard.com/&#34;&gt;Wireguard&lt;/a&gt;).&lt;/p&gt;

&lt;h2 id=&#34;cloud-multi-services&#34;&gt;Cloud multi-services&lt;/h2&gt;

&lt;p&gt;Je me suis également monté un instance &lt;a href=&#34;https://sandstorm.io/&#34;&gt;Sandstorm&lt;/a&gt;.
C&amp;rsquo;est une plateforme de cloud assez magique qui vous permet de faire tourner des services web très facilement.
Ce qui différencie Sandstorm de toute la concurrence (cozy, yunuhost, cloudron, …) c&amp;rsquo;est qu&amp;rsquo;ils ont une approche de la sécurité exotique.&lt;/p&gt;

&lt;p&gt;Déjà il n&amp;rsquo;y a pas de mot de passe, ça fonctionne par tokens temporaires qui sont envoyés par mail.
Ensuite ils ont une approche &lt;em&gt;1 document = 1 instance&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est à dire que si par exemple vous avez besoin d&amp;rsquo;un pad, sandstorm vous démarra une instance etherpad-lite.
Si ensuite vous voulez ouvrir un second pad, sandstorm vous démarra une nouvelle instance indépendante d&amp;rsquo;etherpad-lite.
Tout est fortement isolé.&lt;/p&gt;

&lt;p&gt;Si vous partagez un document, vous obtiendrez une url unique que vous pouvez bloquer en écriture.
Et chaque personne à qui vous partagerez ce grain (c&amp;rsquo;est le nom des applis) aura une adresse unique.
Vous pouvez révoquer ces droits et tout.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est vraiment génial.
Par contre il y a quelques désavantages : les applis doivent être légèrement modifiées pour s&amp;rsquo;intégrer dans Sandstorm et le temps d&amp;rsquo;accès à un document est plus long que la normale vu qu&amp;rsquo;il faut le temps que la dite appli soit démarrée mais ça reste largement tolérable car de l&amp;rsquo;ordre de 3/4secondes.&lt;/p&gt;

&lt;h2 id=&#34;dns&#34;&gt;DNS&lt;/h2&gt;

&lt;p&gt;Avoir un nom de domaine c&amp;rsquo;est essentiel mais le gérer soit même c&amp;rsquo;est encore mieux !
J&amp;rsquo;utilise &lt;a href=&#34;https://www.knot-dns.cz/&#34;&gt;Knot&lt;/a&gt; qui est globalement assez simple et robuste.
Il permet de faire du DNSSEC facilement en plus.
Pas grand chose de plus à dire.
Il sait se faire oublier.&lt;/p&gt;

&lt;h2 id=&#34;backup&#34;&gt;Backup&lt;/h2&gt;

&lt;p&gt;J&amp;rsquo;utilise depuis très longtemps &lt;a href=&#34;http://rsnapshot.org/&#34;&gt;Rsnapshot&lt;/a&gt; qui permet de faire des backup incrémentaux en utilisant ce bon vieux rsync et de pousser ça via SSH.
Mais je dois avouer que je commence à reluquer sérieusement Borg Backup qui sait chiffrer de lui même du coup je couplerai bien ça avec un fournisseur de stockage externe genre &lt;a href=&#34;http://wasabi.com/&#34;&gt;Wasabi&lt;/a&gt;.
C&amp;rsquo;est dans la catégorie &amp;ldquo;Pour plus tard” sauf que la mort de mon NAS/serveur bouscule un peu plus les priorités.&lt;/p&gt;

&lt;h2 id=&#34;les-services-abandonnés&#34;&gt;Les services abandonnés&lt;/h2&gt;

&lt;p&gt;Voilà les services que j&amp;rsquo;ai actuellement.
J&amp;rsquo;en ai eu pas mal d&amp;rsquo;autres que j&amp;rsquo;ai stoppé au fil du temps.&lt;/p&gt;

&lt;p&gt;À un moment j&amp;rsquo;ai tenté de croire à &lt;em&gt;xmpp&lt;/em&gt; mais au final… bof. J&amp;rsquo;ai tout de même utilisé ejabberd, prosody, movim.
J&amp;rsquo;ai également fait mumuse avec &lt;em&gt;Identi.ca&lt;/em&gt; mais c&amp;rsquo;était pas ma tasse de thé (bien que je commence à faire mumuse avec Mastodon depuis un an (sur octodon) ).&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;ai eu du &lt;em&gt;Wordpress&lt;/em&gt; mais vite largué pour un simple fichier texte puis maintenant Hugo.
J&amp;rsquo;ai utilisé &lt;em&gt;Wok&lt;/em&gt; aussi pour faire du site web statique.
J&amp;rsquo;ai presque utilisé &lt;em&gt;Dokuwiki&lt;/em&gt; avant de me rendre compte que pour du perso c&amp;rsquo;est overkill, j&amp;rsquo;en ai vraiment pas besoin.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;ai également utilisé très peu de temps un service de localisation qui permet de voir en live (quand une page web était utilisée où se trouvait la personne). Je retrouve pas le nom du service et au final je ne m&amp;rsquo;en suis servi qu&amp;rsquo;une fois ou deux.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;héberge ponctuellement un serveur &lt;em&gt;Quake 3&lt;/em&gt; avec le mod CPMA mais ça ne dure rarement plus de quelques semaines.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;ai utilisé de l&amp;rsquo;&lt;em&gt;OpenVPN&lt;/em&gt; en perso aussi quelques temps avant de me rendre compte qu&amp;rsquo;un bête tunnel SSH est bien plus léger et tout aussi bien et avec bien moins de dépendances. Cela dit je pense me tourner vers du Wireguard bientôt.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;ai essayé d&amp;rsquo;utiliser &lt;em&gt;Funambol&lt;/em&gt; pour synchroniser des contacts et autre merdouilles avec le téléphone mais au final… bha ça me sert à rien. Je fais un backup manuel des contacts du téléphone tous les six mois et voilà…
Je dois surement en oublier quelques-un.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;ai hébergé du &lt;em&gt;Mumble&lt;/em&gt; durant ma folle période gamer.&lt;/p&gt;

&lt;p&gt;Avant de migrer sur du pur Weechat, j&amp;rsquo;utilisais &lt;em&gt;ZNC&lt;/em&gt; qui est donc un bouncer irc sur lequel je connectais Weechat sur l&amp;rsquo;ordi et un client irc sur l&amp;rsquo;Android mais maintenant j&amp;rsquo;utilise un client weechat sur le téléphone aussi.&lt;/p&gt;

&lt;p&gt;Pour les synchro de fichier, j&amp;rsquo;ai utilisé &lt;em&gt;Syncthing&lt;/em&gt; pendant quelques temps mais son fonctionnement un peu trop p2p n&amp;rsquo;était pas forcément ce que je recherchais le plus mais surtout sa trop grande gourmandise et son côté service de Schrödinger qui marche ou ne marche pas m&amp;rsquo;a vite saoulé.
Cela dit il y a eu un paquet de nouvelles versions désormais ptet que ces reproches n&amp;rsquo;ont plus lieu d&amp;rsquo;être.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Facebook Algo Complot</title>
      <link>https://lord.re/posts/97-facebook-algo-complot/</link>
      <pubDate>Thu, 19 Apr 2018 10:06:06 +0200</pubDate>
      
      <guid>https://lord.re/posts/97-facebook-algo-complot/</guid>
      <description>

&lt;p&gt;Bon si vous êtes ici, j&amp;rsquo;imagine que vous n&amp;rsquo;êtes pas sans savoir que &lt;strong&gt;Facebook n&amp;rsquo;est pas une plateforme neutre dans la distribution de &amp;ldquo;son&amp;rdquo; contenu&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Les personnes à qui vous êtes abonnés publient du contenu et Facebook décide d&amp;rsquo;afficher ou non ce contenu dans votre flux d&amp;rsquo;information.
Ce choix est basé sur des algos fait maison complètement opaques.
En cela je ne les blâme pas.
C&amp;rsquo;est leur produit, ils font ce qu&amp;rsquo;ils veulent.
Même si pour les créateurs de contenu ça peut &lt;a href=&#34;http://theoatmeal.com/comics/reaching_people&#34;&gt;devenir problèmatique&lt;/a&gt;, ça peut tout de même poser quelques soucis.&lt;/p&gt;

&lt;h2 id=&#34;une-ia-ça-s-entraîne&#34;&gt;Une IA ça s&amp;rsquo;entraîne&lt;/h2&gt;

&lt;p&gt;Ce travail de sélection de contenu n&amp;rsquo;est bien évidemment pas fait à la main mais par un algorithme.&lt;/p&gt;

&lt;p&gt;Cet algorithme tend de plus en plus vers une Intelligence Artificielle (bha oui c&amp;rsquo;est la mode).
Facebook investit énormément dans l&amp;rsquo;IA d&amp;rsquo;ailleurs.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Donc une IA est tout de même un peu bête, pour fonctionner il faut lui donner des billes et lui dire si c&amp;rsquo;est bien ou pas.&lt;/em&gt;
Bref de l&amp;rsquo;apprentissage.&lt;/p&gt;

&lt;p&gt;Petite digression : Avez-vous déjà joué aux jeux Black&amp;amp;White, ils reposent sur le principe que vous êtes un dieu avec une créature que vous devez éduquer.
Cette créature sera le reflet de l&amp;rsquo;apprentissage que vous lui procurerez et sera donc gentille ou méchante en fonction de vos choix.&lt;/p&gt;

&lt;p&gt;Bref c&amp;rsquo;est un principe assez basique des IA.&lt;/p&gt;

&lt;h2 id=&#34;et-si-facebook-créait-une-ia-diabolique&#34;&gt;Et si Facebook créait une IA diabolique ?&lt;/h2&gt;

&lt;p&gt;Facebook abreuve ses utilisateurs de contenu ciblés par l&amp;rsquo;IA.
Mais quel est le but de Facebook ?
Vendre des encarts publicitaires.
Plus vous voyez ces pubs plus ils engrangent de pognon.&lt;/p&gt;

&lt;p&gt;Et si l&amp;rsquo;IA se rendait compte que certains contenus génère bien plus d&amp;rsquo;activité sur le site, il y a fort à parier que l&amp;rsquo;IA favorise ce contenu à l&amp;rsquo;avenir (c&amp;rsquo;est son taff après tout).
&lt;em&gt;Et si ce contenu c&amp;rsquo;était un évènement malheureux comme un suicide ?&lt;/em&gt;
Facebook se retrouve en ébullition pour transmettre tous les messages de soutiens et d&amp;rsquo;indignation.
Le compteur de nombre de vue s&amp;rsquo;affolent.&lt;/p&gt;

&lt;p&gt;L&amp;rsquo;IA pourrait se dire que ça augmente la rentabilité et que c&amp;rsquo;est bon pour le business.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Et si l&amp;rsquo;IA se rendait compte qu&amp;rsquo;en abreuvant certains de ses utilisateurs les plus populaires de messages déprimants et en isolant les gens de leurs amis réels les probabilités de suicide augmentent ainsi que le trafic ?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ouai c&amp;rsquo;est un peu poussé mais est-ce que franchement faut écarter tout de suite cette théorie ?
Ils ont déjà tous les outils techniques pour mettre en place un tel système.&lt;/p&gt;

&lt;h2 id=&#34;plus-de-trolls-plus-de-vues-plus-de-pognon&#34;&gt;Plus de trolls == plus de vues == plus de pognon&lt;/h2&gt;

&lt;p&gt;Sans aller aussi loin, on peut imaginer que le système pousserai juste les gens à se diviser.&lt;/p&gt;

&lt;p&gt;Avoir des discussions enflammées sur Facebook génère bien plus de trafic que Tata Yvette racontant son dernier rêve durant la sieste.&lt;/p&gt;

&lt;p&gt;Donc le réseau pousserait plus que de raison les contenus trolligènes afin que les gens se frittent plutôt que le contenu plus banal faisant moins réagir les gens.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
Ha au fait, c&amp;rsquo;est pas uniquement valable pour Facebook mais aussi pour tous les autres réseaux sociaux à la mord-moi-le-nœud.&lt;/p&gt;

&lt;h2 id=&#34;quelques-liens-sur-le-sujet&#34;&gt;Quelques liens sur le sujet&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0069841&#34;&gt;Facebook use predicts declines in subjective weel-being in young adults&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.pnas.org/content/111/24/8788.full&#34;&gt;Experimental evidence of massive-scale emotional contagion through social networks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ncbi.nlm.nih.gov/pubmed/28093386&#34;&gt;Association of Facebook use with compromised well-being : a longitudinal study&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ncbi.nlm.nih.gov/pubmed/26783723&#34;&gt;Association between social media use and depression among U.S. young adults&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.liebertpub.com/doi/full/10.1089/cyber.2015.0055&#34;&gt;Frequent use of sociat networking sites is associated with poor psychological functioning among children and adolescents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.telegraph.co.uk/technology/facebook/10932534/Facebook-conducted-secret-psychology-experiment-on-users-emotions.html&#34;&gt;Facebook conducted secret psychology experiment on users&amp;rsquo; emotions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>La demoscene vol.3</title>
      <link>https://lord.re/posts/96-demoscene-vol3/</link>
      <pubDate>Sun, 15 Apr 2018 22:00:50 +0200</pubDate>
      
      <guid>https://lord.re/posts/96-demoscene-vol3/</guid>
      <description>

&lt;p&gt;C&amp;rsquo;est parti pour notre troisième excursion dans le monde de la demoscene après &lt;a href=&#34;https://lord.re/posts/85-demoscene-vol2/&#34;&gt;un ptit tour sur les textmodes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Et comme d&amp;rsquo;habitude, si vous cliquez sur les images vous serez amené sur la vidéo Youtube de la démo mais regarder l&amp;rsquo;original est toujours mieux.
Aujourd&amp;rsquo;hui pas de sujet précis mais juste une ptite sélection de démo que j&amp;rsquo;aime beaucoup.&lt;/p&gt;

&lt;p&gt;La &lt;a href=&#34;https://2018.revision-party.net/&#34;&gt;Revision 2018&lt;/a&gt; s&amp;rsquo;est déroulé lors du week-end de Pacques mais je n&amp;rsquo;ai pas pu voir ce qui s&amp;rsquo;y est passé mais je serai à l&amp;rsquo;affût je vous promet.&lt;/p&gt;

&lt;h2 id=&#34;masagin&#34;&gt;Masagin&lt;/h2&gt;

&lt;p&gt;Commençons tout de suite avec une chouette démo.

&lt;figure&gt;
    &lt;a href=&#34;https://www.youtube.com/watch?v=RboCh1FxrEg&#34;&gt;
        &lt;img src=&#34;https://lord.re/static/96-masagin.jpg&#34; alt=&#34;Capture d&amp;#39;écran on l&amp;#39;on voit deux moines bouddhistes en dessin stylisé&#34; /&gt;
    &lt;/a&gt;
    
    &lt;figcaption&gt;
        &lt;h4&gt;Masagin by Farbrausch &amp;amp; Neuro&lt;/h4&gt;
        
    &lt;/figcaption&gt;
    
&lt;/figure&gt;
&lt;/p&gt;

&lt;p&gt;Cette démo est une &lt;em&gt;invitation&lt;/em&gt; pour la NVScene 2008.
C&amp;rsquo;est un type de démo pour annoncer une démoparty et donc inviter de nombreux groupes à y venir.&lt;/p&gt;

&lt;p&gt;Elle est assez particulière car réalisée entièrement à base de SVG ce qui est assez rare dans le milieu.
C&amp;rsquo;est d&amp;rsquo;autant plus surprenant que la NVScene est une démoparty à l&amp;rsquo;initiative de nVidia habitué à vendre des cartes graphiques pour leurs performances en 3D.&lt;/p&gt;

&lt;p&gt;Elle sort donc vraiment du lot et sa musique est bien prenante.
Et en fouillant le ouaib j&amp;rsquo;ai réussi à retrouver un &lt;a href=&#34;http://www.hugi.scene.org/online/hugi35/hugi%2035%20-%20demoscene%20reports%20paniq%20how%20masagin%20was%20born.htm&#34;&gt;ptit making-of&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Malgré ses dix ans son esthétique est toujours agréable de part son côté technique atypique.&lt;/p&gt;

&lt;h2 id=&#34;medium&#34;&gt;Medium&lt;/h2&gt;

&lt;p&gt;Celle-là est déjà bien plus vintage mais à toujours une ptite place dans la liste de démos que j&amp;rsquo;adore.

&lt;figure&gt;
    &lt;a href=&#34;https://www.youtube.com/watch?v=DnwhgSaetks&#34;&gt;
        &lt;img src=&#34;https://lord.re/static/96-medium.jpg&#34; alt=&#34;capture d&amp;#39;écran de Medium montrant des formes abstraites&#34; /&gt;
    &lt;/a&gt;
    
    &lt;figcaption&gt;
        &lt;h4&gt;Medium by Einklang&lt;/h4&gt;
        
    &lt;/figcaption&gt;
    
&lt;/figure&gt;
&lt;/p&gt;

&lt;p&gt;Il y a vingt ans c&amp;rsquo;était une sacré bête avec sa synesthésie assez poussée et sa 3D pas dégueue.
Et lorsque j&amp;rsquo;ai changé de PC à l&amp;rsquo;époque je me souviens que ça a été le premier truc un peu costaud que j&amp;rsquo;ai fait tourner dessus pour évaluer la puissance de la bête.
C&amp;rsquo;est d&amp;rsquo;ailleurs surement pour ça qu&amp;rsquo;elle me marque autant celle-ci.&lt;/p&gt;

&lt;h2 id=&#34;a-mind-is-born&#34;&gt;A Mind Is Born&lt;/h2&gt;

&lt;p&gt;Cette petite est à première vue assez moche mais en fait c&amp;rsquo;est un tour de force hallucinant.&lt;/p&gt;

&lt;p&gt;Déjà elle tourne sur Commodore 64 une belle vieillerie sortie en 1982 cadencé à près d&amp;rsquo;1Mhz.
Mais surtout elle ne pèse 256 octets.
&lt;em&gt;256 octets.&lt;/em&gt;
&lt;strong&gt;256 Octets !&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Le paragraphe dédié à cette démo est déjà 4 fois plus lourd !&lt;/p&gt;

&lt;p&gt;Certes cette démo n&amp;rsquo;est pas très belle mais déjà la vidéo et l&amp;rsquo;audio sont synchro mais en plus l&amp;rsquo;audio est pas déplaisant, ça se laisse plutôt bien écouter.&lt;/p&gt;


&lt;figure&gt;
    &lt;a href=&#34;https://www.youtube.com/watch?v=sWblpsLZ-O8&#34;&gt;
        &lt;img src=&#34;https://lord.re/static/96-a-mind-is-born.jpg&#34; alt=&#34;Capture d&amp;#39;écran où l&amp;#39;on voit des caractères textuels représentant des formes abstraites&#34; /&gt;
    &lt;/a&gt;
    
    &lt;figcaption&gt;
        &lt;h4&gt;A Mind Is Born by Linus Åkesson&lt;/h4&gt;
        
    &lt;/figcaption&gt;
    
&lt;/figure&gt;


&lt;p&gt;Elle est toute récente et on trouve même &lt;a href=&#34;https://linusakesson.net/scene/a-mind-is-born/&#34;&gt;son making-of&lt;/a&gt;.
Elle mérite clairement sa première place lors de la Revision 2017 dans la catégorie &lt;em&gt;Oldskool 4K Intro&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&#34;through-the-cracks&#34;&gt;Through The Cracks&lt;/h2&gt;

&lt;p&gt;
&lt;figure&gt;
    &lt;a href=&#34;https://www.youtube.com/watch?v=-N5CLcSkkWs&#34;&gt;
        &lt;img src=&#34;https://lord.re/static/96-through-the-cracks.jpg&#34; alt=&#34;capture en noir et blanc de formes rectilignes abstraites&#34; /&gt;
    &lt;/a&gt;
    
    &lt;figcaption&gt;
        &lt;h4&gt;Through the Cracks byy Still&lt;/h4&gt;
        
    &lt;/figcaption&gt;
    
&lt;/figure&gt;

3ème lors de la Revision 2016 dans la catégorie &lt;em&gt;pc demo&lt;/em&gt;, cette vidéo est le cauchemar des codecs vidéos bien que n&amp;rsquo;étant qu&amp;rsquo;en noir et blanc.
Déjà la première démo de cette sélection a une tendance à faire méchamment souffrir les encodeurs pendant une certaine séquence, celle-ci c&amp;rsquo;est l&amp;rsquo;intégralité.&lt;/p&gt;

&lt;p&gt;Autant vous prévenir, le rendu made in Youtube est un sketch.
Si vous le pouvez, mattez l&amp;rsquo;&lt;a href=&#34;http://www.pouet.net/prod.php?which=67160&#34;&gt;original&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Still est un groupe que j&amp;rsquo;apprécie particulièrement.
Beaucoup de leurs démos sont vraiment propre avec toujours de la musique bien posée à forte ambiance.
C&amp;rsquo;est souvent assez minimal et là c&amp;rsquo;est effectivement encore le cas avec tout un jeu sur le moiré.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>10ème article d&#39;avancement du Librem 5</title>
      <link>https://lord.re/posts/95-librem-progress-report-10/</link>
      <pubDate>Thu, 12 Apr 2018 11:12:07 +0100</pubDate>
      
      <guid>https://lord.re/posts/95-librem-progress-report-10/</guid>
      <description>

&lt;p&gt;Ceci est une traduction libre de &lt;a href=&#34;https://puri.sm/posts/librem5-progress-report-10/&#34;&gt;cet article&lt;/a&gt; concernant les avancées de la société Purism concernant le smartphone &lt;strong&gt;Librem 5&lt;/strong&gt;.
L&amp;rsquo;article original est sous licence &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/&#34;&gt;CC BY-SA 4.0&lt;/a&gt; tout comme ma traduction.&lt;/p&gt;

&lt;p&gt;Ce smartphone a bénéficié d&amp;rsquo;un crowdfunding et a pour but d&amp;rsquo;apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logiciels opensource qui vont avec.
Ils collaborent avec le projet &lt;a href=&#34;https://www.gnome.org&#34;&gt;Gnome&lt;/a&gt;, le projet &lt;a href=&#34;https://www.kde.org&#34;&gt;KDE&lt;/a&gt; et le projet &lt;a href=&#34;https://matrix.org&#34;&gt;Matrix&lt;/a&gt;.
Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.&lt;/p&gt;

&lt;p&gt;Bref voilà l&amp;rsquo;article :&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;Chez Purism, nous sommes tout autant excités que vous concernant les boards de devs qui seront distribuées cet été.
Quand quelqu&amp;rsquo;un recevra sa board, leur première question sera «C&amp;rsquo;est chouette ! Maintenant qu&amp;rsquo;est-ce que j&amp;rsquo;en fait ?».
Et pour anticiper ce besoin d&amp;rsquo;aide technique, notre effort de documentation technique a démarré.
Vous pouvez déjà voir l&amp;rsquo;état actuel de la doc à l&amp;rsquo;adresse &lt;a href=&#34;https://developer.puri.sm&#34;&gt;developer.puri.sm&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;but-de-la-doc&#34;&gt;But de la doc&lt;/h2&gt;

&lt;p&gt;La doc pour dev sert de guide pour qu&amp;rsquo;un nouveau dev soit prêt à démarrer et s&amp;rsquo;amuse !
Cela inclura de nombreux exemples qui vous aideront quelque soit votre but.&lt;/p&gt;

&lt;p&gt;Il y aura des instructions pas-à-pas accessible à la fois aux débutants mais aussi aux devs Debian.
Le but de la doc est de vous accueillir et éclairer votre chemin via des exemples et des liens vers des docs externes.
Ces exemples iront du déballage de votre board jusqu&amp;rsquo;à la conception et le déploiement d&amp;rsquo;applications &lt;a href=&#34;https://flatpak.org&#34;&gt;flatpak&lt;/a&gt; dessus et pourquoi pas leur inclusion dans &lt;a href=&#34;https://pureos.net&#34;&gt;PureOS&lt;/a&gt;.
Vous pourrez également y trouver des exemples d&amp;rsquo;utilisation de certains outils comme flatpak, les IDE utilisés pour les applications flatpak ainsi que des outils pour vous aider à designer les interfaces utilisateurs de vos applications.
Le design des interfaces du Librem 5 seront également abordés dans les moindres détails afin de vous fournir une vue d&amp;rsquo;ensemble des recommandations pour les interfaces avec les humains qui seront appliquées par les applications fondamentales.
Consultez la doc pour apprendre les mouvements que vous pourrez utiliser sur le téléphone.
Les applications que vous créerez ou porterez pourront utiliser ces mouvements également.&lt;/p&gt;

&lt;p&gt;Prenez tout de même en compte que cette documentation n&amp;rsquo;est pas un tuto exhaustif sur l&amp;rsquo;utilisation de &lt;em&gt;tous&lt;/em&gt; les outils nécessaires au dev.
Il existe déjà de nombreuses docs concernant chacun des outils donc il n&amp;rsquo;y a pas lieu de réinventer la roue.
Cependant, vous serez redirigé vers celles-ci le cas échéant.&lt;/p&gt;

&lt;p&gt;Nous accueillons volontiers les tests et autres efforts de devs que des volontaires sont prêts à fournir.
En ce sens nous fournirons des informations sur la façon de participer à la communauté Purism en général.&lt;/p&gt;

&lt;h2 id=&#34;work-in-progress&#34;&gt;Work in Progress&lt;/h2&gt;

&lt;p&gt;La doc est en mouvement permanent.
Du contenu est ajouté chaque jour et des réorganisation ont lieu de temps à autre.
Si une page vous semble avoir disparu, cherché là car il y a des chances qu&amp;rsquo;elle ait juste déménagée ailleurs plutôt que d&amp;rsquo;être réellement supprimée.
Le but est d&amp;rsquo;écrire une documentation qui aide tout en étant intuitive donc il est important que le chemin le plus intuitif soit mis en place.
La doc est toute neuve mais se remplie assez rapidement afin que vous puissiez l&amp;rsquo;utiliser décemment dès que vous recevrez votre board en Juin !&lt;/p&gt;

&lt;p&gt;Il y aura une annonce dans les prochaines semaines pour un appel à volontaire.
Tenez vous prêt !&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;La doc est un poil capital inexistant chez les entreprises de smartphone.
Ils s&amp;rsquo;appuient beaucoup sur la communauté pour créer un environnement logiciel satisfaisant et du coup savent que la doc tient un rôle prépondérant sur ce point.&lt;/p&gt;

&lt;p&gt;L&amp;rsquo;écosystème Linux actuel n&amp;rsquo;est pas trop adapté aux smartphone donc de nombreux logiciels vont devoir être créé pour cela.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Trois astuces pour Hugo</title>
      <link>https://lord.re/posts/94-trois-astuces-hugo/</link>
      <pubDate>Wed, 11 Apr 2018 16:07:29 +0200</pubDate>
      
      <guid>https://lord.re/posts/94-trois-astuces-hugo/</guid>
      <description>

&lt;p&gt;J&amp;rsquo;ai apporté encore quelques modifs sur mon thême Hugo (ouai j&amp;rsquo;en cause un peu trop souvent désolé mais ce coup-ci c&amp;rsquo;est plus une astuce qu&amp;rsquo;autre chose !).
Une des modifs récente est l&amp;rsquo;ajout d&amp;rsquo;un lien vers un article aléatoire.&lt;/p&gt;

&lt;p&gt;Pas de bol cette fonction n&amp;rsquo;existe pas de base mais c&amp;rsquo;est assez facile à bricoler via les quelques fonctions internes d&amp;rsquo;Hugo.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;ai aussi généré une page contenant absolument tous les articles à l&amp;rsquo;image de l&amp;rsquo;ancienne version du site.
C&amp;rsquo;est assez simple à faire.&lt;/p&gt;

&lt;p&gt;Je publie désormais les brouillons des articles avant leur publication officielles mais je voulais les exclure du site pour pas que ce soit mélangé.&lt;/p&gt;

&lt;h2 id=&#34;chopper-un-article-aléatoire&#34;&gt;Chopper un article aléatoire&lt;/h2&gt;

&lt;p&gt;Hugo possède de &lt;a href=&#34;https://gohugo.io/functions/&#34;&gt;nombreuses fonctions&lt;/a&gt; et surtout ces fonctions peuvent être chaînées à la manière du &lt;strong&gt;|&lt;/strong&gt; dans le shell.&lt;/p&gt;

&lt;p&gt;Du coup on va avoir besoin d&amp;rsquo;une fonction pour mélanger un array (un tableau) : &lt;em&gt;shuffle&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Une fonction pour générer cet array à partir de critères définis : &lt;em&gt;where&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Et une fonction pour chopper juste le premier élément de l&amp;rsquo;array : &lt;em&gt;range first&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Le but exact de la fonction est de chopper tous les articles de la section &amp;ldquo;posts&amp;rdquo; dans la langue actuelle, les mélanger, extraire uniquement le premier.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{{ range first 1 (shuffle (where .Site.RegularPages &amp;quot;Section&amp;quot; &amp;quot;posts&amp;quot;)) }} &amp;lt;a href=&amp;quot;{{ .Permalink }}&amp;quot;&amp;gt;{{ .Title }}&amp;lt;/a&amp;gt;{{ end }}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;La ptite astuce c&amp;rsquo;est que &lt;strong&gt;range&lt;/strong&gt; est en fait une boucle qui doit donc être terminée par un &lt;strong&gt;end&lt;/strong&gt; mais surtout qu&amp;rsquo;à l&amp;rsquo;intérieur le scope est définie par l&amp;rsquo;objet en question.
Ça veux dire que &lt;em&gt;.Permalink&lt;/em&gt; et &lt;em&gt;.Title&lt;/em&gt; sont donc propre à l&amp;rsquo;itération actuelle de la boucle.
Vous aurez donc bien le permalink et le titre de l&amp;rsquo;élément en cours de la boucle et non de l&amp;rsquo;article en cours de rédaction.&lt;/p&gt;

&lt;p&gt;Voilà, maintenant vous aurez un lien aléatoire sur chacune de vos pages.&lt;/p&gt;

&lt;p&gt;Par contre bien entendu ce lien changera à chaque nouvelle génération de votre site…&lt;/p&gt;

&lt;h2 id=&#34;générer-une-page-avec-le-contenu-de-tous-les-articles&#34;&gt;Générer une page avec le contenu de tous les articles&lt;/h2&gt;

&lt;p&gt;Avant d&amp;rsquo;utiliser Hugo, j&amp;rsquo;étais sur une simple page web faite à la main avec absolument tous les articles.
Une seule grosse page.&lt;/p&gt;

&lt;p&gt;J&amp;rsquo;aimais bien ce système pour pouvoir facilement rechercher un terme précis.
Du coup j&amp;rsquo;ai recréé ça sur Hugo.&lt;/p&gt;

&lt;p&gt;C&amp;rsquo;est finalement assez simple puisqu&amp;rsquo;il suffira de définir une nouvelle section du site.&lt;/p&gt;

&lt;p&gt;Donc on créer &lt;em&gt;layouts/mono&lt;/em&gt; et dedans on y colle un un &lt;em&gt;list.html&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Là le but est de mimer l&amp;rsquo;allure de la home page mais avec les articles en entiers.&lt;/p&gt;

&lt;p&gt;Donc on copie-colles le &lt;em&gt;layouts/index.html&lt;/em&gt; et on modifie &lt;strong&gt;{{ .Summary }}&lt;/strong&gt; par un &lt;strong&gt;{{ .Content }}&lt;/strong&gt;.
Bien entendu, on vire le ptit encart pour lire l&amp;rsquo;article entier.&lt;/p&gt;

&lt;p&gt;Et hop &lt;a href=&#34;https://lord.re/mono/&#34;&gt;ça donne ça&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;publier-ses-brouillons-sans-interférer-avec-le-reste-du-site&#34;&gt;Publier ses brouillons sans interférer avec le reste du site&lt;/h2&gt;

&lt;p&gt;Depuis quelques temps maintenant j&amp;rsquo;ai décidé de rendre public les brouillons d&amp;rsquo;articles non finalisés.
Au lieu de traîner uniquement sur mon ordi, je me suis dit que ça pourrait éventuellement intéresser certaines personnes qui me font parfois des retours avant publication.&lt;/p&gt;

&lt;p&gt;Donc pour ça on créer une nouvelle section avec un ptit &lt;strong&gt;mkdir content/drafts&lt;/strong&gt; et dedans on y pose les brouillons.&lt;/p&gt;

&lt;p&gt;Par contre, pas de bol quand on fait ça, les brouillons se retrouvent également dans la homepage ce qui n&amp;rsquo;est clairement pas désiré.
Du coup le but est de les exclure de la homepage.
Pour ça pas mal de solution possibles, perso j&amp;rsquo;ai opté pour l&amp;rsquo;arme lourde.&lt;/p&gt;

&lt;p&gt;Premièrement j&amp;rsquo;ai créé une nouvelle variable dans &lt;em&gt;config.toml&lt;/em&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[params]
  sectionsInHomepage = [&amp;quot;posts&amp;quot;,&amp;quot;fast-posts&amp;quot;]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Là on a donc défini quelles sections seront sur la homepage.&lt;/p&gt;

&lt;p&gt;On édite maintenant le template des RSS pour ne pas y publier les brouillons : &lt;em&gt;layouts/_default/rss.xml&lt;/em&gt; .
Il faut remplacer &lt;strong&gt;{{ range .Data.Pages }}&lt;/strong&gt; par un &lt;strong&gt;{{ range where .Data.Pages &amp;ldquo;Section&amp;rdquo; &amp;ldquo;in&amp;rdquo; .Site.Params.SectionsInHomepage }}&lt;/strong&gt; .&lt;/p&gt;

&lt;p&gt;Voilà ça c&amp;rsquo;est bon, on fait la même modif sur &lt;em&gt;layouts/index.html&lt;/em&gt; et ça devrait être bon.&lt;/p&gt;

&lt;p&gt;Bon il ne reste plus qu&amp;rsquo;à affecter un template à nos drafts, j&amp;rsquo;ai juste copié celui de la section &lt;em&gt;posts&lt;/em&gt; en rajoutant une petite phrase expliquant que ce sont des brouillons.&lt;/p&gt;

&lt;p&gt;On obtient donc &lt;a href=&#34;https://lord.re/drafts/&#34;&gt;une section drafts&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
