Congratulations!

[Valid Atom 1.0] This is a valid Atom 1.0 feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: https://mart-e.be/feed

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <feed xmlns="http://www.w3.org/2005/Atom"><title>mart-e</title><link href="https://mart-e.be/" rel="alternate"></link><link href="https://mart-e.be/feed" rel="self"></link><id>https://mart-e.be/</id><updated>2024-04-04T13:43:00+02:00</updated><subtitle>La vie, Linux, la tartiflette...</subtitle><entry><title>Qui a mis une backdoor dans xz ?</title><link href="https://mart-e.be/2024/04/qui-a-mis-une-backdoor-dans-xz" rel="alternate"></link><published>2024-04-04T13:43:00+02:00</published><updated>2024-04-04T13:43:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2024-04-04:/2024/04/qui-a-mis-une-backdoor-dans-xz</id><summary type="html">&lt;p&gt;La semaine dernière, &lt;a href="https://fr.wikipedia.org/wiki/Porte_d%C3%A9rob%C3%A9e"&gt;une backdoor&lt;/a&gt; a été découverte dans le logiciel de compression &lt;a href="https://tukaani.org/"&gt;XZ&lt;/a&gt;. Si l’utilisateur lambda est assez peu confronté à ce format, il est néanmoins très répandu …&lt;/p&gt;</summary><content type="html">&lt;p&gt;La semaine dernière, &lt;a href="https://fr.wikipedia.org/wiki/Porte_d%C3%A9rob%C3%A9e"&gt;une backdoor&lt;/a&gt; a été découverte dans le logiciel de compression &lt;a href="https://tukaani.org/"&gt;XZ&lt;/a&gt;. Si l’utilisateur lambda est assez peu confronté à ce format, il est néanmoins très répandu dans la distribution de paquets sous Linux. Ce logiciel est donc présent sur de très nombreux postes Linux. S’il est malheureusement fréquent de trouver une faille de sécurité dans un logiciel crucial, ce qui est particulier avec celle-ci, est qu’elle a été volontairement introduite par un des deux mainteneurs de ce logiciel. Petit récapitulatif de la situation :&lt;/p&gt;
  3. &lt;p&gt;Le 29 mars, Andres Freund, un développeur PostgreSQL investigue un problème de performance lors d’une connexion ssh. Au fil de ses recherches, il identifie le responsable comme étant xz et découvre une backdoor présente dans la dernière version de celui-ci. La porte dérobée se trouve dans la version publiée sur le projet github (version utilisée par les différentes distributions Linux) mais pas dans le code source. &lt;a href="https://www.openwall.com/lists/oss-security/2024/03/29/4"&gt;Il publie&lt;/a&gt; ses trouvailles sur une mailing list de sécurité, ce qui déclenchera un très long weekend pour les sysadmins et un beau sujet pour les chercheurs en &lt;a href="https://fr.wikipedia.org/wiki/Renseignement_d%27origine_sources_ouvertes"&gt;OSINT&lt;/a&gt;.&lt;/p&gt;
  4. &lt;figure&gt;
  5.  &lt;a href="https://www.flickr.com/photos/library_of_congress/2179142980/in/album-72157603671370361/"&gt;&lt;img src="https://mart-e.be/images/2024/enbourbe.jpg"/&gt;&lt;/a&gt;
  6.    &lt;figcaption&gt;Sysadmin se rendant compte qu’il va passer un long weekend…&lt;/figcaption&gt;
  7. &lt;/figure&gt;
  8.  
  9. &lt;p&gt;La particularité de la faille est de découvrir, rétrospectivement, qu’elle a été planifiée depuis des années. Initialement, xz est le projet d’un seul développeur bénévole : Lasse Collin. Comme bien trop souvent dans le logiciel libre, il est difficile de se faire payer, y compris pour des projets aussi populaires que xz. Ne vivant pas d’amour et d’eau fraiche, le succès de son logiciel et le travail que cela implique dépasse rapidement Lasse. Et c’est de cette surcharge de travail que l’attaquant va profiter.&lt;/p&gt;
  10. &lt;p&gt;&lt;a href="https://research.swtch.com/xz-timeline"&gt;Timeline of the xz open source attack | research!rsc&lt;/a&gt;&lt;/p&gt;
  11. &lt;p&gt;Fin 2021, un développeur nommé Jia Tan, propose plusieurs patch inoffensifs sur les listes de diffusions de XZ Utils. Début 2022, deux personnes (probablement d’autres identités de Jia Tan), font pression sur Lasse Collin dans &lt;a href="https://www.mail-archive.com/xz-devel@tukaani.org/msg00557.html"&gt;des messages&lt;/a&gt; envoyés sur les mailing list critiquant son manque de réactivité pour intégrer des changements. Lasse se défend en confiant qu’il a des problèmes de santé mentale et un manque de temps, étant seul à maintenir un logiciel bénévole. Va s’ensuivre &lt;a href="https://www.mail-archive.com/xz-devel@tukaani.org/msg00566.html"&gt;une série de messages&lt;/a&gt; pour le pousser à accepter un autre mainteneur en la personne de Jia Tan. Pression efficace puisque Jia Tan va progressivement prendre de l’importance et des responsabilités dans le projet en 2022 et 2023. En plus de changements dans xz, il va contribuer &lt;a href="https://github.com/google/oss-fuzz/pull/10667"&gt;à d’autres projets&lt;/a&gt; pour rendre son attaque possible. En février 2024, les choses s’emballent et Jia Tan intègre la backdoor dans le projet. Il va aussi pousser à l’inclusion de sa version vérolée dans &lt;a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1067708"&gt;Debian&lt;/a&gt; et &lt;a href="https://bugs.launchpad.net/ubuntu/+source/xz-utils/+bug/2059417"&gt;Ubuntu&lt;/a&gt;. La backdoor est &lt;a href="https://research.swtch.com/xz-script"&gt;très sophistiquée&lt;/a&gt; et va permettre des connexions SSH sur les serveurs Debian et Ubuntu. Un problème de performance va permettre à Andres Freund de détecter l’attaque avant qu’elle n'arrive dans les versions stables des distributions, mais &lt;a href="https://doublepulsar.com/inside-the-failed-attempt-to-backdoor-ssh-globally-that-got-caught-by-chance-bbfe628fafdd"&gt;il s’en est fallu de peu&lt;/a&gt;. &lt;a href="https://www.schneier.com/blog/archives/2024/04/xz-utils-backdoor.html"&gt;Bruce Schneier est convaincu&lt;/a&gt; que des attaques similaires se sont déjà produites avec succès dans le passé.&lt;/p&gt;
  12. &lt;p&gt;L’attaque semble avoir échoué, mais il faut maintenant repasser sur tout l’historique de Jia Tan pour s’assurer qu’il s’agissait de sa seule porte dérobée. Cela questionne, une fois de plus, les problèmes de distribution des logiciels et de l’impossibilité de maitriser toute la chaine (ou l’enthousiasme avec lequel l’on base son infrastructure sur des projets existants). Cette attaque ne questionne pas l’utilisation de l’open source (il aurait été plus difficile de la détecter au sein d’un logiciel propriétaire) mais bien son mode de financement. On se rappelle de &lt;a href="https://fr.wikipedia.org/wiki/Heartbleed"&gt;Heartbleed&lt;/a&gt; en 2012, la faille dans OpenSSL qui avait montré comment des briques essentielles d’internet étaient sous-financées. 12 ans plus tard, l’attaque de xz nous rappelle que ces problèmes sont toujours bien présents.&lt;/p&gt;
  13. &lt;figure&gt;
  14.  &lt;a href="https://xkcd.com/2347/"&gt;&lt;img src="https://mart-e.be/images/2024/xkcd-dependency.png"/&gt;&lt;/a&gt;
  15. &lt;/figure&gt;
  16.  
  17. &lt;p&gt;Mais qui est Jia Tan ? La question reste ouverte au moment de l’écriture de cet article. Si le nom et les fuseaux horaires semblent indiquer quelqu’un habitant en Chine, &lt;a href="https://rheaeve.substack.com/p/xz-backdoor-times-damned-times-and"&gt;une analyse approfondie des commits&lt;/a&gt; semblent indiquer que la personne se trouverait plutôt dans le fuseau Europe de l’Est/Israël. Dave Aitel, ancien de la NSA, &lt;a href="https://www.wired.com/story/jia-tan-xz-backdoor/"&gt;y voit&lt;/a&gt; une sofistication digne d’une agence d’État russe. Savoir si derrière le pseudonyme Jia Tan se trouve une seule personne ou une organisation plus importante n’est que pure spéculation pour le moment (même si, au vu des moyens mis en œuvre, je penche pour la deuxième possibilité). OpenSSH et Debian sont utilisés un peu partout dans le monde, si la backdoor n’avait pas été détectée à temps, de très nombreux systèmes auraient été des cibles potentielles.&lt;/p&gt;</content><category term="Uncategorized"></category><category term="xz"></category><category term="securite"></category><category term="linux"></category></entry><entry><title>Fabrication d'un photomaton</title><link href="https://mart-e.be/2024/02/fabrication-d-un-photomaton" rel="alternate"></link><published>2024-02-25T17:58:00+01:00</published><updated>2024-02-25T17:58:00+01:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2024-02-25:/2024/02/fabrication-d-un-photomaton</id><summary type="html">&lt;p&gt;&lt;em&gt;Cet article est plus un partage de mon expérience qu'un guide pas-à-pas. Certains choix de matériels et de logiciels sont liés à des contraintes de temps, de budget et de …&lt;/em&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;em&gt;Cet article est plus un partage de mon expérience qu'un guide pas-à-pas. Certains choix de matériels et de logiciels sont liés à des contraintes de temps, de budget et de l'équipement que je possédais déjà. Si vous désirez produire un projet similaire, adaptez-le plutôt que d'essayer de le reproduire à l'identique.&lt;/em&gt;&lt;/p&gt;
  18. &lt;p&gt;L'an passé, j'ai eu le plaisir d'organiser mon mariage. Lors de la prise de devis, s'est posée la question du photomaton, élément très sympa dans les soirées, permettant aux gens de repartir avec une photo souvenir ou d'en coller dans le livre d'or. Les devis que je voyais dépassaient facilement les 400€.&lt;/p&gt;
  19. &lt;blockquote&gt;
  20. &lt;p&gt;Comment ? Mais je peux sûrement faire pareil pour moins cher avec un Raspberry Pi et deux-trois bricoles !&lt;/p&gt;
  21. &lt;/blockquote&gt;
  22. &lt;p&gt;Hahahaha… non.&lt;/p&gt;
  23. &lt;p&gt;Mais on peut s'en approcher. Et ça n'enlève rien au plaisir d'essayer.&lt;/p&gt;
  24. &lt;figure&gt;
  25.  &lt;a href="https://www.flickr.com/photos/nationaalarchief/3280638919/"&gt;&lt;img src="https://mart-e.be/images/2024/photographer.jpg"/&gt;&lt;/a&gt;
  26. &lt;/figure&gt;
  27.  
  28. &lt;p&gt;Lorsque vous louez un photomaton, il se compose en général de plusieurs éléments qui justifient le prix:&lt;/p&gt;
  29. &lt;ul&gt;
  30. &lt;li&gt;un appareil photo&lt;/li&gt;
  31. &lt;li&gt;une imprimante&lt;/li&gt;
  32. &lt;li&gt;une réserve de papier photo&lt;/li&gt;
  33. &lt;li&gt;une jolie interface&lt;/li&gt;
  34. &lt;li&gt;un éclairage intégré&lt;/li&gt;
  35. &lt;li&gt;la belle boite contenant le tout&lt;/li&gt;
  36. &lt;/ul&gt;
  37. &lt;p&gt;Si vous possédez un appareil photo supporté par le &lt;a href="http://www.gphoto.org/proj/libgphoto2/support.php"&gt;projet gPhoto&lt;/a&gt;, vous pouvez l'utiliser dans ce projet. Ce n'était pas mon cas, je l'ai remplacé par un &lt;a href="https://www.raspberrypi.com/products/camera-module-3/"&gt;module Pi Camera 3&lt;/a&gt;. Ce n'est bien sûr pas la même qualité par rapport à un vrai appareil photo mais la dernière version du module caméra possède 12 MP et un autofocus, cela suffit largement pour imprimer mes petites photos.&lt;/p&gt;
  38. &lt;p&gt;Les imprimantes que l'on retrouve dans les photomatons sont des &lt;a href="https://fr.wikipedia.org/wiki/Imprimante_%C3%A0_sublimation"&gt;imprimantes à sublimation thermique&lt;/a&gt; et coûtent facilement 2000€ (par exemple la &lt;a href="https://www.amazon.fr/DNP-Digital-Imprimante-thermique-DS820/dp/B0783PWSKF/"&gt;DNP 830&lt;/a&gt;). Elles impriment en quelques secondes, découpent la photo en deux et peuvent accueillir une grosse réserve de papier. Comme alternative low-cost, Canon a sorti la gamme Canon Selphy : une imprimante à sublimation pour moins de 150€. Elles sont beaucoup plus lentes (+/- 45 secondes par feuille), ont une réserve de 10 feuilles à la fois et la cartouche d'encre doit être changée toutes les 33 photos, mais elles donnent des impressions d'une bonne qualité.&lt;/p&gt;
  39. &lt;p&gt;Grâce au marketing de Canon visant les jeunes instagrameurs avec une capacité d'attention de 12 secondes, on en trouve facilement en seconde-main moins cher. Comme d'habitude, le papier et cartouches coûtent bien trop cher (25 cents la photo). Notez que des cartouches produit blanc compatibles &lt;a href="https://www.123encre.be/Canon-KP-108IP-IN-3-cartouches-d-encre-papier-format-carte-postale-marque-123encre-3115B001AAC-i90068-t374178.html"&gt;existent&lt;/a&gt; (non testé). Pour partager mon expérience, on a imprimé une centaine de photo sur la journée. Le fait que l'imprimante soit lente ou qu'il faille remettre du papier régulièrement était une crainte, mais on ne me l'a jamais reproché. Étonnamment, les gens sont capables de patienter lorsqu'ils ont un verre à la main...&lt;/p&gt;
  40. &lt;figure&gt;
  41.  &lt;img src="https://mart-e.be/images/2024/photomaton-soufflet.jpg"/&gt;
  42. &lt;/figure&gt;
  43.  
  44. &lt;p&gt;Pour la belle boîte, le prix et le résultat dépendra de vos capacités de bricolage. J'ai récupéré un magnifique vieux soufflet d'appareil photo et j'ai construit un trépied qui, une fois peint, donne pas trop mal. Mon inspiration pour cette construction était le superbe projet &lt;a href="https://florianmuller.com/raspberry-pi-photobooth-in-a-classic-vintage-plate-camera"&gt;Raspberry Pi Photobooth in a classic vintage plate camera&lt;/a&gt;. Je suis loin d'avoir un aussi beau résultat que lui mais je suis déjà content de ne pas m'être coupé un doigt...&lt;/p&gt;
  45. &lt;p&gt;Pour contrôler le tout, j'ai utilisé un Raspberry Pi 4, un SSD (plus pour une question de fiabilité que de vitesse ou de capacité de stockage) et un écran tactile. Attention qu'alimenter la caméra, l'écran et le SSD demandent plus de puissance qu'est capable de délivrer le pi. J'ai ajouté une alimentation externe pour l'écran plutôt que d'utiliser un des ports USB du Raspberry Pi.&lt;/p&gt;
  46. &lt;p&gt;Matériel électronique nécessaire:&lt;/p&gt;
  47. &lt;ul&gt;
  48. &lt;li&gt;Raspberry Pi 4, 4GB (70€)&lt;/li&gt;
  49. &lt;li&gt;Boitier métallique Flirc (30€)&lt;/li&gt;
  50. &lt;li&gt;&lt;a href="https://www.amazon.fr/dp/B0BBWJH1P8"&gt;SSD 500GB NVMe&lt;/a&gt; (30€)&lt;/li&gt;
  51. &lt;li&gt;&lt;a href="https://www.aliexpress.com/item/1005004741751592.html"&gt;Boitier USB SSD&lt;/a&gt; (16€)&lt;/li&gt;
  52. &lt;li&gt;&lt;a href="https://www.aliexpress.com/item/1005004163930837.html"&gt;Écran tactile 7"&lt;/a&gt; (40€)&lt;/li&gt;
  53. &lt;li&gt;Imprimante Canon Selphy CP1300 (80€ en occasion)&lt;/li&gt;
  54. &lt;li&gt;Câbles divers&lt;/li&gt;
  55. &lt;li&gt;&lt;a href="https://www.amazon.fr/gp/product/B0BBWGSXQD/"&gt;Adaptateurs USB-C angle droit&lt;/a&gt; (6€)&lt;/li&gt;
  56. &lt;li&gt;&lt;a href="https://www.123encre.be/Canon-RP-108-cartouche-d-encre-papier-format-carte-postale-d-origine-8568B001-i38497-t143830.html"&gt;Papier d'impression + encre&lt;/a&gt; (27€ les 108 feuilles)&lt;/li&gt;
  57. &lt;/ul&gt;
  58. &lt;p&gt;Pour le support :&lt;/p&gt;
  59. &lt;ul&gt;
  60. &lt;li&gt;Du bois (~30€)&lt;/li&gt;
  61. &lt;li&gt;Un soufflet d'appareil photo (15€)&lt;/li&gt;
  62. &lt;/ul&gt;
  63. &lt;p&gt;Divers :&lt;/p&gt;
  64. &lt;ul&gt;
  65. &lt;li&gt;Un ami avec une imprimante 3D pour confectionner un support pour maintenir la caméra (prix: des bières)&lt;/li&gt;
  66. &lt;li&gt;Une lampe sur pied pour éclairer à la nuit tombée&lt;/li&gt;
  67. &lt;li&gt;Optionnel mais très utile pour débugger : un clavier&lt;/li&gt;
  68. &lt;/ul&gt;
  69. &lt;p&gt;Total : 344€. Ouf ! Je peux dire à mon épouse que les dizaines d'heures sur le projet nous ont fait économiser de l'argent !&lt;/p&gt;
  70. &lt;figure&gt;
  71.  &lt;img src="https://mart-e.be/images/2024/photomaton-support.jpg"/&gt;
  72.  &lt;figcaption&gt;Mes premiers essais-erreurs avec une imprimante 3D&lt;/figcaption&gt;
  73. &lt;/figure&gt;
  74.  
  75. &lt;p&gt;Pour que ma caméra tienne dans le soufflet, j'ai utilisé une imprimante 3D pour confectionner un petit cache. Ce fut l'occasion de découvrir &lt;a href="https://www.tinkercad.com/"&gt;Tinkercad&lt;/a&gt;. J'avais d'ailleurs sous-estimé le nombre d'essais nécessaires avant d'obtenir deux pièces qui s'emboitent correctement.&lt;/p&gt;
  76. &lt;p&gt;Pour l'éclairage, j'avais d'abord essayé d'utiliser un anneau de lumière comme montré dans &lt;a href="https://www.youtube.com/watch?v=T7feGb48LxI"&gt;cette vidéo&lt;/a&gt; mais la lumière n'est pas assez puissante pour illuminer un groupe. J'ai finalement utilisé une lampe sur pied simple mais ce n'avait pas la netteté d'un éclairage professionnel, à ne pas négliger si vous voulez faire des photos de soirée.&lt;/p&gt;
  77. &lt;p&gt;Comme logiciel, j'ai utilisé &lt;a href="https://photoboothproject.github.io/"&gt;Photobooth Project&lt;/a&gt;. Même s'il est parfaitement utilisable, ce logiciel est encore en développement actif donc je ne m'attarderai pas trop sur son installation, une nouvelle version est d'ailleurs sortie entre l'installation et la publication (tardive) de cet article. Les quelques soucis que j'ai eu ont été faciles à résoudre et les développeurs sont très réactifs sur Github.&lt;/p&gt;
  78. &lt;p&gt;&lt;a href="https://photoboothproject.github.io/Installation-on-Debian"&gt;Automated installation on Raspberry Pi OS | Photobooth Project&lt;/a&gt;&lt;/p&gt;
  79. &lt;p&gt;L'installation va permettre d'avoir un navigateur en plein écran s'ouvrant sur la page du photomaton au démarrage. Très pratique pour ce logiciel qu'on a tendance à redémarrer régulièrement. Il existe de nombreux paramètres de configuration permettant de changer les dispositions, d'autoriser l'impression, téléchargement, envoi par mail, etc.&lt;/p&gt;
  80. &lt;p&gt;Actuellement, le support de la picamera n'est pas parfait sur Photobooth Project mais il s'intègre très bien avec &lt;a href="https://github.com/mgrl/photobooth-app/"&gt;Photobooth-App&lt;/a&gt;, un autre projet moins avancé point de vue interface mais avec un meilleur support de la caméra Raspeberry Pi.&lt;/p&gt;
  81. &lt;p&gt;&lt;a href="https://photobooth-app.org/reference/photoboothprojectintegration/"&gt;Integrate Photobooth-Project&lt;/a&gt;&lt;/p&gt;
  82. &lt;p&gt;Une fois ces deux projets installés et paramétrés, il suffit de configurer l'imprimante.&lt;/p&gt;
  83. &lt;p&gt;Et c'est ici que ce guide s'arrête.&lt;/p&gt;
  84. &lt;figure&gt;
  85.  &lt;img src="https://mart-e.be/images/2024/photomaton-imprimante-crop.webp"/&gt;&lt;/a&gt;
  86.  &lt;figcaption&gt;Débogage le jour même&lt;/figcaption&gt;
  87. &lt;/figure&gt;
  88.  
  89. &lt;p&gt;Si vous esperiez avoir un guide de configuration de la Canon Selphy avec CUPS, je ne l'ai pas. Il aura fallu trois informaticiens testant toutes les configurations CUPS possibles pour réussir à faire fonctionner cet objet maudit le matin même alors que tout fonctionnait bien la veille… Je ne peux pas vous donner la combinaison parfaite mais ne sous-estimez pas les erreurs. Ou alors, faites une version tout numérique (Photobooth-Project supporte d'ailleurs l'envoi des photos par email).&lt;/p&gt;
  90. &lt;p&gt;En dehors des difficultés de configuration d'imprimante, tout a très bien fonctionné après.&lt;/p&gt;
  91. &lt;p&gt;Avec le recul, est-ce que je l'aurais quand même fait ? Oui bien sûr. Je trouve qu'un photomaton fait maison, avec toutes ses imperfections, a plus de charme qu'une solution toute faite. Heureusement que mon objectif n'était pas de gagner du temps ou de l'agent...&lt;/p&gt;</content><category term="Uncategorized"></category><category term="raspberrypi"></category><category term="DIY"></category><category term="photo"></category></entry><entry><title>Utiliser l'API d'Odoo en python</title><link href="https://mart-e.be/2024/01/utiliser-api-odoo-python" rel="alternate"></link><published>2024-01-28T14:11:00+01:00</published><updated>2024-01-28T14:11:00+01:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2024-01-28:/2024/01/utiliser-api-odoo-python</id><summary type="html">&lt;p&gt;Si vous développez avec des systèmes &lt;a href="https://www.odoo.com/"&gt;Odoo&lt;/a&gt;, il y a de bonne chance que vous ayez besoin d'interagir depuis un autre programme ou de scripter certaines actions pour des tests …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Si vous développez avec des systèmes &lt;a href="https://www.odoo.com/"&gt;Odoo&lt;/a&gt;, il y a de bonne chance que vous ayez besoin d'interagir depuis un autre programme ou de scripter certaines actions pour des tests. Petit résumé qui me sert également d'aide mémoire.&lt;/p&gt;
  92. &lt;figure&gt;
  93.  &lt;a href="https://www.flickr.com/photos/nationaalarchief/3236811556/"&gt;&lt;img src="https://mart-e.be/images/2024/python.jpg"/&gt;&lt;/a&gt;
  94. &lt;/figure&gt;
  95.  
  96. &lt;h2&gt;Méthode et contrôleur&lt;/h2&gt;
  97. &lt;p&gt;Dans Odoo, l'on peut interagir avec deux composants : les méthodes publiques des modèles et les contrôleurs.&lt;/p&gt;
  98. &lt;p&gt;Toute méthode qui se trouve à l'intérieur d'une classe héritant de &lt;code&gt;BaseModel&lt;/code&gt; et dont le nom ne commence &lt;em&gt;pas&lt;/em&gt; par un underscore est publique et appelable via le protocole &lt;a href="https://fr.wikipedia.org/wiki/Appel_de_proc%C3%A9dure_%C3%A0_distance"&gt;RPC&lt;/a&gt;.&lt;/p&gt;
  99. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Tartiflette&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  100.    &lt;span class="n"&gt;_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;tartifelette.ingredient&amp;quot;&lt;/span&gt;
  101.  
  102.    &lt;span class="c1"&gt;# méthode publique&lt;/span&gt;
  103.    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  104.       &lt;span class="o"&gt;...&lt;/span&gt;
  105.  
  106.    &lt;span class="c1"&gt;# méthode privée&lt;/span&gt;
  107.    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;_hello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  108.       &lt;span class="o"&gt;...&lt;/span&gt;
  109. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  110.  
  111. &lt;p&gt;Pour appeler une méthode en RPC, il faut un compte utilisateur au minimum au niveau portal et l'on se connecte avec son mot de passe ou une &lt;a href="https://www.odoo.com/documentation/17.0/developer/reference/external_api.html#api-keys"&gt;clef d'API&lt;/a&gt; (je conseille la deuxième).&lt;/p&gt;
  112. &lt;p&gt;Un contrôleur est une méthode dans une classe héritant de &lt;code&gt;http.Controller&lt;/code&gt; et décorée avec &lt;code&gt;@http.route&lt;/code&gt;. Sa déclaration définira qui et comment interagir avec.&lt;/p&gt;
  113. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;TartifletteController&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Controller&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  114.  
  115.    &lt;span class="nd"&gt;@http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/tartiflette/status&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;json&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;public&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  116.    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tartiflette_id&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  117.        &lt;span class="o"&gt;...&lt;/span&gt;
  118.  
  119.    &lt;span class="nd"&gt;@http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/tartiflette/&amp;lt;int:tartiflette_id&amp;gt;/join&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;http&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;user&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;methods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;POST&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]):&lt;/span&gt;
  120.    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tartiflette_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  121.        &lt;span class="o"&gt;...&lt;/span&gt;
  122. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  123.  
  124. &lt;p&gt;Un contrôleur &lt;code&gt;public&lt;/code&gt; peut être appelé sans être authentifié, mais il faut une session utilisatrice (portal compris) active pour appeler une méthode &lt;code&gt;user&lt;/code&gt;.&lt;/p&gt;
  125. &lt;h2&gt;RPC&lt;/h2&gt;
  126. &lt;p&gt;Il existe deux variantes de l'API RPC : en XML ou JSON. La &lt;a href="https://www.odoo.com/documentation/17.0/developer/reference/external_api.html"&gt;documentation d'Odoo&lt;/a&gt; explique comment faire du XMLRPC mais on est en 2024, la mode est au JSON maintenant (et ça resservira pour les contrôleurs). On déclare d'abord une méthode générique:&lt;/p&gt;
  127. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;json&lt;/span&gt;
  128. &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;urllib&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;
  129.  
  130. &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;json_rpc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  131.    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  132.        &lt;span class="s2"&gt;&amp;quot;jsonrpc&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;2.0&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  133.        &lt;span class="s2"&gt;&amp;quot;method&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;call&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  134.        &lt;span class="s2"&gt;&amp;quot;params&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  135.        &lt;span class="s2"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# id pour lier une requete et une réponse si l&amp;#39;on travaille en asynchrone&lt;/span&gt;
  136.    &lt;span class="p"&gt;}&lt;/span&gt;
  137.    &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  138.        &lt;span class="s2"&gt;&amp;quot;Content-Type&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;application/json&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  139.    &lt;span class="p"&gt;})&lt;/span&gt;
  140.    &lt;span class="n"&gt;reply&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;loads&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;urlopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;UTF-8&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
  141.    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;reply&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;error&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  142.        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;error&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
  143.    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;result&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  144. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  145.  
  146. &lt;p&gt;Méthode que l'on va utiliser avec les paramètres voulus :&lt;/p&gt;
  147. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;rpc_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dbname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;https://monsiteodoo/jsonrpc&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;odoodb&amp;quot;&lt;/span&gt;
  148. &lt;span class="c1"&gt;# utilisez python-dotenv plutôt que d&amp;#39;hardcoder un mot de passe!&lt;/span&gt;
  149. &lt;span class="n"&gt;login&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;
  150. &lt;span class="n"&gt;uid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json_rpc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rpc_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;service&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;common&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;method&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;login&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;args&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;dbname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;login&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;]})&lt;/span&gt;
  151. &lt;span class="n"&gt;rpc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kw&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;json_rpc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rpc_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  152.     &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;service&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;object&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;method&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;execute_kw&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;args&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dbname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kw&lt;/span&gt;&lt;span class="p"&gt;,)})&lt;/span&gt;
  153. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  154.  
  155. &lt;p&gt;et on peut maintenant appeler facilement n'importe quelle méthode publique:&lt;/p&gt;
  156. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;rpc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;tartiflette.ingredient&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;hello&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  157. &lt;span class="n"&gt;rpc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;tartiflette.ingredient&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;create&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;patate&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;quantite&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
  158. &lt;span class="n"&gt;rpc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;tartiflette.session&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;search&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  159.    &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;start_date&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&amp;gt;=&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;today&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isoformat&lt;/span&gt;&lt;span class="p"&gt;()]],&lt;/span&gt;
  160.    &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;active_test&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
  161. &lt;span class="n"&gt;rpc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;tartiflette.party&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;message_post&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;J&amp;#39;arriverai en retard!&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  162. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  163.  
  164. &lt;p&gt;Notez aussi l'existence de &lt;a href="https://gitlab.com/katyukha/odoo-rpc-client"&gt;odoo-rpc-client&lt;/a&gt; et &lt;a href="https://github.com/OCA/odoorpc"&gt;OdooRPC&lt;/a&gt;, deux librairies python assez sympa qui deviendront vite utiles pour les requêtes plus complexes.&lt;/p&gt;
  165. &lt;p&gt;La &lt;a href="https://www.odoo.com/documentation/17.0/developer/reference/external_api.html"&gt;documentation External API&lt;/a&gt; donne des exemples d'opérations' fréquentes.&lt;/p&gt;
  166. &lt;h2&gt;Contrôleur&lt;/h2&gt;
  167. &lt;p&gt;Avec les modules &lt;em&gt;frontend&lt;/em&gt;, une partie de la logique est déportée dans des contrôleurs python. On aimerait parfois automatiser l'appel à ces contrôleurs pour reproduire un flux utilisateur. Une route en HTTP s'appelle de façon assez classique, je conseille au passage la &lt;a href="https://docs.python-requests.org/en/latest/index.html"&gt;librairie &lt;code&gt;requests&lt;/code&gt;&lt;/a&gt; qui, sans être indispensable, facilite grandement la manipulation des paramètres :&lt;/p&gt;
  168. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;requess&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;.../terms&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  169. &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;.../event/1/my_ticket&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;ticket_hash&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
  170. &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;.../mail/unfollow&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;model&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
  171. &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;.../my/invoices&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cookies&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;session_id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
  172. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  173.  
  174. &lt;p&gt;Accéder à un contrôleur de type json nécessite une requête JSONRPC. On peut juste reprendre notre helper &lt;code&gt;json_rpc&lt;/code&gt; défini précédement :&lt;/p&gt;
  175. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;json_rpc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;.../tartiflette/status&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;tartiflette_id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
  176. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  177.  
  178. &lt;p&gt;Pour utiliser un contrôleur avec &lt;code&gt;auth="user"&lt;/code&gt;, il faut avoir une session active, c'est à dire passer un cookie &lt;code&gt;session_id&lt;/code&gt; dans la requête. Si le but est de faire tourner un script manuellement de façon ponctuelle, on peut simplement réutiliser le cookie de session dans son navigateur. Pour quelque chose de plus régulier, on voudra probablement scripter le tout en simulant une connexion du navigateur. Ne faites pas cela en production, on rentre dans un territoire plus instable et non-documenté ! Notez aussi que l'on ne peut plus utiliser de clef d'API mais le mot de passe utilisateur (vu que l'on n'utilise pas l'API).&lt;/p&gt;
  179. &lt;p&gt;Dans le cas simple, on peut simuler une connexion avec la route &lt;code&gt;/web/session/authenticate&lt;/code&gt; pour récupérer un cookie :&lt;/p&gt;
  180. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;.../web/session/authenticate&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  181.    &lt;span class="s2"&gt;&amp;quot;jsonrpc&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;2.0&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  182.    &lt;span class="s2"&gt;&amp;quot;method&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;call&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  183.    &lt;span class="s2"&gt;&amp;quot;params&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;db&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;dbname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;login&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;login&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
  184.    &lt;span class="s2"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;
  185. &lt;span class="p"&gt;})&lt;/span&gt;
  186. &lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;error&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;  &lt;span class="c1"&gt;# mauvais mot de passe&lt;/span&gt;
  187. &lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;result&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;uid&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;  &lt;span class="c1"&gt;# 2FA activé&lt;/span&gt;
  188. &lt;span class="n"&gt;session_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cookies&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;session_id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  189. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  190.  
  191. &lt;p&gt;Seulement, cette méthode ne fonctionne pas lorsque l'on utilise un compte avec une authentification à deux facteurs (que tout le monde devrait activer !).&lt;/p&gt;
  192. &lt;p&gt;Pour remédier à cela, il faudra simuler un flux complet :&lt;/p&gt;
  193. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;bs4&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BeautifulSoup&lt;/span&gt;
  194. &lt;span class="n"&gt;domain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;http://localhost:8069&amp;quot;&lt;/span&gt;
  195. &lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  196. &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;User-Agent&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Script mart-e.be&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;  &lt;span class="c1"&gt;# on est poli, on s&amp;#39;identifie&amp;#39; au serveur&lt;/span&gt;
  197. &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;/web/login&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  198. &lt;span class="n"&gt;soup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;BeautifulSoup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;lxml&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  199. &lt;span class="n"&gt;csrf_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soup&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;select_one&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;input[name=&amp;#39;csrf_token&amp;#39;]&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  200. &lt;span class="n"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;/web/login&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;login&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;demo&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;demo&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;csrf_token&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;csrf_token&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
  201. &lt;span class="k"&gt;assert&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;totp_token&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;  &lt;span class="c1"&gt;# Seconde etape&lt;/span&gt;
  202. &lt;span class="n"&gt;soup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;BeautifulSoup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;res&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;lxml&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  203. &lt;span class="n"&gt;csrf_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soup&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;select_one&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;input[name=&amp;#39;csrf_token&amp;#39;]&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  204. &lt;span class="n"&gt;totp_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Code TOTP: &amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  205. &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;/web/login/totp&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;totp_token&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;totp_token&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;csrf_token&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;csrf_token&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
  206. &lt;span class="n"&gt;session_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cookies&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;session_id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  207. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  208.  
  209. &lt;p&gt;C'est un peu nul, c'est pas résilient aux changements dans la page de login mais ça dépanne.&lt;/p&gt;
  210. &lt;p&gt;Et les contrôleurs JSON authentifiés ? Encore une fois, utiliser la librairie &lt;code&gt;requests&lt;/code&gt; facilite grandement la vie : &lt;/p&gt;
  211. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;user_json_rpc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;session_id&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  212.    &lt;span class="n"&gt;reply&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  213.        &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  214.            &lt;span class="s2"&gt;&amp;quot;jsonrpc&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;2.0&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  215.            &lt;span class="s2"&gt;&amp;quot;method&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;call&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  216.            &lt;span class="s2"&gt;&amp;quot;params&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  217.            &lt;span class="s2"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;
  218.        &lt;span class="p"&gt;},&lt;/span&gt;
  219.        &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Content-Type&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;application/json&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
  220.        &lt;span class="n"&gt;cookies&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;session_id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;session_id&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  221.    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;reply&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;error&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  222.        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;error&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
  223.    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;reply&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;result&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  224.  
  225. &lt;span class="n"&gt;controller&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kw&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;user_json_rpc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;kw&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;session_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  226. &lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/web/session/get_session_info&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  227. &lt;span class="n"&gt;controller&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/hr/get_org_chart&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employee_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  228. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="Uncategorized"></category><category term="python"></category><category term="odoo"></category><category term="rpc"></category><category term="api"></category></entry><entry><title>37C3, Unlocked</title><link href="https://mart-e.be/2024/01/37c3-unlocked" rel="alternate"></link><published>2024-01-02T14:53:00+01:00</published><updated>2024-01-02T14:53:00+01:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2024-01-02:/2024/01/37c3-unlocked</id><summary type="html">&lt;p&gt;Je reviens de la conférence 37C3 en Allemagne, le 37ème Chaos Communication Congress organisé par le &lt;a href="https://www.ccc.de/en"&gt;Chaos Computer Club&lt;/a&gt;, un des plus gros club de hackers en Europe. Après une …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Je reviens de la conférence 37C3 en Allemagne, le 37ème Chaos Communication Congress organisé par le &lt;a href="https://www.ccc.de/en"&gt;Chaos Computer Club&lt;/a&gt;, un des plus gros club de hackers en Europe. Après une pause de trois ans pour cause de pandémie, le congrès revient en présentiel à Hambourg. Le 37C3 était mon troisième congrès (après 33C3 &lt;em&gt;Works for me&lt;/em&gt; et 34C3 &lt;em&gt;tuwat&lt;/em&gt;) et reste un évènement toujours aussi impressionnant.&lt;/p&gt;
  229. &lt;figure&gt;
  230.  &lt;a href="https://events.ccc.de/congress/2023/infos/startpage.html"&gt;&lt;img src="https://mart-e.be/images/2024/ccc-cover-image.png"/&gt;&lt;/a&gt;
  231. &lt;/figure&gt;
  232.  
  233. &lt;p&gt;15.000 personnes d'un peu partout en Allemagne, Europe ou au-delà participent au congrès. Un grand rassemblement où il est tout à fait normal de se balader avec des leds sur la tête, des oreilles de chat, des costumes improbables voire les trois en même temps. Dans tous les coins du large centre des congrès, des tables sont disposées pour permettre aux plus de 300 &lt;a href="https://events.ccc.de/congress/2023/hub/en/assemblies"&gt;Assemblées&lt;/a&gt; de se retrouver. Certaines sont juste un groupe local heureux d'avoir une table pour poser leurs PCs mais il y a aussi de nombreuses plus improbables qui se retrouvent pour, par exemple, apprendre le crochetage de serrures, faire de la musique avec des Arduinos, de l'open hardware chez &lt;a href="https://mntre.com/reform.html"&gt;MNT Reform&lt;/a&gt;, un sous-marin fonctionnel, un coin cuisine, des échanges de graines, de nombreux ateliers de soudure aux cotés d'associations humanitaires comme &lt;a href="https://sea-watch.org/en/"&gt;Sea-Watch&lt;/a&gt; ou &lt;a href="https://www.amnesty.org/"&gt;Amnesty International&lt;/a&gt;. Tout ce joyeux bordel rassemblé dans des grands halls sombres aux odeurs variées (merci au coin &lt;a href="https://events.ccc.de/congress/2023/hub/en/assembly/fhb/"&gt;Food Hacking&lt;/a&gt; pour l'odeur de clou de girofle pendant plusieurs heures).&lt;/p&gt;
  234. &lt;figure&gt;
  235.  &lt;img src="https://mart-e.be/images/2024/ccc.jpg"/&gt;
  236. &lt;/figure&gt;
  237.  
  238. &lt;p&gt;Pour l'anecdote, juste avant le départ, le connecteur USB-C de mon téléphone m'a lâché. J'ai commandé le module de remplacement (vive la réparabilité de Fairphone) mais j'ai été forcé de partir au congrès sans smartphone fonctionnel. Dans le doute, j'ai ajouté une petite annonce sur le wiki de l'évenement dans la section &lt;a href="https://events.ccc.de/congress/2023/hub/en/wiki/Dating/"&gt;Hacker seeks Hardware&lt;/a&gt; et le troisième jour… bingo. Quelqu'un avec des pièces de rechange d'un Fairphone m'a gentiment dépanné, sans rien demander en retour.&lt;/p&gt;
  239. &lt;figure&gt;
  240.  &lt;img src="https://mart-e.be/images/2024/fairphone-ccc.png"/&gt;
  241.  &lt;figcaption&gt;Le congrès a aussi son réseau local de téléphone &lt;a href="https://fr.wikipedia.org/wiki/DECT"&gt;DECT&lt;/a&gt; pour communiquer&lt;/figcaption&gt;
  242. &lt;/figure&gt;
  243.  
  244. &lt;p&gt;Si vous trouvez que cet article manque de photos, c'est parce que le respect de la vie privée est une valeur importante du congrès. De nombreuses affiches rappellent de ne pas faire de photo des participants sans leur accord explicite, pas question de photographier les foules dans les couloirs… On ne sera pas non plus surpris de voir que toutes les transactions sur place se font en cash.&lt;/p&gt;
  245. &lt;p&gt;Je pense que ce qui m'a frappé pendant l'évènement est à quel point tout roulait. En arrivant le premier jour, des centaines de personnes récupéraient leurs bracelets d'entrée en même temps sans que ça ne pose de soucis. Le réseau internet, bien que malmené par &lt;a href="https://merveilles.town/@jbauer/111665208288238962"&gt;les pixel wars&lt;/a&gt; ou les &lt;a href="https://github.com/albertz/RandomFtpGrabber"&gt;nombreux ftp ouverts&lt;/a&gt;, tenait la charge. Les t-shirts et polo souvenirs se vendaient à un rythme de &lt;a href="https://events.ccc.de/en/2023/12/24/37c3-what-the-foc/"&gt;4 à la minute pendant 70 heures&lt;/a&gt;. De nombreuses traductions étaient faites en temps réel et toutes les sessions étaient accessibles en streaming ou replay. Le fait que tout cela est organisé entièrement par des bénévoles est d'autant plus frappant quand je compare avec les évenements organisés à mon boulot (plus petits, à but lucratif et moins bien huilés).&lt;/p&gt;
  246. &lt;p&gt;Et les présentations dans tout ça ? Réparties dans trois salles de 10h du matin à minuit, il y en avait pour tous. Si la sécurité informatique restait un thême récurrent, les talks étaient aussi souvent politiques, scientifiques ou artistiques. Une liste non-exhausitve des présentations qui ont retenu mon attention (en vous épargnant toutes celles où j'étais largué après 5 minutes) :&lt;/p&gt;
  247. &lt;p&gt;&lt;a href="https://media.ccc.de/v/37c3-12004-please_identify_yourself"&gt;Please Identify Yourself!&lt;/a&gt; sur les systèmes Indiens et Européens de carte d'identité électronique (et tous les abus qui vont avec).&lt;/p&gt;
  248. &lt;p&gt;&lt;a href="https://media.ccc.de/v/37c3-12326-you_ve_just_been_fucked_by_psyops"&gt;YOU’VE JUST BEEN FUCKED BY PSYOPS&lt;/a&gt; parce qu'il faut quand même aller voir des présentations WTF de temps en temps.&lt;/p&gt;
  249. &lt;p&gt;&lt;a href="https://media.ccc.de/v/37c3-11761-all_cops_are_broadcasting"&gt;All cops are broadcasting&lt;/a&gt; au sujet d'une backdoor dans le système de crypto propriétaire TETRA, vendu aux polices et services d'urgences de nombreux pays.&lt;/p&gt;
  250. &lt;figure&gt;
  251.  &lt;img src="https://mart-e.be/images/2024/ccc-bird.png"/&gt;
  252. &lt;/figure&gt;
  253.  
  254. &lt;p&gt;&lt;a href="https://media.ccc.de/v/37c3-12068-infrastructure_of_a_migratory_bird"&gt;Infrastructure of a migratory bird&lt;/a&gt; sur la réintégration d'oiseaux migrateurs à l'état sauvage.&lt;/p&gt;
  255. &lt;p&gt;&lt;a href="https://media.ccc.de/v/37c3-12142-breaking_drm_in_polish_trains"&gt;Breaking "DRM" in Polish trains&lt;/a&gt; ou pourquoi faire du &lt;a href="https://fr.wikipedia.org/wiki/G%C3%A9orep%C3%A9rage"&gt;geofencing&lt;/a&gt; dans des trains est une mauvaise idée.&lt;/p&gt;
  256. &lt;p&gt;&lt;a href="https://media.ccc.de/v/33c3-8344-nintendo_hacking_2016"&gt;Nintendo hacking 2023: 2008&lt;/a&gt; ou comment un chercheur très motivé a enfin cassé la Nitendo DSi, 15 ans après sa sortie.&lt;/p&gt;
  257. &lt;p&gt;&lt;a href="https://media.ccc.de/v/37c3-11810-decentralized_energy_production_green_future_or_cybersecurity_nightmare"&gt;Decentralized energy production: green future or cybersecurity nightmare?&lt;/a&gt; sur un manque flagrant de sécurité dans les "smart-grids" photovoltaïques.&lt;/p&gt;
  258. &lt;p&gt;&lt;a href="https://media.ccc.de/v/37c3-12292-new_important_instructions"&gt;NEW IMPORTANT INSTRUCTIONS&lt;/a&gt; ou pourquoi intégrer des LLM dans une application est équivalent à implémenter de la sécurité coté client…&lt;/p&gt;
  259. &lt;p&gt;&lt;a href="https://media.ccc.de/v/37c3-11919-finding_vulnerabilities_in_internet-connected_devices"&gt;Finding Vulnerabilities in Internet-Connected Devices&lt;/a&gt; un cas pratique de recherche de vulnérabilités par itérations dans un téléphone de conférence "smart".&lt;/p&gt;
  260. &lt;figure&gt;
  261.  &lt;img src="https://mart-e.be/images/2024/ccc-run-doom.png"/&gt;
  262. &lt;/figure&gt;
  263.  
  264. &lt;p&gt;&lt;a href="https://media.ccc.de/c/37c3"&gt;et encore beaucoup d'autres.&lt;/a&gt;&lt;/p&gt;</content><category term="Uncategorized"></category><category term="securite"></category><category term="ccc"></category></entry><entry><title>mart-e apprend le Rust à Noël</title><link href="https://mart-e.be/2023/12/mart-e-apprend-le-rust-a-noel" rel="alternate"></link><published>2023-12-23T11:15:00+01:00</published><updated>2023-12-23T11:15:00+01:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-12-23:/2023/12/mart-e-apprend-le-rust-a-noel</id><summary type="html">&lt;p&gt;Pour commencer les bonnes résolutions en avance, j'ai récemment décidé d'apprendre le &lt;a href="https://www.rust-lang.org/"&gt;Rust&lt;/a&gt;. Ce langage me faisait de l'œil depuis quelques temps, je voyais de nombreux projets l'adopter pour remplacer …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Pour commencer les bonnes résolutions en avance, j'ai récemment décidé d'apprendre le &lt;a href="https://www.rust-lang.org/"&gt;Rust&lt;/a&gt;. Ce langage me faisait de l'œil depuis quelques temps, je voyais de nombreux projets l'adopter pour remplacer des composants en C par du Rust (&lt;a href="https://en.wikipedia.org/wiki/Rust_for_Linux"&gt;Linux&lt;/a&gt;, &lt;a href="https://github.com/fish-shell/fish-shell/pull/9512"&gt;fish-shell&lt;/a&gt;, &lt;a href="https://blog.1password.com/1passwordx-december-2019-release/"&gt;1Password&lt;/a&gt;,...). J'avais même une copie non-ouverte de &lt;a href="https://www.manning.com/books/rust-in-action"&gt;Rust in Action&lt;/a&gt; sur mon bureau qui me narguait depuis quelques mois. Mais je suis un développeur Python moi, est-ce que j'ai vraiment envie d'écrire des points-virgules et des accolades ?&lt;/p&gt;
  265. &lt;figure&gt;
  266.  &lt;a href=""&gt;&lt;img src="https://mart-e.be/images/2023/martine-boxt.png"/&gt;&lt;/a&gt;
  267. &lt;/figure&gt;
  268.  
  269. &lt;h3&gt;Advent of Code&lt;/h3&gt;
  270. &lt;p&gt;Fin novembre, un jour improbable où j'avais du temps libre, je décide de me lancer. En en parlant, un collègue me demande si je vais faire l'&lt;a href="https://adventofcode.com"&gt;Advent of Code&lt;/a&gt; en rust. L'Advent of Code est un site qui propose, du 1er au 24 décembre de chaque année un problème journalier de programmation de difficulté croissante à résoudre, le tout avec une petite histoire amusante vous expliquant comment vous allez sauver Noël en codant.&lt;/p&gt;
  271. &lt;p&gt;J'avais déjà participé quelques fois à l'Advent of Code mais rarement au delà de jour 5. N'arrivant jamais à dire non à quelqu'un qui me propose un défi, je me lève  à 6h du matin tapante le 1er décembre (heure de publication du challenge journalier).&lt;/p&gt;
  272. &lt;p&gt;Ce fut douloureux. Chaque jour, je butais sur des règles de syntaxes simples, le compilateur refusant de comprendre ce que je voulais faire (spoiler: le compilateur est plus malin que moi). J'allais voir sur Stackoverflow pour chaque nouvelle ligne de code. Je mettais plusieurs heures pour résoudre chaque problème mais j'ai tenu bon les 16 premiers jours (à partir du jour 17, la difficulté croissante ne me permettait plus de les résoudre en une seule journée) et j'ai appris énormément.&lt;/p&gt;
  273. &lt;p&gt;Est-ce que je maitrise le langage à la fin du mois ? Certainement pas. Rust est un langage complexe avec ses particularités et je n'ai fait que gratter la surface. &lt;a href="https://gitlab.com/mart-e/advent-of-code/"&gt;Mes solutions&lt;/a&gt; sont loin d'être les plus élégantes ou efficaces. La contrainte temps de l'Advent of Code (à caser le matin ou sur un temps de midi) ne me laissait pas l'opportunité de peaufiner mes solutions.&lt;/p&gt;
  274. &lt;figure&gt;
  275.  &lt;a href="https://www.flickr.com/photos/opendemocracy/1482020719"&gt;&lt;img src="https://mart-e.be/images/2023/statue-headache.jpg"/&gt;&lt;/a&gt;
  276.  &lt;figcaption&gt;Essayer de comprendre la gestion des &lt;em&gt;ownerships&lt;/em&gt; en Rust&lt;/figcaption&gt;
  277. &lt;/figure&gt;
  278.  
  279. &lt;h3&gt;Ressources&lt;/h3&gt;
  280. &lt;p&gt;Dans &lt;a href="https://www.scotthyoung.com/blog/ultralearning/"&gt;Ultralearing&lt;/a&gt;, Scott Young explique comment il est plus efficace de se tester (et d'échouer) régulièrement lors de l'apprentissage plutôt que de "juste" étudier et d'attendre d'avoir tout mémorisé pour tester ses connaissance. C'est l'approche que j'ai essayé de suivre :&lt;/p&gt;
  281. &lt;p&gt;J'ai lu en diagonale le &lt;a href="https://doc.rust-lang.org/book/"&gt;Rust Book&lt;/a&gt; et les deux premiers chapitres de Rust in Action. Avec un bagage minimal, j'ai essayé de résoudre les excercices de &lt;a href="le [Rust Book](https://doc.rust-lang.org/book/)"&gt;rustlings&lt;/a&gt;, une série de bouts de codes qui ne compilent pas et qu'il faut corriger. A chaque excercie, rustlings nous donne la référence dans Rust Book pour comprendre le sujet abordé. Avec un objectif clair, il est beaucoup plus facile de comprendre un concept inconnu. &lt;a href="https://doc.rust-lang.org/rust-by-example/index.html"&gt;Rust by Example&lt;/a&gt; est une autre bonne ressource pour comprendre ce monde inconnu.&lt;/p&gt;
  282. &lt;p&gt;Si je code au boulot avec &lt;a href="https://www.sublimetext.com/"&gt;Sublime Text&lt;/a&gt;, j'ai profité de l'occasion pour ressortir mon bon vieux &lt;a href="https://www.gnu.org/software/emacs/"&gt;Emacs&lt;/a&gt; (je n'allais quand même pas utiliser VSCode comme tout le monde). Je me suis bien aidé de &lt;a href="https://robert.kra.hn/posts/rust-emacs-setup/"&gt;Configuring Emacs for Rust development&lt;/a&gt; pour améliorer mon installation, le tout avec le joli &lt;a href="https://draculatheme.com/emacs"&gt;thème Dracula&lt;/a&gt;.&lt;/p&gt;
  283. &lt;p&gt;Concernant Rust in Action, je suis un peu plus mitigé. C'est pas que le livre est mauvais mais plutôt que le titre complet est "Rust in Action : Systems programming concepts and techniques". Les 4 premiers chapitres sont très intéressants et clairs mais il m'a perdu à partir du cinquième lorsque l'on émulait un CPU. J'y reviendrai probablement quand je serai plus expériementé mais ce n'est pas ce qu'il me fallait pour débuter. L'auteur a justement fait une présentation &lt;a href="https://www.youtube.com/watch?v=sDtQaO5_SOw"&gt;How to lean Rust&lt;/a&gt; qui donne des bonnes pistes pour débuter et démystifier la complexité du langage.&lt;/p&gt;
  284. &lt;p&gt;Maintenant que l'Advent of Code est (presque) terminé, j'ai également acheté &lt;a href="https://www.zero2prod.com/"&gt;Zero To Production In Rust&lt;/a&gt;. Dans ce livre, l'on essaye de construire un système de newsletter complet en Rust, en insistant sur l'aspect &lt;em&gt;production&lt;/em&gt; du développement. Chaque chapitre ajoute une nouvelle couche (framework web, base de donnée, logs,...) avec un prototype fonctionel à chaque étape. Le tout avec une approche &lt;a href="https://fr.wikipedia.org/wiki/Test_driven_development"&gt;Test-Driven Development&lt;/a&gt; qui change des tutoriels habituels. Assez rapidement, l'on divise notre projet en plusieurs fichiers et l'on a réellement l'impression de travailler sur un projet maintenable et pas un long script. On ne débute pas vraiment de zéro mais pluôt 0,5, de nouveau gardez le Rust Book à portée de main… Pour réaliser ce projet, l'on utilise de nombreux &lt;a href="https://crates.io/"&gt;crates&lt;/a&gt; avec lesquels il faut se familliariser, ce qui complexifie encore l'étendue du langage à maitriser.&lt;/p&gt;
  285. &lt;p&gt;Une fois passés les premiers jours à se battre contre le compilateur, j'ai vite apprécié ce langage, certes exigeant mais aussi gratifiant. Lors de l'Advent of Code, c'était assez agréable de voir que régulièrement, une fois que j'avais résolu toutes les erreurs du compilateur, j'obtenais la bonne solution directement. Je reste un grand fan de Python mais je comprends pourquoi le Rust est si populaire et j'essayerai définitivement de l'utiliser dans de prochains projets.&lt;/p&gt;
  286. &lt;figure&gt;
  287.  &lt;a href="https://www.flickr.com/photos/qwertyuiop/2364689808"&gt;&lt;img src="https://mart-e.be/images/2023/cute-crab.jpg"/&gt;&lt;/a&gt;
  288. &lt;/figure&gt;</content><category term="Uncategorized"></category><category term="rust"></category><category term="programmation"></category></entry><entry><title>Remise à neuf d'une Olivetti Lettera 32</title><link href="https://mart-e.be/2023/10/remise-a-neuf-dune-olivetti-lettera-32" rel="alternate"></link><published>2023-10-31T07:59:00+01:00</published><updated>2023-10-31T13:48:00+01:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-10-31:/2023/10/remise-a-neuf-dune-olivetti-lettera-32</id><summary type="html">&lt;p&gt;J'ai récemment lu &lt;a href="https://typewriterrevolution.com/"&gt;The Typewriter Revolution&lt;/a&gt; de Richard Polt. Je ne recommande pas du tout ce livre : arrivé à la moitié, j'avais déjà récupéré une machine à écrire dans un …&lt;/p&gt;</summary><content type="html">&lt;p&gt;J'ai récemment lu &lt;a href="https://typewriterrevolution.com/"&gt;The Typewriter Revolution&lt;/a&gt; de Richard Polt. Je ne recommande pas du tout ce livre : arrivé à la moitié, j'avais déjà récupéré une machine à écrire dans un grenier. La lecture finie, je m'étais inscrit à &lt;a href="https://nanowrimo.org/"&gt;NaNoWriMo&lt;/a&gt; et j'avais forcé mon épouse à regarder &lt;a href="https://californiatypewritermovie.com/"&gt;California Typewriter&lt;/a&gt; avec moi.&lt;/p&gt;
  289. &lt;p&gt;Cette introduction pour expliquer comment je me suis retrouvé en possession d'une Olivetti Lettera 32 de 1970 (merci &lt;a href="https://typewriterdatabase.com/olivetti.56.typewriter-serial-number-database"&gt;The Typewriter Database&lt;/a&gt; pour la datation) ayant appartenu à ma grand-mère qui l'a utilisée jusqu'au milieu des années 80. Étant plus familier de la souris que de la machine à écrire, voici les problèmes que j'ai rencontré et les découvertes que j'ai faites pour les résoudre :&lt;/p&gt;
  290. &lt;h2&gt;Retour à la ligne&lt;/h2&gt;
  291. &lt;p&gt;Emblématique des machines à écrire méchaniques, à la fin d'une ligne, une petite cloche sonne indiquant qu'il ne nous reste que quelques lettres avant la marge. On passe à la ligne en tirant le levier qui entraine le chariot au début de la page.&lt;/p&gt;
  292. &lt;p&gt;Ce levier tombait négligemment quand j'ai reçu la machine, il suffisait de resserer la vis pour régler ce problème.&lt;/p&gt;
  293. &lt;figure&gt;
  294.   &lt;img src="https://mart-e.be/images/2023/olivetti-levier.jpg"/&gt;&lt;/a&gt;
  295. &lt;/figure&gt;
  296.  
  297. &lt;h2&gt;Nettoyage&lt;/h2&gt;
  298. &lt;p&gt;Avant d'arriver chez moi, la machine avait été utilisée quelques années et puis en avait passé de nombreuses autres dans un grenier. Un bon nettoyage ne faisait pas de tort. Si les vielles machines peuvent parfois manquer de graisse, ce n'était pas le cas ici. J'ai commencé avec un bon coup de spray d'air comprimé pour dégager tous les cheveux et autres crasses accumulées dans les interstices en faisant attention de ne pas chasser les mini ressorts.&lt;/p&gt;
  299. &lt;p&gt;Comme avec une chaine de vélo, avec le temps, la graisse accumule les poussières et encrasse la machine. J'ai utilisé un pinceau, des cotons tiges (beaucoup) et de l'essence de nettoyage pour nettoyer un peu partout. Cela prend du temps mais vaut la peine. Attention de ne pas mettre d'essence de nettoyage sur le cylindre qui pourrait abimer le caoutchouc.&lt;/p&gt;
  300. &lt;figure&gt;
  301.  &lt;img src="https://mart-e.be/images/2023/olivetti-sale.jpg"/&gt;&lt;/a&gt;
  302.  &lt;figcaption&gt;miam&lt;/figcaption&gt;
  303. &lt;/figure&gt;
  304.  
  305. &lt;h2&gt;Le ruban&lt;/h2&gt;
  306. &lt;p&gt;Même si j'ai été impressionné de voir qu'il y avait encore de l'encre 40 ans plus tard, il n'en restait pas suffisamment pour éviter un remplacement du ruban. Contrairement aux imprimantes, la dimension des rubans est standard pour la majorité des machines. La bobine est spécifique mais l'on peut facilement transférer un ruban d'une bobine à une autre.&lt;/p&gt;
  307. &lt;p&gt;En principe, lorsque que l'on presse une touche, un axe entraine la bobine vide qui va enrouler le ruban. L'autre bobine n'est pas retenue et déroule progressivement son ruban. Une fois arrivé au bout du rouleau, un petit levier permet d'inverser le sens et on tire le ruban dans l'autre sens. On peut ainsi faire de nombreux passages avec un même ruban avant de se soucier de manquer d'encre.&lt;/p&gt;
  308. &lt;p&gt;Une particularité des machines Olivetti est qu'elles possèdent une vis de serrage pour que la bobine se fixe sur l'axe, sans cela la bobine tourne fou. C'est après avoir regardé des vidéos youtube que j'ai réalisé que ces vis manquaient chez moi et que la bobine présente n'était pas une bobine Olivetti pouvant accueillir cette vis (à se demander comment ils ont utilisé cette machine avant).&lt;/p&gt;
  309. &lt;p&gt;Par chance, ce n'est pas les amateurs de machine à écrire qui manquent. J'ai pu commander un nouveau rouleau chez &lt;a href="https://bsietypewriters.com/"&gt;BSIE Typewriter&lt;/a&gt; à Nice et des vis chez &lt;a href="https://www.machineaecrire.fr/"&gt;machineaecrire.fr&lt;/a&gt; à Aix en Provence (ça manque cruellement de vendeurs belges tout ça). Tous très rapides à répondre à mes messages.&lt;/p&gt;
  310. &lt;p&gt;Le placement du ruban n'est pas très difficile si l'on regarde les nombreuses photos et vidéos en ligne expliquant le placement exact.&lt;/p&gt;
  311. &lt;figure&gt;
  312.  &lt;img src="https://mart-e.be/images/2023/olivetti-ruban.jpg"/&gt;
  313. &lt;/figure&gt;
  314.  
  315. &lt;h2&gt;Alignement des majuscules&lt;/h2&gt;
  316. &lt;p&gt;Chaque touche permet de faire deux caractères différents (majuscule et minuscule pour les lettres). Lorsque que l'on appuie sur la touche majuscule, le segment sur lequel les lettres sont fixées descend (la Lettera 32 est de type &lt;em&gt;segment shift&lt;/em&gt;, en opposition à d'autres modèles de type &lt;em&gt;carriage shift&lt;/em&gt;) et c'est maintenant le haut de la barre de saisie qui va frapper sur le cylindre et laisser une marque. Vous comprenez maintenant pourquoi la touche majuscule s'appelle &lt;em&gt;Shift&lt;/em&gt; sur votre clavier.&lt;/p&gt;
  317. &lt;p&gt;Dans mon cas, les majuscules et les minuscules n'étaient pas très bien alignées, les majuscules étant légèrement trop hautes. Presser la touche majuscule ne descendait donc pas suffisamment le segment.&lt;/p&gt;
  318. &lt;p&gt;Ce réglage est différent sur chaque machine mais j'ai trouvé &lt;a href="https://imgur.com/a/5YvlLVb"&gt;cette série de photos&lt;/a&gt; montrant exactement où ajuster cela sur la Lettera 32. Pour decendre les majuscules, il me fallait régler l'écrou de gauche. Pour descendre les minuscules (ou remonter les majuscules, question de point de vue), c'est celui de droite.&lt;/p&gt;
  319. &lt;p&gt;Le plus compliqué a été de trouver un outil adéquat. J'ai finalement retrouvé un embout hexagonal M5.0 dans mon kit de tournevis de précision avec un bras d'extension. Je ne vais pas forcément vous recommander mon kit car il n'est pas de grande qualité mais il en existe des dizaines sur internet à tous les prix (j'avais payé 12€ sur Amazon il y a 6 ans).&lt;/p&gt;
  320. &lt;figure&gt;
  321.  &lt;img src="https://mart-e.be/images/2023/olivetti-majuscules.jpg"/&gt;
  322.  &lt;figcaption&gt;Quelques essais et erreurs pour trouver le bon réglage&lt;/figcaption&gt;
  323. &lt;/figure&gt;
  324.  
  325. &lt;h2&gt;Mais au fond, pour faire quoi ?&lt;/h2&gt;
  326. &lt;p&gt;Je suis loin de me considérer expert en la matière mais il est assez gratifiant de voir qu'en passant un peu de temps, il est tout à fait possible de retaper une machine à écrire. On peut facilement comprendre son fonctionnement en observant les différents méchanismes ainsi que les très nombreuses photos et vidéos faites par des passionnés. Et passionnés, il y a. Il suffit de se rendre sur &lt;a href="https://www.reddit.com/r/typewriters/"&gt;/r/typewriters&lt;/a&gt; sur Reddit pour trouver une communauté prête à aider à restaurer les vielles machines sorties du grenier.&lt;/p&gt;
  327. &lt;p&gt;A l'ère du tout dématérialisé, le papier prend paradoxalement plus d'importance. Envoyez une lettre dactylographiée (ou calligraphiée) à un proche et elle aura bien plus d'importance qu'un email. Aussi bien pour vous que pour la personne qui la recevera.&lt;/p&gt;
  328. &lt;p&gt;Sur un ordinateur, j'ai du mal à me concentrer : je fais toujours 10 choses en même temps, j'ai actuellement 575 onglets ouverts sur deux navigateurs différents, je recois continuellement des notifications de trop nombreuses applications de messagerie ou réseaux sociaux. Une machine à écrire, ça ne fait que produire des mots, il n'y a même pas de touche Supprimer ! Il faut réfléchir avant de presser une touche, et ça, ça change tout.&lt;/p&gt;
  329. &lt;p&gt;Si vous avez encore un doute, allez lire &lt;em&gt;The Typewriter Revolution&lt;/em&gt; mais je vous aurai prévenu...&lt;/p&gt;</content><category term="Uncategorized"></category><category term="machine à écrire"></category><category term="réparation"></category></entry><entry><title>Il ne nous restera plus qu'à peindre l'herbe en vert</title><link href="https://mart-e.be/2023/09/peindre-lherbe-en-vert" rel="alternate"></link><published>2023-09-29T15:49:00+02:00</published><updated>2023-09-29T15:49:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-09-29:/2023/09/peindre-lherbe-en-vert</id><summary type="html">&lt;p&gt;Il y a peu, une commune du sud de la France s'est faite remarquer pour avoir peint son gazon en vert.&lt;/p&gt;
  330. &lt;p&gt;&lt;a href="https://france3-regions.francetvinfo.fr/provence-alpes-cote-d-azur/alpes-maritimes/cannes/cette-commune-des-alpes-maritimes-peint-le-gazon-desseche-par-la-canicule-pour-le-rendre-vert-2817461.html"&gt;Cette commune des Alpes-Maritimes peint le gazon desséché par …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;Il y a peu, une commune du sud de la France s'est faite remarquer pour avoir peint son gazon en vert.&lt;/p&gt;
  331. &lt;p&gt;&lt;a href="https://france3-regions.francetvinfo.fr/provence-alpes-cote-d-azur/alpes-maritimes/cannes/cette-commune-des-alpes-maritimes-peint-le-gazon-desseche-par-la-canicule-pour-le-rendre-vert-2817461.html"&gt;Cette commune des Alpes-Maritimes peint le gazon desséché par la canicule pour le rendre vert&lt;/a&gt;&lt;/p&gt;
  332. &lt;p&gt;Le titre peut faire rire mais, comme d'habitude, si on lit l'article, la réalité est plus nuancée. Le gazon est toujours vivant mais jauni, la peinture est à base d'algues et procurerait des nutriments, l'aidant à résister à la chaleur. Lorsque l'on met en place une solution, il faut regarder ce qu'elle remplace. Dans ces régions chaudes, l'eau est une denrée précieuse et si l'on peut éviter de la gaspiller à arroser du gazon (je vous regarde, les golfs !), c'est une bonne chose. Certaines villes pourraient décider de remplacer le gazon par des galets ou du gazon synthétique, ce qui serait pire.&lt;/p&gt;
  333. &lt;figure&gt;
  334.  &lt;a href="https://nitter.net/SebastienLeroy_/status/1684120036078936064"&gt;&lt;img src="https://mart-e.be/images/2023/peindre-rond-point.jpg"/&gt;&lt;/a&gt;
  335.  &lt;figcaption&gt;Un greenwashing très littéral&lt;/figcaption&gt;
  336. &lt;/figure&gt;
  337.  
  338. &lt;p&gt;Autre exemple qui a fait bien rire les gens : pour avoir de l'ombre dans un nouveau quartier de Bordeaux, la ville installe des arbres en métal.&lt;/p&gt;
  339. &lt;p&gt;&lt;a href="https://www.20minutes.fr/culture/4041427-20230615-bordeaux-lutter-contre-rechauffement-ville-microforet-aluminium-servira-ombriere"&gt;Bordeaux : Pour lutter contre le réchauffement en ville, une microforêt d’aluminium servira d’ombrière&lt;/a&gt;&lt;/p&gt;
  340. &lt;p&gt;"Vous savez ce qui fait aussi de l'ombre ? Des arbres !" crient les gens qui n'ont pas lu l'article. La zone se trouve au-dessus d'un parking et il n'est pas possible de planter des arbres vivants à cet endroit. Il y en a quelques-uns aux alentours cependant.&lt;/p&gt;
  341. &lt;figure&gt;
  342.  &lt;a href="https://www.devisubox.com/dv/dv.php5?pgl=Project/interface&amp;sRef=7AHU5USAW"&gt;&lt;img src="https://mart-e.be/images/2023/bordeaux-belvedere.webp"/&gt;&lt;/a&gt;
  343. &lt;/figure&gt;
  344.  
  345. &lt;p&gt;Si, dans les deux cas, l'action n'est pas aussi stupide que le titre le laisse croire, elle crie pourtant par sa façon de réagir plutôt que d'anticiper le dérèglement climatique. On soigne les symptômes plutôt que s'atteler à la cause du problème.&lt;/p&gt;
  346. &lt;p&gt;Peut-être que Mandelieu-La Napoule devrait repenser son aménagement un peu plus en profondeur pour éviter que du gazon jaune au milieu d'un rond-point soit un problème. Tester d'autres variétés plus résistantes à la sècheresse, faire un pré fleuri, planter des arbres,… Si arroser par temps de sècheresse est une absurdité, peindre l'herbe chaque année n'est pas non plus un modèle d'adaptation.&lt;/p&gt;
  347. &lt;p&gt;Dans le cas de Bordeaux, est-ce que ce parking sous-terrain en plein centre-ville est réellement nécessaire ? La volonté d'amener les voitures au plus proche de leur point de destination participe à congestionner les rues et entretient le &lt;em&gt;tout voiture&lt;/em&gt;. &lt;a href="https://www.bloomberg.com/news/articles/2019-03-29/amsterdam-s-plan-to-eliminate-11-000-parking-spots"&gt;Amsterdam supprime 1500 places de parking par an&lt;/a&gt;, &lt;a href="https://www.telegraph.co.uk/world-news/2023/09/19/hanover-reveals-plans-banish-cars-inner-city-streets/"&gt;Hanovre va supprimer quasiment toutes les places de parking du centre-ville&lt;/a&gt;. On ne devient pas une ville pro-piétons et cyclistes sans réduire la place disponible des voitures.&lt;/p&gt;
  348. &lt;p&gt;Tout cela est évidemment plus difficile, ça ne se fera pas sans investissement ni sans froisser quelques personnes. Cela prend plus de temps, ce même temps qui commence cruellement à manquer. Le changement climatique est de plus en plus visible et il faudra s'y adapter. Au plus tôt l'on commencera, au plus facile sera la transition. A force de soigner les symptômes plutôt que de les anticiper, il ne nous restera plus d'autres choix que de peindre l'herbe en vert…&lt;/p&gt;
  349. &lt;figure&gt;
  350.  &lt;a href="https://www.flickr.com/photos/library_of_congress/51931817183/"&gt;&lt;img src="https://mart-e.be/images/2023/terre-seche.jpg"/&gt;&lt;/a&gt;
  351. &lt;/figure&gt;</content><category term="Uncategorized"></category><category term="humeur"></category><category term="écologie"></category></entry><entry><title>Actions personnalisées dans Nautilus</title><link href="https://mart-e.be/2023/09/actions-personnalisees-dans-nautilus" rel="alternate"></link><published>2023-09-04T20:16:00+02:00</published><updated>2023-09-04T20:16:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-09-04:/2023/09/actions-personnalisees-dans-nautilus</id><summary type="html">&lt;p&gt;Sur mon ordinateur, j'utilise le système Archlinux avec GNOME. En bon informaticien feignant, j'ai automatisé quelques actions répétitives. Par exemple, lorsque je veux partager une photo prise avec mon téléphone …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Sur mon ordinateur, j'utilise le système Archlinux avec GNOME. En bon informaticien feignant, j'ai automatisé quelques actions répétitives. Par exemple, lorsque je veux partager une photo prise avec mon téléphone, je veux&lt;/p&gt;
  352. &lt;ol&gt;
  353. &lt;li&gt;réduire sa taille à max 1000px&lt;/li&gt;
  354. &lt;li&gt;enlever les métadata&lt;/li&gt;
  355. &lt;li&gt;sauvegarder le résultat dans &lt;code&gt;/tmp&lt;/code&gt;&lt;/li&gt;
  356. &lt;/ol&gt;
  357. &lt;p&gt;Dans Nautilus, le gestionnaire de défaut de GNOME, il est assez facile de créer de nouvelles actions contextuelles, il suffit de mettre un script exécutable dans le dossier &lt;code&gt;~/.local/share/nautilus/scripts/&lt;/code&gt;.&lt;/p&gt;
  358. &lt;p&gt;Dans mon exemple ci-dessus, mon script utilisant ffmpeg ressemble à ceci :&lt;/p&gt;
  359. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/bash&lt;/span&gt;
  360. &lt;span class="c1"&gt;# scale down to max 1000px and remove EXIF data&lt;/span&gt;
  361.  
  362. &lt;span class="nv"&gt;PRE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;
  363. &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/tmp&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;then&lt;/span&gt;
  364. &lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;# if already in /tmp, add prefix to keep original file&lt;/span&gt;
  365. &lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;PRE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;copy-&amp;#39;&lt;/span&gt;
  366. &lt;span class="k"&gt;fi&lt;/span&gt;
  367.  
  368. &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;FILE_PATH&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;do&lt;/span&gt;
  369. &lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nv"&gt;FILENAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;FILE_PATH&lt;/span&gt;&lt;span class="p"&gt;##*/&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  370. &lt;span class="w"&gt;    &lt;/span&gt;convert&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$FILE_PATH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-strip&lt;span class="w"&gt; &lt;/span&gt;-resize&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;1000x1000&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/tmp/&lt;span class="nv"&gt;$PRE$FILENAME&lt;/span&gt;
  371. &lt;span class="k"&gt;done&lt;/span&gt;
  372. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  373.  
  374. &lt;p&gt;Je le sauve dans un fichier &lt;code&gt;Resize to 1000px&lt;/code&gt; dans mon dossier en n'oubliant pas de le rendre exécutable et on peut y accéder via un clic droit :&lt;/p&gt;
  375. &lt;figure&gt;
  376.  &lt;img src="https://mart-e.be/images/2023/nautilus-scripts.png"/&gt;
  377. &lt;/figure&gt;
  378.  
  379. &lt;p&gt;Le wiki de Ubuntu donne un peu d'explications et des exemples de code plus avancés.&lt;/p&gt;
  380. &lt;p&gt;&lt;a href="https://help.ubuntu.com/community/NautilusScriptsHowto"&gt;NautilusScriptsHowto | Ubuntu Community Help Wiki&lt;/a&gt;&lt;/p&gt;
  381. &lt;p&gt;Si vous essayez d'écrire votre propre script, vous rencontrerez surement le besoin de débugger votre script. Pour pouvoir afficher les erreurs ou messages de log, il suffit de lancer Nautilus en ligne de commande et de truffer votre code des habituels &lt;code&gt;echo "coucou123"&lt;/code&gt;.&lt;/p&gt;
  382. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;nautilus&lt;span class="w"&gt; &lt;/span&gt;--no-desktop
  383. **&lt;span class="w"&gt; &lt;/span&gt;Message:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;:11:08.058:&lt;span class="w"&gt; &lt;/span&gt;Connecting&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;org.freedesktop.Tracker3.Miner.Files
  384. coucou123
  385. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="Uncategorized"></category><category term="gnome"></category><category term="script"></category><category term="linux"></category><category term="bash"></category></entry><entry><title>Partagez-nous votre avis sur votre expérience</title><link href="https://mart-e.be/2023/08/partagez-nous-votre-avis-sur-votre-experience" rel="alternate"></link><published>2023-08-07T17:02:00+02:00</published><updated>2023-08-07T17:02:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-08-07:/2023/08/partagez-nous-votre-avis-sur-votre-experience</id><summary type="html">&lt;blockquote&gt;
  386. &lt;p&gt;&lt;em&gt;Merci de votre visite sur mart-e.be, avant la lecture de votre article, pourriez-vous prendre 5 minutes pour nous donner votre avis concernant votre expérience de visite ?&lt;/em&gt;&lt;/p&gt;
  387. &lt;/blockquote&gt;
  388. &lt;p&gt;Ces dernières années …&lt;/p&gt;</summary><content type="html">&lt;blockquote&gt;
  389. &lt;p&gt;&lt;em&gt;Merci de votre visite sur mart-e.be, avant la lecture de votre article, pourriez-vous prendre 5 minutes pour nous donner votre avis concernant votre expérience de visite ?&lt;/em&gt;&lt;/p&gt;
  390. &lt;/blockquote&gt;
  391. &lt;p&gt;Ces dernières années, une tendance, pourtant déjà bien installée, s'est encore intensifiée: le fait de nous demander d'évaluer tout et (surtout) n'importe quoi à tout bout de champ.&lt;/p&gt;
  392. &lt;p&gt;Dès que l'on achète quelque chose (en ligne ou non), recommanderiez-vous cet article ? À la sortie d'une visite chez le garagiste : comment était votre expérience ? Dès que je sors d'une toilette d'aire d'autoroute, le sentiment du travail accompli, on me demande de laisser une note. Ce n'est pas que je n'aime pas vos petits boutons avec des sourires mais, écoutez, on ne se connait pas, mon expérience là-bas ne regarde que moi et mon proctologue.&lt;/p&gt;
  393. &lt;blockquote&gt;
  394. &lt;p&gt;&lt;em&gt;Pourriez-vous donner une note sur cinq concernant le paragraphe ci-dessus ? Sachez que les paragraphes avec quatre étoiles ou moins seront moins mis en avant. Toute l'équipe de mart-e.be vous remercie de votre confiance.&lt;/em&gt;&lt;/p&gt;
  395. &lt;/blockquote&gt;
  396. &lt;p&gt;On répète souvent la célèbre phrase de &lt;a href="https://fr.wikipedia.org/wiki/Peter_Drucker"&gt;Peter Drucker&lt;/a&gt; "&lt;em&gt;You can't manage what you can't measure&lt;/em&gt;". Cette phase, citée par tous les livres de management bullshits, justifie d'harceler les utilisateurs lors de la course à la performance.&lt;/p&gt;
  397. &lt;p&gt;À force de se focaliser sur le mesurable, on sous-estime l'importance de ce qui ne l'est pas. Or, beaucoup de choses importantes ne peuvent être mesurées. On ne peut pas mesurer le bonheur (même si &lt;a href="/post/2011/09/01/bonheur-national-brut"&gt;certains essayent&lt;/a&gt;), on ne peut pas mesurer la nature, on ne peut pas mesurer la qualité des relations humaines. C'est à cause de pensées comme celle de Peter Drucker que l'on se retrouve dans la situation de merde dans laquelle nous sommes. Pendant des décennies, on s'est focalisé sur des métriques monétaires comme le PIB, négligeant complètement ce qui ne rentre pas dans l'équation, tel que l'apport des écosystèmes ou le travail non-rémunéré.&lt;/p&gt;
  398. &lt;blockquote&gt;
  399. &lt;p&gt;&lt;em&gt;Il semblerait que vous n'ayez pas répondu à notre demande de sondage. Pourriez-vous nous donner votre opinion, cela ne prendra que peu de temps et nous aide beaucoup dans notre objectif d'amélioration continue.&lt;/em&gt;&lt;/p&gt;
  400. &lt;/blockquote&gt;
  401. &lt;p&gt;Si le but premier était d'améliorer la qualité du service (les plus cyniques diront pour détecter les tire-au-flanc), cette lubie à l'évaluation a, à force, rendu insignifiants les scores. Désormais, un 4/5 sera considéré "moyen" et un 3/5 fait franchement tache. Alors qu'un 5/5 devrait signifier la perfection inatteignable, ce sera la note qu'on laisse si tout s'est bien passé, pour ne pas vexer notre interlocuteur.&lt;/p&gt;
  402. &lt;p&gt;Je ne peux m'empêcher de penser à l'épisode &lt;a href="https://fr.wikipedia.org/wiki/Chute_libre_(Black_Mirror)"&gt;Chute libre&lt;/a&gt; de la géniale série Black Mirror. Dans cet épisode, l’héroïne enchaîne les politesses à outrance et se plie en quatre pour obtenir l'approbation de tous, dans le seul but d'augmenter sa note, assez banale, de 4,2/5.&lt;/p&gt;
  403. &lt;figure&gt;
  404.    &lt;img src="https://mart-e.be/images/2023/black-mirror-nosedive-grey.webp"/&gt;
  405.    &lt;figcaption&gt;&lt;em&gt;"Toilettes impec, 5/5"&lt;/em&gt;&lt;/figcaption&gt;
  406. &lt;/figure&gt;
  407.  
  408. &lt;p&gt;Lorsque j'ai regardé cet épisode, en 2016, je l'avais trouvé glaçant (comme d'habitude avec Black Mirror). On faisait des parallèles avec le système de crédit social en Chine. Pauvres Chinois à qui on imposait ce système dystopien... 7 ans plus tard, j'ai une autre lecture, beaucoup plus proche de nous. Et si, finalement, on y était aussi, d'une façon plus insidieuse ? À force de vouloir maximiser les évaluations, on perd toute authenticité. On sait que les notes ne veulent plus rien dire, qu'elles sont bourrées de faux avis ou hors propos, mais on ne peut s'empêcher de les lire dès qu'on cherche un resto, un hôtel ou un mixeur.&lt;/p&gt;
  409. &lt;p&gt;Il y a quelques années, le site Medieval4i faisait débat car il permettait de donner une note à un médecin. On avait, à raison, crié au scandale, les dérives étant assez faciles à voir (court-termisme et médecine ne faisant pas bon ménage). Le site n'a pas fait long-feu et n'existe plus (on ne le regrettera pas). Cependant, il suffit de faire une recherche sur Google Maps pour voir que cette pratique existe depuis longtemps. Désolé, Dr Marie-Claire, grâce à un avis, tu viens de tomber en bas de la liste de priorité. Et, franchement, Dr Gaetane, je n'irai te voir que si tous les autres sont occupés et que je suis à l'article de la mort...&lt;/p&gt;
  410. &lt;figure&gt;
  411.    &lt;a href="https://mart-e.be/images/2023/gmaps-medecin-grey.png"&gt;&lt;img src="https://mart-e.be/images/2023/gmaps-medecin-grey.png"/&gt;&lt;/a&gt;
  412. &lt;/figure&gt;
  413.  
  414. &lt;p&gt;Est-ce que l'on peut sortir de ce système malsain ? Ce n'est probablement pas en laissant des mauvaises notes à tout ceux qui vous en demande (ce que je fais, néanmoins, avec grand plaisir) que l'on va changer ce système. Autant je tire une certain satisfaction à envoyer des mails d'insultes au support de Spotify, autant je ne m'attends pas à ce qu'ils changent suite à mes messages. J'ai bien compris maintenant que mon avis reste minoritaire.&lt;/p&gt;
  415. &lt;p&gt;Dans son dernier article, &lt;a href="https://ploum.net/2023-08-01-splitting-the-web.html"&gt;Ploum parlait&lt;/a&gt; d'un internet de plus en plus divisé. D'un coté, l'énorme web commercial avec ses sollicitations continues et de l'autre, l'internet lent et plus petit, avec des alternatives comme le &lt;a href="https://ar.al/2020/08/07/what-is-the-small-web/"&gt;Small Web&lt;/a&gt; ou &lt;a href="https://gemini.circumlunar.space/"&gt;Gemini&lt;/a&gt;. De plus en plus, ces deux mondes ne se comprennent ni ne se parlent plus. Ces demandes d'avis ne sont qu'un des symptômes de cet internet bruyant qui m'épuise. Je suis heureux de publier mes réflexions sur un blog minimaliste lu seulement par une poignée de visiteurs me suivant via un &lt;a href="/feed"&gt;flux RSS&lt;/a&gt;. Si vous avez un avis à me donner, ne me laissez pas une note, &lt;a href="/about"&gt;contactez moi&lt;/a&gt;.&lt;/p&gt;
  416. &lt;p&gt;Mais, cela ne s'applique pas qu'à internet. Le vendeur de la Fnac, le commercial de chez Audi et les toilettes d'aires d'autoroute appartiennent au monde physique mais font surtout partie de grands groupes commerciaux et agissent dans la même logique d'optimisation capitaliste qu'un Uber ou un Amazon. Votre épicier, restaurateur ou réparateur de vélo de quartier ne va pas vous demander de lui laisser une note, il n'en a pas besoin, il sait si vous êtes satisfait ou non.&lt;/p&gt;
  417. &lt;blockquote&gt;
  418. &lt;p&gt;&lt;em&gt;Voulez-vous vous abonner à notre newsletter ?&lt;/em&gt;&lt;/p&gt;
  419. &lt;/blockquote&gt;</content><category term="Uncategorized"></category><category term="humeur"></category><category term="avis"></category></entry><entry><title>Librel, le réseau des librairies indépendantes</title><link href="https://mart-e.be/2023/07/librel-le-reseau-des-librairies-independantes" rel="alternate"></link><published>2023-07-21T10:03:00+02:00</published><updated>2023-07-21T10:03:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-07-21:/2023/07/librel-le-reseau-des-librairies-independantes</id><summary type="html">&lt;p&gt;&lt;a href="https://www.librel.be/"&gt;Librel.be&lt;/a&gt; existe, maintenant, depuis 10 ans mais reste encore bien peu connu. Et pourtant, il est tellement pratique. Créé en 2014 par l'association &lt;a href="https://www.leslibrairiesindependantes.be/"&gt;Les Librairies Indépendantes&lt;/a&gt;, c'est ma plateforme …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://www.librel.be/"&gt;Librel.be&lt;/a&gt; existe, maintenant, depuis 10 ans mais reste encore bien peu connu. Et pourtant, il est tellement pratique. Créé en 2014 par l'association &lt;a href="https://www.leslibrairiesindependantes.be/"&gt;Les Librairies Indépendantes&lt;/a&gt;, c'est ma plateforme de choix lorsque je dois acheter un livre.&lt;/p&gt;
  420. &lt;p&gt;On ne va pas vous réexpliquez pourquoi il faut éviter Amazon. Normalement, c'est comme la toxicité de la cigarette : tout le monde est au courant à ce stade. Cependant, on continue d'y retourner souvent par facilité. S'il y a pourtant un produit où l'argument ne tient pas, c'est bien les livres.&lt;/p&gt;
  421. &lt;p&gt;Lorsque j'achète un livre, il y a un scénario type :&lt;/p&gt;
  422. &lt;ul&gt;
  423. &lt;li&gt;Bon, on amène quoi comme cadeau pour l'anniversaire de Josiane ? Un livre ?&lt;/li&gt;
  424. &lt;li&gt;Il a l'air cool ce bouquin dont Gertrude parle.&lt;/li&gt;
  425. &lt;li&gt;Oh, Robert de la chaine Macramé4ever a sorti un livre !&lt;/li&gt;
  426. &lt;/ul&gt;
  427. &lt;p&gt;Si dans les deux derniers cas, il y a rarement urgence, dans le premier, j'ai la fâcheuse tendance à me poser cette question la veille, même pour Amazon Prime c'est trop tard !&lt;/p&gt;
  428. &lt;figure&gt;
  429.  &lt;a href="https://www.librel.be/"&gt;&lt;img src="https://mart-e.be/images/2023/macrame.png"/&gt;&lt;/a&gt;
  430. &lt;/figure&gt;
  431.  
  432. &lt;p&gt;Librel reprend le catalogue des librairies membres (&lt;a href="https://www.leslibrairiesindependantes.be/nos-librairies/annuaire-des-libraires"&gt;77 actuellement&lt;/a&gt;) et permet de savoir facilement où il se trouve actuellement en stock. Si je suis pressé, je cherche une librairie dans laquelle je peux me rendre le jour même. Sinon, je peux le commander pour qu'il arrive près de chez moi. Vu que j'ai la chance de vivre dans une zone relativement dense de Wallonie, il y a deux librairies du réseau proches de chez moi.&lt;/p&gt;
  433. &lt;p&gt;J'ai encore pu tester le système il y a quelques jours :&lt;/p&gt;
  434. &lt;ol&gt;
  435. &lt;li&gt;21h : je cherche un livre, il est disponible pas très loin, je le réserve&lt;/li&gt;
  436. &lt;li&gt;J+1 9h : je reçois un mail de confirmation de la libraire&lt;/li&gt;
  437. &lt;li&gt;10h : je me rends à la librairie en vélo&lt;/li&gt;
  438. &lt;li&gt;11h : je lis le livre dans le jardin avec une tasse de café&lt;/li&gt;
  439. &lt;/ol&gt;
  440. &lt;figure&gt;
  441.  &lt;img src="https://mart-e.be/images/2023/librel-mail.png"/&gt;&lt;/a&gt;
  442. &lt;/figure&gt;
  443.  
  444. &lt;p&gt;Je ne vois pas comment on pourrait faire plus simple. Le tout en donnant mon argent à un commerce que j'ai envie de voir perdurer. Dans le cas où le livre n'est pas en stock, les étapes sont les mêmes mais j'irai le chercher à J+10 plutôt que J+1. C'est rarement un problème.&lt;/p&gt;
  445. &lt;p&gt;Ploum a très bien expliqué pourquoi la &lt;a href="https://ploum.net/2023-05-15-livraison-a-domicile.html"&gt;livraison à domicile est une fausse bonne idée&lt;/a&gt;. Il est plus facile pour moi de me rendre dans ma librairie de quartier à un horaire qui me convient que d'être bloqué à la maison parce qu'un livreur payé au lance-pierre va hypothétiquement passer et repartir si je ne lui ouvre pas la porte dans un délai de 12 secondes. Refuser Amazon, c'est aussi ne pas participer à l'exploitation des livreurs forcés à travailler à des cadences invivables.&lt;/p&gt;
  446. &lt;p&gt;Si vous préférez les ebooks, il vous proposera les livres en version électronique lorsque que c'est possible. Et, chose suffisamment rare pour être notée : la présence ou l'absence de DRM y est clairement mentionnée.&lt;/p&gt;
  447. &lt;p&gt;Point négatif : le catalogue est exclusivement en Français. N'hésitez pas à me contacter si vous avez des recommandations pour trouver facilement des livres physiques en anglais. J'utilise, actuellement, &lt;a href="https://www.bookfinder.com/"&gt;Bookfinder&lt;/a&gt; afin de dénicher des livres de deuxième main mais il appartient, malheureusement, à Amazon, une fois de plus.&lt;/p&gt;
  448. &lt;figure&gt;
  449.  &lt;a href="https://www.flickr.com/photos/mennonitechurchusa-archives/41870833081/"&gt;&lt;img src="https://mart-e.be/images/2023/livres-telephone.jpg"/&gt;&lt;/a&gt;
  450.  &lt;figcaption&gt;"Et ajoutez encore cet autre livre qui finira dans la pile à lire à ma droite"&lt;/figcaption&gt;
  451. &lt;/figure&gt;</content><category term="Uncategorized"></category><category term="livre"></category><category term="amazon"></category></entry><entry><title>ChatGPT n'est pas conçu pour dire la vérité</title><link href="https://mart-e.be/2023/07/chatgpt-ne-dit-pas-la-verite" rel="alternate"></link><published>2023-07-04T12:57:00+02:00</published><updated>2023-07-04T12:57:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-07-04:/2023/07/chatgpt-ne-dit-pas-la-verite</id><summary type="html">&lt;p&gt;Il y a peu, il y a eu un échange à mon boulot ressemblant à ceci :&lt;/p&gt;
  452. &lt;blockquote&gt;&lt;p&gt;
  453. - Je trouve pas comment exporter en PDF dans X, c'est où ?&lt;br/&gt;
  454. - Mais on peut …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;p&gt;Il y a peu, il y a eu un échange à mon boulot ressemblant à ceci :&lt;/p&gt;
  455. &lt;blockquote&gt;&lt;p&gt;
  456. - Je trouve pas comment exporter en PDF dans X, c'est où ?&lt;br/&gt;
  457. - Mais on peut pas exporter en PDF&lt;br/&gt;
  458. - ChatGPT m'a dit que oui&lt;br/&gt;
  459. - …
  460. &lt;/p&gt;&lt;/blockquote&gt;
  461.  
  462. &lt;p&gt;Et ce n'est pas uniquement mes charmants collègues : récemment, un avocat a utilisé des cas de jurisprudence inexistants dans sa plaidoirie lors d'un procès. Il avait utilisé ChatGPT pour étoffer ses arguments sans prendre la peine de les vérifier.&lt;/p&gt;
  463. &lt;p&gt;&lt;a href="https://reason.com/volokh/2023/05/27/a-lawyers-filing-is-replete-with-citations-to-non-existent-cases-thanks-chatgpt/"&gt;A Lawyer's Filing "Is Replete with Citations to Non-Existent Cases"—Thanks, ChatGPT?&lt;/a&gt;&lt;/p&gt;
  464. &lt;p&gt;&lt;a href="https://www.lesnumeriques.com/intelligence-artificielle/deux-avocats-americains-condamnes-pour-avoir-cru-les-elucubrations-de-chatgpt-n210837.html"&gt;Deux avocats américains condamnés pour avoir cru les élucubrations de ChatGPT&lt;/a&gt;&lt;/p&gt;
  465. &lt;p&gt;Si on s'intéresse deux minutes au fonctionnement de ChatGPT et de toutes ces LLM (&lt;a href="https://fr.wikipedia.org/wiki/Grand_mod%C3%A8le_de_langage"&gt;Large Language Model&lt;/a&gt;) dont on nous gave depuis des mois, on comprend pourquoi ce logiciel a produit des réponses &lt;a href="https://fr.wikipedia.org/wiki/Hallucination_(intelligence_artificielle)"&gt;hallucinées&lt;/a&gt;. Les LLM sont entraînées avec des énormes bases de textes dans le but de prédire la suite probable à une phrase. ChatGPT est votre clavier de smartphone qui vous suggère "tartiflette" après avoir tapé "j'aime la". Votre clavier mais avec des millions de fois plus de données d'apprentissage... et des millions d'heures de correction par des humains sous payés.&lt;/p&gt;
  466. &lt;p&gt;Si je tape "Quelle est la capitale de la Belgique ?", la réponse la plus probable est "Bruxelles" mais ChatGPT ne comprend pas le sens de la question. En effet, il n'a pas été consulter une base de données géographiques pour trouver la réponse, il a fait une supposition sur base de toutes les données qu'il a collectées et "Bruxelles" est la plus probable.&lt;/p&gt;
  467. &lt;p&gt;Mais que se passe-t-il si je lui demande quelque chose dont il n'a pas enregistré la réponse lors de son pillage de textes trouvés sur internet ? &lt;/p&gt;
  468. &lt;p&gt;Il va produire la réponse la plus probable, il va imaginer. &lt;/p&gt;
  469. &lt;p&gt;Si je demande "quelle est la différence entre des œufs de poule et de vache ?", il va me donner une réponse absurde, mais statistiquement plausible pour son modèle. Il va faire des suppositions sur la taille de l’œuf, son goût, etc. Il ne comprend pas les concepts d'"œuf", "poule" ou "vache". Et, encore moins, qu'une vache ne pond pas des œufs mais des reblochons.&lt;/p&gt;
  470. &lt;figure&gt;
  471.  &lt;a href="https://www.google.be/search?source=hp&amp;q=quelle%20est%20la%20diff%C3%A9rence%20entre%20des%20%C5%93ufs%20de%20poule%20et%20de%20vache%20%3F&amp;meta=&amp;aq=f&amp;aqi=g10&amp;aql=&amp;oq=&amp;gs_rfai="&gt;&lt;img src="https://mart-e.be/images/2023/oeufs-vache-google.png"/&gt;&lt;/a&gt;
  472.  &lt;figcaption&gt;Absurdités que Google va ensuite régurgiter sans se poser plus de questions&lt;/figcaption&gt;
  473. &lt;/figure&gt;
  474.  
  475. &lt;p&gt;Si j'ai un bouton "exporter en pdf" dans la partie A de mon application, lorsque mon collègue demande où se trouve ce bouton dans l'écran B, il va produire une réponse plausible (mais pourtant fausse).&lt;/p&gt;
  476. &lt;p&gt;On aime dire que ChatGPT est un menteur plein de mauvaise foi mais c'est anthropomorphiser ce logiciel. Il faut le considérer pour ce qu'il est réellement : un algorithme prédictif. Anthropomorphisme poussé par OpenAI qui l'a volontairement programmé pour répondre comme le ferait une personne, rendant encore plus crédible l'impression d'une conversation avec un expert (sous LSD).&lt;/p&gt;
  477. &lt;p&gt;OpenAI, Microsoft, Google, Facebook, toutes ces sociétés essayeront de vous faire croire que leurs logiciels permettent de donner des réponses justes à vos questions mais c'est un mensonge. Et elles en sont certainement conscientes (ou ne s'en préoccupent pas beaucoup).&lt;/p&gt;
  478. &lt;p&gt;Mais finalement, si l'algorithme donne une mauvaise prédiction, est-ce que ce n'est pas juste un manque de données qui sera bientôt comblé ?&lt;/p&gt;
  479. &lt;p&gt;Pour perfectionner l'illusion de compréhension par leurs algorithmes, ces sociétés se focalisent sur deux points :&lt;/p&gt;
  480. &lt;ul&gt;
  481. &lt;li&gt;l'augmentation du corpus de textes d'apprentissage&lt;/li&gt;
  482. &lt;li&gt;la supervision par des humains&lt;/li&gt;
  483. &lt;/ul&gt;
  484. &lt;p&gt;Dans une logique stéréotypée classique, c'est celui qui aura la plus grosse base de données qui donnera les meilleures réponses. Vraiment ? En augmentant la taille de l'échantillon, on va surtout tirer le résultat vers la moyenne. Entraînez votre IA avec les recettes de chefs reconnus. Ajoutez ensuite l'intégralité des recettes publiées sur marmiton. Dans quel cas est-ce que les suggestions de recettes seront de meilleure qualité ?&lt;/p&gt;
  485. &lt;p&gt;Comme le disait Dave Karpf, on va nous refiler des IA dans tous les sens qui ne produisent pas des résultats &lt;em&gt;satisfaisants&lt;/em&gt; mais des résultats &lt;em&gt;suffisants&lt;/em&gt;. Suffisamment dans la moyenne pour donner l'illusion. Suffisants pour déployer ce logiciel et se débarrasser de l'opérateur humain.&lt;/p&gt;
  486. &lt;p&gt;&lt;a href="https://davekarpf.substack.com/p/on-generative-ai-and-satisficing"&gt;On Generative AI and Satisficing | Dave Karpf&lt;/a&gt;&lt;/p&gt;
  487. &lt;blockquote&gt;
  488. &lt;p&gt;[I]t’s best to understand Generative AI tools as &lt;a href="https://twitter.com/davekarpf/status/1603021477049421825?lang=en"&gt;cliche-generators&lt;/a&gt;. The AI isn’t going to give you the &lt;em&gt;optimal&lt;/em&gt; Disney World itinerary; It’s going to give you basically the same trip that everyone takes. It isn’t going to recommend the ideal recipe for your tastes; it’s just going to suggest something that works…&lt;/p&gt;
  489. &lt;p&gt;Can a Generative AI produce a sitcom script? Yeah, it can. Will the script be any good? Meh. It will be, at best, average. Maybe it will be a creative kind of average, by remixing tropes from different genres (“Shakespeare in spaaaaaaaaace!”), but it’s still going to be little more than a rehash.&lt;/p&gt;
  490. &lt;/blockquote&gt;
  491. &lt;p&gt;À cela, vous ajoutez le fait que &lt;a href="https://www.nextinpact.com/article/71906/quand-chatgpt-est-utilise-par-crowd-workers-pour-entrainer-dautres-modeles-langage"&gt;les IA commencent à être entraînées avec du contenu généré par les IA&lt;/a&gt;, ce qui aura un effet boule de neige en tirant vers le bas la qualité de l'information.&lt;/p&gt;
  492. &lt;p&gt;Vient, alors, le deuxième point : &lt;a href="https://www.theverge.com/features/23764584/ai-artificial-intelligence-data-notation-labor-scale-surge-remotasks-openai-chatbots"&gt;faire travailler des gens sous-payés&lt;/a&gt; qui doivent qualifier des quantités énormes de données d’entraînement pour que les réponses correspondent à la vision d'une "bonne réponse" de leur propriétaire. En plus des soucis des conditions de ces travailleurs du clic, se pose évidemment la question de sa tendance politique.&lt;/p&gt;
  493. &lt;p&gt;&lt;a href="https://www.nytimes.com/2023/03/22/business/media/ai-chatbots-right-wing-conservative.html"&gt;Conservatives Aim to Build an A.I. Chatbot of Their Own | The New York Times&lt;/a&gt;&lt;/p&gt;
  494. &lt;figure&gt;
  495.  &lt;a href="https://en.wikipedia.org/wiki/Mechanical_Turk"&gt;&lt;img src="https://mart-e.be/images/2023/mechanical-turk.jpg"/&gt;&lt;/a&gt;
  496.  &lt;figcaption&gt;Derrière chaque LLM se cache des décisions humaines&lt;/figcaption&gt;
  497. &lt;/figure&gt;
  498.  
  499. &lt;p&gt;Mais, finalement, quelle différence avec un être humain ? Un être humain se trompe aussi, non ? Il faut de toutes façons revérifier ses sources. C'est le point avancé par &lt;a href="https://about.sourcegraph.com/blog/cheating-is-all-you-need"&gt;Cheating is All You Need&lt;/a&gt; de Sourcegraph (une société proposant une IA comme assistant de code). Cet argument semble crédible mais il est plutôt naïf. Il est assez difficile de garder un esprit critique face à un humain vous parlant avec assurance mais vous avez au moins toute une série d'informations de cadre vous permettant d'évaluer la crédibilité de votre interlocuteur. Lorsqu'un médecin vous donne un conseil de santé, vous lui faites probablement confiance. S'il est radiologue et vous donne son avis sur le vaccin du SARS-CoV-2, il est de bon ton de prendre son conseil avec des pincettes. Et pourtant, peu de gens le font. Vous venez de lire un texte dans lequel un non-expert vous expliquait comment les LLM fonctionnent, j'espère que vous ne l'avez pas cru sur parole…&lt;/p&gt;
  500. &lt;p&gt;Avec les LLM, on enlève ce cadre et on vous met face à une boite noire que l'on vous vend comme ayant une réponse à toutes vos questions. Peu de gens lisent les sources lorsque &lt;a href="https://gizmodo.com/googles-algorithm-is-lying-to-you-about-onions-and-blam-1793057789"&gt;Google vous dit combien de temps il faut pour caraméliser les oignons&lt;/a&gt;. Est-ce que les gens le feront plus face à un logiciel vendu comme expert en tout et qui ne donne aucune source ? J'en doute.&lt;/p&gt;
  501. &lt;p&gt;Mozilla expérimente l'intégration d'une LLM pour expliquer ses pages techniques sur sa documentation &lt;a href="https://developer.mozilla.org/"&gt;MDN&lt;/a&gt;. Ils ont eu l'excellente idée d'ajouter un bouton "AI Explain" à coté des bouts de code. Très rapidement, les utilisateurs se sont plaints qu'il produisait des réponses erronées. Comment peut-on demander aux gens de garder un esprit critique sur ces réponses si elles sont mises en avant par l'éditeur lui-même ?&lt;/p&gt;
  502. &lt;p&gt;&lt;a href="https://github.com/mdn/yari/issues/9208"&gt;MDN can now automatically lie to people seeking technical information #9208 | Github&lt;/a&gt;&lt;/p&gt;
  503. &lt;p&gt;Plus que jamais, ayez un regard critique envers les humains trop sûrs d'eux mais, encore plus, avec les logiciels trop sûrs d'eux dont on ne sait rien.&lt;/p&gt;</content><category term="Uncategorized"></category><category term="IA"></category><category term="ChatGPT"></category></entry><entry><title>On est foutu mais ça pourrait être pire</title><link href="https://mart-e.be/2023/06/on-est-foutu-mais-ca-pourrait-etre-pire" rel="alternate"></link><published>2023-06-21T12:32:00+02:00</published><updated>2023-06-21T12:32:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-06-21:/2023/06/on-est-foutu-mais-ca-pourrait-etre-pire</id><summary type="html">&lt;p&gt;Plus on se renseigne sur la crise environnementale, plus on réalise l'ampleur de la tâche. Le mart-e à 15 ans était enthousiaste sur les panneaux solaires et les voitures électriques …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Plus on se renseigne sur la crise environnementale, plus on réalise l'ampleur de la tâche. Le mart-e à 15 ans était enthousiaste sur les panneaux solaires et les voitures électriques, imaginant un futur propre et renouvelable, qui sait, avec des voitures volantes ? Le mart-e à 35 ans hésite à installer des panneaux photovoltaïques sur son toit en connaissant l'impact de leur production et se demande s'ils ne participent pas à déstabiliser le réseau. Ça me semble une évidence que ma prochaine voiture sera électrique, mais je rêve plutôt d'un futur où mon prochain véhicule ne serait pas une voiture, un futur débarrassé de la voiture individuelle comme norme sociale.&lt;/p&gt;
  504. &lt;p&gt;Plus on s'informe, plus on se rend compte que ce sont des changements structurels dont nous avons besoin. Les petits gestes tels que manger bio, végétarien et zéro déchet ne suffiront certainement pas (ce qui ne les rend pas moins nécessaires). Il est illusoire de penser qu'on peut continuer avec notre système actuel de production et de consommation, une couche de peinture verte pour les détails. L'utopiste, c'est celui qui pense que l'on peut réduire durablement nos émissions en se basant seulement sur le progrès technologique et le remplacement des sources d'énergie fossile par des renouvelables. Il nous faut évoluer en profondeur : repenser l'alimentation, le logement, le travail, les modes de déplacements, les loisirs,… le tout en réduisant les inégalités grandissantes. L'écologie ne peut être une préoccupation de riches : la personne ayant du mal à joindre les deux bouts et obligée de vivre en banlieue par manque de moyen a d'autres préoccupations que de prendre un vélo pour aller au magasin bio.&lt;/p&gt;
  505. &lt;figure&gt;
  506.    &lt;a href="https://www.flickr.com/photos/library_of_congress/2163954308/"&gt;&lt;img src="https://mart-e.be/images/2023/dormeur.jpg"/&gt;&lt;/a&gt;
  507.    &lt;figcaption&gt;Réveillez-moi quand le changement climatique est résolu&lt;/figcaption&gt;
  508. &lt;/figure&gt;
  509.  
  510. &lt;p&gt;Quand on entend notre premier ministre ou le président du pays voisin déclarer qu'ils aimeraient &lt;a href="https://www.lesoir.be/515301/article/2023-05-24/peut-mettre-sur-pause-la-legislation-environnementale"&gt;faire une pause sur les nouvelles normes environnementales&lt;/a&gt;, on ne peut que ressentir de la colère. Comment peut-on parler de ralentir alors qu'on ne fait pas assez ?&lt;/p&gt;
  511. &lt;p&gt;Si l'on prend l'objectif souhaitable des accords de Paris de 2015, on devrait limiter la hausse de températures à +1.5°C par rapport aux niveaux préindustriels. &lt;a href="https://www.bloomberg.com/news/articles/2020-12-02/global-temperatures-already-1-2-c-above-pre-industrial-levels?leadSource=uverify%20wall"&gt;En 2020&lt;/a&gt;, nous étions déjà à +1.2°C et les impacts du changement climatique sont bien visibles. Chaque année est plus chaude que la précédente, les incendies, sécheresses, inondations et autres catastrophes se succèdent. Le meilleur scénario va nous amener à encore plus de sécheresses et d'inondations et moins d'eau potable. Avec l'impact sur les populations que l'on peut imaginer : réfugiés climatiques, augmentations des inégalités, tensions entre et au sein des états,… Tout cela dans un monde où les énergies fossiles et la plupart des ressources essentielles se raréfient, augmentant encore plus les tensions. Comment éteindre un feu de forêt quand vous n'avez plus de pétrole pour faire voler des canadairs ou d'eau à puiser ? Comment lutter contre les famines quand vous ne pouvez plus produire d'engrais chimiques ? Comment extraire du cobalt de plus en plus profondément sans détruire les populations et les terres ?&lt;/p&gt;
  512. &lt;p&gt;On ne va pas se mentir, +1.5°C, ça va être la merde. Et ça, c'est le scénario optimiste.&lt;/p&gt;
  513. &lt;figure&gt;
  514.    &lt;a href="https://www.flickr.com/photos/statelibraryofnsw/50903150472/"&gt;&lt;img src="https://mart-e.be/images/2023/heat-ice-cream.jpg"/&gt;&lt;/a&gt;
  515.    &lt;figcaption&gt;Qu'est-ce que c'est +2°C ?&lt;/figcaption&gt;
  516. &lt;/figure&gt;
  517.  
  518. &lt;p&gt;Si on en croit le &lt;a href="https://climateactiontracker.org/global/cat-thermometer/"&gt;CAT Thermometer&lt;/a&gt;, en se basant sur les promesses des états ou sur les actions réellement mises en place, on devrait osciller entre une augmentation de +2°C ou +2.7°C. Vous pouvez être le plus utopiste des capitalistes, les accords de Paris n'ont aucune chance d'aboutir.&lt;/p&gt;
  519. &lt;p&gt;Alors on fait quoi ? On se dit que tout est foutu et on baisse les bras ? De toutes façons, les gens ne changeront jamais. Comme disait GiedRé : &lt;a href="https://www.youtube.com/watch?v=ioAobHZuZYM"&gt;Carpediem, on brûle la vie par les deux bouts&lt;/a&gt;. À quoi bon continuer à faire des efforts si on va de toute façon échouer ?&lt;/p&gt;
  520. &lt;p&gt;Parce qu'échouer, ce n'est pas binaire. Parce que chaque dixième de degré compte.&lt;/p&gt;
  521. &lt;p&gt;&lt;a href="https://bonpote.com/limiter-le-rechauffement-climatique-a-seulement-2c-au-lieu-d1-5c-est-irresponsable/"&gt;Limiter le réchauffement climatique à seulement +2°C au lieu d’1.5°C est irresponsable | Bon Pote&lt;/a&gt;&lt;/p&gt;
  522. &lt;p&gt;Échouer à +1.51°C n'est pas comparable à échouer à +2, +3 ou +4°. Une augmentation d'un demi degré cache un changement beaucoup plus grand que de passer de 23 à 23,5°C sur votre terrasse en été. Il s'agit d'une moyenne mondiale, été comme hiver, Antarctique comme Afrique, terre comme mer. Pour illustrer la différence entre ces températures, je vous conseille l'écoute de l'épisode du podcast Déclic le Tournant de la RTBF concernant la différence concrète entre un monde +1.5 et +2°C. Augmenter d'un demi degré, c'est passer d'un monde inconfortable à un monde instable.&lt;/p&gt;
  523. &lt;p&gt;&lt;a href="https://auvio.rtbf.be/media/declic-le-tournant-declic-le-tournant-un-monde-a-20-ca-ressemble-a-quoi-3025852"&gt;Un monde à +2° ça ressemble à quoi? | Déclic - Le Tournant RTBF&lt;/a&gt;&lt;/p&gt;
  524. &lt;p&gt;Si vous préférez un média visuel et interactif, rendez-vous sur My Climate Future. Sur ce site, vous pouvez faire des simulations, en fonction de votre année de naissance, de l'impact des changements climatiques.&lt;/p&gt;
  525. &lt;p&gt;&lt;a href="https://myclimatefuture.info/"&gt;MyClimateFuture : How will I experience climate change?&lt;/a&gt;&lt;/p&gt;
  526. &lt;figure&gt;
  527.    &lt;a href="https://mart-e.be/images/2023/my-climate-change.png"&gt;"&lt;img src="https://mart-e.be/images/2023/my-climate-change.png"/&gt;&lt;/a&gt;
  528. &lt;/figure&gt;
  529.  
  530. &lt;p&gt;En faisant une simulation, on se rend vite compte que Alexander De Croo (1975) ou Emmanuel Macron (1977) vivant en Europe ressentiront assez peu l'impact du changement climatique de par leur âge. Que les actions prises nous mènent dans un monde à +1.5 ou +3.5°C importe peu. Par contre, à 35 ans, le dérèglement aura nettement plus d'impact sur moi : 8 fois plus de vagues de chaleur que la normale dans le meilleur des cas (+1.5°C). Mais surtout, ce risque augmente de 50% dans le scénario pessimiste (+3.5°C). Pour un jeune belge de 15 ans (&lt;em&gt;"oui c'est bien d'aller manifester mais tu devrais te concentrer sur tes études d'abord !"&lt;/em&gt;), le risque varie du simple au double : entre 12 et 23 fois en fonction des actions prises. Pour une personne naissant en 2020 en Afrique subsaharienne, on parle de 37 à 67 fois plus de vagues de chaleur que la normale subsaharienne.&lt;/p&gt;
  531. &lt;p&gt;Je ne veux pas laisser tomber, pas parce que je suis optimiste sur l'avenir, je veux continuer parce que je veux un monde le plus viable possible, parce que je suis réaliste, parce que ça pourrait être pire.&lt;/p&gt;</content><category term="Uncategorized"></category><category term="humeur"></category><category term="écologie"></category></entry><entry><title>Et la tartiflette dans tout ça ?</title><link href="https://mart-e.be/2023/06/et-la-tartiflette-dans-tout-ca" rel="alternate"></link><published>2023-06-16T13:31:00+02:00</published><updated>2023-06-16T13:31:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-06-16:/2023/06/et-la-tartiflette-dans-tout-ca</id><summary type="html">&lt;p&gt;Le sous-titre de ce blog est "La vie, Linux, la tartiflette...". Les deux premiers, d'accord, mais elle est où la bouffe ? Réglons ça mes bon amis !&lt;/p&gt;
  532. &lt;p&gt;On va pas se …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Le sous-titre de ce blog est "La vie, Linux, la tartiflette...". Les deux premiers, d'accord, mais elle est où la bouffe ? Réglons ça mes bon amis !&lt;/p&gt;
  533. &lt;p&gt;On va pas se la jouer blog culinaire qui raconte sa vie pendant une plombe avant la recette. On fera ça après.&lt;/p&gt;
  534. &lt;p&gt;Pour 4 personnes (ou 2 bons mangeurs):&lt;/p&gt;
  535. &lt;ul&gt;
  536. &lt;li&gt;1kg de pomme de terre&lt;/li&gt;
  537. &lt;li&gt;300gr de pleurotes&lt;/li&gt;
  538. &lt;li&gt;200gr d'oignons&lt;/li&gt;
  539. &lt;li&gt;2 gousses d'ail&lt;/li&gt;
  540. &lt;li&gt;10cl de crème fraîche&lt;/li&gt;
  541. &lt;li&gt;1 reblochon&lt;/li&gt;
  542. &lt;li&gt;vin blanc, bière,...&lt;/li&gt;
  543. &lt;li&gt;fumée liquide&lt;/li&gt;
  544. &lt;/ul&gt;
  545. &lt;p&gt;La fumée liquide, c'est probablement très mauvais pour la santé, mais ça ajoute un goût fumé qui fait la différence. Sentez-vous libre de passer cette étape. Si vous êtes fan de thé, vous pouvez utiliser du &lt;a href="https://fr.wikipedia.org/wiki/Lapsang_souchong"&gt;Lapsang Souchong&lt;/a&gt; pour déglacer ou comme marinade pour les champignons.&lt;/p&gt;
  546. &lt;ul&gt;
  547. &lt;li&gt;Pré-cuire les pommes de terre coupées (lamelles, cubes, qui suis-je pour juger ?) jusqu'à ce qu'elles soient &lt;em&gt;al-dente&lt;/em&gt;&lt;/li&gt;
  548. &lt;li&gt;Rissoler tous les légumes tranchés dans une grosse sauteuse avec peu de matière grasse&lt;/li&gt;
  549. &lt;li&gt;Déglacer avec du vin, bière ou autre liquide acide de votre choix (on a dit déglacer, pas mijoter)&lt;/li&gt;
  550. &lt;li&gt;Se remplir un verre avec le reste de la bouteille&lt;/li&gt;
  551. &lt;li&gt;Ajouter quelques gouttes de cancer/fumée liquide&lt;/li&gt;
  552. &lt;li&gt;Mélanger légumes et patates dans un plat&lt;/li&gt;
  553. &lt;li&gt;Verser de la crème&lt;/li&gt;
  554. &lt;li&gt;Ajouter sel, poivre&lt;/li&gt;
  555. &lt;li&gt;Découper 1/4 du reblochon en dés à répartir dans le plat; mettre les trois autres au-dessus, croûte visible&lt;/li&gt;
  556. &lt;li&gt;25min à 180°&lt;/li&gt;
  557. &lt;/ul&gt;
  558. &lt;p&gt;Peut, bien entendu, se décliner en croziflette avec des crozets au sarrasin à la place des patates pour embrasser encore plus la &lt;em&gt;savoyarde way of life&lt;/em&gt;.&lt;/p&gt;
  559. &lt;figure&gt;
  560.    &lt;a href="https://www.flickr.com/photos/field_museum_library/3409402811/"&gt;&lt;img src="https://mart-e.be/images/2023/champignons.jpg"/&gt;&lt;/a&gt;
  561. &lt;/figure&gt;
  562.  
  563. &lt;p&gt;Comme je l'ai laissé sous-entendre dans &lt;a href="/2023/04/jai-change-davis"&gt;J'ai changé d'avis&lt;/a&gt;, mes tartiflettes ne contiennent plus de lardons depuis quelques années. Ce plat est bien mieux que sa version avec de la viande parce que les légumes le rendent plus léger. Et si c'est plus léger, on peut en manger plus !&lt;/p&gt;
  564. &lt;p&gt;Comme vous êtes des gens bons, ce dernier paragraphe ne vous a pas ému plus que ça, tout au plus amené un peu de curiosité.&lt;/p&gt;
  565. &lt;p&gt;Vous ne faites certainement pas partie de ces jambons utilisant des phrases comme "&lt;em&gt;Fais ton plat avec des champignons si tu veux mais la vraie tartiflette, ça contient des lardons &lt;/em&gt;!" ou "&lt;em&gt;Si vous [les végétariens] ne voulez plus manger de viande, pourquoi vous avez besoin de copier la viande ?&lt;/em&gt;", non je ne peux le croire puisque mes lecteurs sont tous des gens très distingués.&lt;/p&gt;
  566. &lt;p&gt;J'emmerde royalement les gens qui placent l'adjectif "vrai" devant les noms de recette. La "vraie" bolognaise, les "vraies" carbonnades. Malgré son mauvais titre, allez lire cet article de Blick sur l'histoire des pâtes carbonara :&lt;/p&gt;
  567. &lt;p&gt;&lt;a href="https://www.blick.ch/fr/food/histoire-culinaire-desole-mais-la-vraie-carbonara-contient-de-la-creme-id18363291.html"&gt;Désolé, mais la vraie carbonara contient de la crème | Blick&lt;/a&gt;&lt;/p&gt;
  568. &lt;blockquote&gt;
  569. &lt;p&gt;Finalement, imaginer la carbonara comme une recette ancestrale respectant le terroir et les circuits courts relève du fantasme.&lt;/p&gt;
  570. &lt;/blockquote&gt;
  571. &lt;p&gt;Contrairement à ce que suggère son titre, l'article montre qu'il n'y a pas de "vraie carbonara", il y a eu une série de recettes dont une, à un moment, contenait de la crème. Il est assez naïf de considérer les recettes de cuisine comme étant quelque chose de figé, sur lequel un groupe de personne s'est mis d'accord. Certaines recettes vont émerger à certains endroits à certains moments, mais elles vont évoluer. Ce fantasme d'un passé traditionnel où tout était mieux, jusque dans l'assiette, a des relents de droite conservatrice qui m'insupporte.&lt;/p&gt;
  572. &lt;p&gt;D'ailleurs, dans le cas de la tartiflette, on peut difficilement parler de tradition vu qu'elle n'existait pas il y a deux générations. C'est pas moi qui le dis, &lt;a href="https://www.europe1.fr/culture/pourquoi-lincontournable-tartiflette-nest-pas-vraiment-un-plat-traditionnel-4021338"&gt;c'est Stéphane Bern&lt;/a&gt; (si ça c'est pas une source fiable, je ne sais pas ce qu'il vous faut).&lt;/p&gt;
  573. &lt;p&gt;La cuisine c'est comme la langue (ah oui, j'emmerde aussi le "vrai" français et les vieux schnocks de l'Académie française), c'est vivant, ça change, chacun possède ses variantes et il serait prétentieux de clamer que notre version est plus authentique que celle de notre voisin. Rester dans le passé, c'est ne pas savoir évoluer. Attention, se renouveler, ce n'est pas non plus nier le passé, on n'innove que sur ce qui existe déjà. Les recettes d'aujourd'hui sont les erreurs de cuisine d'hier.&lt;/p&gt;
  574. &lt;figure&gt;
  575.    &lt;a href="https://www.flickr.com/photos/library_of_congress/32514316006/"&gt;&lt;img src="https://mart-e.be/images/2023/peler-patates.jpg"/&gt;&lt;/a&gt;
  576.    &lt;figcaption&gt;"Oh tu sais moi j'aime surtout les patates"&lt;/figcaption&gt;
  577. &lt;/figure&gt;
  578.  
  579. &lt;p&gt;Est-ce que tout changement est un progrès et devient forcément une norme ? Bien sûr que non. Est-ce que ma recette est un progrès et deviendra une norme ? Je n'ai pas cette prétention.&lt;/p&gt;
  580. &lt;!--– Est-ce que l'on doit dire que Aya Nakamura représente l'avenir de la langue française ? J'espère que non (cf [Peut-on dire qu’Aya Nakamura, c’est naze ?](https://unodieuxconnard.com/2020/11/30/peut-on-dire-quaya-nakamura-cest-naze/)). Libre à vous de considérer mon interprétation de la tartiflette au même niveau que l'interprétation de la langue française par Aya Nakamura. L'avenir nous dira lequel on retiendra (elle a un peu d'avance mais je ne perds pas espoir). ----&gt;
  581. &lt;p&gt;Est-ce que dans deux générations,  on dira "c'est pas mal cette tartiflette avec un fromage aux noix de cajou, ça change du traditionnel reblochon-pleurotes" ? Probablement pas, j'espère que l'on mettra moins de deux générations pour complètement végétaliser cette recette.&lt;/p&gt;</content><category term="Uncategorized"></category><category term="recette"></category><category term="végétarien"></category></entry><entry><title>Android: Can't downgrade database from version X to Y</title><link href="https://mart-e.be/2023/06/android-resoudre-cant-downgrade-database-from-version" rel="alternate"></link><published>2023-06-11T11:10:00+02:00</published><updated>2023-06-11T11:10:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-06-11:/2023/06/android-resoudre-cant-downgrade-database-from-version</id><summary type="html">&lt;p&gt;Il y a peu, j'ai changé l'OS installé sur mon smartphone, pour repasser de &lt;a href="https://lineageos.org/"&gt;LineageOS&lt;/a&gt; vers la version officielle de Fairphone OS. Si l'opération s'est globalement bien passée, j'ai perdu …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Il y a peu, j'ai changé l'OS installé sur mon smartphone, pour repasser de &lt;a href="https://lineageos.org/"&gt;LineageOS&lt;/a&gt; vers la version officielle de Fairphone OS. Si l'opération s'est globalement bien passée, j'ai perdu l'accès à mes SMS. Lancer &lt;a href="https://www.simplemobiletools.com/"&gt;Simple SMS&lt;/a&gt; me retournait une erreur :&lt;/p&gt;
  582. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;android.database.sqlite.SQLiteExcepion:  
  583. Can&amp;#39;t downgrade database from version 68 to 67
  584. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  585.  
  586. &lt;p&gt;Le souci ne vient pas de l'application de SMS mais d'Android même. LineageOS fonctionnait avec une base de donnée &lt;a href="https://sqlite.org/index.html"&gt;SQLite&lt;/a&gt; à la version utilisateur 68. Fairphone OS fonctionne avec la version 67. En essayant d'accéder à la liste des messages, Android détecte l'incohérence de version et refuse de continuer.&lt;/p&gt;
  587. &lt;p&gt;Voici comment j'ai réussi à résoudre ce souci :&lt;/p&gt;
  588. &lt;ol&gt;
  589. &lt;li&gt;Gagner un accès root sur le téléphone en installant &lt;a href="https://github.com/topjohnwu/Magisk/"&gt;Magisk&lt;/a&gt;&lt;/li&gt;
  590. &lt;li&gt;Extraire la base de données. Vu que l'on ne peut pas utiliser &lt;code&gt;adb pull&lt;/code&gt; sur un fichier protégé, il faut un peu ruser :
  591.    &lt;pre&gt;
  592. $ adb shell; su
  593. FP3:/# cp /data/data/com.android.providers.telephony/databases/mmssms.db /sdcard/mmssms.db
  594. FP3:/# chown shell.shell /sdcard/mmssms.db
  595. FP3:/# exit
  596. $ adb pull /sdcard/mmssms.db&lt;/pre&gt;&lt;/li&gt;
  597. &lt;li&gt;Une fois le fichier récupéré, on confirme la version 68 et la change à la valeur voulue :
  598.    &lt;pre&gt;
  599. $ file mmssms.db
  600. mmssms.db: SQLite 3.x database, user version 68, last written using SQLite version 3028000, file counter 3639, database pages 213, cookie 0x31, schema 4, largest root page 24, UTF-8, version-valid-for 3639
  601. $ sqlite3 mmssms.db
  602. SQLite version 3.42.0 2023-05-16 12:36:15
  603. Enter ".help" for usage hints.
  604. sqlite&amp;gt; PRAGMA user_version = 67; &lt;/pre&gt;&lt;/li&gt;
  605. &lt;li&gt;On renvoie maintenant le fichier modifié:
  606.    &lt;pre&gt;
  607. $ adb push mmssms.db /sdcard/mmssms67.db
  608. FP3:/# chown radio.radio /sdcard/mmssms67.db
  609. FP3:/# cp /sdcard/mmssms67.db /data/data/com.android.providers.telephony/databases/mmssms.db&lt;/pre&gt;&lt;/li&gt;
  610. &lt;/ol&gt;
  611. &lt;p&gt;Le &lt;a href="https://www.sqlite.org/pragma.html#pragma_user_version"&gt;&lt;code&gt;user_version&lt;/code&gt;&lt;/a&gt; est une information arbitraire propre aux applications, non utilisée par SQLite. Si différence de schéma entre les deux versions il y a, je ne l'ai pas remarquée et la procédure ci-dessus m'a débloqué mon téléphone.&lt;/p&gt;
  612. &lt;p&gt;Ce problème était lié à la base de donnée de message, localisée dans &lt;code&gt;/data/data/com.android.providers.telephony/databases/mmssms.db&lt;/code&gt;, mais une procédure similaire peut évidement être transposée à d'autres bases de donnée.&lt;/p&gt;
  613. &lt;figure&gt;
  614.    &lt;a href="https://www.flickr.com/photos/library_of_congress/52579102547/"&gt;&lt;img src="https://mart-e.be/images/2023/postier-neige.jpg"/&gt;&lt;/a&gt;
  615. &lt;/figure&gt;</content><category term="Uncategorized"></category><category term="android"></category></entry><entry><title>Du canapé à l'ultra-trail</title><link href="https://mart-e.be/2023/06/du-canape-a-lultra-trail" rel="alternate"></link><published>2023-06-03T10:25:00+02:00</published><updated>2023-06-03T10:25:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-06-03:/2023/06/du-canape-a-lultra-trail</id><summary type="html">&lt;p&gt;La semaine passée, j'ai couru un ultra-trail de plus de 100km en 14h.&lt;/p&gt;
  616. &lt;p&gt;Si la course à pied sur de longues distances est une de mes passions actuelles, quand je …&lt;/p&gt;</summary><content type="html">&lt;p&gt;La semaine passée, j'ai couru un ultra-trail de plus de 100km en 14h.&lt;/p&gt;
  617. &lt;p&gt;Si la course à pied sur de longues distances est une de mes passions actuelles, quand je sortais des études, je n'étais pas spécialement sportif. La combinaison d'un salaire régulier et de peu de frais fixes m'a amené à profiter de nouveaux loisirs sains tels que prendre un apéro tous les soirs ou manger à l'extérieur régulièrement. Si vous ajoutez à cela, une voiture de société (merci la Belgique et ses &lt;a href="https://campagne.pac-g.be/"&gt;voiture-salaires&lt;/a&gt;) et une vie sédentaire de développeur, très rapidement, j'avais pris 10kg.&lt;/p&gt;
  618. &lt;figure&gt;
  619.    &lt;a href="https://unsplash.com/photos/4OBZRvL9v3Y"&gt;&lt;img src="https://mart-e.be/images/2023/trail-running-forest.jpg"/&gt;&lt;/a&gt;
  620. &lt;/figure&gt;
  621.  
  622. &lt;h4&gt;Commencer&lt;/h4&gt;
  623. &lt;p&gt;Un jour, un colocataire me propose d'aller courir dans le village, un petit tour de 8km. Je couperai avant la fin. Peu de temps après, &lt;a href="/post/2015/01/16/garmin-vivofit-2-millions-de-pas-plus-tard"&gt;je m'achète un podomètre&lt;/a&gt; et rejoins le club de course à pied du village. Je me lance un défi pendant quelques mois : ne boire que les jours où j'ai fait du sport. Je ne sais pas si ça a eu un gros impact sur ma consommation de bière, mais j'ai commencé à aller travailler en vélo. Et puis la pente fatale…&lt;/p&gt;
  624. &lt;ul&gt;
  625. &lt;li&gt;Oui je cours, mais juste des joggings de temps en temps&lt;/li&gt;
  626. &lt;li&gt;J'ai réussi à faire les 20km de Bruxelles ! Pas facile les longues distances...&lt;/li&gt;
  627. &lt;li&gt;Ah c'est ça le trail ? Et on est supposé le faire en courant ?&lt;/li&gt;
  628. &lt;li&gt;Oui, je fais des trails maintenant, mais des courtes distances, pas comme un marathon&lt;/li&gt;
  629. &lt;li&gt;Objectif atteint : un marathon en moins de 4h ! Bon y a plein de gens qui font des marathons, c'est pas comme un ultra-trail&lt;/li&gt;
  630. &lt;li&gt;C'était difficile ce trail de 50km quand même&lt;/li&gt;
  631. &lt;li&gt;...&lt;/li&gt;
  632. &lt;/ul&gt;
  633. &lt;p&gt;À ce stade-là, je commençais à me connaître suffisamment pour savoir que je n'allais pas m'arrêter là…&lt;/p&gt;
  634. &lt;p&gt;On ne se lève pas un beau jour en se disant "si j'allais courir une centaine de kilomètres". On ne naît pas non plus avec un talent pour courir (ni pour écrire, dessiner, danser,...). Je n'ai jamais été le genre de personne à faire 15h de sport par semaine. Cependant, je cours régulièrement depuis 10 ans. Je fais en général 3 entraînements par semaine, rarement plus d'une heure et roule un peu à vélo. Est-ce que je progresserais plus en m’entraînant plus ? Certainement, mais ça reste un loisir, je veux garder un équilibre avec ma vie sociale. Et je n'ai toujours pas arrêté les apéros (sauf quelques semaines avant les courses). Si j'aime suffisamment courir pour ne pas devoir trop me forcer à sortir, continuer à progresser demande un effort sur le long terme. Avec le temps, les entraînements ont gagné en intensité (plus rapides, des accélérations en côte, etc.) mais peu en fréquence ou en durée. L'on va augmenter progressivement les objectifs, pousser la limite un peu plus loin à chaque fois. À la difficulté physique s'ajoute l'aspect psychologique : il serait tellement plus simple de continuer à faire 10km de temps en temps. Je continue à progresser mais jusque quand ?&lt;/p&gt;
  635. &lt;p&gt;Si améliorer ma vitesse reste un des objectifs (je suis maintenant à 1 min du marathon en moins de 3h), avec l'allongement des distances, le chrono est aussi devenu moins important. Le fait de faire mieux est une notion floue, chaque course vient avec sa distance, terrain et météo. S'ajoute toute une série de critères assez subjectifs : prendre du plaisir, admirer le paysage, mieux tolérer l'alimentation, avoir une meilleure récupération,… Dans le trail, la compétition est moins mise en avant, l'objectif est de se dépasser, pas de battre un concurrent.&lt;/p&gt;
  636. &lt;h4&gt;Into the Woods&lt;/h4&gt;
  637. &lt;p&gt;À force de faire des courses de plus en plus longues, j'ai participé à &lt;a href="https://intothewoodstrail.weebly.com/"&gt;Into The Woods Trail&lt;/a&gt;. C'est une petite (en organisation, pas en kilomètres) course familiale à Beauvechain. Le parcours consiste en une boucle d'un peu plus de 21km, départ samedi 10h du matin, gong de fin dimanche 10h du matin. Chacun est libre de faire autant de tours qu'il veut en 24h, en autonomie alimentaire. Chacun essaye de se surpasser à son rythme : certains décident de faire des pauses minimales, d'autres de dormir entre deux tours. On fait un signe à l'organisateur quand on part et quand on arrive pour qu'il note l'heure dans un tableur. Pas de puce GPS de suivi ou de chronométrage électronique, avec 36 participants, on est loin des grandes organisations.&lt;/p&gt;
  638. &lt;figure&gt;
  639.    &lt;a href="https://unsplash.com/photos/bBzeK_IHmbk"&gt;&lt;img src="https://mart-e.be/images/2023/night-forest-moon.webp"/&gt;&lt;/a&gt;
  640. &lt;/figure&gt;
  641.  
  642. &lt;p&gt;Je me force à partir lentement, on est là pour la durée.
  643. Premier tour en 2h16, encore un peu trop rapide. Après un quart d'heure de pause pour manger un morceau, je repars pour le deuxième. Au moment de remplir ma poche à eau, je remarque une fuite ! Heureusement, j'en ai une de rechange, il fait plus de 20° et je bois 1L-1,5L par tour. Pendant le deuxième tour, je discute avec un français. Il est venu en Belgique juste pour cette course. Il y avait déjà participé l'an passé mais avait dû abandonner suite à un problème digestif, les organisateurs l'avaient hébergé le temps qu'il se remette.
  644. Second tour en 2h25, mieux. Après l'équivalent d'un marathon, les jambes chauffent et les muscles commencent à se faire sentir. Une tartine et quelques pâtes plus tard, on repart. À 6km de la fin, j'essaye de boire dans ma poche à eau pour constater… qu'elle est vide ! Dans la précipitation, je n'ai pas bien vérifié et ne l'avait remplie que d'un litre. J'ai heureusement bien bu jusque là, je peux finir mon tour à sec sans risquer la déshydratation. À la fin du troisième tour (2h30), je change de paire de chaussures pour une paire plus ample, pour éviter de trop martyriser mes orteils par les chocs répétés dans les descentes. Une plus longue pause plus tard (1/2h), j'entame la boucle des 80km, non sans avoir vérifié deux fois ma réserve d'eau. Ce sera la boucle la plus difficile, je suis tout seul quasiment tout le long, les kilomètres se suivent et se ressemblent. Je commence à bien connaître ce parcours, le moral en prend un coup. À l'arrivée, mon entraîneur m'attend. On discute un peu en mangeant et on part à deux pour le cinquième tour. Je suis troisième au classement temporaire. On passera tout le tour seuls, sans croiser personne. À ce moment, la nuit tombe et l'on doit rapidement allumer nos lampes. C'est agréable de faire un tour accompagné, le temps passe plus vite. Arrivé au camp de base, il est passé minuit, les ⅔ des participants ont déjà arrêté et je croise juste les organisateurs en train de regarder la TV. Si le tour accompagné a fait du bien au moral, je décide quand même d'en rester là, après 108km et 14h20, record battu.&lt;/p&gt;
  645. &lt;p&gt;J'aurais probablement pu arracher un tour de plus mais aurais fini dans la douleur. Il faut encore replier la tente et conduire jusque la maison. Et puis, c'est ça aussi la difficulté de cette course : à chaque tour, on s'interroge si l'on re-signe pour 3 heures d'effort. Il est si facile d'arrêter à tout moment. En paix avec ma conscience et non moins soulagé, je signale la fin aux organisateurs. Une médaille et une poignée de main plus tard, je me retrouve à nouveau seul. On est loin des bruyants marathons urbains. Il est passé deux heures du matin quand je m'effondre dans mon lit. Demain, mes muscles me feront payer ce que je leur ai infligé. Il n'est pas l'heure pour penser à ça ou à la suite.&lt;/p&gt;
  646. &lt;figure&gt;
  647.    &lt;img src="https://mart-e.be/images/2023/medaille.webp"/&gt;&lt;/a&gt;
  648. &lt;/figure&gt;</content><category term="Uncategorized"></category><category term="sport"></category><category term="trail"></category></entry><entry><title>Pelican : migrer rapidement, corriger plus tard</title><link href="https://mart-e.be/2023/05/pelican-release-early" rel="alternate"></link><published>2023-05-31T07:53:00+02:00</published><updated>2023-05-31T07:53:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-05-31:/2023/05/pelican-release-early</id><summary type="html">&lt;p&gt;Un aspect qui m'a grandement aidé dans ma migration de Wordpress à Pelican est de suivre le principe de &lt;a href="https://fr.wikipedia.org/wiki/Release_early,_release_often"&gt;Release Early, Release Often&lt;/a&gt; et de migrer rapidement.&lt;/p&gt;
  649. &lt;p&gt;J'avais déjà prévu …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Un aspect qui m'a grandement aidé dans ma migration de Wordpress à Pelican est de suivre le principe de &lt;a href="https://fr.wikipedia.org/wiki/Release_early,_release_often"&gt;Release Early, Release Often&lt;/a&gt; et de migrer rapidement.&lt;/p&gt;
  650. &lt;p&gt;J'avais déjà prévu une migration vers un site statique par le passé. J'ai testé plusieurs logiciels, je me suis plongé dans la conversion de mes posts Wordpress et puis… finalement rien faire.&lt;/p&gt;
  651. &lt;p&gt;Finalement, un beau jour j'ai résolu plusieurs points :&lt;/p&gt;
  652. &lt;ul&gt;
  653. &lt;li&gt;avoir un thème basique qui me plaît&lt;/li&gt;
  654. &lt;li&gt;migrer le contenu des articles précédent&lt;/li&gt;
  655. &lt;li&gt;ne pas (trop) casser les anciennes URL&lt;/li&gt;
  656. &lt;/ul&gt;
  657. &lt;p&gt;J'ai pris un week-end pour faire ça et &lt;a href="/2023/04/migration-de-wordpress-a-pelican"&gt;j'ai migré&lt;/a&gt;.&lt;/p&gt;
  658. &lt;p&gt;J'avais pourtant toute une série de soucis :&lt;/p&gt;
  659. &lt;ul&gt;
  660. &lt;li&gt;mon &lt;a href="/feed"&gt;flux RSS&lt;/a&gt; était cassé (corrigé)&lt;/li&gt;
  661. &lt;li&gt;pas de page 404 (TODO)&lt;/li&gt;
  662. &lt;li&gt;perdu les commentaires (finalement &lt;a href="https://mamot.fr/@mart_e/110286423132200148"&gt;pas si important&lt;/a&gt;)&lt;/li&gt;
  663. &lt;li&gt;anciens articles mal migrés (corrigés, je pense)&lt;/li&gt;
  664. &lt;li&gt;adapter le thème à mes besoins (en cours)&lt;/li&gt;
  665. &lt;/ul&gt;
  666. &lt;p&gt;Mon site est un petit blog sans la prétention d'être parfait. Si j'avais attendu de résoudre tous ces points, je n'aurais jamais migré et je n'aurais pas publié 4 articles depuis la migration.&lt;/p&gt;
  667. &lt;figure&gt;
  668.    &lt;a href="https://www.flickr.com/photos/floridamemory/3307562180/"&gt;&lt;img src="https://mart-e.be/images/2023/pelican-sea.webp"/&gt;&lt;/a&gt;
  669. &lt;/figure&gt;</content><category term="Uncategorized"></category><category term="pelican"></category></entry><entry><title>Les passkeys, une bonne idée trop centralisée</title><link href="https://mart-e.be/2023/05/les-passkeys-une-bonne-idee-trop-centralisee" rel="alternate"></link><published>2023-05-18T06:58:00+02:00</published><updated>2023-05-18T06:58:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-05-18:/2023/05/les-passkeys-une-bonne-idee-trop-centralisee</id><summary type="html">&lt;p&gt;On a vu récemment fleurir plusieurs articles vantant les passkeys comme le remplacant tant attendu des mots de passe.&lt;/p&gt;
  670. &lt;p&gt;&lt;a href="https://arstechnica.com/information-technology/2023/05/passwordless-google-accounts-are-easier-and-more-secure-than-passwords-heres-why/"&gt;Google passkeys are a no-brainer. You’ve turned them on, right …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;On a vu récemment fleurir plusieurs articles vantant les passkeys comme le remplacant tant attendu des mots de passe.&lt;/p&gt;
  671. &lt;p&gt;&lt;a href="https://arstechnica.com/information-technology/2023/05/passwordless-google-accounts-are-easier-and-more-secure-than-passwords-heres-why/"&gt;Google passkeys are a no-brainer. You’ve turned them on, right? | Ars Technica&lt;/a&gt;&lt;/p&gt;
  672. &lt;p&gt;&lt;a href="https://www.nextinpact.com/article/70598/que-sont-passkeys-comment-on-sen-sert"&gt;Que sont les passkeys, comment on s'en sert ? | Nextinpact&lt;/a&gt;&lt;/p&gt;
  673. &lt;p&gt;&lt;a href="https://www.frandroid.com/marques/google/1685025_comment-configurer-une-cle-dacces-passkey-sur-votre-compte-google-pour-en-finir-avec-les-mots-de-passe"&gt;Comment configurer une clé d’accès (passkey) sur votre compte Google pour en finir avec les mots de passe | Frandroid&lt;/a&gt;&lt;/p&gt;
  674. &lt;p&gt;Les passkeys sont le résultat d'une recherche avec la &lt;a href="https://fr.wikipedia.org/wiki/Alliance_FIDO"&gt;FIDO Alliance&lt;/a&gt;, à qui l'on doit déjà &lt;a href="https://fr.wikipedia.org/wiki/WebAuthn"&gt;WebAuthn&lt;/a&gt;, l'API dans les navigateurs permettant d'utiliser une clef physique (&lt;a href="https://www.yubico.com/"&gt;YubiKeys&lt;/a&gt; &amp;amp; co). La FIDO Alliance &lt;a href="https://fidoalliance.org/members/"&gt;est constituée&lt;/a&gt; des gros noms de la tech Microsoft, Apple, Google, Amazon, etc. (mais pas que), se regroupant pour se débarrasser des méchants mots de passe.&lt;/p&gt;
  675. &lt;h3&gt;La situation&lt;/h3&gt;
  676. &lt;p&gt;Pour se connecter au site, on demande habituellement un mot de passe, une &lt;em&gt;chose que l'on sait&lt;/em&gt;. La connaissance d'une information que seul moi connaisse implique que je suis bien qui je prétends, le propriétaire du compte, c'est une preuve d'&lt;em&gt;authentification&lt;/em&gt; (à ne pas confondre avec &lt;em&gt;identification&lt;/em&gt;).&lt;/p&gt;
  677. &lt;p&gt;Seulement, pour que cela soit valable, il faut avoir des mots de passe compliqués, longs et différents pour chaque site. C'est difficile: il faut les noter quelque part, on se les fait voler, ils sont compromis en cas de fuite de données, etc. De plus, on n'est pas à l'abris du phishing: faites une copie ressemblante d'un site, dans la confusion, on s'authentifie auprès d'un site malveillant et l'on compromet notre &lt;em&gt;chose que l'on sait&lt;/em&gt;.&lt;/p&gt;
  678. &lt;figure&gt;
  679.    &lt;a href="https://www.loc.gov/pictures/item/2003654787/"&gt;&lt;img src="https://mart-e.be/images/2023/treasure-chest.jpg"/&gt;&lt;/a&gt;
  680.    &lt;figcaption&gt;Retrouver un vieux mot de passe dans son password manager&lt;/figcaption&gt;
  681. &lt;/figure&gt;
  682.  
  683. &lt;p&gt;Vu que la &lt;em&gt;chose que l'on sait&lt;/em&gt; n'était pas suffisante pour une authentifiaction fiable, est arrivée l'&lt;a href="https://fr.wikipedia.org/wiki/Double_authentification"&gt;authentification à deux facteurs&lt;/a&gt; (ou &lt;em&gt;2FA&lt;/em&gt;). On demande également une &lt;em&gt;chose que l'on possède&lt;/em&gt;. Elle a en général la forme d'un code temporaire généré par un programme installé sur son smartphone ou reçu par SMS. La sécurité est augmentée car seul moi possède la chose qui me permet de générer ce code (le programme ou ma carte SIM). Se faire voler son mot de passe (car il est trop court, réutilisé,...) n'est plus suffisant pour accès au compte. Par contre, cela ajoute de la complexité : en plus du mot de passe, il faut ouvrir un programme spécifique, retaper le code, etc. Et on est toujours pas à l'abris du phishing en donnant ce code temporaire de bonne foi à un site malveillant.&lt;/p&gt;
  684. &lt;p&gt;Les clefs de sécurité U2F/WebAuthn sont une variante de la &lt;em&gt;chose que l'on possède&lt;/em&gt;. Au lieu de retaper un code, l'on insère une clef usb et la connexion est automatique. C'est une amélioration de sécurité car on lutte maintenant contre le phishing. La clef étant configurée pour un domaine spécifique, si j'essaye de m'authentifier par erreur sur &lt;code&gt;mart-ǝ.be&lt;/code&gt; alors que WebAuthn est configuré pour &lt;code&gt;mart-e.be&lt;/code&gt;, ma clef ne fonctionnera simplement pas, elle n'a pas été configurée pour ce domaine. C'est mieux mais ça reste un deuxième facteur, une étape de plus après le maudit mot de passe.&lt;/p&gt;
  685. &lt;p&gt;Les passkeys proposent une solution alternative qui veut offrir un moyen d'authentification sécurisé, résistant au phishing et facile d'utilisation, le tout sans utiliser de mot de passe. Après des années de recherche, ça y est, les passkeys commencent à être déployées chez Google, Apple, Microsoft et autres. Comment ont-ils réussi ce miracle ? En utilisant le smartphone et la biométrie.&lt;/p&gt;
  686. &lt;p&gt;Si l'on ne peut pas faire confiance à l'humain pour la &lt;em&gt;chose que l'on sait&lt;/em&gt;, c'est maintenant la &lt;em&gt;chose que l'on possède&lt;/em&gt; (un smartphone) qui va nous authentifier via biométrie (&lt;em&gt;chose que l'on est&lt;/em&gt;). Lorsque vous vous voulez vous identifier depuis votre PC sur un site connu, vous recevez une notification sur votre smartphone vous demandant de confirmer via un scan de votre doigt ou visage. Les requêtes d'authentification sont validées depuis l'appareil uniquement, sans jamais envoyer de mot de passe ou code pouvant être intercepté. On évite le phishing ou la fuite de mot de passe tout en garantissant une grande sécurité.&lt;/p&gt;
  687. &lt;p&gt;Seulement, malgré l'enthousiasme des différents médias, ça sera non pour moi.&lt;/p&gt;
  688. &lt;h3&gt;Je déteste les smartphones.&lt;/h3&gt;
  689. &lt;ul&gt;
  690. &lt;li&gt;C'est un mauvais ordinateur&lt;/li&gt;
  691. &lt;li&gt;Il coûte cher&lt;/li&gt;
  692. &lt;li&gt;Il a une durée de vie ridicule (dépasser les 3 ans est considéré comme exceptionnel)&lt;/li&gt;
  693. &lt;li&gt;C'est un gaspillage de ressources (cf point précédent)&lt;/li&gt;
  694. &lt;li&gt;Il fonctionne mal (surtout quand on essaye de le garder plus de 3 ans)&lt;/li&gt;
  695. &lt;li&gt;On n'est pas libre de l'utiliser comme on le souhaite (Android fait vaguement mieux qu'iOS mais sans plus)&lt;/li&gt;
  696. &lt;li&gt;C'est un espion dans votre poche&lt;/li&gt;
  697. &lt;li&gt;&lt;a href="https://www.journals.uchicago.edu/doi/epdf/10.1086/691462"&gt;Il rend con&lt;/a&gt;&lt;/li&gt;
  698. &lt;/ul&gt;
  699. &lt;p&gt;Je déteste que l'on soit obligé d'en posséder un (pour communiquer, pour payer son parking,...). Je déteste devoir m'interrompre en étant sur mon PC pour sortir mon téléphone (reproche que l'on peut également faire au 2FA).&lt;/p&gt;
  700. &lt;p&gt;Étrangement, je ne suis pas d'accord avec le fait que la sécurité de mes comptes ne dépende plus que d'un appareil auquel j'accorde autant de confiance qu'à la promesse d'un politicien...&lt;/p&gt;
  701. &lt;h3&gt;Je déteste la biométrie.&lt;/h3&gt;
  702. &lt;p&gt;Cet argument est encore plus subjectif que le précédent.&lt;/p&gt;
  703. &lt;p&gt;Pourquoi suis-je plus mal à l'aise à l'idée de donner mes empreintes digitales que de montrer mon passeport quand je rentre dans un pays démocratiquement discutable ? Parce que je ne sais pas ce qu'ils vont en faire. Parce que ça touche à mon identité.&lt;/p&gt;
  704. &lt;p&gt;La biométrie implique des données hautement personnelles. Si votre nom, date de naissance, etc. sont privés, les données biométriques le sont encore plus. Elles identifient votre personne, sans retenue ou possibilité de mentir. Via les passkeys (made in Google/Apple), on remplace la &lt;em&gt;chose que l'on sait&lt;/em&gt; par la &lt;em&gt;chose que l'on est&lt;/em&gt;. La nuance n'est pas négligeable. Authentification et identification se mélangent.&lt;/p&gt;
  705. &lt;figure&gt;
  706. &lt;a href="https://flic.kr/p/EhPFf4"&gt;&lt;img src="https://mart-e.be/images/2023/fingerprint.jpg"/&gt;&lt;/a&gt;
  707. &lt;/figure&gt;
  708.  
  709. &lt;p&gt;Les promoteurs vous diront que les données biométriques ne quittent jamais l'appareil. Quelles sont stockées dans la &lt;a href="https://fr.wikipedia.org/wiki/Trusted_Platform_Module"&gt;puce TPM&lt;/a&gt; et impossibles à extraire. Quelles ne sont pas liées à votre identité. Que le fichage n'est pas possible. Ils sont certainement de bonne foi mais tout comme l'étaient tous les gens vantant un système inviolable qui s'est avéré vulnérable. La différence avec une faille de sécurité classique est que l'on peut changer son mot de passe ou autre clef compromise. Pas avec la biométrie.&lt;/p&gt;
  710. &lt;p&gt;Je n'ai aucune envie d'utiliser une donnée aussi sensible auprès d'une société dans laquelle je n'ai aucune confiance, malgré toutes leurs promesses.&lt;/p&gt;
  711. &lt;h3&gt;Mettre tous ses oeufs numériques dans le même e-panier&lt;/h3&gt;
  712. &lt;p&gt;Régulièrement, l'on voit passer des articles de personnes s'étant fait bannir du jour au lendemain par Google. Ces personnes ne savent souvent pas ce qu'on leur reproche (Google ne le précise pas) et ils perdent soudainement l'accès à une grande partie de leur vie numérique sans moyen d'opposition. Photos, documents professionnels, emails, calendriers, contacts, notes,...&lt;/p&gt;
  713. &lt;p&gt;&lt;a href="https://www.businessinsider.com/google-users-locked-out-after-years-2020-10?r=US&amp;amp;IR=T"&gt;What it's like to get locked out of Google indefinitely | Business Insider&lt;/a&gt;&lt;/p&gt;
  714. &lt;p&gt;Je ne me moque pas de ces gens avec des "on vous l'avait bien dit". C'est au contraire à force d'articles type "Confiez X à Google, ils ont un super produit" que l'on se retrouve dans ce genre de situation. C'est la responsabilité des Ars Technica qui aiment troquer la résilience pour la praticité.&lt;/p&gt;
  715. &lt;p&gt;Et maintenant, grâce aux passkeys, vous pouvez rajouter le risque de perdre l'accès aux comptes non-google ? Non merci. C'est également pour cette raison que je n'utilise pas les méchanismes &lt;a href="https://fr.wikipedia.org/wiki/OAuth"&gt;OAuth&lt;/a&gt; "Sign in with Google", malgré leur aspect pratique non discutable. &lt;/p&gt;
  716. &lt;h3&gt;Et donc, on jette tout ?&lt;/h3&gt;
  717. &lt;p&gt;Pas forcément. La situation que j'ai décrite est l'état actuel de la techno poussée par les deux mastodontes que sont Google et Apple. Le concept de passkeys pour se débarasser des mots de passe est très intéressant. Retirer le facteur humain de la détection des sites de phishing est une très bonne chose et oui, les mots de passe sont un maillon faible de la sécurité.&lt;/p&gt;
  718. &lt;p&gt;Seulement, je ne pourrais recommander une solution qui implique de se lancer, une fois encore, tête baissée chez les GAFAMs. Les environnements de passkeys Google et Apple ne sont, par exemple, pas encore interopérables ; passer d'un téléphone Android à iOS s'avère difficile.&lt;/p&gt;
  719. &lt;p&gt;D'ailleurs, le support est &lt;a href="https://passkeys.dev/device-support/"&gt;encore très basique sous Linux&lt;/a&gt;. Une technologie ne doit pas être disponible sous Linux pour être mature (quoi que...) mais c'est un bon signe qu'elle est encore l'apanage des grands groupes. En attendant, je continuerai à utiliser un password manager et du deux facteurs.&lt;/p&gt;
  720. &lt;p&gt;Différents password managers comme 1Password, Dashlane ou Bitwarden ont prévu de proposer une solution de passkeys. On aura alors des acteurs indépendants qui proposeront des implémentations différentes avec plus de choix, et on l'espère, plus d'interopérabilité. Est-ce qu'ils proposeront autre chose que la biométrie ? On attend aussi des implémentations open source sous Linux.&lt;/p&gt;
  721. &lt;p&gt;Et pour conclure, je vous laisse avec cet article de Ars Technica qui répond à tous les reproches qu'ils se sont pris dans leur article mentionné en introduction et qui confirment que ce n'est pas pour moi.&lt;/p&gt;
  722. &lt;p&gt;&lt;a href="https://arstechnica.com/information-technology/2023/05/passkeys-may-not-be-for-you-but-they-are-safe-and-easy-heres-why/"&gt;Passkeys may not be for you, but they are safe and easy—here’s why | Ars Technica&lt;/a&gt;&lt;/p&gt;
  723. &lt;p&gt;&lt;em&gt;Mise à jour 2024 : Proton patage les mêmes inquétudes que moi sur la centralisation (pour mieux vendre sa solution) :&lt;/em&gt;&lt;/p&gt;
  724. &lt;p&gt;&lt;a href="https://proton.me/blog/big-tech-passkey"&gt;Big Tech passkey implementations are a trap&lt;/a&gt;&lt;/p&gt;</content><category term="Uncategorized"></category><category term="securite"></category><category term="passkeys"></category><category term="google"></category></entry><entry><title>J'ai changé d'avis</title><link href="https://mart-e.be/2023/04/jai-change-davis" rel="alternate"></link><published>2023-04-29T14:34:00+02:00</published><updated>2023-04-29T14:34:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-04-29:/2023/04/jai-change-davis</id><summary type="html">&lt;p&gt;Ce blog va fêter ses 14 ans cette année. Depuis &lt;a href="/post/2009/08/31/nouveau-blog"&gt;mon premier article&lt;/a&gt;, pas mal de choses ont changé mais surtout j'ai changé d'avis sur pas mal de choses :&lt;/p&gt;
  725. &lt;ul&gt;
  726. &lt;li&gt;On …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;Ce blog va fêter ses 14 ans cette année. Depuis &lt;a href="/post/2009/08/31/nouveau-blog"&gt;mon premier article&lt;/a&gt;, pas mal de choses ont changé mais surtout j'ai changé d'avis sur pas mal de choses :&lt;/p&gt;
  727. &lt;ul&gt;
  728. &lt;li&gt;On ne résout pas un problème de société avec la technologie&lt;/li&gt;
  729. &lt;li&gt;Le nucléaire est peu polluant (en comparaison à la plupart des alternatives)&lt;/li&gt;
  730. &lt;li&gt;Les cryptomonnaies ne proposent que des versions moins efficaces, plus polluantes et tout aussi centralisées de solutions existantes&lt;/li&gt;
  731. &lt;li&gt;La voiture électrique est l'avenir de l'automobile, mais l'avenir n'est pas à l'automobile&lt;/li&gt;
  732. &lt;li&gt;Le recyclage évite de remettre en question un système axé sur la consommation et ne sera jamais une solution à long terme&lt;/li&gt;
  733. &lt;li&gt;On vit mieux sans manger de viande&lt;/li&gt;
  734. &lt;li&gt;Le vote électronique peut être sûr techniquement mais ne permet pas la vérifiabilité pour les non-informaticiens (voir avis #1)&lt;/li&gt;
  735. &lt;li&gt;Un logiciel, un algorithme, une technologie n'est pas neutre, c'est une suite de choix qui va favoriser un usage&lt;/li&gt;
  736. &lt;li&gt;[...] en fait, c'est compliqué&lt;/li&gt;
  737. &lt;/ul&gt;
  738. &lt;p&gt;Relire &lt;a href="/archives"&gt;ses vieux articles&lt;/a&gt;, c'est un peu comme revoir des vieux souvenirs, on se dit "j'étais un peu con quand même".&lt;/p&gt;
  739. &lt;p&gt;J'espère que je me dirai la même chose en relisant cet article dans 14 ans.&lt;/p&gt;
  740. &lt;figure&gt;
  741.    &lt;a href="https://unsplash.com/photos/kbKEuU-YEIw"&gt;&lt;img src="https://mart-e.be/images/2023/mist-unsplash-inggrid-koe.jpg"/&gt;&lt;/a&gt;
  742. &lt;/figure&gt;</content><category term="Uncategorized"></category><category term="humeur"></category></entry><entry><title>Recommandation podcast: Sismique</title><link href="https://mart-e.be/2023/04/recommandation-podcast-sismique" rel="alternate"></link><published>2023-04-21T09:36:00+02:00</published><updated>2023-04-21T09:36:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-04-21:/2023/04/recommandation-podcast-sismique</id><summary type="html">&lt;p&gt;Que je sois en voiture, dans le train, en train de promener mon chien ou de faire les courses, j'écoute très souvent un podcast. Les thématiques de mes abonnements sont …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Que je sois en voiture, dans le train, en train de promener mon chien ou de faire les courses, j'écoute très souvent un podcast. Les thématiques de mes abonnements sont assez variées : &lt;a href="https://www.mnhn.fr/fr/pour-que-nature-vive"&gt;écologie&lt;/a&gt;, &lt;a href="https://brulosophy.com/podcasts/the-bru-lab/"&gt;brassage de bière&lt;/a&gt;, &lt;a href="https://www.pausevelo.com/"&gt;vélo&lt;/a&gt;, &lt;a href="http://www.cleacuisine.fr/podcast-episodes-1-a-10/"&gt;cuisine&lt;/a&gt;, &lt;a href="https://podcasts.apple.com/fr/podcast/une-invention-sans-avenir/id1570408751"&gt;cinéma&lt;/a&gt; et j'en passe. La découverte de &lt;a href="https://antennapod.org/"&gt;AntennaPod&lt;/a&gt; a fait exploser mes écoutes (avec comme dommage collatéral l'abandon de &lt;a href="https://librivox.org/"&gt;LibriVox&lt;/a&gt;). Aujourd'hui, je voulais vous partager un podcast que j'apprécie tout particulièrement : &lt;a href="https://www.sismique.fr/"&gt;Sismique&lt;/a&gt;.&lt;/p&gt;
  743. &lt;figure class="aligncenter"&gt;
  744.    &lt;a href="https://www.sismique.fr/" target="_blank"&gt;&lt;img src="https://mart-e.be/images/2023/sismique-logo.webp"/&gt;&lt;/a&gt;
  745. &lt;/figure&gt;
  746.  
  747. &lt;p&gt;Sismique est une enquête personnelle de Julien Devaureix, un homme qui bossait à Hong-Kong et, ne comprenant plus le monde qu'il voyait changer à toute allure sous ses yeux (vous aussi ça vous parle ?), décide de tout plaquer et de créer ce podcast. A chaque épisode, il s'entretient pendant une heure avec un expert d'un sujet particulier.&lt;/p&gt;
  748. &lt;blockquote&gt;
  749. &lt;p&gt;Si j'avais une heure pour résoudre un problème, je passerais cinquante-cinq minutes à définir le problème et cinq minutes à trouver la solution.&lt;/p&gt;
  750. &lt;p&gt;― Albert Einstein&lt;/p&gt;
  751. &lt;/blockquote&gt;
  752. &lt;p&gt;Ce que j'aime dans son approche, c'est le choix d'essayer de comprendre le problème avant de chercher une solution. On part du postulat que le monde est complexe et qu'il n'existe pas de solution miracle. Les décisions sont souvent interconnectées. Il explique :&lt;/p&gt;
  753. &lt;blockquote&gt;
  754. &lt;p&gt;Notre monde est bien trop complexe pour que quiconque puisse en comprendre vraiment le fonctionnement, la trajectoire, le pourquoi et le comment. Toute tentative d’explication du réel est donc forcément partielle, mais on peut toute de même essayer d'y voir un peu plus clair afin de ne pas trop se tromper dans nos analyses et nos décisions. Entre en jeu la pensée systémique…&lt;/p&gt;
  755. &lt;p&gt;L’approche systémique permet à la fois d’isoler les sujets que l’on veut étudier mais aussi d’admettre les interdépendances, de mieux expliquer les dynamiques d’évolutions, de différencier les symptômes des causes sans forcément tomber dans des explications mécanistes et définitives. Il s’agit de prendre de la hauteur, d’essayer d’identifier les bonnes questions et d’admettre que les réponses sont forcément partielles.&lt;/p&gt;
  756. &lt;p&gt;&lt;a href="https://www.sismique.fr/a-propos"&gt;Sismique.fr | À Propos&lt;/a&gt;&lt;/p&gt;
  757. &lt;/blockquote&gt;
  758. &lt;p&gt;Chaque épisode commence avec la question "avec quelles lunettes regardes-tu le monde ?". On rappelle ainsi que chaque intervenant vient avec sa propre histoire et ses biais. &lt;a href="https://www.sismique.fr/post/96-l-univers-a-t-il-un-sens-david-elbaz"&gt;Un astrophycisien&lt;/a&gt; ne va pas avoir le même regard et préoccupations qu'&lt;a href="https://www.sismique.fr/post/89-le-verrou-financier-lucie-pinson"&gt;une spécialiste de la finance&lt;/a&gt;. Ça semble évident mais c'est bien de rappeler que chaque intervenant, aussi expert soit-il, ne l'est que dans son domaine.&lt;/p&gt;
  759. &lt;p&gt;J'ai découvert le podcast avec l'épisode &lt;a href="https://www.sismique.fr/post/88-energie-securite-et-souverainete-matthieu-auzanneau"&gt;#88- Énergie : sécurité et souveraineté - MATTHIEU AUZANNEAU&lt;/a&gt;. Après cela, j'ai eu l'impression de comprendre la géopolitque russo-ukrainienne, pourquoi les divers pays réagissaient différement face à l'invasion russe. Puis, j'ai écouté &lt;a href="https://www.sismique.fr/post/85-nos-cerveaux-sous-controle-david-colon"&gt;#85 - Nos cerveaux sous contrôle - DAVID COLON&lt;/a&gt; et j'ai compris les différentes techniques de manipulation utilisées par les MAMA (Meta-Amazon-Microsoft-Alphabet). Et ainsi de suite. À chaque nouvelle écoute, je comprenais un peu mieux le monde mais petit à petit, j'ai surtout réalisé à quel point je le connaissais mal. Vous reprendrez bien un peu d'&lt;a href="https://fr.wikipedia.org/wiki/Effet_Dunning-Kruger"&gt;effet Dunning-Kruger&lt;/a&gt; ?&lt;/p&gt;
  760. &lt;blockquote&gt;
  761. &lt;p&gt;Je sais pas si vous êtes au courant mais le monde, il vous attend pas, le monde il bouge et il bouge vite!&lt;/p&gt;
  762. &lt;p&gt;― OSS 117&lt;/p&gt;
  763. &lt;/blockquote&gt;
  764. &lt;p&gt;Après l'écoute de plusieurs épisodes, on peut se sentir submergé par la complexité du problème. Les enjeux sont trop nombreux, changer une chose impliquerait d'en changer 100 autres en même temps. Heureusement, Julien vient de sortir un livre qui se veut une analyse plus transversale après plusieurs années de recherche.&lt;/p&gt;
  765. &lt;figure class="aligncenter"&gt;
  766.    &lt;a href="https://www.sismique.fr/le-monde-change-et-on-n-y-comprend-rien" target="_blank"&gt;&lt;img src="https://mart-e.be/images/2023/sismique-livre.webp"/&gt;&lt;/a&gt;
  767. &lt;/figure&gt;
  768.  
  769. &lt;p&gt;Le livre utilise la métaphore du &lt;em&gt;Jeu de la Vie&lt;/em&gt; : tout le monde joue le même jeu dont le but est d'avoir la meilleure vie possible. Tout le monde partage la même partie mais les règles diffèrent. Si le début du bouquin fait un peu redite avec les différents épisodes, il faut attendre les derniers chapitres pour qu'il nous livre sa vision de comment vivre avec tout cela. Je ne vais pas vous la résumer (allez acheter le livre !) mais je suis sorti de ces écoutes et de cette lecture avec un sentiment de "Je sais que je ne sais pas et c'est ok". Je ne sauverai pas le monde. En tous cas, pas tout seul.&lt;/p&gt;
  770. &lt;p&gt;Tous les épisodes ne m'intéressent pas de la même façon, certains intervenants me captivent moins, je passe parfois &lt;a href="https://www.sismique.fr/post/98-urgence-humanitaire-au-sahel-hilaire-avril"&gt;certains sujets&lt;/a&gt; que je sais d'avance trop déprimants. Et puis, d'autres sont avec des intervenants célebres comme &lt;a href="https://www.sismique.fr/post/77-la-fin-de-la-croissance-dennis-meadows"&gt;Dennis Meadows&lt;/a&gt; (&lt;em&gt;Limit to Growth&lt;/em&gt;) ou &lt;a href="https://www.sismique.fr/post/noam-chomsky-defining-our-times"&gt;Noam Chomsky&lt;/a&gt; (&lt;em&gt;La fabrication du consentement&lt;/em&gt;) que l'on écoute avec attention et qui nous fait longuement réfléchir.&lt;/p&gt;
  771. &lt;p&gt;Sismique ne vous donnera sans doute pas la réponse à la vie, l'univers et le reste mais permet de se poser la question.&lt;/p&gt;
  772. &lt;p&gt;A mettre dans toutes les oreilles !&lt;/p&gt;</content><category term="Uncategorized"></category><category term="recommandation"></category><category term="sismique"></category><category term="podcast"></category></entry><entry><title>Migration de Wordpress à Pelican</title><link href="https://mart-e.be/2023/04/migration-de-wordpress-a-pelican" rel="alternate"></link><published>2023-04-13T18:29:00+02:00</published><updated>2023-04-13T18:29:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2023-04-13:/2023/04/migration-de-wordpress-a-pelican</id><summary type="html">&lt;figure class="aligncenter"&gt;
  773.    &lt;a href="https://rakhim.org/honestly-undefined/19/" target="_blank"&gt;&lt;img src="https://mart-e.be/images/2023/blogging.jpg"/&gt;&lt;/a&gt;
  774.    &lt;figcaption&gt;On ne pourra pas dire qu'on ne m'avait pas prévenu&lt;/figcaption&gt;
  775. &lt;/figure&gt;
  776.  
  777. &lt;p&gt;Après une dizaine d'années de bons et loyaux services, il était temps de raccrocher Wordpress et de tenter l'expérience d'un …&lt;/p&gt;</summary><content type="html">&lt;figure class="aligncenter"&gt;
  778.    &lt;a href="https://rakhim.org/honestly-undefined/19/" target="_blank"&gt;&lt;img src="https://mart-e.be/images/2023/blogging.jpg"/&gt;&lt;/a&gt;
  779.    &lt;figcaption&gt;On ne pourra pas dire qu'on ne m'avait pas prévenu&lt;/figcaption&gt;
  780. &lt;/figure&gt;
  781.  
  782. &lt;p&gt;Après une dizaine d'années de bons et loyaux services, il était temps de raccrocher Wordpress et de tenter l'expérience d'un site statique.&lt;/p&gt;
  783. &lt;p&gt;Si Wordpress est un excellent logiciel qui permet de créer un blog, un ecommerce, &lt;a href="https://mart-e.be/post/2012/01/03/transformez-blog-wordpress-tracker-torrent"&gt;un tracker torrent&lt;/a&gt; ou le café, je n'ai pas besoin de tout ça. Mon blog évolue très peu (et n'est pas très actif) et se porte donc assez bien au concept de site statique.&lt;/p&gt;
  784. &lt;p&gt;Dans un web de plus en plus encombré, avoir un site minimaliste permet de souffler, de se concentrer sur l'essentiel : le contenu.
  785. Un des premiers site qui mettait en avant les avantages du site statique est l'excellent &lt;a href="https://solar.lowtechmagazine.com/"&gt;Low Tech Magazine&lt;/a&gt;. Il auto-héberge son site avec un simple Raspberry-pi et un petit panneau solaire, chose qui aurait été impossible avec Wordpress.&lt;/p&gt;
  786. &lt;p&gt;Il y a quelques mois, j'ai dû migrer mon serveur vers une version plus récente de Debian, poussé par Wordpress me rappelant que j'utilisais une vieille version de PHP. Il me semblait absurde de devoir mettre à jour mon serveur pour pouvoir continuer d'afficher du contenu qui avait été écrit il y a des années et qui ne changerait certainement plus.&lt;/p&gt;
  787. &lt;p&gt;Récemment, &lt;a href="https://ploum.net/2022-12-04-fin-du-blog-et-derniere-version.html"&gt;Ploum a fait sa migration&lt;/a&gt; et ça m'a enfin poussé à me bouger le cul.&lt;/p&gt;
  788. &lt;p&gt;En migrant mon site sur &lt;a href="https://getpelican.com/"&gt;Pelican&lt;/a&gt;, je peux enfin rejoindre le club select du Small Web.&lt;/p&gt;
  789. &lt;ul&gt;
  790. &lt;li&gt;&lt;a href="https://ar.al/2020/08/07/what-is-the-small-web/"&gt;What is the Small Web?&lt;/a&gt;&lt;/li&gt;
  791. &lt;li&gt;&lt;a href="https://benhoyt.com/writings/the-small-web-is-beautiful/"&gt;The small web is beautiful&lt;/a&gt;&lt;/li&gt;
  792. &lt;/ul&gt;
  793. &lt;p&gt;Je détaillerai probablement plus tard ma migration, laquelle ayant nécessité quelques &lt;a href="https://github.com/getpelican/pelican/pull/3114"&gt;modifications de Pelican&lt;/a&gt;. Les commentaires ont malheureusement été perdus pour le moment. Je me tâte sur la possibilité d'implémenter une solution compatible avec Mastodon comme &lt;a href="https://carlschwan.eu/2020/12/29/adding-comments-to-your-static-blog-with-mastodon/"&gt;expliqué ici&lt;/a&gt;. En attendant, n'hésitez pas à me dire ce que vous en pensez en envoyant un pouet à &lt;a href="https://mamot.fr/@mart_e/110201510686466019"&gt;@mart_e@mamot.fr&lt;/a&gt;.&lt;/p&gt;</content><category term="News"></category><category term="blog"></category><category term="wordpress"></category><category term="pelican"></category></entry><entry><title>Accéder à un système LUKS manuellement</title><link href="https://mart-e.be/post/2020/12/12/acceder-a-un-systeme-luks-manuellement" rel="alternate"></link><published>2020-12-12T11:59:00+01:00</published><updated>2020-12-12T11:59:00+01:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2020-12-12:/post/2020/12/12/acceder-a-un-systeme-luks-manuellement</id><summary type="html">&lt;!-- wp:paragraph --&gt;
  794.  
  795. &lt;p&gt;Après la mise à jour journalière de mon pc portable (sous &lt;a href="https://www.archlinux.org/" rel="noreferrer noopener" target="_blank"&gt;Archlinux&lt;/a&gt;) et le redémarrage hebdomadaire, le drame : on entre le mot de passe de déchiffrement (&lt;a href="https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup" rel="noreferrer noopener" target="_blank"&gt;LUKS&lt;/a&gt;) et...&lt;/p&gt;
  796. &lt;!-- /wp:paragraph --&gt;
  797.  
  798. &lt;!-- wp:paragraph --&gt;
  799.  
  800. &lt;p&gt;_&lt;/p&gt;
  801. &lt;!-- /wp:paragraph --&gt;
  802.  
  803. &lt;!-- wp:paragraph --&gt;
  804.  
  805. &lt;p&gt;Oui …&lt;/p&gt;</summary><content type="html">&lt;!-- wp:paragraph --&gt;
  806.  
  807. &lt;p&gt;Après la mise à jour journalière de mon pc portable (sous &lt;a href="https://www.archlinux.org/" rel="noreferrer noopener" target="_blank"&gt;Archlinux&lt;/a&gt;) et le redémarrage hebdomadaire, le drame : on entre le mot de passe de déchiffrement (&lt;a href="https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup" rel="noreferrer noopener" target="_blank"&gt;LUKS&lt;/a&gt;) et...&lt;/p&gt;
  808. &lt;!-- /wp:paragraph --&gt;
  809.  
  810. &lt;!-- wp:paragraph --&gt;
  811.  
  812. &lt;p&gt;_&lt;/p&gt;
  813. &lt;!-- /wp:paragraph --&gt;
  814.  
  815. &lt;!-- wp:paragraph --&gt;
  816.  
  817. &lt;p&gt;Oui, juste "_"&lt;/p&gt;
  818. &lt;!-- /wp:paragraph --&gt;
  819.  
  820. &lt;!-- wp:paragraph --&gt;
  821.  
  822. &lt;p&gt;Pas d'erreur, rien.&lt;/p&gt;
  823. &lt;!-- /wp:paragraph --&gt;
  824.  
  825. &lt;!-- wp:paragraph --&gt;
  826.  
  827. &lt;p&gt;_&lt;/p&gt;
  828. &lt;!-- /wp:paragraph --&gt;
  829.  
  830. &lt;!-- wp:paragraph --&gt;
  831.  
  832. &lt;p&gt;Première étape : on augmente le &lt;code&gt;loglevel&lt;/code&gt; et on retire le &lt;code&gt;quiet&lt;/code&gt; dans la ligne de &lt;a href="https://en.wikipedia.org/wiki/GNU_GRUB" rel="noreferrer noopener" target="_blank"&gt;GRUB&lt;/a&gt; (voir &lt;a href="https://www.thegeekdiary.com/centos-rhel-6-how-to-change-the-verbosity-of-debug-logs-during-booting/" rel="noreferrer noopener" target="_blank"&gt;CentOS / RHEL 6 : How to change the verbosity of debug logs during booting&lt;/a&gt;). De mon coté, le déchiffrement fonctionne (c'est-à-dire, il accède au contenu du disque et commence la procédure de boot) mais s'arrête abruptement sans plus d'info.&lt;/p&gt;
  833. &lt;!-- /wp:paragraph --&gt;
  834.  
  835. &lt;!-- wp:image {"id":3999,"sizeSlug":"large"} --&gt;
  836.  
  837. &lt;figure class="wp-block-image size-large"&gt;
  838. &lt;img src="https://mart-e.be/wp-content/uploads/2020/12/vlcsnap-2020-12-12-09h58m09s593-1024x576.png" class="wp-image-3999" /&gt;&lt;br /&gt;
  839.  
  840. &lt;figcaption&gt;Ce que l'on peut voir avec &lt;code&gt;loglevel&lt;/code&gt; supérieur&lt;/figcaption&gt;
  841. &lt;/figure&gt;
  842.  
  843. &lt;!-- /wp:image --&gt;
  844.  
  845. &lt;!-- wp:paragraph --&gt;
  846.  
  847. &lt;p&gt;Pas des plus informatif sur la source du problème mais au moins, il arrive à démarrer (filmez votre écran et rejouez la vidéo en &lt;a href="https://www.techwhoop.com/frame-by-frame-vlc/" rel="noreferrer noopener" target="_blank"&gt;image par image&lt;/a&gt;).&lt;/p&gt;
  848. &lt;!-- /wp:paragraph --&gt;
  849.  
  850. &lt;!-- wp:image {"id":4003,"sizeSlug":"large"} --&gt;
  851.  
  852. &lt;figure class="wp-block-image size-large"&gt;
  853. &lt;a href="https://www.flickr.com/photos/sdasmarchives/8663892916/in/photolist-ecAHw5-7vfcTy-7vfa8w-2jxMsyQ-bbq5AX-qcC4jt-2jztydZ-2jyo4Nf-9GH2qS-7xyXgH-om8RHz-6P3wbH-MZobqL-9GE9Wz-pzmWXd-d74CaC-mv4ZwZ-9wBhhn-8nB9bS-7mafgP-r9qwba-5JKzmp-2hawpY6-5JTHpW-sP8CaN-GWMZ4m-qraiWm-2iLnMvg-cyDYpo-bLnJ2t-cyDYnq-oxdbXZ-rAxcAZ-qRakfP-ovshmk-oxv2BX-aSuYPK-bF9D5L-4jyEJ9-cE81Mf-bxt1HG-5JR1Dz-bU4qZz-2hawpYm-237WYtG-4juXDz-dKkyRv-CD7KTs-9wA5XX-ieaqjV"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2020/12/8663892916_f048be298f_o.jpg" class="wp-image-4003" /&gt;&lt;/a&gt;&lt;br /&gt;
  854.  
  855. &lt;figcaption&gt;Dans l'attente d'un message d'erreur lors du boot&lt;/figcaption&gt;
  856. &lt;/figure&gt;
  857.  
  858. &lt;!-- /wp:image --&gt;
  859.  
  860. &lt;!-- wp:paragraph --&gt;
  861.  
  862. &lt;p&gt;Pas beaucoup d'info mais pas de stress, on crée un live USB (j'ai pris une clef USB &lt;a href="https://ubuntu.com/download/desktop/thank-you?version=20.04.1&amp;amp;architecture=amd64" rel="noreferrer noopener" target="_blank"&gt;Ubuntu&lt;/a&gt;, il n'est pas obligatoire d'utiliser le même OS que celui installé). On démarre et on lance un terminal:&lt;/p&gt;
  863. &lt;!-- /wp:paragraph --&gt;
  864.  
  865. &lt;!-- wp:preformatted --&gt;
  866.  
  867. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;fdisk&lt;span class="w"&gt; &lt;/span&gt;-l
  868. ..
  869. Disk&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;238&lt;/span&gt;.49&lt;span class="w"&gt; &lt;/span&gt;GiB,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;256060514304&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;bytes,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;500118192&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;sectors
  870. Disk&lt;span class="w"&gt; &lt;/span&gt;model:&lt;span class="w"&gt; &lt;/span&gt;PC&lt;span class="w"&gt; &lt;/span&gt;SN520&lt;span class="w"&gt; &lt;/span&gt;NVMe&lt;span class="w"&gt; &lt;/span&gt;WDC&lt;span class="w"&gt; &lt;/span&gt;256GB
  871. Units:&lt;span class="w"&gt; &lt;/span&gt;sectors&lt;span class="w"&gt; &lt;/span&gt;of&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;*&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;512&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;512&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;bytes
  872. Sector&lt;span class="w"&gt; &lt;/span&gt;size&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;logical/physical&lt;span class="o"&gt;)&lt;/span&gt;:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;512&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;bytes&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;512&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;bytes
  873. I/O&lt;span class="w"&gt; &lt;/span&gt;size&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;minimum/optimal&lt;span class="o"&gt;)&lt;/span&gt;:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;512&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;bytes&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;512&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;bytes
  874. Disklabel&lt;span class="w"&gt; &lt;/span&gt;type:&lt;span class="w"&gt; &lt;/span&gt;gpt
  875. Disk&lt;span class="w"&gt; &lt;/span&gt;identifier:&lt;span class="w"&gt; &lt;/span&gt;EECB8607-5D1A-4B49-BF5E-7D2012C5FB97
  876. Device&lt;span class="w"&gt; &lt;/span&gt;Start&lt;span class="w"&gt; &lt;/span&gt;End&lt;span class="w"&gt; &lt;/span&gt;Sectors&lt;span class="w"&gt; &lt;/span&gt;Size&lt;span class="w"&gt; &lt;/span&gt;Type
  877. /dev/nvme0n1p1&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2048&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;411647&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;409600&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;200M&lt;span class="w"&gt; &lt;/span&gt;EFI&lt;span class="w"&gt; &lt;/span&gt;System
  878. /dev/nvme0n1p2&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;411648&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;500118158&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;499706511&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;238&lt;/span&gt;.3G&lt;span class="w"&gt; &lt;/span&gt;Linux&lt;span class="w"&gt; &lt;/span&gt;filesystem
  879. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  880.  
  881. &lt;!-- /wp:preformatted --&gt;
  882.  
  883. &lt;!-- wp:paragraph --&gt;
  884.  
  885. &lt;p&gt;Voici mon disque, une partition boot, en clair, sur &lt;code&gt;nvme0n1p1&lt;/code&gt; et une partition chiffrée avec LUKS sur &lt;code&gt;nvme0n1p2&lt;/code&gt;. On va donc les monter pour y accéder:&lt;/p&gt;
  886. &lt;!-- /wp:paragraph --&gt;
  887.  
  888. &lt;!-- wp:preformatted --&gt;
  889.  
  890. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p2&lt;span class="w"&gt; &lt;/span&gt;/mnt/
  891. mount:&lt;span class="w"&gt; &lt;/span&gt;/mnt:&lt;span class="w"&gt; &lt;/span&gt;unknown&lt;span class="w"&gt; &lt;/span&gt;filesystem&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;crypto_LUKS&amp;#39;&lt;/span&gt;.
  892. $&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;cryptsetup&lt;span class="w"&gt; &lt;/span&gt;luksOpen&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p2&lt;span class="w"&gt; &lt;/span&gt;mydisk
  893. Enter&lt;span class="w"&gt; &lt;/span&gt;passphrase&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p2:&lt;span class="w"&gt; &lt;/span&gt;*****
  894. $&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;vgscan
  895. Found&lt;span class="w"&gt; &lt;/span&gt;volume&lt;span class="w"&gt; &lt;/span&gt;group&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;MyVolGroup&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;using&lt;span class="w"&gt; &lt;/span&gt;metadata&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;lvm2
  896. $&lt;span class="w"&gt; &lt;/span&gt;ls&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/
  897. control&lt;span class="w"&gt; &lt;/span&gt;mydisk&lt;span class="w"&gt; &lt;/span&gt;MyVolGroup-root
  898. $&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;/dev/mapper/MyVolGroup-root&lt;span class="w"&gt; &lt;/span&gt;/mnt/
  899. $&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;/dev/nvme0n1p1&lt;span class="w"&gt; &lt;/span&gt;/mnt/boot/
  900. $&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;-B&lt;span class="w"&gt; &lt;/span&gt;/dev&lt;span class="w"&gt; &lt;/span&gt;/mnt/dev
  901. $&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;-B&lt;span class="w"&gt; &lt;/span&gt;/dev/pts&lt;span class="w"&gt; &lt;/span&gt;/mnt/dev/pts
  902. $&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;-B&lt;span class="w"&gt; &lt;/span&gt;/proc&lt;span class="w"&gt; &lt;/span&gt;/mnt/proc
  903. $&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;-B&lt;span class="w"&gt; &lt;/span&gt;/sys&lt;span class="w"&gt; &lt;/span&gt;/mnt/sys
  904. $&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;mount&lt;span class="w"&gt; &lt;/span&gt;-B&lt;span class="w"&gt; &lt;/span&gt;/run&lt;span class="w"&gt; &lt;/span&gt;/mnt/run
  905. $&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;cp&lt;span class="w"&gt; &lt;/span&gt;/etc/resolv.conf&lt;span class="w"&gt; &lt;/span&gt;/mnt/etc/resolv.conf
  906. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  907.  
  908. &lt;!-- /wp:preformatted --&gt;
  909.  
  910. &lt;!-- wp:paragraph --&gt;
  911.  
  912. &lt;p&gt;Toutes ces commandes me permettent d'avoir un système fonctionnel dans le dossier &lt;code&gt;/mnt&lt;/code&gt;. La dernière commande permet d'avoir accès à internet lors du &lt;a href="https://en.wikipedia.org/wiki/Chroot" rel="noreferrer noopener" target="_blank"&gt;chroot&lt;/a&gt;.&lt;/p&gt;
  913. &lt;!-- /wp:paragraph --&gt;
  914.  
  915. &lt;!-- wp:preformatted --&gt;
  916.  
  917. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chroot&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mnt&lt;/span&gt;
  918. &lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;pacman&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Syu&lt;/span&gt;
  919. &lt;span class="err"&gt;…&lt;/span&gt;
  920. &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Running&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;hook&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;encrypt&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
  921. &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Running&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;hook&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;lvm2&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
  922. &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Running&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;hook&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;filesystems&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
  923. &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Running&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;hook&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;keyboard&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
  924. &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Running&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;hook&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;fsck&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
  925. &lt;span class="o"&gt;==&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Generating&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;module&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dependencies&lt;/span&gt;
  926. &lt;span class="o"&gt;==&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Creating&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;gzip&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;compressed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;initcpio&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;image&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;boot&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;initramfs&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;linux&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;fallback&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;img&lt;/span&gt;
  927. &lt;span class="o"&gt;==&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;Image&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;generation&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;successful&lt;/span&gt;
  928. &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Reloading&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;system&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;bus&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="err"&gt;…&lt;/span&gt;
  929. &lt;span class="n"&gt;Running&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;chroot&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ignoring&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;try-reload-or-restart&amp;#39;&lt;/span&gt;
  930. &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Probing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;GDK&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Pixbuf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;loader&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;modules&lt;/span&gt;&lt;span class="err"&gt;…&lt;/span&gt;
  931. &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Probing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nc"&gt;bit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;GDK&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Pixbuf&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;loader&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;modules&lt;/span&gt;&lt;span class="err"&gt;…&lt;/span&gt;
  932. &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Updating&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;icon&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;theme&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;caches&lt;/span&gt;&lt;span class="err"&gt;…&lt;/span&gt;
  933. &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Updating&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;directory&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;file&lt;/span&gt;&lt;span class="err"&gt;…&lt;/span&gt;
  934. &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Updating&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;desktop&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;file&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;MIME&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cache&lt;/span&gt;&lt;span class="err"&gt;…&lt;/span&gt;
  935. &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Updating&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;MIME&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;database&lt;/span&gt;&lt;span class="err"&gt;…&lt;/span&gt;
  936. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  937.  
  938. &lt;!-- /wp:preformatted --&gt;
  939.  
  940. &lt;!-- wp:paragraph --&gt;
  941.  
  942. &lt;p&gt;Dans mon cas, il s'agissait probablement d'une mise à jour corrompue. Donc, mettre à jour le système (avec une mise à jour du paquet linux en bonus) a réglé le souci. Si vous aviez un autre problème (GRUB mal installé par exemple), le &lt;code&gt;chroot&lt;/code&gt; est également une bonne façon de procéder. Une fois les manipulations finies, on sort du &lt;code&gt;chroot&lt;/code&gt; et on referme tous les disques.&lt;/p&gt;
  943. &lt;!-- /wp:paragraph --&gt;
  944.  
  945. &lt;!-- wp:preformatted --&gt;
  946.  
  947. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;exit&lt;/span&gt;
  948. &lt;span class="n"&gt;ubuntu&lt;/span&gt;&lt;span class="nv"&gt;@ubuntu&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;umount&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mnt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pts&lt;/span&gt;
  949. &lt;span class="n"&gt;ubuntu&lt;/span&gt;&lt;span class="nv"&gt;@ubuntu&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;umount&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mnt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dev&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
  950. &lt;span class="n"&gt;ubuntu&lt;/span&gt;&lt;span class="nv"&gt;@ubuntu&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;umount&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mnt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;
  951. &lt;span class="n"&gt;ubuntu&lt;/span&gt;&lt;span class="nv"&gt;@ubuntu&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;umount&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mnt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;
  952. &lt;span class="n"&gt;ubuntu&lt;/span&gt;&lt;span class="nv"&gt;@ubuntu&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;umount&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mnt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;proc&lt;/span&gt;
  953. &lt;span class="n"&gt;ubuntu&lt;/span&gt;&lt;span class="nv"&gt;@ubuntu&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;umount&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mnt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;boot&lt;/span&gt;
  954. &lt;span class="n"&gt;ubuntu&lt;/span&gt;&lt;span class="nv"&gt;@ubuntu&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;umount&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mnt&lt;/span&gt;
  955. &lt;span class="n"&gt;ubuntu&lt;/span&gt;&lt;span class="nv"&gt;@ubuntu&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cryptsetup&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;close&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;MyVolGroup&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt;
  956. &lt;span class="n"&gt;ubuntu&lt;/span&gt;&lt;span class="nv"&gt;@ubuntu&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cryptsetup&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;close&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;mydisk&lt;/span&gt;
  957. &lt;span class="n"&gt;ubuntu&lt;/span&gt;&lt;span class="nv"&gt;@ubuntu&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="o"&gt;~&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sudo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;reboot&lt;/span&gt;
  958. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  959.  
  960. &lt;!-- /wp:preformatted --&gt;
  961.  
  962. &lt;!-- wp:paragraph --&gt;
  963.  
  964. &lt;p&gt;Et après un redémarrage et un peu de sueur froide, le système redémarre correctement !&lt;/p&gt;
  965. &lt;!-- /wp:paragraph --&gt;
  966.  
  967. &lt;!-- wp:image {"align":"center","id":4001,"sizeSlug":"large"} --&gt;
  968.  
  969. &lt;div class="wp-block-image"&gt;
  970.  
  971. &lt;figure class="aligncenter size-large"&gt;
  972. &lt;a href="https://www.flickr.com/photos/nypl/3110056172/in/photolist-5JPRm9-9hgqiJ-7VEEgT-pqMcEP-owvJnz-rmSNm4-29MGAqN-ecACKL-kEJz7c-otF8wG-9VG1u3-owjpBc-fyyAXy-qm2yUE-4jCnWj-ecACMS-9oAqh3-aoZfvF-oeRNhr-idNTNp-2jzLLob-Ufdwph-4jyX3q-ecv1AB-xgy8gT-MdwAoo-qm2yXL-w9vio5-2e5cq89-otaXeY-owqxaV-ovf4ST-eXssAq-owrcN6-NNnPvY-od7ZDg-ecv1at-4jykoK-28nsScB-pre4qG-oeYCLh-i6Thwo-BLgrE9-tYfq8w-4jCD5j-ownLRR-ow9ddu-6arLK1-bv8Bk6-4jCDbo"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2020/12/3110056172_b75b13223d_c.jpg" class="wp-image-4001" alt=" Limberger&amp;#39;s Victory (cinema 1915) " /&gt;&lt;/a&gt;
  973. &lt;/figure&gt;
  974.  
  975. &lt;/div&gt;
  976.  
  977. &lt;!-- /wp:image --&gt;</content><category term="News"></category><category term="archlinux"></category><category term="luks"></category><category term="planet-libre"></category></entry><entry><title>Pourquoi je n'installerai pas Coronalert</title><link href="https://mart-e.be/post/2020/10/05/pourquoi-je-ninstallerai-pas-coronalert" rel="alternate"></link><published>2020-10-05T13:51:00+02:00</published><updated>2020-10-05T13:51:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2020-10-05:/post/2020/10/05/pourquoi-je-ninstallerai-pas-coronalert</id><summary type="html">&lt;!-- wp:paragraph --&gt;
  978.  
  979. &lt;p&gt;&lt;a href="https://coronalert.be/"&gt;Coronalert&lt;/a&gt;, l'application de traçage COVID-19 en Belgique vient d'être publiée et est installable par le public. Je n'installerai certainement pas cette application et vous explique pourquoi.&lt;/p&gt;
  980. &lt;!-- /wp:paragraph --&gt;
  981.  
  982. &lt;!-- wp:image {"id":3924,"sizeSlug":"large"} --&gt;
  983.  
  984. &lt;figure class="wp-block-image size-large"&gt;
  985. &lt;a href="https://www.flickr.com/photos/floridamemory/7026619371/"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2020/10/7026619371_2abcfc9c17_o.jpg" class="wp-image-3924" /&gt;&lt;/a&gt;&lt;br /&gt;
  986.  
  987. &lt;figcaption&gt;Comme Lucy, je suis …&lt;/figcaption&gt;&lt;/figure&gt;</summary><content type="html">&lt;!-- wp:paragraph --&gt;
  988.  
  989. &lt;p&gt;&lt;a href="https://coronalert.be/"&gt;Coronalert&lt;/a&gt;, l'application de traçage COVID-19 en Belgique vient d'être publiée et est installable par le public. Je n'installerai certainement pas cette application et vous explique pourquoi.&lt;/p&gt;
  990. &lt;!-- /wp:paragraph --&gt;
  991.  
  992. &lt;!-- wp:image {"id":3924,"sizeSlug":"large"} --&gt;
  993.  
  994. &lt;figure class="wp-block-image size-large"&gt;
  995. &lt;a href="https://www.flickr.com/photos/floridamemory/7026619371/"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2020/10/7026619371_2abcfc9c17_o.jpg" class="wp-image-3924" /&gt;&lt;/a&gt;&lt;br /&gt;
  996.  
  997. &lt;figcaption&gt;Comme Lucy, je suis sceptique&lt;/figcaption&gt;
  998. &lt;/figure&gt;
  999.  
  1000. &lt;!-- /wp:image --&gt;
  1001.  
  1002. &lt;!-- wp:heading {"level":4} --&gt;
  1003.  
  1004. &lt;h4&gt;Fonctionnement&lt;/h4&gt;
  1005. &lt;!-- /wp:heading --&gt;
  1006.  
  1007. &lt;!-- wp:paragraph --&gt;
  1008.  
  1009. &lt;p&gt;L'application belge fonctionne avec le protocole &lt;a href="https://en.wikipedia.org/wiki/Decentralized_Privacy-Preserving_Proximity_Tracing"&gt;DP-3T&lt;/a&gt; et est directement inspirée de l'application Allemande &lt;a href="https://www.coronawarn.app/en/"&gt;Corona-Warn-App&lt;/a&gt;. Cette dernière étant publiée sous licence Apache, le code source a pu être réutilisé et il n'a suffit que de &lt;a href="https://github.com/covid-be-app/cwa-app-android/graphs/commit-activity"&gt;4 mois&lt;/a&gt; pour développer la variante belge.&lt;/p&gt;
  1010. &lt;!-- /wp:paragraph --&gt;
  1011.  
  1012. &lt;!-- wp:image {"align":"center","id":3898,"sizeSlug":"medium","linkDestination":"media"} --&gt;
  1013.  
  1014. &lt;div class="wp-block-image"&gt;
  1015.  
  1016. &lt;figure class="aligncenter size-medium"&gt;
  1017. &lt;a href="https://mart-e.be/wp-content/uploads/2020/09/onepage.png"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2020/09/onepage-165x300.png" class="wp-image-3898" /&gt;&lt;/a&gt;&lt;br /&gt;
  1018.  
  1019. &lt;figcaption&gt;Fonctionnement simplifié du DP-3T, &lt;a href="https://ncase.me/contact-tracing/" target="_blank" rel="noreferrer noopener"&gt;source&lt;/a&gt;&lt;/figcaption&gt;
  1020. &lt;/figure&gt;
  1021.  
  1022. &lt;/div&gt;
  1023.  
  1024. &lt;!-- /wp:image --&gt;
  1025.  
  1026. &lt;!-- wp:paragraph --&gt;
  1027.  
  1028. &lt;p&gt;Le respect de la vie privée est une des bases du protocole DP-3T. Les contacts sont enregistrés sur le téléphone de l'utilisateur et non dans une base de données centralisée, ce qui évite beaucoup d'abus (gouvernement trop curieux, piratage,...). &lt;a href="https://enginaked.wordpress.com/2020/09/25/revue-rapide-de-lapplication-mobile-coronalert-be/" rel="noreferrer noopener" target="_blank"&gt;Une analyse du code source&lt;/a&gt; de l'application Coronalert (également open source) semble indiquer qu'elle n'est pas trop bavarde et se contente de partager le minimum d'information requis. C'est évidemment trop tôt pour faire une analyse en profondeur et un audit de sécurité complet mais c'est prometteur.&lt;/p&gt;
  1029. &lt;!-- /wp:paragraph --&gt;
  1030.  
  1031. &lt;!-- wp:paragraph --&gt;
  1032.  
  1033. &lt;p&gt;Mais alors, où est le problème ?&lt;/p&gt;
  1034. &lt;!-- /wp:paragraph --&gt;
  1035.  
  1036. &lt;!-- wp:heading {"level":4} --&gt;
  1037.  
  1038. &lt;h4&gt;Inefficacité du Bluetooth&lt;/h4&gt;
  1039. &lt;!-- /wp:heading --&gt;
  1040.  
  1041. &lt;!-- wp:paragraph --&gt;
  1042.  
  1043. &lt;p&gt;L'application utilise le &lt;a href="https://fr.wikipedia.org/wiki/Bluetooth"&gt;Bluetooth&lt;/a&gt; du téléphone pour déterminer si deux personnes sont à moins d'1,50m pendant au moins 15 minutes. Le Bluetooth est avant tout un protocole de communication et n'a pas été pensé pour déterminer la proximité entre deux utilisateurs. Il n'est &lt;a href="https://theintercept.com/2020/05/05/coronavirus-bluetooth-contact-tracing/"&gt;pas fiable&lt;/a&gt; pour déterminer la distance entre deux appareils. On peut faire des vagues estimations de distance mais rien de précis.&lt;/p&gt;
  1044. &lt;!-- /wp:paragraph --&gt;
  1045.  
  1046. &lt;!-- wp:image {"align":"center","id":3902,"sizeSlug":"medium","linkDestination":"media"} --&gt;
  1047.  
  1048. &lt;div class="wp-block-image"&gt;
  1049.  
  1050. &lt;figure class="aligncenter size-medium"&gt;
  1051. &lt;a href="https://mart-e.be/wp-content/uploads/2020/10/covid-risk-indoor.jpg"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2020/10/covid-risk-indoor-300x240.jpg" class="wp-image-3902" /&gt;&lt;/a&gt;&lt;br /&gt;
  1052.  
  1053. &lt;figcaption&gt;Le risque dans un milieu ventilé ou non, masqué ou non est très différent, &lt;a href="https://www.cdc.gov/coronavirus/2019-ncov/daily-life-coping/deciding-to-go-out.html" rel="noreferrer noopener" target="_blank"&gt;source&lt;/a&gt;&lt;/figcaption&gt;
  1054. &lt;/figure&gt;
  1055.  
  1056. &lt;/div&gt;
  1057.  
  1058. &lt;!-- /wp:image --&gt;
  1059.  
  1060. &lt;!-- wp:paragraph --&gt;
  1061.  
  1062. &lt;p&gt;Même en supposant que le signal Bluetooth permette de déterminer la distance entre deux personnes (ce qui n'est pas le cas), cela ne donne finalement que peu d'informations. La distance n'est pas le facteur déterminant pour évaluer si un contact est à risque ou non. Rappelons qu'un contact avec ou sans masque, en intérieur ou en extérieur, impliquent des niveaux de risques totalement différents ! Être assis à coté de quelqu'un dans un bar et attendre le bus dehors n'est pas pareil en matière de risque mais bien pour un signal Bluetooth.&lt;/p&gt;
  1063. &lt;!-- /wp:paragraph --&gt;
  1064.  
  1065. &lt;!-- wp:heading {"level":4} --&gt;
  1066.  
  1067. &lt;h4&gt;Les autres applications ne fonctionnent pas&lt;/h4&gt;
  1068. &lt;!-- /wp:heading --&gt;
  1069.  
  1070. &lt;!-- wp:paragraph --&gt;
  1071.  
  1072. &lt;p&gt;Il a été affirmé que si, au moins, &lt;a href="https://www.rtbf.be/info/belgique/detail_coronalert-si-on-atteint-15-d-adhesion-de-la-population-on-sauve-des-vies-estime-axel-legay-concepteur-de-l-application-de-tracage?id=10596235" rel="noreferrer noopener" target="_blank"&gt;15% de la population&lt;/a&gt; installe l'application, cela pourrait sauver des vies. On entend aussi souvent le chiffre de 60% de la population minimum mais &lt;a href="https://www.technologyreview.com/2020/06/05/1002775/covid-apps-effective-at-less-than-60-percent-download/" rel="noreferrer noopener" target="_blank"&gt;il semble exagéré&lt;/a&gt;. En Islande, 38% de la population a téléchargé l'application, un des plus grand taux pour une application de traçage de contact, et pourtant, &lt;a href="https://www.technologyreview.com/2020/05/11/1001541/iceland-rakning-c19-covid-contact-tracing/" rel="noreferrer noopener" target="_blank"&gt;elle n'a pas été très utile&lt;/a&gt; (ils ont contrôlé l'épidémie avec des tests massifs). Dans le cas de la France ou de l'Australie, &lt;a href="https://www.technologyreview.com/2020/07/10/1005027/8-million-people-14-alerts-why-some-covid-19-apps-are-staying-silent/" rel="noreferrer noopener" target="_blank"&gt;le bilan n'est pas meilleur&lt;/a&gt;.&lt;/p&gt;
  1073. &lt;!-- /wp:paragraph --&gt;
  1074.  
  1075. &lt;!-- wp:heading {"level":4} --&gt;
  1076.  
  1077. &lt;h4&gt;Faux sentiment de sécurité&lt;/h4&gt;
  1078. &lt;!-- /wp:heading --&gt;
  1079.  
  1080. &lt;!-- wp:paragraph --&gt;
  1081.  
  1082. &lt;p&gt;Il &lt;a href="https://psyarxiv.com/nxw2k" rel="noreferrer noopener" target="_blank"&gt;a été montré&lt;/a&gt; que le fait de porter un casque de vélo pousse inconsciemment les automobilistes à dépasser de plus près les cyclistes. Comme si la protection supplémentaire excusait un comportement plus risqué. Avec la généralisation des masques (même si le masque est fait dans un vieux poncho troué ou avec le nez qui dépasse), je remarque que les distances de sécurité sont beaucoup moins respectées.&lt;/p&gt;
  1083. &lt;!-- /wp:paragraph --&gt;
  1084.  
  1085. &lt;!-- wp:image {"id":3921,"sizeSlug":"large"} --&gt;
  1086.  
  1087. &lt;figure class="wp-block-image size-large"&gt;
  1088. &lt;a href="https://www.flickr.com/photos/nlireland/35380747664/"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2020/10/35380747664_852dae8069_c.jpg" class="wp-image-3921" /&gt;&lt;/a&gt;&lt;br /&gt;
  1089.  
  1090. &lt;figcaption&gt;Distances de sécurité&lt;/figcaption&gt;
  1091. &lt;/figure&gt;
  1092.  
  1093. &lt;!-- /wp:image --&gt;
  1094.  
  1095. &lt;!-- wp:paragraph --&gt;
  1096.  
  1097. &lt;p&gt;Les exemples de protection augmentant la prise de risque sont nombreux. Inconsciemment, aller dans un bar bondé sera moins grave car je serai mieux protégé avec l'application.&lt;/p&gt;
  1098. &lt;!-- /wp:paragraph --&gt;
  1099.  
  1100. &lt;!-- wp:heading {"level":4} --&gt;
  1101.  
  1102. &lt;h4&gt;Il y aura des failles&lt;/h4&gt;
  1103. &lt;!-- /wp:heading --&gt;
  1104.  
  1105. &lt;!-- wp:paragraph --&gt;
  1106.  
  1107. &lt;p&gt;Je ne doute pas que les auteurs de l'application sont des développeurs très compétents. Cependant, il est illusoire de penser que l'application ne comporte pas de bug. Et si un bug peut varier en terme de gravité (du simple pépin à la faille de sécurité), les données traitées sont particulièrement sensibles.&lt;/p&gt;
  1108. &lt;!-- /wp:paragraph --&gt;
  1109.  
  1110. &lt;!-- wp:paragraph --&gt;
  1111.  
  1112. &lt;p&gt;C'est faire preuve d'une grande confiance que de penser qu'une application créée en 4 mois sera infaillible dans le traitement de nos données. Le risque de découvrir une faiblesse dans l'algorithme ou dans l'implémentation est loin d'être négligeable, les deux sont très récents et n'ont pas subi l'épreuve du temps. En informatique, si l'on ne trouve pas de bug, c'est que l'on n'a pas assez cherché...&lt;/p&gt;
  1113. &lt;!-- /wp:paragraph --&gt;
  1114.  
  1115. &lt;!-- wp:heading {"level":4} --&gt;
  1116.  
  1117. &lt;h4&gt;On introduit un précédent dangereux&lt;/h4&gt;
  1118. &lt;!-- /wp:heading --&gt;
  1119.  
  1120. &lt;!-- wp:paragraph --&gt;
  1121.  
  1122. &lt;p&gt;L'enfer est pavé de bonnes intentions, etc, etc. Il est évident que l'on veut faire un maximum pour lutter contre la pandémie et sauver des vies mais avec Coronalert, on installe une application de traçage pour des raisons sanitaires. Et ce n'est pas négligeable.&lt;/p&gt;
  1123. &lt;!-- /wp:paragraph --&gt;
  1124.  
  1125. &lt;!-- wp:image {"id":3934,"sizeSlug":"large"} --&gt;
  1126.  
  1127. &lt;figure class="wp-block-image size-large"&gt;
  1128. &lt;a href="https://www.flickr.com/photos/floridamemory/14990995563/"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2020/10/14990995563_01d2cb1128_o.jpg" class="wp-image-3934" /&gt;&lt;/a&gt;&lt;br /&gt;
  1129.  
  1130. &lt;figcaption&gt;Démonstration des nouvelles mesures de bulle sociale&lt;/figcaption&gt;
  1131. &lt;/figure&gt;
  1132.  
  1133. &lt;p&gt;Le fait que cette application soit, ou non, respectueuse de nos données est finalement un détail très technique : rien ne ressemble plus à une application gouvernementale qu'une autre application gouvernementale pour le commun des mortels. Il suffit de regarder &lt;a href="https://www.rtbf.be/auvio/detail_coronalert-l-appli-doit-encore-convaincre?id=2686313&amp;amp;t=0" rel="noreferrer noopener" target="_blank"&gt;ce micro-trottoir&lt;/a&gt; pour réaliser la méconnaissance du sujet (et les inquiétudes qui en découlent logiquement).&lt;/p&gt;
  1134. &lt;p&gt;Il est évident que, si cette expérimentation est un succès (et probablement même si un échec), elle sera retentée dans le futur, à d'autres fins plus ou moins défendables. Si Coronalert met de bons gardes-fous pour éviter tout abus, il sera, par contre, après cette première expérience, plus facile d'accepter une autre application, même si elle est moins consciencieuse. En psychologie sociale, c'est ce qu'on appelle, la "&lt;a href="https://fr.wikipedia.org/wiki/Pied-dans-la-porte" rel="noreferrer noopener" target="_blank"&gt;technique du pied dans la porte&lt;/a&gt;" . Et si la prochaine est plus efficace mais moins respectueuse de la vie privée ? Et si on l'utilisait pour la prochaine épidémie de grippe saisonnière ? Pour aider la justice dans des enquêtes criminelles ? Pour lutter contre la fraude fiscale ? Où mettez-vous la limite ?&lt;/p&gt;
  1135. &lt;!-- /wp:paragraph --&gt;
  1136.  
  1137. &lt;!-- wp:heading {"level":4} --&gt;
  1138.  
  1139. &lt;h4&gt;On ne règle pas une crise sanitaire avec une application&lt;/h4&gt;
  1140. &lt;!-- /wp:heading --&gt;
  1141.  
  1142. &lt;!-- wp:paragraph --&gt;
  1143.  
  1144. &lt;p&gt;Finalement, même si l'on supposait que l'application tenait la route d'un point de vue technique, l'existence de cette application est de la poudre aux yeux. C'est un fantasme trop courant que de penser que l'on peut régler un problème sociétal avec une nouvelle technologie, particulièrement en remettant la responsabilité sur le citoyen. Il est important que chacun participe à l'effort collectif mais si cela a réellement un effet.&lt;/p&gt;
  1145. &lt;!-- /wp:paragraph --&gt;
  1146.  
  1147. &lt;!-- wp:image {"id":3919,"sizeSlug":"large"} --&gt;
  1148.  
  1149. &lt;figure class="wp-block-image size-large"&gt;
  1150. &lt;a href="https://twitter.com/christiemorreal/status/1311531287786803200"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2020/10/Screenshot_2020-10-06-Christie-Morreale-on-Twitter.png" class="wp-image-3919" /&gt;&lt;/a&gt;&lt;br /&gt;
  1151.  
  1152. &lt;figcaption&gt;Non Christie, le refinancement de la santé c'est ça qui sauvera des vies ! Mais ça coûte plus cher qu'un retweet.&lt;/figcaption&gt;
  1153. &lt;/figure&gt;
  1154.  
  1155. &lt;p&gt;Pour contrôler l'épidémie de coronavirus, on a déjà tous les outils nécessaires (mis en place plus ou moins efficacement). On a du &lt;em&gt;contact tracing&lt;/em&gt; si l'on est testé positif. On laisse nos coordonnées dans les restaurants. En cas de contamination, on connaît déjà les personnes à prévenir. Si l'on veut contenir l'épidémie, il faut porter des masques, éviter les contacts non-essentiels et surtout tester plus et mieux.&lt;/p&gt;
  1156. &lt;h4&gt;Est-ce grave si c'est inefficace ?&lt;/h4&gt;
  1157. &lt;p&gt;Après avoir donné tous mes arguments pour lesquels une application de traçage ne va &lt;strong&gt;pas&lt;/strong&gt; fonctionner, on me répond souvent :&lt;/p&gt;
  1158. &lt;blockquote&gt;
  1159. &lt;p&gt;- Oui, mais ça ne coûte pas grand chose de l'installer&lt;/p&gt;
  1160. &lt;p&gt;- C'est juste une application de plus&lt;/p&gt;
  1161. &lt;p&gt;- J'ai fait ma part dans la société&lt;/p&gt;
  1162. &lt;p&gt;- Au pire, ce n'est pas efficace mais on n'aura pas perdu grand chose&lt;/p&gt;
  1163. &lt;p&gt;- ...&lt;/p&gt;
  1164. &lt;/blockquote&gt;
  1165. &lt;p&gt;Dans un monde d'effort, d'attention et d'argent limité, aucun choix n'est anodin.&lt;/p&gt;
  1166. &lt;p&gt;Je compare cette application au tri des déchets. On bassine les citoyens sur l'importance de jeter leurs canettes dans les bonnes poubelles, &lt;a href="https://www.seuil.com/ouvrage/homo-detritus-baptiste-monsaingeon/9782021352603" rel="noreferrer noopener" target="_blank"&gt;aussi inefficace soit l'action&lt;/a&gt;. En effet, si le tri sélectif est important et un meilleur comportement que ne pas trier du tout, il donne un faux sentiment que le problème est réglé dès la mise en sac et permet de ne pas s'attaquer aux vraies causes (la production, le modèle du tout jetable,...). C'est exactement pareil avec la pandémie de Covid-19. On dépense de l'argent et des efforts à des choses ayant un impact, au mieux, négligeable.&lt;/p&gt;
  1167. &lt;p&gt;Je ne cherche nullement à diminuer la gravité de la pandémie ou de dire qu'il ne faut rien faire de plus mais, pour moi, Coronalert n'est pas un mode d'action valable. Il est politiquement intéressant de montrer que l'on agit mais ça reste du gaspillage de temps et d'argent auquel je ne veux pas participer.&lt;/p&gt;</content><category term="News"></category><category term="coronavirus"></category><category term="smartphone"></category><category term="société"></category></entry><entry><title>Fermentation alcoolique maison</title><link href="https://mart-e.be/post/2020/05/10/fermentation-alcoolique-maison" rel="alternate"></link><published>2020-05-10T12:14:00+02:00</published><updated>2020-05-10T12:14:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2020-05-10:/post/2020/05/10/fermentation-alcoolique-maison</id><summary type="html">&lt;!-- wp:paragraph --&gt;
  1168.  
  1169. &lt;p&gt;J'aurais pu profiter du confinement pour méditer, ranger la maison ou faire du sport mais non, j'ai décidé faire fermenter tout ce qui me tombait sous la main !&lt;/p&gt;
  1170. &lt;!-- /wp:paragraph --&gt;
  1171.  
  1172. &lt;!-- wp:image {"align":"center","id":3747,"sizeSlug":"full"} --&gt;
  1173.  
  1174. &lt;div class="wp-block-image"&gt;
  1175.  
  1176. &lt;figure class="aligncenter size-full"&gt;
  1177. &lt;img src="https://mart-e.be/wp-content/uploads/2020/05/drink-1.jpg" title="J. H. Roberts drinking beer in the J.C. Williamson production of Fly Away Peter, 1949" class="wp-image-3747" /&gt;&lt;br /&gt;
  1178.  
  1179. &lt;figcaption&gt;&lt;em&gt;Bien meilleure …&lt;/em&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;</summary><content type="html">&lt;!-- wp:paragraph --&gt;
  1180.  
  1181. &lt;p&gt;J'aurais pu profiter du confinement pour méditer, ranger la maison ou faire du sport mais non, j'ai décidé faire fermenter tout ce qui me tombait sous la main !&lt;/p&gt;
  1182. &lt;!-- /wp:paragraph --&gt;
  1183.  
  1184. &lt;!-- wp:image {"align":"center","id":3747,"sizeSlug":"full"} --&gt;
  1185.  
  1186. &lt;div class="wp-block-image"&gt;
  1187.  
  1188. &lt;figure class="aligncenter size-full"&gt;
  1189. &lt;img src="https://mart-e.be/wp-content/uploads/2020/05/drink-1.jpg" title="J. H. Roberts drinking beer in the J.C. Williamson production of Fly Away Peter, 1949" class="wp-image-3747" /&gt;&lt;br /&gt;
  1190.  
  1191. &lt;figcaption&gt;&lt;em&gt;Bien meilleure utilisation de la confiture&lt;/em&gt;&lt;/figcaption&gt;
  1192. &lt;/figure&gt;
  1193.  
  1194. &lt;/div&gt;
  1195.  
  1196. &lt;!-- /wp:image --&gt;
  1197.  
  1198. &lt;!-- wp:paragraph --&gt;
  1199.  
  1200. &lt;p&gt;Cet article présente quelques projets de boissons fermentées +/- amusants et +/- réussis que j'ai réalisés lors des dernières semaines avec les moyens du bord et que je vous partage en espérant que cela vous donne de l'inspiration. Je mettrai des liens vers Brouwland, le site que j'ai utilisé pour le matériel mais il existe une multitude d'autres sites et magasins semblables. Avertissement : je ne suis certainement pas un expert dans le domaine et je n'y connais pas grand chose en biologie. N'hésitez donc pas à partager vos propres connaissances.&lt;/p&gt;
  1201. &lt;!-- /wp:paragraph --&gt;
  1202.  
  1203. &lt;!-- wp:heading {"level":3} --&gt;
  1204.  
  1205. &lt;h3&gt;Pourquoi ?&lt;/h3&gt;
  1206. &lt;!-- /wp:heading --&gt;
  1207.  
  1208. &lt;!-- wp:paragraph --&gt;
  1209.  
  1210. &lt;p&gt;En plus d'être économique et écologique (difficile de faire plus circuit-court), c'est très gratifiant de boire une boisson que l'on a produite soit-même plutôt qu'achetée au supermarché. Il y a quelque chose d'assez magique dans le fait de jouer avec les levures, de transformer les différents sucres, de varier les paramètres de la recette et d'observer le résultat. De temps en temps, ça ne pétille pas et de temps en temps, ça explose. Parfois, il n'y a pas d'alcool et parfois trop. Une sorte de petit chimiste pour adultes.&lt;/p&gt;
  1211. &lt;!-- /wp:paragraph --&gt;
  1212.  
  1213. &lt;!-- wp:heading {"level":3} --&gt;
  1214.  
  1215. &lt;h3&gt;La théorie&lt;/h3&gt;
  1216. &lt;!-- /wp:heading --&gt;
  1217.  
  1218. &lt;!-- wp:paragraph --&gt;
  1219.  
  1220. &lt;p&gt;Faire de l'alcool est relativement simple. On pourrait résumer la fermentation alcoolique à la formule "sucre + levure = alcool". Selon les recettes, le mélange sera composé d'une base aqueuse (eau, thé, jus,...), de sucre (qui peut provenir de fruits, de céréales, de miel ou être simplement ajouté) et de levures (levure sèche ou naturellement présentes dans les fruits). Chacun des ingrédients aura une influence sur le goût, le degré d'alcool et le temps de fermentation du mélange mais l'idée reste la même. Notez qu'une courte fermentation avec peu de sucre permet d'obtenir des sodas non ou très peu alcoolisés. La fermentation est alcoolique, la boisson ne l'est pas forcément.&lt;/p&gt;
  1221. &lt;!-- /wp:paragraph --&gt;
  1222.  
  1223. &lt;!-- wp:image {"align":"center","id":3820,"sizeSlug":"large"} --&gt;
  1224.  
  1225. &lt;div class="wp-block-image"&gt;
  1226.  
  1227. &lt;figure class="aligncenter size-large"&gt;
  1228. &lt;img src="https://mart-e.be/wp-content/uploads/2020/05/27062766401_3f09baf7dd_b.jpg" class="wp-image-3820" /&gt;
  1229. &lt;/figure&gt;
  1230.  
  1231. &lt;/div&gt;
  1232.  
  1233. &lt;!-- /wp:image --&gt;
  1234.  
  1235. &lt;!-- wp:paragraph --&gt;
  1236.  
  1237. &lt;p&gt;Certaines fermentations vont se passer à l'air libre (pour faire du vinaigre, du levain, cultiver un "starter") ou privées d'air (généralement pour une fermentation alcoolique, ce qui nous intéresse). On va idéalement utiliser un &lt;a href="https://fr.wikipedia.org/wiki/Barboteur" rel="noreferrer noopener" target="_blank"&gt;barboteur&lt;/a&gt; pour laisser s'échapper le CO&lt;sub&gt;2&lt;/sub&gt; mais, en cas de confinement, on peut utiliser le système D avec &lt;a href="https://www.instructables.com/id/How-to-make-your-own-Fermentation-Lock-Not-a-ball/" rel="noreferrer noopener" target="_blank"&gt;un tuyau&lt;/a&gt;, &lt;a href="https://www.instructables.com/id/Home-made-air-lock/" rel="noreferrer noopener" target="_blank"&gt;une paille&lt;/a&gt;, &lt;a href="https://www.reddit.com/r/prisonhooch/comments/a7o55w/12_hours_in_do_i_need_to_poke_holes_in_balloons/" rel="noreferrer noopener" target="_blank"&gt;un ballon&lt;/a&gt;, &lt;a href="https://moonshiners.club/homemade-persimmon-wine-recipe/" rel="noreferrer noopener" target="_blank"&gt;un gant chirurgical&lt;/a&gt;, etc. Les gens sont très imaginatifs quand il s'agit de faire de l'alcool (le barboteur reste quand même la meilleure solution et ne coûte pas très cher).&lt;/p&gt;
  1238. &lt;!-- /wp:paragraph --&gt;
  1239.  
  1240. &lt;!-- wp:paragraph --&gt;
  1241.  
  1242. &lt;p&gt;Si vous stockez du liquide dans une bouteille fermée, faites bien attention à ce que la fermentation soit terminée (c'est-à-dire que tout le sucre ait été transformé) et que la bouteille résiste à la pression. S'il reste du sucre et que la température est suffisante, la fermentation continuera en bouteille et le niveau d'alcool et de CO&lt;sub&gt;2&lt;/sub&gt; continuera d'augmenter. Vous ne voulez pas que votre petit neveu soit défiguré (ou pire, saoul) après avoir laissé la bouteille de votre limonade maison trois jours dans sa chambre.&lt;/p&gt;
  1243. &lt;!-- /wp:paragraph --&gt;
  1244.  
  1245. &lt;!-- wp:image {"align":"center","id":3830,"sizeSlug":"large"} --&gt;
  1246.  
  1247. &lt;div class="wp-block-image"&gt;
  1248.  
  1249. &lt;figure class="aligncenter size-large"&gt;
  1250. &lt;img src="https://mart-e.be/wp-content/uploads/2020/05/3399462255_85377fac42_o.jpg" class="wp-image-3830" /&gt;&lt;br /&gt;
  1251.  
  1252. &lt;figcaption&gt;&lt;em&gt;Le petit Kevin dégustant de la limonade de 4 jours&lt;/em&gt;&lt;/figcaption&gt;
  1253. &lt;/figure&gt;
  1254.  
  1255. &lt;/div&gt;
  1256.  
  1257. &lt;!-- /wp:image --&gt;
  1258.  
  1259. &lt;!-- wp:paragraph --&gt;
  1260.  
  1261. &lt;p&gt;De manière générale, toute bouteille qui a contenu un liquide fermenté peut être réutilisée à cette même fin. Personnellement, j'aime les bouteilles de &lt;a href="https://www.brasserielefebvre.be/beer/hopus/" rel="noreferrer noopener" target="_blank"&gt;Hopus&lt;/a&gt; qui ont un bouchon mécanique. Par contre, évitez les &lt;a href="https://www.ikea.com/be/fr/p/korken-bouteille-avec-bouchon-verre-transparent-30213552/" rel="noreferrer noopener" target="_blank"&gt;bouteilles Ikea&lt;/a&gt; qui, malgré leur design, ne supporteront pas la pression induite par la fermentation d'un liquide. Je recycle aussi des bouteilles de 75cl de bière sur lesquelles j'ai ajouté un &lt;a href="https://www.brouwland.com/fr/nos-produits/brassage/bout-bouchon-m-canique/bouchons-et-accessoires/d/bouchon-m-canique-blanc-joint-rouge-10-pc" rel="noreferrer noopener" target="_blank"&gt;bouchon mécanique&lt;/a&gt; via une &lt;a href="https://www.brouwland.com/fr/nos-produits/brassage/bout-bouchon-m-canique/bouchons-et-accessoires/d/lamelles-alu-pour-bouchon-m-canique-10-pi-ces" rel="noreferrer noopener" target="_blank"&gt;lamelle en alu&lt;/a&gt; (système moyennement pratique pour être honnête).&lt;/p&gt;
  1262. &lt;!-- /wp:paragraph --&gt;
  1263.  
  1264. &lt;!-- wp:image {"align":"center","id":3735,"sizeSlug":"medium"} --&gt;
  1265.  
  1266. &lt;div class="wp-block-image"&gt;
  1267.  
  1268. &lt;figure class="aligncenter size-medium"&gt;
  1269. &lt;img src="https://mart-e.be/wp-content/uploads/2020/05/bouteille-capsulte-mecanique-diy-1-272x300.jpg" class="wp-image-3735" /&gt;&lt;br /&gt;
  1270.  
  1271. &lt;figcaption&gt;Ça fonctionne pour une Ginger Beer de trois jours mais je ne ferais pas de longues fermentations dedans&lt;/figcaption&gt;
  1272. &lt;/figure&gt;
  1273.  
  1274. &lt;/div&gt;
  1275.  
  1276. &lt;!-- /wp:image --&gt;
  1277.  
  1278. &lt;!-- wp:paragraph --&gt;
  1279.  
  1280. &lt;p&gt;Je n'ai jamais eu d'explosion de bouteilles (quelques &lt;a href="https://gfycat.com/sinfulcavernouskoi" rel="noreferrer noopener" target="_blank"&gt;geysers à l'ouverture&lt;/a&gt; par contre) mais par prudence, stockez-les dans une caisse pendant la fermentation en bouteille et gardez au frigo celles qui sont prêtes. Les &lt;a href="https://imgur.com/SC955ny" target="_blank" rel="noreferrer noopener"&gt;Bottle Bombs&lt;/a&gt; peuvent être vraiment dangereuses !&lt;/p&gt;
  1281. &lt;!-- /wp:paragraph --&gt;
  1282.  
  1283. &lt;!-- wp:heading {"level":3} --&gt;
  1284.  
  1285. &lt;h3&gt;Ginger Beer&lt;/h3&gt;
  1286. &lt;!-- /wp:heading --&gt;
  1287.  
  1288. &lt;!-- wp:paragraph --&gt;
  1289.  
  1290. &lt;p&gt;Très facile, c'est une des premières recettes que j'ai tenté. Eau, sucre, gingembre, citron et levure directement dans la bouteille, trois jours plus tard, on peut déguster !&lt;/p&gt;
  1291. &lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=pjkasPyKQZo"&gt;Faire une GINGER BEER - Une bière et Jivay #86&lt;/a&gt;&lt;/p&gt;
  1292. &lt;p&gt;J'ai choisi la première recette montrée dans la vidéo ci-dessus, utilisant de la levure de boulanger. Elle est facile, rapide et nécessite peu de matériel (le barboteur du pauvre ici consiste à ouvrir régulièrement la bouteille). La boisson finale est peu alcoolisée (vu la courte fermentation) mais rafraîchissante. Très bon avec un peu de rhum.&lt;/p&gt;
  1293. &lt;!-- /wp:paragraph --&gt;
  1294.  
  1295. &lt;!-- wp:paragraph --&gt;
  1296.  
  1297. &lt;p&gt;Un ami, grand fan de Ginger Beer, a choisi la deuxième méthode de la vidéo. Il cultive les levures naturelles du gingembre pour faire un Ginger Bug (un starter qui peut aussi être utilisé comme source de levure pour des sodas) et fait fermenter le tout dans une tourie de 15 litres. Contenant plus de sucres et fermentant plus longtemps, la boisson pourra atteindre environ les 5° d'alcool.&lt;/p&gt;
  1298. &lt;!-- /wp:paragraph --&gt;
  1299.  
  1300. &lt;!-- wp:image {"align":"center","id":3738,"width":201,"height":375,"sizeSlug":"medium"} --&gt;
  1301.  
  1302. &lt;div class="wp-block-image"&gt;
  1303.  
  1304. &lt;figure class="aligncenter size-medium is-resized"&gt;
  1305. &lt;img src="https://mart-e.be/wp-content/uploads/2020/05/ginger-tourie-161x300.jpg" class="wp-image-3738" width="201" height="375" /&gt;&lt;br /&gt;
  1306.  
  1307. &lt;figcaption&gt;Pour les grandes soifs&lt;/figcaption&gt;
  1308. &lt;/figure&gt;
  1309.  
  1310. &lt;/div&gt;
  1311.  
  1312. &lt;!-- /wp:image --&gt;
  1313.  
  1314. &lt;!-- wp:paragraph --&gt;
  1315.  
  1316. &lt;p&gt;En fonction du temps et du matériel disponibles ainsi que de votre motivation, à vous de voir quelle méthode vous préférez. J'ai régulièrement dû faire face à des geysers de Ginger Beer à l'ouverture, à ouvrir prudemment !&lt;/p&gt;
  1317. &lt;!-- /wp:paragraph --&gt;
  1318.  
  1319. &lt;!-- wp:heading {"level":3} --&gt;
  1320.  
  1321. &lt;h3&gt;Bière&lt;/h3&gt;
  1322. &lt;!-- /wp:heading --&gt;
  1323.  
  1324. &lt;!-- wp:paragraph --&gt;
  1325.  
  1326. &lt;p&gt;Il existe de nombreuses façons de faire de la bière. Une bonne manière d'approcher le brassage sans trop de matériel est d'utiliser un extrait de malt "pré-brassé". J'ai testé &lt;a href="https://www.brouwland.com/fr/nos-produits/kits-de-brassage/kits-bi-re-brewferm/d/brewferm-kit-de-bi-re-cherry-ale" rel="noreferrer noopener" target="_blank"&gt;un kit de chez Brewferm&lt;/a&gt; commandé sur internet pour faire 12 litres de bière à la cerise.&lt;/p&gt;
  1327. &lt;!-- /wp:paragraph --&gt;
  1328.  
  1329. &lt;!-- wp:paragraph --&gt;
  1330.  
  1331. &lt;p&gt;Vous recevez une grande boite de conserve contenant le malt et les arômes sous forme de mélasse à réchauffer et à mélanger avec de l'eau. On ajoute du sucre et de la levure et on laisse fermenter une bonne semaine dans une cuve avant d'embouteiller. J'avais la chance d'avoir déjà une cuve en plastique mais il existe des kits pour une quarantaine d'euros comprenant tout ce qu'il faut.&lt;/p&gt;
  1332. &lt;!-- /wp:paragraph --&gt;
  1333.  
  1334. &lt;!-- wp:paragraph --&gt;
  1335.  
  1336. &lt;p&gt;La bière est actuellement en cours de deuxième fermentation en bouteille. Je ne peux donc pas encore commenter le résultat (un brassage précédent avait donné une bière honorable) mais le processus est assez amusant et formateur.&lt;/p&gt;
  1337. &lt;!-- /wp:paragraph --&gt;
  1338.  
  1339. &lt;!-- wp:image {"align":"center","id":3739,"sizeSlug":"medium"} --&gt;
  1340.  
  1341. &lt;div class="wp-block-image"&gt;
  1342.  
  1343. &lt;figure class="aligncenter size-medium"&gt;
  1344. &lt;img src="https://mart-e.be/wp-content/uploads/2020/05/biere-table-300x225.jpeg" class="wp-image-3739" /&gt;
  1345. &lt;/figure&gt;
  1346.  
  1347. &lt;/div&gt;
  1348.  
  1349. &lt;!-- /wp:image --&gt;
  1350.  
  1351. &lt;!-- wp:paragraph --&gt;
  1352.  
  1353. &lt;p&gt;Avant que les puristes ne me tombent dessus (&lt;em&gt;"c'est pas un vrai brassage"&lt;/em&gt;, etc), le but de ces kits est de découvrir le brassage avec du matériel simple. Il existe aussi des kits "tout-grain" contenant tous les ingrédients séparés. Plus techniques et nécessitant plus de matériel mais encore plus gratifiants, je réserve ça pour la prochaine pandémie ! Il est évidemment possible d'acheter les ingrédients séparément mais c'est moins économique si on ne fait pas des volumes conséquents. Les kits permettent aussi de tester facilement différentes recettes.&lt;/p&gt;
  1354. &lt;!-- /wp:paragraph --&gt;
  1355.  
  1356. &lt;!-- wp:heading {"level":3} --&gt;
  1357.  
  1358. &lt;h3&gt;Hard Kombucha&lt;/h3&gt;
  1359. &lt;!-- /wp:heading --&gt;
  1360.  
  1361. &lt;!-- wp:paragraph --&gt;
  1362.  
  1363. &lt;p&gt;Boisson à la mode chez les hippies et les blogueuses mode (je vous laisse décider dans quelle catégorie je me trouve), le Kombucha est du thé fermenté donnant une boisson pétillante au goût légèrement vinaigré. Pour démarrer la fermentation, il faut une mère de Kombucha ou, au minimum, un peu de Kombucha non-pasteurisé (car contient les bactéries et levures nécessaires) à mélanger avec du thé sucré.&lt;/p&gt;
  1364. &lt;!-- /wp:paragraph --&gt;
  1365.  
  1366. &lt;!-- wp:paragraph --&gt;
  1367.  
  1368. &lt;p&gt;Une semaine de fermentation à l'air libre et puis 2, 3 jours en bouteille pour le rendre pétillant (en ajoutant éventuellement un peu de fruit pour l'aromatiser).&lt;/p&gt;
  1369. &lt;!-- /wp:paragraph --&gt;
  1370.  
  1371. &lt;!-- wp:image {"align":"center","id":3786,"sizeSlug":"large"} --&gt;
  1372.  
  1373. &lt;div class="wp-block-image"&gt;
  1374.  
  1375. &lt;figure class="aligncenter size-large"&gt;
  1376. &lt;img src="https://mart-e.be/wp-content/uploads/2020/05/8423790702_a7368bfa5f_c.jpg" class="wp-image-3786" /&gt;&lt;br /&gt;
  1377.  
  1378. &lt;figcaption&gt;&lt;em&gt;Goûtez-moi donc ce Kombucha au piment d’Espelette&lt;/em&gt;&lt;/figcaption&gt;
  1379. &lt;/figure&gt;
  1380.  
  1381. &lt;/div&gt;
  1382.  
  1383. &lt;!-- /wp:image --&gt;
  1384.  
  1385. &lt;!-- wp:paragraph --&gt;
  1386.  
  1387. &lt;p&gt;Le Kombucha n'est pas naturellement alcoolisé, les levures tolèrent assez mal l'alcool et s'arrêtent rapidement (on parle de 0,5 - 1°). J'expérimente donc la fabrication de &lt;a href="https://www.reddit.com/r/kombucha/wiki/hard_booch" rel="noreferrer noopener" target="_blank"&gt;Kombucha alcoolisé&lt;/a&gt; ou Hard Kombucha. Pour cela, Il faut ajouter plus de sucre et des levures tolérantes à de plus hauts degrés d'alcool pour permettre une deuxième fermentation. J'ai acheté en ligne de la levure sèche &lt;a href="https://www.brouwland.com/fr/nos-produits/vinification/levures/levure-s-che-lalvin/d/lalvin-levure-s-che-ec-1118-prise-de-mousse-125-g" rel="noreferrer noopener" target="_blank"&gt;EC-1118&lt;/a&gt; servant aux champagnes qui tolère jusqu'à 16° d'alcool (je ne monte évidemment pas jusque-là). On utilise un barboteur pour cette deuxième fermentation et favoriser, ainsi, une fermentation alcoolique (et non la fermentation acétique du kombucha qui ferait du vinaigre). Après 2, 3 semaines, refermentation en bouteilles fermées pour le rendre pétillant.&lt;/p&gt;
  1388. &lt;!-- /wp:paragraph --&gt;
  1389.  
  1390. &lt;!-- wp:paragraph --&gt;
  1391.  
  1392. &lt;p&gt;Je n'ai pas l'équipement nécessaire pour calculer le degré d'alcool mais après 15 jours de refermentation, le goût d'alcool est très marqué (même un peu trop sans doute). Encore un peu de R&amp;amp;D est nécessaire pour l'aromatiser à condition d'aimer le Kombucha à la base, bien entendu.&lt;/p&gt;
  1393. &lt;!-- /wp:paragraph --&gt;
  1394.  
  1395. &lt;!-- wp:heading {"level":3} --&gt;
  1396.  
  1397. &lt;h3&gt;Vin de confiture de fraise&lt;/h3&gt;
  1398. &lt;!-- /wp:heading --&gt;
  1399.  
  1400. &lt;!-- wp:paragraph --&gt;
  1401.  
  1402. &lt;p&gt;Maintenant, on arrive dans les boissons se rapprochant dangereusement de l'alcool de prison (merci à &lt;a href="https://www.reddit.com/r/prisonhooch/top/?t=all" rel="noreferrer noopener" target="_blank"&gt;/r/PrisonHooch&lt;/a&gt; pour l'inspiration).&lt;/p&gt;
  1403. &lt;!-- /wp:paragraph --&gt;
  1404.  
  1405. &lt;!-- wp:paragraph --&gt;
  1406.  
  1407. &lt;p&gt;N'étant pas consommateur de confiture mais ayant de la famille qui pense le contraire, mon frigo est envahi de bocaux de concentré de sucre aux fruits. Heureusement, internet ne m'a pas déçu en me donnant &lt;a href="https://arzi-tver.ru/en/staroe-varene-chto-delat-kak-sdelat-vino-iz-starogo-varenya-v-domashnih/" rel="noreferrer noopener" target="_blank"&gt;une méthode&lt;/a&gt; pour transformer la confiture en vin de fruit ! On mélange de la confiture et de l'eau, on laisse infuser deux semaines en bouteille fermée (en entre-ouvrant régulièrement pour laisser échapper le CO&lt;sub&gt;2&lt;/sub&gt;) pour démarrer une fermentation.&lt;/p&gt;
  1408. &lt;!-- /wp:paragraph --&gt;
  1409.  
  1410. &lt;!-- wp:image {"align":"center","id":3740,"sizeSlug":"medium"} --&gt;
  1411.  
  1412. &lt;div class="wp-block-image"&gt;
  1413.  
  1414. &lt;figure class="aligncenter size-medium"&gt;
  1415. &lt;img src="https://mart-e.be/wp-content/uploads/2020/05/vin-confiture-169x300.jpg" class="wp-image-3740" /&gt;&lt;br /&gt;
  1416.  
  1417. &lt;figcaption&gt;Confiture à la fraise, après une semaine&lt;/figcaption&gt;
  1418. &lt;/figure&gt;
  1419.  
  1420. &lt;/div&gt;
  1421.  
  1422. &lt;!-- /wp:image --&gt;
  1423.  
  1424. &lt;!-- wp:paragraph --&gt;
  1425.  
  1426. &lt;p&gt;On filtre ensuite le mélange, on ajoute des levures à champagne (vu que j'en ai sous la main mais ce n'est pas obligatoire si la fermentation a bien commencé naturellement) et on remet quelques semaines avec un barboteur. J'en suis toujours à cette phase mais les premiers tests de goût (indispensables) sont prometteurs. La troisième phase sera d'embouteiller et de laisser vieillir +/- longtemps à la cave pour clarifier le liquide.&lt;/p&gt;
  1427. &lt;!-- /wp:paragraph --&gt;
  1428.  
  1429. &lt;!-- wp:heading {"level":3} --&gt;
  1430.  
  1431. &lt;h3&gt;Et après ?&lt;/h3&gt;
  1432. &lt;!-- /wp:heading --&gt;
  1433.  
  1434. &lt;!-- wp:paragraph --&gt;
  1435.  
  1436. &lt;p&gt;J'ai trouvé toutes ces expériences très intéressantes et amusantes. Il existe encore énormément de boissons à explorer (hydromel, cidre, vins de fruits,...). Chaque pays possède ses spécialités fermentées (le &lt;a href="https://www.youtube.com/watch?v=JNcoYLVFCKg" rel="noreferrer noopener" target="_blank"&gt;Tepache mexicain&lt;/a&gt; avec de l'ananas,...). Arriver à normaliser un résultat encore très variable d'une fermentation à l'autre serait également souhaitable. À l'inverse d'un résultat prédictible, les &lt;a href="https://brasserieduvallon.fr/levures-sauvages-capture-culture-utilisation/" rel="noreferrer noopener" target="_blank"&gt;levures sauvages&lt;/a&gt; présentes dans l'air ou les fruits ouvrent la porte à de nombreuses expérimentations.&lt;/p&gt;
  1437. &lt;!-- /wp:paragraph --&gt;
  1438.  
  1439. &lt;!-- wp:paragraph --&gt;
  1440.  
  1441. &lt;p&gt;Je ne parle que de la fermentation alcoolique mais il en existe d'autres (fermentation lactique pour faire de la choucroute ou acétique pour faire du vinaigre, par exemple). Si le sujet vous intéresse, je vous recommande le livre &lt;a href="https://www.goodreads.com/book/show/13598307-the-art-of-fermentation" rel="noreferrer noopener" target="_blank"&gt;The Art of Fermentation&lt;/a&gt; dont la fermentation alcoolique n'est le sujet que d'un des nombreux chapitres. Si vous n'êtes pas branché lecture, &lt;a href="https://www.netflix.com/be-fr/title/80022456" rel="noreferrer noopener" target="_blank"&gt;Cooked&lt;/a&gt; est une série de quatre documentaires sur la nourriture dont les deux derniers épisodes sont au sujet de la fermentation.&lt;/p&gt;
  1442. &lt;!-- /wp:paragraph --&gt;
  1443.  
  1444. &lt;!-- wp:video {"id":3764} --&gt;
  1445.  
  1446. &lt;figure class="wp-block-video"&gt;
  1447. &lt;video autoplay controls loop muted src="https://mart-e.be/wp-content/uploads/2020/05/signal-attachment-2020-05-04-113625.mp4"&gt;
  1448. &lt;/video&gt;
  1449. &lt;/figure&gt;
  1450.  
  1451. &lt;!-- /wp:video --&gt;</content><category term="News"></category><category term="alcool"></category><category term="DIY"></category><category term="fermentation"></category></entry><entry><title>Enlever le DRM Adobe sous Linux</title><link href="https://mart-e.be/post/2020/05/02/enlever-le-drm-adobe-sous-linux" rel="alternate"></link><published>2020-05-02T10:32:00+02:00</published><updated>2020-05-02T10:32:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2020-05-02:/post/2020/05/02/enlever-le-drm-adobe-sous-linux</id><summary type="html">&lt;p&gt;En cette période de confinement, voilà une bonne occasion de s'attaquer à la pile de livres "à lire" à coté de la table de chevet. Ou encore mieux, pourquoi ne …&lt;/p&gt;</summary><content type="html">&lt;p&gt;En cette période de confinement, voilà une bonne occasion de s'attaquer à la pile de livres "à lire" à coté de la table de chevet. Ou encore mieux, pourquoi ne pas ajouter encore plus de livres ?&lt;/p&gt;
  1452. &lt;p&gt;Que ce soit via un achat (par exemple sur &lt;a href="https://www.librel.be/"&gt;Librel&lt;/a&gt;) ou une location dans une bibliothèque en ligne (par exemple &lt;a href="http://www.lirtuel.be/"&gt;Lirtuel&lt;/a&gt;), les livres sont malheureusement très souvent ~~protégés~~ verrouillées par des &lt;a href="https://www.defectivebydesign.org/"&gt;DRMs&lt;/a&gt;. En général, j'évite d'acheter des livres avec DRM mais les temps étant ce qu'ils sont, je change un peu mes habitudes... Voyons donc aujourd'hui comment faire sauter le DRM d'Adobe et obtenir un livre "propre". S'il existe de nombreuses méthodes utilisant Windows, il n'a pas été facile d'en trouver une fonctionnant sous Linux. Avertissement : il faudra mettre les mains dans le cambouis !&lt;/p&gt;
  1453. &lt;figure class="wp-block-image size-large"&gt;
  1454. &lt;img src="https://mart-e.be/wp-content/uploads/2020/03/aubrey-rose-odom-hz6u3V1eTOo-unsplash.jpg" class="wp-image-3700" /&gt;&lt;br /&gt;
  1455.  
  1456. &lt;figcaption&gt;Photo par &lt;a href="https://unsplash.com/@octoberroses"&gt;Aubrey Rose Odom&lt;/a&gt; sur &lt;a href="https://unsplash.com/s/photos/broken-lock"&gt;Unsplash&lt;/a&gt;&lt;/figcaption&gt;
  1457. &lt;/figure&gt;
  1458.  
  1459. &lt;!-- /wp:image --&gt;
  1460.  
  1461. &lt;!-- wp:paragraph --&gt;
  1462.  
  1463. &lt;p&gt;Voici la procédure de l'achat à la lecture d'un epub une fois tout configuré:&lt;/p&gt;
  1464. &lt;!-- /wp:paragraph --&gt;
  1465.  
  1466. &lt;!-- wp:list {"ordered":true} --&gt;
  1467.  
  1468. &lt;ol&gt;
  1469. &lt;li&gt;après achat, vous récupérez un fichier &lt;code&gt;URLLink.acsm&lt;/code&gt;&lt;/li&gt;
  1470. &lt;li&gt;vous ouvrez ce lien dans Adobe Digital Edition pour télécharger le véritable epub (mais protégé)&lt;/li&gt;
  1471. &lt;li&gt;vous ajoutez l'epub protégé dans Calibre (qui fera sauter le verrou)&lt;/li&gt;
  1472. &lt;li&gt;vous transférez l'epub sur votre liseuse&lt;/li&gt;
  1473. &lt;/ol&gt;
  1474. &lt;!-- /wp:list --&gt;
  1475.  
  1476. &lt;!-- wp:paragraph --&gt;
  1477.  
  1478. &lt;p&gt;La première étape est d'installer Adobe Digital Edition (ADE) sous Linux, ce qui va nécessiter &lt;a href="https://www.winehq.org/"&gt;Wine&lt;/a&gt; avec des librairies 32 bits. Pour cela, je me réfère à &lt;a href="https://www.reddit.com/r/archlinux/comments/d9j4cn/installing_adobe_digital_editions_wine/"&gt;ces instructions trouvées sur reddit&lt;/a&gt; expliquant l'installation sous Archlinux :&lt;/p&gt;
  1479. &lt;!-- /wp:paragraph --&gt;
  1480.  
  1481. &lt;!-- wp:preformatted --&gt;
  1482.  
  1483. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;pacman&lt;span class="w"&gt; &lt;/span&gt;-S&lt;span class="w"&gt; &lt;/span&gt;wine&lt;span class="w"&gt; &lt;/span&gt;winetricks&lt;span class="w"&gt; &lt;/span&gt;lib32-gnutls&lt;span class="w"&gt; &lt;/span&gt;samba
  1484. $&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;WINEPREFIX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.wine32&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;WINEARCH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;win32&lt;span class="w"&gt; &lt;/span&gt;wine&lt;span class="w"&gt; &lt;/span&gt;wineboot
  1485. $&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;WINEPREFIX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.wine32&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;winetricks&lt;span class="w"&gt; &lt;/span&gt;corefonts&lt;span class="w"&gt; &lt;/span&gt;dotnet40
  1486. $&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;WINEPREFIX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.wine32&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;WINEARCH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;win32&lt;span class="w"&gt; &lt;/span&gt;wine&lt;span class="w"&gt; &lt;/span&gt;ADE_4.5_Installer.exe
  1487. $&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;WINEPREFIX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.wine32&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;winetricks&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;ddr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;gdi
  1488. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  1489.  
  1490. &lt;!-- /wp:preformatted --&gt;
  1491.  
  1492. &lt;!-- wp:paragraph --&gt;
  1493.  
  1494. &lt;p&gt;Les commandes ci-dessus, vont, dans l'ordre :&lt;/p&gt;
  1495. &lt;!-- /wp:paragraph --&gt;
  1496.  
  1497. &lt;!-- wp:list --&gt;
  1498.  
  1499. &lt;ul&gt;
  1500. &lt;li&gt;installer wine et autres prérequis&lt;/li&gt;
  1501. &lt;li&gt;créer un dossier de configuration spécifique 32 bits&lt;/li&gt;
  1502. &lt;li&gt;installer les dépendances pour ADE&lt;/li&gt;
  1503. &lt;li&gt;installer l'exe téléchargé &lt;a href="https://www.adobe.com/solutions/ebook/digital-editions/download.html"&gt;sur le site d'adobe&lt;/a&gt; (le fichier &lt;code&gt;ADE_4.5_Installer.exe&lt;/code&gt; chez moi)&lt;/li&gt;
  1504. &lt;li&gt;corriger d'éventuels problèmes graphiques&lt;/li&gt;
  1505. &lt;/ul&gt;
  1506. &lt;!-- /wp:list --&gt;
  1507.  
  1508. &lt;!-- wp:paragraph --&gt;
  1509.  
  1510. &lt;p&gt;Vous pouvez désormais ouvrir les fichiers &lt;code&gt;URLLink.acsm&lt;/code&gt; avec Adobe Digital Edition (testé avec ADE 4.5.11).&lt;/p&gt;
  1511. &lt;!-- /wp:paragraph --&gt;
  1512.  
  1513. &lt;!-- wp:image {"align":"center","id":3693,"sizeSlug":"large"} --&gt;
  1514.  
  1515. &lt;div class="wp-block-image"&gt;
  1516.  
  1517. &lt;figure class="aligncenter size-large"&gt;
  1518. &lt;img src="https://mart-e.be/wp-content/uploads/2020/03/Screenshot-from-2020-03-29-13-56-27.png" class="wp-image-3693" /&gt;
  1519. &lt;/figure&gt;
  1520.  
  1521. &lt;/div&gt;
  1522.  
  1523. &lt;!-- /wp:image --&gt;
  1524.  
  1525. &lt;!-- wp:paragraph --&gt;
  1526.  
  1527. &lt;p&gt;Le livre devrait ainsi être lisible depuis ADE. Il faut maintenant installer le plugin DeDRM de &lt;a href="https://apprenticealf.wordpress.com/"&gt;Apprentice Alf&lt;/a&gt; pour Calibre.&lt;/p&gt;
  1528. &lt;!-- /wp:paragraph --&gt;
  1529.  
  1530. &lt;!-- wp:group --&gt;
  1531.  
  1532. &lt;div class="wp-block-group"&gt;
  1533.  
  1534. &lt;div class="wp-block-group__inner-container"&gt;
  1535.  
  1536. &lt;!-- wp:paragraph --&gt;
  1537. &lt;/p&gt;
  1538.  
  1539. &lt;!-- /wp:paragraph --&gt;
  1540.  
  1541. &lt;/div&gt;
  1542.  
  1543. &lt;/div&gt;
  1544.  
  1545. &lt;!-- /wp:group --&gt;
  1546.  
  1547. &lt;!-- wp:list {"ordered":true} --&gt;
  1548.  
  1549. &lt;ol&gt;
  1550. &lt;li&gt;Installez &lt;a href="https://calibre-ebook.com/"&gt;Calibre&lt;/a&gt; via votre package manager préféré (mais vous devriez déjà l'avoir pour gérer votre bibliothèque d'ebook)&lt;/li&gt;
  1551. &lt;li&gt;Téléchargez la dernière version de &lt;a href="https://github.com/apprenticeharper/DeDRM_tools/releases"&gt;DeDRM Tools&lt;/a&gt; (testé avec la 6.7.0)&lt;/li&gt;
  1552. &lt;li&gt;Allez dans &lt;strong&gt;Preferences&lt;/strong&gt; &amp;gt; &lt;strong&gt;Plug-ins&lt;/strong&gt; &amp;gt; &lt;strong&gt;Load plug-in from file&lt;/strong&gt; et choisissez le &lt;code&gt;DeDRM_Plugin.zip&lt;/code&gt; téléchargé&lt;/li&gt;
  1553. &lt;/ol&gt;
  1554. &lt;!-- /wp:list --&gt;
  1555.  
  1556. &lt;!-- wp:quote --&gt;
  1557.  
  1558. &lt;blockquote&gt;
  1559. &lt;p&gt;&lt;strong&gt;Mise à jour novembre 2020&lt;/strong&gt;: la &lt;a href="https://github.com/apprenticeharper/DeDRM_tools/releases" rel="noreferrer noopener" target="_blank"&gt;dernière version de DeDRM&lt;/a&gt; (6.8.0) n'est &lt;strong&gt;pas&lt;/strong&gt; compatible avec les versions 5.x de Calibre ! Pour pouvoir utiliser le plugin, il faut installer manuellement une version antérieure et compatible de Calibre (et désinstaller une éventuelle version précédente). Cela peut être fait avec la commande&lt;/p&gt;
  1560. &lt;p&gt;&lt;code&gt;$ wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin version=4.23.0&lt;/code&gt;&lt;/p&gt;
  1561. &lt;p&gt;Surveillez les mises à jour de DeDRM pour plus d'info.&lt;/p&gt;
  1562. &lt;/blockquote&gt;
  1563. &lt;!-- /wp:quote --&gt;
  1564.  
  1565. &lt;!-- wp:image {"id":3703,"sizeSlug":"large"} --&gt;
  1566.  
  1567. &lt;figure class="wp-block-image size-large"&gt;
  1568. &lt;img src="https://mart-e.be/wp-content/uploads/2020/04/Screenshot-from-2020-03-18-15-05-24.png" class="wp-image-3703" /&gt;&lt;br /&gt;
  1569.  
  1570. &lt;figcaption&gt;N'oubliez pas les enfants : les DRM détruisent la culture&lt;/figcaption&gt;
  1571. &lt;/figure&gt;
  1572.  
  1573. &lt;!-- /wp:image --&gt;
  1574.  
  1575. &lt;!-- wp:paragraph --&gt;
  1576.  
  1577. &lt;p&gt;Il faudra maintenant configurer le plug-in pour qu'il récupère les clefs de déchiffrement qui se trouvent dans votre dossier d'ADE sous Wine. Si ces plug-ins peuvent être installés sous Linux et peuvent fonctionner avec Wine, il faudra cependant installer les versions Windows de &lt;a href="https://www.python.org/"&gt;Python&lt;/a&gt; 2.7 et &lt;a href="http://www.voidspace.org.uk/python/modules.shtml#pycrypto"&gt;PyCrypto&lt;/a&gt; pour que les scripts de DeDRM puissent fonctionner. N'oubliez pas de télécharger la version pour Python 2.7 32 bits de &lt;a href="http://www.voidspace.org.uk/python/modules.shtml#pycrypto"&gt;PyCrypto&lt;/a&gt; (testé avec PyCrypto 2.6) :&lt;/p&gt;
  1578. &lt;!-- /wp:paragraph --&gt;
  1579.  
  1580. &lt;!-- wp:preformatted --&gt;
  1581.  
  1582. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;WINEPREFIX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.wine32&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;winetricks&lt;span class="w"&gt; &lt;/span&gt;python27
  1583. $&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;WINEPREFIX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.wine32&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;wine&lt;span class="w"&gt; &lt;/span&gt;pycrypto-2.6.win32-py2.7.exe
  1584. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  1585.  
  1586. &lt;!-- /wp:preformatted --&gt;
  1587.  
  1588. &lt;!-- wp:paragraph --&gt;
  1589.  
  1590. &lt;p&gt;Cela fait, en retournant dans les paramètres de Calibre, vous pouvez aller sur &lt;strong&gt;Customize plug-in&lt;/strong&gt; &amp;gt; &lt;strong&gt;Adobe Digital Editions ebooks&lt;/strong&gt;. Dans le champ &lt;strong&gt;WINEPREFIX&lt;/strong&gt;, indiquez &lt;code&gt;$HOME/.wine32/&lt;/code&gt;. En cliquant sur l'icône verte &lt;strong&gt;+&lt;/strong&gt;, le plug-in devrait trouver vos clefs privées et ressembler à ceci :&lt;/p&gt;
  1591. &lt;!-- /wp:paragraph --&gt;
  1592.  
  1593. &lt;!-- wp:image {"align":"center","id":3694,"sizeSlug":"large"} --&gt;
  1594.  
  1595. &lt;div class="wp-block-image"&gt;
  1596.  
  1597. &lt;figure class="aligncenter size-large"&gt;
  1598. &lt;img src="https://mart-e.be/wp-content/uploads/2020/03/Screenshot-from-2020-03-18-16-10-07.png" class="wp-image-3694" /&gt;
  1599. &lt;/figure&gt;
  1600.  
  1601. &lt;/div&gt;
  1602.  
  1603. &lt;!-- /wp:image --&gt;
  1604.  
  1605. &lt;!-- wp:paragraph --&gt;
  1606.  
  1607. &lt;p&gt;Si l'entrée &lt;code&gt;default_key&lt;/code&gt; est bien créée, vous devriez être au bout de vos peines.&lt;/p&gt;
  1608. &lt;!-- /wp:paragraph --&gt;
  1609.  
  1610. &lt;!-- wp:paragraph --&gt;
  1611.  
  1612. &lt;p&gt;Après l'installation d'ADE, un dossier &lt;strong&gt;My Digital Editions&lt;/strong&gt; a dû être créé dans votre dossier HOME contenant les différents EPUBs protégés. Importez ces livres dans Calibre comme n'importe quel livre et miracle, ils devraient être convertis et désormais lisibles normalement !&lt;/p&gt;
  1613. &lt;!-- /wp:paragraph --&gt;
  1614.  
  1615. &lt;!-- wp:image {"align":"center","id":3697,"sizeSlug":"large"} --&gt;
  1616.  
  1617. &lt;div class="wp-block-image"&gt;
  1618.  
  1619. &lt;figure class="aligncenter size-large"&gt;
  1620. &lt;img src="https://mart-e.be/wp-content/uploads/2020/03/Screenshot-from-2020-03-18-16-11-55.png" class="wp-image-3697" /&gt;
  1621. &lt;/figure&gt;
  1622.  
  1623. &lt;/div&gt;
  1624.  
  1625. &lt;!-- /wp:image --&gt;
  1626.  
  1627. &lt;!-- wp:paragraph --&gt;
  1628.  
  1629. &lt;p&gt;Vous pouvez maintenant transférer le livre sur votre liseuse ou autre appareil.&lt;/p&gt;
  1630. &lt;!-- /wp:paragraph --&gt;
  1631.  
  1632. &lt;!-- wp:paragraph --&gt;
  1633.  
  1634. &lt;p&gt;Pour rappel, convertir un fichier dûment acheté dans un autre format n'est pas illégal (par contre, si vous le publiez sur un site de torrent, ce n'est pas la même chose). Si vous louez un livre sur une bibliothèque en ligne, ne convertissez que les livres que vous lisez réellement : les livres sont achetés avec une licence permettant un nombre limité de "prêts", ne soyez pas égoïstes.&lt;/p&gt;
  1635. &lt;!-- /wp:paragraph --&gt;
  1636.  
  1637. &lt;!-- wp:image {"id":3699,"sizeSlug":"large"} --&gt;
  1638.  
  1639. &lt;figure class="wp-block-image size-large"&gt;
  1640. &lt;img src="https://mart-e.be/wp-content/uploads/2020/03/man_book.jpg" class="wp-image-3699" /&gt;&lt;br /&gt;
  1641.  
  1642. &lt;figcaption&gt;Bonne lecture !&lt;/figcaption&gt;
  1643. &lt;/figure&gt;
  1644.  
  1645. &lt;!-- /wp:image --&gt;
  1646.  
  1647. &lt;!-- wp:paragraph --&gt;
  1648.  
  1649. &lt;!-- /wp:paragraph --&gt;</content><category term="News"></category><category term="adobe"></category><category term="archlinux"></category><category term="calibre"></category><category term="DRM"></category><category term="ebook"></category><category term="planet-libre"></category></entry><entry><title>L'état du libre dans les téléphones - 2020</title><link href="https://mart-e.be/post/2020/03/25/letat-du-libre-dans-les-telephones-2020" rel="alternate"></link><published>2020-03-25T16:27:00+01:00</published><updated>2020-03-25T16:27:00+01:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2020-03-25:/post/2020/03/25/letat-du-libre-dans-les-telephones-2020</id><summary type="html">&lt;!-- wp:paragraph --&gt;
  1650.  
  1651. &lt;p&gt;En 2012, j'écrivais un article "&lt;a href="https://mart-e.be/post/2012/03/12/letat-du-libre-dans-les-telephones/"&gt;L'état du libre dans les téléphones&lt;/a&gt;" . On était encore à l'époque où Apple dominait le marché des smartphones et Mozilla présentait feu-&lt;a href="https://fr.wikipedia.org/wiki/Boot_to_Gecko_OS"&gt;Boot2Gecko&lt;/a&gt;. C'était un …&lt;/p&gt;</summary><content type="html">&lt;!-- wp:paragraph --&gt;
  1652.  
  1653. &lt;p&gt;En 2012, j'écrivais un article "&lt;a href="https://mart-e.be/post/2012/03/12/letat-du-libre-dans-les-telephones/"&gt;L'état du libre dans les téléphones&lt;/a&gt;" . On était encore à l'époque où Apple dominait le marché des smartphones et Mozilla présentait feu-&lt;a href="https://fr.wikipedia.org/wiki/Boot_to_Gecko_OS"&gt;Boot2Gecko&lt;/a&gt;. C'était un beau bordel avec une série d'acteurs qui essayaient de rattraper le train en marche après s'être rendu compte du potentiel des smartphones. Je concluais l'article par un triste :&lt;/p&gt;
  1654. &lt;!-- /wp:paragraph --&gt;
  1655.  
  1656. &lt;!-- wp:quote --&gt;
  1657.  
  1658. &lt;blockquote&gt;
  1659. &lt;p&gt;Je pense qu’aujourd’hui, il n’y a pas d’alternative suffisamment mature à Android et il est donc toujours le meilleur calcul.&lt;/p&gt;
  1660. &lt;/blockquote&gt;
  1661. &lt;!-- /wp:quote --&gt;
  1662.  
  1663. &lt;!-- wp:paragraph --&gt;
  1664.  
  1665. &lt;p&gt;Mais 8 ans plus tard, la situation est sûrement meilleure non ? N'est-ce pas ? …&lt;/p&gt;
  1666. &lt;!-- /wp:paragraph --&gt;
  1667.  
  1668. &lt;!-- wp:image {"align":"center","id":3633,"sizeSlug":"large","linkDestination":"media"} --&gt;
  1669.  
  1670. &lt;div class="wp-block-image"&gt;
  1671.  
  1672. &lt;figure class="aligncenter size-large"&gt;
  1673. &lt;a href="https://mart-e.be/wp-content/uploads/2020/02/11052013634_5bcd755d2e_c.jpg"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2020/02/11052013634_5bcd755d2e_c.jpg" class="wp-image-3633" /&gt;&lt;/a&gt;&lt;br /&gt;
  1674.  
  1675. &lt;figcaption&gt;La quête d'un OS libre pour téléphone&lt;/figcaption&gt;
  1676. &lt;/figure&gt;
  1677.  
  1678. &lt;/div&gt;
  1679.  
  1680. &lt;!-- /wp:image --&gt;
  1681.  
  1682. &lt;!-- wp:paragraph --&gt;
  1683.  
  1684. &lt;p&gt;De mon article de 2012, la plupart des projets expérimentaux sont morts ou en voie de garage. Plus de Firefox OS, plus de Meego, Tizen relégué aux montres de Samsung et WebOS sur les frigos de LG. Faisons un rapide tour du paysage des OS +/- libres pour téléphone en 2020.&lt;/p&gt;
  1685. &lt;!-- /wp:paragraph --&gt;
  1686.  
  1687. &lt;!-- wp:heading {"level":4} --&gt;
  1688.  
  1689. &lt;h4&gt;Android&lt;/h4&gt;
  1690. &lt;!-- /wp:heading --&gt;
  1691.  
  1692. &lt;!-- wp:paragraph --&gt;
  1693.  
  1694. &lt;p&gt;Android étant maintenant ultra-majoritaire avec 70-80% de &lt;a href="https://gs.statcounter.com/os-market-share/mobile/worldwide"&gt;part de marché&lt;/a&gt;, la bonne nouvelle est que Linux s'est enfin imposé comme noyau sur la majorité des appareils dans le monde ! Cependant, un noyau libre ne sert à rien si l'enrobage est rance. Android a également attrapé les travers d'Apple. Le Play Store est &lt;a href="https://www.pcmag.com/news/google-pulls-open-source-android-app-for-having-donation-button"&gt;toujours plus cadenassé&lt;/a&gt;, plus aucune application préinstallée n'est open source, surveillance à gogo. Le &lt;a href="https://fr.wikipedia.org/wiki/Don%27t_be_evil"&gt;Don't Evil&lt;/a&gt; était encore un slogan en 2012 mais n'est aujourd'hui &lt;a href="https://9to5google.com/2018/04/04/googler-military-machine-learning-drones/"&gt;plus qu'un lointain souvenir&lt;/a&gt;.&lt;/p&gt;
  1695. &lt;!-- /wp:paragraph --&gt;
  1696.  
  1697. &lt;!-- wp:paragraph --&gt;
  1698.  
  1699. &lt;p&gt;Comme Framasoft le dit si bien, il est temps de se &lt;a href="https://degooglisons-internet.org/"&gt;dégoogliser&lt;/a&gt; !&lt;/p&gt;
  1700. &lt;!-- /wp:paragraph --&gt;
  1701.  
  1702. &lt;!-- wp:heading {"level":4} --&gt;
  1703.  
  1704. &lt;h4&gt;LineageOS&lt;/h4&gt;
  1705. &lt;!-- /wp:heading --&gt;
  1706.  
  1707. &lt;!-- wp:paragraph --&gt;
  1708.  
  1709. &lt;p&gt;&lt;a href="https://www.lineageos.org/"&gt;LineageOS&lt;/a&gt; est le fork de &lt;a href="https://en.wikipedia.org/wiki/CyanogenMod"&gt;CyanogenMod&lt;/a&gt;, lui-même fork d'Android. Malgré une histoire un peu difficile suite à la fermeture de CyanogenMod par manque de rentabilité en 2016, LineageOS continue son bout de chemin. Il reste, aujourd'hui, la meilleure alternative si on veut un Android sans la dépendance à Google sur un téléphone grand public ou maintenir à jour un téléphone dont le constructeur aura lâchement abandonné le support après 4 mois.&lt;/p&gt;
  1710. &lt;!-- /wp:paragraph --&gt;
  1711.  
  1712. &lt;!-- wp:image {"id":3657,"sizeSlug":"full","linkDestination":"media"} --&gt;
  1713.  
  1714. &lt;figure class="wp-block-image size-full"&gt;
  1715. &lt;a href="https://mart-e.be/wp-content/uploads/2020/02/2179142980_b52bc1fefc_b.jpg"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2020/02/2179142980_b52bc1fefc_b.jpg" class="wp-image-3657" /&gt;&lt;/a&gt;&lt;br /&gt;
  1716.  
  1717. &lt;figcaption&gt;Après 6 mois d'utilisation, en lançant 3 applications en parallèle&lt;/figcaption&gt;
  1718. &lt;/figure&gt;
  1719.  
  1720. &lt;!-- /wp:image --&gt;
  1721.  
  1722. &lt;!-- wp:heading {"level":4} --&gt;
  1723.  
  1724. &lt;h4&gt;/e/ et Replicant&lt;/h4&gt;
  1725. &lt;!-- /wp:heading --&gt;
  1726.  
  1727. &lt;!-- wp:paragraph --&gt;
  1728.  
  1729. &lt;p&gt;Choisir un nom &lt;a href="https://duckduckgo.com/?q=%2Fe%2F&amp;amp;ia=news"&gt;impossible à chercher&lt;/a&gt; sur un moteur de recherche est sans doute une volonté pour un projet se voulant respectueux de la vie privée... &lt;a href="https://e.foundation/"&gt;/e/&lt;/a&gt; est un dérivé d'Android (ou de LineageOS plus exactement) se focalisant sur la vie privée et l'open source. La plupart des services &lt;em&gt;Made in Google&lt;/em&gt; ont été remplacés par des alternatives libres (CardDAV pour la synchronisation des contacts, etc.). Il est même possible d'&lt;a href="https://e.foundation/e-pre-installed-refurbished-smartphones/"&gt;acheter un téléphone reconditionné&lt;/a&gt; avec /e/ préinstallé.&lt;/p&gt;
  1730. &lt;!-- /wp:paragraph --&gt;
  1731.  
  1732. &lt;!-- wp:paragraph --&gt;
  1733.  
  1734. &lt;p&gt;&lt;a href="https://www.replicant.us/"&gt;Replicant&lt;/a&gt; se base également sur LineageOS pour offrir une version sans aucun composant propriétaire. Il est, entre autres, supporté par la &lt;a href="https://www.fsf.org/"&gt;Free Software Foundation&lt;/a&gt; qui les héberge. Alors que /e/ est encore en développement actif, je parlais déjà de Replicant il y a 8 ans. Si /e/ se veut une solution clef en main fonctionnant avec le plus d'appareils possibles, Replicant ne supporte aucun driver non-libre, ce qui rend la &lt;a href="https://www.replicant.us/supported-devices.php"&gt;liste d'appareils supportés&lt;/a&gt; beaucoup plus restreinte.&lt;/p&gt;
  1735. &lt;!-- /wp:paragraph --&gt;
  1736.  
  1737. &lt;!-- wp:paragraph --&gt;
  1738.  
  1739. &lt;p&gt;Notez qu'il existe toujours une &lt;a href="https://en.wikipedia.org/wiki/List_of_custom_Android_distributions"&gt;myriade d'autres projets&lt;/a&gt; +/- libres avec +/- d'appareils compatibles.&lt;/p&gt;
  1740. &lt;!-- /wp:paragraph --&gt;
  1741.  
  1742. &lt;!-- wp:heading {"level":4} --&gt;
  1743.  
  1744. &lt;h4&gt;Sailfish OS&lt;/h4&gt;
  1745. &lt;!-- /wp:heading --&gt;
  1746.  
  1747. &lt;!-- wp:paragraph --&gt;
  1748.  
  1749. &lt;p&gt;&lt;a href="https://sailfishos.org/"&gt;Sailfish OS&lt;/a&gt; est le système développé par la société finlandaise &lt;a href="http://jolla.com/"&gt;Jolla&lt;/a&gt;. Il utilise &lt;a href="https://en.wikipedia.org/wiki/Mer_(software_distribution)"&gt;Mer Core&lt;/a&gt; comme base. C'est-à-dire que Mer sert de middleware entre le matériel et l'OS. Si votre appareil &lt;a href="https://en.wikipedia.org/wiki/Mer_(software_distribution)#Supported_hardware"&gt;supporte Mer&lt;/a&gt;, vous pourrez faire tourner Sailfish OS. Je ne dis pas que ça sera facile mais vous ne devrez pas écrire de driver...&lt;/p&gt;
  1750. &lt;!-- /wp:paragraph --&gt;
  1751.  
  1752. &lt;!-- wp:paragraph --&gt;
  1753.  
  1754. &lt;p&gt;Si Sailfish OS met en avant son coté alternatif et son esprit open source, le complètement libre ne semble pas non plus au rendez-vous. Le modèle est assez similaire à celui d'Android : la société Jolla assemble les composants libres, y ajoute son interface et quelques composants propriétaires (comme par exemple une couche de compatibilité permettant de faire tourner les applications Android sur Sailfish OS). Si elle a produit des téléphones à une époque, Jolla essaye pour l'instant de &lt;a href="https://shop.jolla.com/"&gt;vendre son OS&lt;/a&gt; pour les appareils compatibles (des Sony Xperia). Il existe une &lt;a href="https://en.wikipedia.org/wiki/Sailfish_OS#Hardware_overview"&gt;série d'appareils alternatifs&lt;/a&gt; avec des ports +/- fonctionnels.&lt;/p&gt;
  1755. &lt;!-- /wp:paragraph --&gt;
  1756.  
  1757. &lt;!-- wp:image {"align":"center","id":3640,"sizeSlug":"large","linkDestination":"media"} --&gt;
  1758.  
  1759. &lt;div class="wp-block-image"&gt;
  1760.  
  1761. &lt;figure class="aligncenter size-large"&gt;
  1762. &lt;a href="https://mart-e.be/wp-content/uploads/2020/02/Sailfish_Architecture.jpg"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2020/02/Sailfish_Architecture-1.jpg" class="wp-image-3640" /&gt;&lt;/a&gt;&lt;br /&gt;
  1763.  
  1764. &lt;figcaption&gt;En vert libre, en mauve propriétaire&lt;/figcaption&gt;
  1765. &lt;/figure&gt;
  1766.  
  1767. &lt;/div&gt;
  1768.  
  1769. &lt;!-- /wp:image --&gt;
  1770.  
  1771. &lt;!-- wp:heading {"level":4} --&gt;
  1772.  
  1773. &lt;h4&gt;Ubuntu Touch&lt;/h4&gt;
  1774. &lt;!-- /wp:heading --&gt;
  1775.  
  1776. &lt;!-- wp:paragraph --&gt;
  1777.  
  1778. &lt;p&gt;Canonical &lt;a href="https://ubuntu.com/blog/growing-ubuntu-for-cloud-and-iot-rather-than-phone-and-convergence"&gt;a abandonné&lt;/a&gt; l'idée d'un Ubuntu sur smartphone en 2017. Heureusement, une communauté de motivés l'a repris via &lt;a href="https://ubports.com/"&gt;UBports&lt;/a&gt;. Il existe &lt;a href="https://devices.ubuntu-touch.io/"&gt;quelques appareils&lt;/a&gt; sur lesquels il est possible d'installer un Ubuntu 16.04 (oui ça date un peu) et de profiter d'un véritable Linux avec toute sa flexibilité.&lt;/p&gt;
  1779. &lt;!-- /wp:paragraph --&gt;
  1780.  
  1781. &lt;!-- wp:heading {"level":4} --&gt;
  1782.  
  1783. &lt;h4&gt;postmarketOS&lt;/h4&gt;
  1784. &lt;!-- /wp:heading --&gt;
  1785.  
  1786. &lt;!-- wp:paragraph --&gt;
  1787.  
  1788. &lt;p&gt;Lors de la rédaction de cet article, le certificat SSL du site de &lt;a href="https://postmarketos.org/"&gt;postmarketOS&lt;/a&gt; avait expiré, symptomatique du monde des projets expérimentaux de smartphone libre portés surtout par des volontaires avec peu de moyens. Pourtant, postmarketOS semble toujours bien actif. Avec plus d'une centaine d'&lt;a href="https://wiki.postmarketos.org/wiki/Devices"&gt;appareils compatibles&lt;/a&gt; (c'est-à-dire pouvant démarrer l'OS, pour ce qui est du support du Wifi ou Bluetooth, c'est beaucoup plus aléatoire), il y a de quoi s'amuser.&lt;/p&gt;
  1789. &lt;!-- /wp:paragraph --&gt;
  1790.  
  1791. &lt;!-- wp:paragraph --&gt;
  1792.  
  1793. &lt;p&gt;Dans un esprit très Linux, ils proposent un micro-système (10MB) basé sur &lt;a href="https://alpinelinux.org/"&gt;Alpine Linux&lt;/a&gt; sur lequel on installe les packages voulus. Libre à vous de faire tourner les programmes voulus. L'idée de cette approche modulaire est de facilement proposer une image pour de nouveaux appareils et de les maintenir à jour (un gros problème sur les appareils Android avec les téléphones ne recevant plus de mise à jour système après seulement quelques mois).&lt;/p&gt;
  1794. &lt;!-- /wp:paragraph --&gt;
  1795.  
  1796. &lt;!-- wp:image {"align":"center","id":3660,"sizeSlug":"large"} --&gt;
  1797.  
  1798. &lt;div class="wp-block-image"&gt;
  1799.  
  1800. &lt;figure class="aligncenter size-large"&gt;
  1801. &lt;img src="https://mart-e.be/wp-content/uploads/2020/02/isaac-davis-rzCi3mD-6ho-unsplash-1024x683.jpg" class="wp-image-3660" /&gt;&lt;br /&gt;
  1802.  
  1803. &lt;figcaption&gt;À la recherche d'un système réellement libre&lt;/figcaption&gt;
  1804. &lt;/figure&gt;
  1805.  
  1806. &lt;/div&gt;
  1807.  
  1808. &lt;!-- /wp:image --&gt;
  1809.  
  1810. &lt;!-- wp:heading {"level":4} --&gt;
  1811.  
  1812. &lt;h4&gt;PureOS/Librem&lt;/h4&gt;
  1813. &lt;!-- /wp:heading --&gt;
  1814.  
  1815. &lt;!-- wp:paragraph --&gt;
  1816.  
  1817. &lt;p&gt;&lt;a href="https://pureos.net/"&gt;PureOS&lt;/a&gt; est le système développé par la société &lt;a href="https://puri.sm/"&gt;Purism&lt;/a&gt; et vise les appareils Librem, dont le récent téléphone (expérimental) &lt;a href="https://puri.sm/products/librem-5/"&gt;Librem 5&lt;/a&gt;. Il se base sur Debian et est un système de type &lt;a href="https://en.wikipedia.org/wiki/Technological_convergence#Cell_phone_convergence"&gt;convergence&lt;/a&gt; (comme Ubuntu Touch, branchez un clavier et un écran pour transformer le téléphone en PC) avec une interface GNOME.&lt;/p&gt;
  1818. &lt;!-- /wp:paragraph --&gt;
  1819.  
  1820. &lt;!-- wp:paragraph --&gt;
  1821.  
  1822. &lt;p&gt;L'approche de Purisme vise l'open source et la sécurité à tous prix. Composants et logiciels ouverts avec &lt;em&gt;kill switches&lt;/em&gt; matériels. &lt;a href="https://arstechnica.com/gadgets/2020/01/librem-5-phone-hands-on-a-proof-of-concept-for-the-open-source-smartphone/?utm_brand=ars&amp;amp;utm_source=twitter&amp;amp;utm_medium=social&amp;amp;utm_social-type=owned"&gt;ArsTechnica a écrit un article&lt;/a&gt; le mois passé à son sujet. C'est encore à l'état de prototype (pas moyen de passer un appel) mais cela vise les hackers voulant tester un appareil réellement libre. La liberté ayant un coût, comptez aujourd'hui 749\$ pour un prototype et 1999\$ pour le même appareil fabriqué entièrement aux États-Unis (plutôt qu'en Chine). Les livraisons se font &lt;a href="https://puri.sm/posts/librem-5-shipping-announcement/"&gt;par petits batchs&lt;/a&gt; tous les quelques mois, un batch étant une amélioration de l'appareil livré précédemment. On n'est pas encore à un appareil utilisable par le grand public mais on s'en approche.&lt;/p&gt;
  1823. &lt;!-- /wp:paragraph --&gt;
  1824.  
  1825. &lt;!-- wp:image {"align":"center","id":3646,"sizeSlug":"medium","linkDestination":"media"} --&gt;
  1826.  
  1827. &lt;div class="wp-block-image"&gt;
  1828.  
  1829. &lt;figure class="aligncenter size-medium"&gt;
  1830. &lt;a href="https://mart-e.be/wp-content/uploads/2020/02/28265236559_a1005b6a2e_b.jpg"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2020/02/28265236559_a1005b6a2e_b-214x300.jpg" class="wp-image-3646" /&gt;&lt;/a&gt;&lt;br /&gt;
  1831.  
  1832. &lt;figcaption&gt;Je peux compiler Gentoo là- dessus ?&lt;/figcaption&gt;
  1833. &lt;/figure&gt;
  1834.  
  1835. &lt;/div&gt;
  1836.  
  1837. &lt;!-- /wp:image --&gt;
  1838.  
  1839. &lt;!-- wp:heading {"level":4} --&gt;
  1840.  
  1841. &lt;h4&gt;PinePhone&lt;/h4&gt;
  1842. &lt;!-- /wp:heading --&gt;
  1843.  
  1844. &lt;!-- wp:paragraph --&gt;
  1845.  
  1846. &lt;p&gt;Si Purism voulait tout maîtriser, du matériel au logiciel, &lt;a href="https://www.pine64.org"&gt;Pine64&lt;/a&gt; ne produit que le matériel. Après avoir produit le portable PineBook, la montre PineTime, la tablette PineTab et autres, ils s'attaquent au téléphone avec le &lt;a href="https://www.pine64.org/pinephone/"&gt;PinePhone&lt;/a&gt;. Beaucoup plus abordable, pour 149\$ vous pouvez obtenir la version &lt;a href="https://store.pine64.org/?product=pinephone-braveheart-limited-edition-linux-smartphone-for-early-adaptor"&gt;BraveHeart&lt;/a&gt; qui est un smartphone... sans OS. A vous d'installer l'un des ports expérimentaux d'&lt;a href="https://wiki.pine64.org/index.php/PinePhone#Operating_Systems"&gt;un des systèmes possibles&lt;/a&gt; (Ubuntu Touch, Sailfish OS,...). A réserver aux bidouilleurs avertis.&lt;/p&gt;
  1847. &lt;!-- /wp:paragraph --&gt;
  1848.  
  1849. &lt;!-- wp:paragraph --&gt;
  1850.  
  1851. &lt;p&gt;Si vous êtes curieux sur les différences entre Librem 5 et PinePhone en termes de composants, je vous conseille cet article : &lt;a href="https://tuxphones.com/yet-another-librem-5-and-pinephone-linux-smartphone-comparison/"&gt;Yet Another Librem 5 and PinePhone comparison&lt;/a&gt;.&lt;/p&gt;
  1852. &lt;!-- /wp:paragraph --&gt;
  1853.  
  1854. &lt;!-- wp:heading {"level":4} --&gt;
  1855.  
  1856. &lt;h4&gt;Conclusion&lt;/h4&gt;
  1857. &lt;!-- /wp:heading --&gt;
  1858.  
  1859. &lt;!-- wp:paragraph --&gt;
  1860.  
  1861. &lt;p&gt;Est-ce que la situation est mieux qu'en 2012 ? Oui et non. L’écosystème est on ne peut plus occupé par le duopole Android et iOS qui totalisent &lt;a href="https://gs.statcounter.com/os-market-share/mobile/worldwide"&gt;99% du marché&lt;/a&gt;. Autant dire qu'aucune alternative n'a percé et, aujourd'hui, je ne m'attends pas à ce qu'une arrive à court terme.&lt;/p&gt;
  1862. &lt;!-- /wp:paragraph --&gt;
  1863.  
  1864. &lt;!-- wp:paragraph --&gt;
  1865.  
  1866. &lt;p&gt;D'un autre coté, les projets de systèmes libres se démocratisent. En 2012, il fallait avoir un Samsung ou HP pour espérer créer un nouvel OS viable (et viable est un grand mot vu le résultat). Aujourd'hui, Purism arrive à &lt;a href="https://www.omgubuntu.co.uk/2017/10/success-linux-phone-crowdfunding-campaign-reaches-goal"&gt;lever plus de 2 millions de dollars&lt;/a&gt; en 60 jours pour produire un appareil ouvert de A-Z.&lt;/p&gt;
  1867. &lt;!-- /wp:paragraph --&gt;
  1868.  
  1869. &lt;!-- wp:paragraph --&gt;
  1870.  
  1871. &lt;p&gt;Si tous ces projets sont encore très expérimentaux (il suffit de regarder &lt;a href="https://www.youtube.com/watch?v=yg4GchfTPx0"&gt;cette vidéo de comparaison&lt;/a&gt; de différents OS pour se rendre compte qu'il reste du boulot), ils ont le mérite d'exister. C'est beau de voir qu'il y a des gens qui se donnent du mal pour sortir du merdier dans lequel on se trouve.&lt;/p&gt;
  1872. &lt;!-- /wp:paragraph --&gt;
  1873.  
  1874. &lt;!-- wp:image {"align":"center","id":3656,"width":400,"height":256,"sizeSlug":"full"} --&gt;
  1875.  
  1876. &lt;div class="wp-block-image"&gt;
  1877.  
  1878. &lt;figure class="aligncenter size-full is-resized"&gt;
  1879. &lt;img src="https://mart-e.be/wp-content/uploads/2020/02/9911609726_f0c86709d5_c.jpg" class="wp-image-3656" width="400" height="256" /&gt;&lt;br /&gt;
  1880.  
  1881. &lt;figcaption&gt;En 2030, je prédis SteamOS majoritaire&lt;/figcaption&gt;
  1882. &lt;/figure&gt;
  1883.  
  1884. &lt;/div&gt;
  1885.  
  1886. &lt;!-- /wp:image --&gt;
  1887.  
  1888. &lt;!-- wp:heading {"level":4} --&gt;
  1889.  
  1890. &lt;h4&gt;Et j'utilise quoi alors ?&lt;/h4&gt;
  1891. &lt;!-- /wp:heading --&gt;
  1892.  
  1893. &lt;!-- wp:paragraph --&gt;
  1894.  
  1895. &lt;p&gt;Une des problématiques que je n'aborde pas dans cet article (se focalisant sur les systèmes d'exploitation) mais essentielle est la couche applicative. A mon grand malheur, me priver aujourd'hui d'applications comme WhatsApp n'est quasi plus possible si je ne veux pas me couper de mon cercle social. Et convaincre mon entourage à passer sur &lt;a href="https://signal.org/"&gt;Signal&lt;/a&gt; ne réglera pas le problème vu que toutes ces applications populaires ne fonctionnent que sur l'un des deux OS. Le système que l'on utilisera dépendra de ses habitudes et des concessions que l'on est prêt à faire. Dans mon cas, une compatibilité minimale avec les applications Android est encore nécessaire aujourd'hui.&lt;/p&gt;
  1896. &lt;!-- /wp:paragraph --&gt;
  1897.  
  1898. &lt;!-- wp:paragraph --&gt;
  1899.  
  1900. &lt;p&gt;Mais finalement, est-ce que le système d'exploitation est vraiment le seul problème ? A quoi bon avoir un téléphone 100% libre si l'on exploite des ouvriers chinois en épuisant les mines de cobalt pour produire un nouvel appareil tous les 18 mois ? Une société comme &lt;a href="https://www.fairphone.com/"&gt;FairPhone&lt;/a&gt; proposant un téléphone produit de façon éthique et assurant une réparabilité de l'appareil est tout autant essentielle.&lt;/p&gt;
  1901. &lt;!-- /wp:paragraph --&gt;
  1902.  
  1903. &lt;!-- wp:paragraph --&gt;
  1904.  
  1905. &lt;p&gt;A quoi bon avoir un téléphone 100% libre si c'est pour passer son temps sur les applications &lt;a href="https://fr.wikipedia.org/wiki/%C3%89conomie_de_l%27attention"&gt;voleuses d'attention&lt;/a&gt; comme savent si bien le faire les réseaux sociaux ? A une époque où l'on &lt;a href="https://www.lemonde.fr/big-browser/article/2017/08/29/et-si-se-deconnecter-vous-aidait-a-mieux-profiter-des-richesses-d-internet_5177910_4832693.html"&gt;prône la déconnexion&lt;/a&gt;, pourquoi pas un téléphone avec des choix radicaux comme le Hisense A5 (&lt;a href="https://ploum.net/se-passer-decran-avec-un-telephone-e-ink/"&gt;testé par Ploum&lt;/a&gt;) avec son écran e-ink ?&lt;/p&gt;
  1906. &lt;!-- /wp:paragraph --&gt;
  1907.  
  1908. &lt;!-- wp:paragraph --&gt;
  1909.  
  1910. &lt;p&gt;Je n'ai pas de conseil sur ce que vous devriez utiliser si ce n'est de tirer un maximum du téléphone que vous possédez déjà (et de le faire réparer lorsque que l'écran cassera). Lorsque mon téléphone actuel, arrivant bravement sur ses 3 ans, décédera, je verrai quel appareil conviendra à mes besoins. Mes besoins à ce moment-là, en trouvant un équilibre entre liberté logicielle, respect de l’environnement et me permettant de maintenir les liens sociaux. Mais j'espère que ce choix ne se présentera pas trop vite...&lt;/p&gt;
  1911. &lt;!-- /wp:paragraph --&gt;</content><category term="News"></category><category term="/e/"></category><category term="android"></category><category term="fairphone"></category><category term="librem"></category><category term="lineageos"></category><category term="pinephone"></category><category term="planet-libre"></category><category term="postmarketos"></category><category term="sailfishos"></category><category term="ubuntutouch"></category></entry><entry><title>Anki et l'apprentissage par répétition espacée</title><link href="https://mart-e.be/post/2019/12/17/anki-et-lapprentissage-par-repetition-espacee" rel="alternate"></link><published>2019-12-17T11:49:00+01:00</published><updated>2019-12-17T11:49:00+01:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2019-12-17:/post/2019/12/17/anki-et-lapprentissage-par-repetition-espacee</id><summary type="html">&lt;!-- wp:paragraph --&gt;
  1912.  
  1913. &lt;p&gt;J'apprends actuellement l'Espagnol (&lt;em&gt;me gustan las manzanas !&lt;/em&gt;). Un des outils que j'utilise est &lt;a href="https://apps.ankiweb.net/"&gt;Anki&lt;/a&gt;.&lt;/p&gt;
  1914. &lt;!-- /wp:paragraph --&gt;
  1915.  
  1916. &lt;!-- wp:paragraph --&gt;
  1917.  
  1918. &lt;p&gt;Anki est un logiciel (&lt;a href="https://github.com/dae/anki"&gt;libre bien sûr&lt;/a&gt;) de &lt;em&gt;flashcards&lt;/em&gt; fonctionnant sur le principe de &lt;a href="https://fr.wikipedia.org/wiki/R%C3%A9p%C3%A9tition_espac%C3%A9e"&gt;répétition espacée …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- wp:paragraph --&gt;
  1919.  
  1920. &lt;p&gt;J'apprends actuellement l'Espagnol (&lt;em&gt;me gustan las manzanas !&lt;/em&gt;). Un des outils que j'utilise est &lt;a href="https://apps.ankiweb.net/"&gt;Anki&lt;/a&gt;.&lt;/p&gt;
  1921. &lt;!-- /wp:paragraph --&gt;
  1922.  
  1923. &lt;!-- wp:paragraph --&gt;
  1924.  
  1925. &lt;p&gt;Anki est un logiciel (&lt;a href="https://github.com/dae/anki"&gt;libre bien sûr&lt;/a&gt;) de &lt;em&gt;flashcards&lt;/em&gt; fonctionnant sur le principe de &lt;a href="https://fr.wikipedia.org/wiki/R%C3%A9p%C3%A9tition_espac%C3%A9e"&gt;répétition espacée&lt;/a&gt;. &lt;em&gt;¿Qué es eso?&lt;/em&gt;&lt;/p&gt;
  1926. &lt;!-- /wp:paragraph --&gt;
  1927.  
  1928. &lt;!-- wp:image {"id":3588,"sizeSlug":"large"} --&gt;
  1929.  
  1930. &lt;figure class="wp-block-image size-large"&gt;
  1931. &lt;img src="https://mart-e.be/wp-content/uploads/2019/12/anki-1month-big.png" class="wp-image-3588" /&gt;&lt;br /&gt;
  1932.  
  1933. &lt;figcaption&gt;Sexy, non ?&lt;/figcaption&gt;
  1934. &lt;/figure&gt;
  1935.  
  1936. &lt;!-- /wp:image --&gt;
  1937.  
  1938. &lt;!-- wp:paragraph --&gt;
  1939.  
  1940. &lt;p&gt;Imaginons que vous voulez devenir un champion de Trivial Pursuit au noël de l'an prochain et enfin battre Tonton Roger, vous avez un an pour mémoriser les 400 cartes du jeux ! À raison de 6 questions par carte, on peut penser que mémoriser 2400 questions/réponses est impossible. La façon naïve serait d'en étudier 10 le premier jour, 20 le deuxième, 30 le troisième,.. et d'espérer ne pas exploser après 2 semaines (ce qui est bien entendu illusoire). La répétition espacée veut prouver que c'est possible via une autre technique :&lt;/p&gt;
  1941. &lt;!-- /wp:paragraph --&gt;
  1942.  
  1943. &lt;!-- wp:paragraph --&gt;
  1944.  
  1945. &lt;p&gt;Exemple :&lt;/p&gt;
  1946. &lt;!-- /wp:paragraph --&gt;
  1947.  
  1948. &lt;!-- wp:list --&gt;
  1949.  
  1950. &lt;ul&gt;
  1951. &lt;li&gt;Jour 1: mémoriser 10 questions/réponses&lt;/li&gt;
  1952. &lt;li&gt;Jour 2: mémoriser 10 nouvelles cartes + tester celles de la veille (on s'en rappelle de 7/10)&lt;/li&gt;
  1953. &lt;li&gt;Jour 3 : 10 nouvelles + tester les 10 du jour 2 (réussi 8/10) + les 3 du jour 1 que l'on avait oubliées&lt;/li&gt;
  1954. &lt;li&gt;Jour 4 : 10 nouvelles + les 10 du jour 3 + les 2 oubliées du jour 2 + un rappel des 7 correctes du jour 1&lt;/li&gt;
  1955. &lt;li&gt;...&lt;/li&gt;
  1956. &lt;/ul&gt;
  1957. &lt;!-- /wp:list --&gt;
  1958.  
  1959. &lt;!-- wp:image {"id":3579,"width":580,"height":427,"sizeSlug":"large","linkDestination":"media"} --&gt;
  1960.  
  1961. &lt;figure class="wp-block-image size-large is-resized"&gt;
  1962. &lt;a href="https://mart-e.be/wp-content/uploads/2019/12/3284106360_87346cc52f_b.jpg"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2019/12/3284106360_87346cc52f_b.jpg" class="wp-image-3579" width="580" height="427" /&gt;&lt;/a&gt;&lt;br /&gt;
  1963.  
  1964. &lt;figcaption&gt;&lt;em&gt;Je répète : "Sur quel continent vit le kinkajou ?"&lt;/em&gt;&lt;/figcaption&gt;
  1965. &lt;/figure&gt;
  1966.  
  1967. &lt;!-- /wp:image --&gt;
  1968.  
  1969. &lt;!-- wp:paragraph --&gt;
  1970.  
  1971. &lt;p&gt;Cela peut paraître un peu compliqué mais le logiciel gère pour vous la fréquence des rappels. Au début, les cartes sont rappelées régulièrement et puis de moins en moins souvent (dans 1 jour et puis dans 3, 7, 14, 30,… jours). Tant que l'on se souvient d'un terme, les rappels s'espacent de plus en plus. Si l'on oublie un terme, il retourne en phase d'apprentissage et sera à nouveau demandé fréquemment. De cette façon, on revoit régulièrement les cartes avec lesquelles on a le plus de difficultés et plus rarement, les plus faciles.&lt;/p&gt;
  1972. &lt;!-- /wp:paragraph --&gt;
  1973.  
  1974. &lt;!-- wp:paragraph --&gt;
  1975.  
  1976. &lt;p&gt;Le calcul des rappels se base sur le principe de la &lt;a href="https://fr.wikipedia.org/wiki/Courbe_de_l%27oubli"&gt;courbe de l'oubli&lt;/a&gt; qui explique comment une information est oubliée au cours du temps et identifie l'effet des rappels.&lt;/p&gt;
  1977. &lt;!-- /wp:paragraph --&gt;
  1978.  
  1979. &lt;!-- wp:image {"id":3581,"sizeSlug":"large"} --&gt;
  1980.  
  1981. &lt;figure class="wp-block-image size-large"&gt;
  1982. &lt;img src="https://mart-e.be/wp-content/uploads/2019/12/113725856_o-1024x601.png" class="wp-image-3581" /&gt;&lt;br /&gt;
  1983.  
  1984. &lt;figcaption&gt;Avec le temps, les rappels peuvent être de plus en plus espacés&lt;/figcaption&gt;
  1985. &lt;/figure&gt;
  1986.  
  1987. &lt;!-- /wp:image --&gt;
  1988.  
  1989. &lt;!-- wp:paragraph --&gt;
  1990.  
  1991. &lt;p&gt;L'intérêt de l'utilisation d'Anki pour la mémoire à long terme est expliqué en long et en large dans l'article &lt;a href="http://augmentingcognition.com/ltm.html"&gt;Augmenting Long-term Memory&lt;/a&gt;. Si l'on doit ne retenir qu'une chose de cet article (que je vous recommande), ce serait qu'&lt;strong&gt;Anki fait en sorte que la mémorisation d'une information devienne un choix&lt;/strong&gt;.&lt;/p&gt;
  1992. &lt;!-- /wp:paragraph --&gt;
  1993.  
  1994. &lt;!-- wp:paragraph --&gt;
  1995.  
  1996. &lt;p&gt;Pour donner une anecdote, &lt;a href="https://en.wikipedia.org/wiki/Roger_Craig_(Jeopardy!_contestant)"&gt;Roger Craig&lt;/a&gt; s'est entraîné avec Anki pour mémoriser toutes les questions de &lt;em&gt;Jeopardy&lt;/em&gt; (la version américaine de &lt;em&gt;Qui Veut Gagner des Millions&lt;/em&gt;) ce qui lui a permis de battre le record de la plus grosse somme gagnée en une partie. Si cet exemple est un peu extrême (le mérite ne revient pas qu'au logiciel), il montre néanmoins la force de la méthode.&lt;/p&gt;
  1997. &lt;!-- /wp:paragraph --&gt;
  1998.  
  1999. &lt;!-- wp:paragraph --&gt;
  2000.  
  2001. &lt;p&gt;Anki est intéressant pour les étudiants qui doivent mémoriser d'énormes quantités d'informations (il y a même des subreddits dédiés, par exemple &lt;a href="https://www.reddit.com/r/medicalschoolanki/"&gt;/r/medicalschoolanki&lt;/a&gt;).&lt;/p&gt;
  2002. &lt;!-- /wp:paragraph --&gt;
  2003.  
  2004. &lt;!-- wp:paragraph --&gt;
  2005.  
  2006. &lt;p&gt;Anki est un logiciel très puissant truffé d'options dont vous n'aurez probablement pas besoin (et que je ne connais pas). Vous pouvez intégrer des formules en LaTex, ajouter des images, des sons et modifier le style des cartes avec de l'HTML, CSS et même du JavaScript (non pas que vous devriez…) !&lt;/p&gt;
  2007. &lt;!-- /wp:paragraph --&gt;
  2008.  
  2009. &lt;!-- wp:image {"id":3583,"sizeSlug":"large"} --&gt;
  2010.  
  2011. &lt;figure class="wp-block-image size-large"&gt;
  2012. &lt;img src="https://mart-e.be/wp-content/uploads/2019/12/anki-javascript2-1024x502.png" class="wp-image-3583" /&gt;&lt;br /&gt;
  2013.  
  2014. &lt;figcaption&gt;Je suppose que c'est une fonctionnalité...&lt;/figcaption&gt;
  2015. &lt;/figure&gt;
  2016.  
  2017. &lt;!-- /wp:image --&gt;
  2018.  
  2019. &lt;!-- wp:paragraph --&gt;
  2020.  
  2021. &lt;p&gt;Pour ceux qui ne savent/veulent pas coder, Anki fonctionne également avec des modules communautaires. Un &lt;a href="https://ankiweb.net/shared/info/1496166067"&gt;thème sombre&lt;/a&gt;, des &lt;a href="https://github.com/glutanimate/review-heatmap/releases"&gt;jolies stats&lt;/a&gt;, un &lt;a href="https://ankiweb.net/shared/info/1494320602"&gt;jeu de stratégie&lt;/a&gt; intégré ? Il existe des modules pour faire tout cela ! Gardez en tête qu'en important &lt;a href="https://ankiweb.net/shared/decks/"&gt;des cartes&lt;/a&gt; ou &lt;a href="https://ankiweb.net/shared/addons/2.1"&gt;extensions&lt;/a&gt; inconnues, vous installez potentiellement du code malveillant. Même si je n'ai jamais entendu parler de &lt;a href="https://fr.wikipedia.org/wiki/Ran%C3%A7ongiciel"&gt;ransomware&lt;/a&gt; utilisant Anki, c'est techniquement possible...&lt;/p&gt;
  2022. &lt;!-- /wp:paragraph --&gt;
  2023.  
  2024. &lt;!-- wp:paragraph --&gt;
  2025.  
  2026. &lt;p&gt;Le logiciel est compatible avec toute plateforme et smartphone et se synchronise sur les serveurs d'Anki. Pratique pour créer un deck sur un pc et le réviser sur son téléphone. Contrairement au logiciel, le code du serveur est non-libre mais il existe une &lt;a href="https://github.com/ankicommunity/anki-sync-server"&gt;implémentation non-officielle&lt;/a&gt; pour ceux qui ne veulent pas héberger leur &lt;a href="https://www.reddit.com/r/Anki/comments/e9ns33/borderline_nsfw_cards_serious_question/"&gt;decks coquins&lt;/a&gt; sur les serveurs d'Anki.&lt;/p&gt;
  2027. &lt;!-- /wp:paragraph --&gt;
  2028.  
  2029. &lt;!-- wp:paragraph --&gt;
  2030.  
  2031. &lt;p&gt;Personnellement, je travaille avec deux decks : un pour l'espagnol et un "fourre-tout" dans lequel j'ajoute des raccourcis clavier (comment sortir de vim), des fonctions python (cf &lt;a href="https://senrigan.io/blog/chasing-10x-leveraging-a-poor-memory-in-software-engineering/"&gt;Chasing 10X: How Anki Saved My Software Career&lt;/a&gt;); j'ai même importé le répertoire de mon boulot pour ne plus oublier le prénom de mes collègues (je ne sais pas si je dois être fier de celui-là ou pas...).&lt;/p&gt;
  2032. &lt;!-- /wp:paragraph --&gt;
  2033.  
  2034. &lt;!-- wp:image {"id":3599,"sizeSlug":"large"} --&gt;
  2035.  
  2036. &lt;figure class="wp-block-image size-large"&gt;
  2037. &lt;img src="https://mart-e.be/wp-content/uploads/2019/12/6752603127_a11207453a_o-e1576225867566.jpg" class="wp-image-3599" /&gt;&lt;br /&gt;
  2038.  
  2039. &lt;figcaption&gt;&lt;em&gt;- Et donc, tu revois ces cartes tous les matins et tu mémoriseras la recette rapidement !&lt;br /&gt;
  2040. - Je t'ai déjà dit que si tu voulais une tarte, tu peux la faire toi-même&lt;/em&gt;&lt;/figcaption&gt;
  2041. &lt;/figure&gt;
  2042.  
  2043. &lt;!-- /wp:image --&gt;
  2044.  
  2045. &lt;!-- wp:paragraph --&gt;
  2046.  
  2047. &lt;p&gt;J'approche des 1000 cartes après deux mois d'utilisation et il est assez agréable de voir le nombre de cartes "matures" (le terme utilisé par Anki pour nommer les cartes qu'il considère comme apprises) augmenter au cours des jours.&lt;/p&gt;
  2048. &lt;!-- /wp:paragraph --&gt;
  2049.  
  2050. &lt;!-- wp:paragraph --&gt;
  2051.  
  2052. &lt;p&gt;Mes sessions de rappel Anki ne durent que quelques minutes le matin mais &lt;a href="https://www.reddit.com/r/Anki/comments/e1s1zw/how_long_does_it_take_you_guys_to_anki_every_day/"&gt;certaines personnes&lt;/a&gt; travaillent avec plusieurs énormes decks et passent plus d'une heure à revoir des centaines de cartes tous les jours. La difficulté sera de trier ce qui vaut réellement la peine d'être mémorisé. Certains recommandent d'utiliser l'application dès qu'ils ont un moment de libre (en attendant le bus) mais personnellement, je préfère le faire quand je suis au calme, sans distraction (le matin en buvant mon café par exemple).&lt;/p&gt;
  2053. &lt;!-- /wp:paragraph --&gt;
  2054.  
  2055. &lt;!-- wp:image {"id":3587,"sizeSlug":"large"} --&gt;
  2056.  
  2057. &lt;figure class="wp-block-image size-large"&gt;
  2058. &lt;img src="https://mart-e.be/wp-content/uploads/2019/12/Screenshot-from-2019-12-11-17-28-06.png" class="wp-image-3587" /&gt;
  2059. &lt;/figure&gt;
  2060.  
  2061. &lt;!-- /wp:image --&gt;
  2062.  
  2063. &lt;!-- wp:paragraph --&gt;
  2064.  
  2065. &lt;p&gt;Si utiliser un deck écrit par un autre peut vous sembler plus facile, je recommande fortement de créer le vôtre avec les informations que &lt;em&gt;vous&lt;/em&gt; désirez mémoriser, cela sera beaucoup plus efficace.&lt;/p&gt;
  2066. &lt;!-- /wp:paragraph --&gt;
  2067.  
  2068. &lt;!-- wp:paragraph --&gt;
  2069.  
  2070. &lt;p&gt;Je compte passer les prochains mois à tester les différentes possibilités qu'Anki offre en terme de personnalisation. J'écrirai éventuellement un article additionnel avec mes trouvailles intéressantes.&lt;/p&gt;
  2071. &lt;!-- /wp:paragraph --&gt;</content><category term="News"></category><category term="anki"></category><category term="langue"></category><category term="mémoire"></category><category term="planet-libre"></category><category term="recommandation"></category></entry><entry><title>Sauver un GnuPG corrompu</title><link href="https://mart-e.be/post/2019/11/29/sauver-un-gnupg-corrompu" rel="alternate"></link><published>2019-11-29T11:25:00+01:00</published><updated>2019-11-29T11:25:00+01:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2019-11-29:/post/2019/11/29/sauver-un-gnupg-corrompu</id><summary type="html">&lt;p&gt;&lt;em&gt;Note de service : &lt;a href="https://www.youtube.com/watch?v=Y6ljFaKRTrI"&gt;still alive&lt;/a&gt;, blog mis à jour et on va essayer d'y poster un peu plus en 2020...&lt;/em&gt;&lt;/p&gt;
  2072. &lt;p&gt;Ces derniers jours, j'ai remarqué qu'un processus &lt;a href="https://gnupg.org/" rel="noopener noreferrer" target="_blank"&gt;GnuPG&lt;/a&gt; prenait inhabituellement …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;em&gt;Note de service : &lt;a href="https://www.youtube.com/watch?v=Y6ljFaKRTrI"&gt;still alive&lt;/a&gt;, blog mis à jour et on va essayer d'y poster un peu plus en 2020...&lt;/em&gt;&lt;/p&gt;
  2073. &lt;p&gt;Ces derniers jours, j'ai remarqué qu'un processus &lt;a href="https://gnupg.org/" rel="noopener noreferrer" target="_blank"&gt;GnuPG&lt;/a&gt; prenait inhabituellement beaucoup de temps et CPU.&lt;/p&gt;
  2074. &lt;p&gt;&lt;a href="https://mart-e.be/wp-content/uploads/2019/11/htop.png"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2019/11/htop-1024x224.png" class="aligncenter size-large wp-image-3539" width="580" height="127" alt="htop-gpg" /&gt;&lt;/a&gt;&lt;/p&gt;
  2075. &lt;p&gt;Une commande &lt;code&gt;gpg --list-keys&lt;/code&gt; semblait tourner en boucle pendant de longues minutes.&lt;/p&gt;
  2076. &lt;p&gt;Avec un peu de recherche, je comprends que j'avais importé une clef victime de l'&lt;a href="https://gist.github.com/rjhansen/67ab921ffb4084c865b3618d6955275f" rel="noopener noreferrer" target="_blank"&gt;attaque de spam de signature GnuPG&lt;/a&gt; annoncée il y a quelques mois.&lt;/p&gt;
  2077. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;ls&lt;span class="w"&gt; &lt;/span&gt;-lh&lt;span class="w"&gt; &lt;/span&gt;~/.gnupg/pubring.gpg
  2078.  
  2079. ...&lt;span class="w"&gt; &lt;/span&gt;33M&lt;span class="w"&gt; &lt;/span&gt;...
  2080. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  2081.  
  2082. &lt;p&gt;Une (ou plusieurs) clef a été signée des centaines de milliers de fois, rendant le système inutilisable. Une attaque simple mais pourtant assez difficile à régler pour des &lt;a href="https://gist.github.com/rjhansen/67ab921ffb4084c865b3618d6955275f#why-hasnt-it-been-fixed" rel="noopener noreferrer" target="_blank"&gt;raisons&lt;/a&gt; peu rassurantes:&lt;/p&gt;
  2083. &lt;blockquote&gt;
  2084. &lt;p&gt;&lt;strong&gt;Why Hasn't It Been Fixed?&lt;/strong&gt;&lt;/p&gt;
  2085. &lt;p&gt;There are powerful technical and social factors inhibiting further keyserver development.&lt;/p&gt;
  2086. &lt;p&gt;The software is Byzantine. The standard keyserver software is called SKS, for "Synchronizing Key Server". A bright fellow named Yaron Minsky devised a brilliant algorithm that could do reconciliations very quickly. It became the keystone of his Ph.D thesis, and he wrote SKS originally as a proof of concept of his idea. It's written in an unusual programming language called OCaml, and in a fairly idiosyncratic dialect of it at that. This is of course no problem for a proof of concept meant to support a Ph.D thesis, but for software that's deployed in the field it makes maintenance quite difficult. Not only do we need to be bright enough to understand an algorithm that's literally someone's Ph.D thesis, but we need expertise in obscure programming languages and strange programming customs.&lt;br&gt;
  2087. [...]&lt;/p&gt;
  2088. &lt;/blockquote&gt;
  2089. &lt;p&gt;On utilise donc un &lt;em&gt;proof-of-concept&lt;/em&gt; comme serveur de clef GPG et personne ne sait exactement comment il fonctionne. Joie.&lt;/p&gt;
  2090. &lt;figure class="aligncenter"&gt;
  2091. &lt;img src="https://mart-e.be/wp-content/uploads/2019/11/2986882105_70e52e3516_c.jpg" class="size-full wp-image-3551" width="800" height="530" /&gt;
  2092. &lt;figcaption&gt;gpg --list-keys&lt;/figcaption&gt;
  2093. &lt;/figure&gt;
  2094.  
  2095. &lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;/p&gt;
  2096. &lt;p&gt;La solution la plus simple serait évidemment de supprimer l'ensemble du répertoire &lt;code&gt;~/.gnupg&lt;/code&gt; et de recommencer. Si, pour de bonnes raisons, cette solution ne vous plaît pas, il nous faudra identifier la ou les clefs problématiques et les supprimer.&lt;/p&gt;
  2097. &lt;p&gt;Attention, toutes les commandes ci-dessous sont très lentes (une quinzaine de minute chez moi) ! Pensez à prendre un café...&lt;/p&gt;
  2098. &lt;p&gt;D'abord, identifier la clef problématique :&lt;/p&gt;
  2099. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;gpg&lt;span class="w"&gt; &lt;/span&gt;--export&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;gpg&lt;span class="w"&gt; &lt;/span&gt;--list-packets&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;awk&lt;span class="w"&gt; &lt;/span&gt;-F&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;oldoff&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;-1&lt;span class="w"&gt; &lt;/span&gt;-v&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;keyid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;unset&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;
  2100. &lt;span class="s1"&gt;/^# off=/{ off = $2 + 0 }&lt;/span&gt;
  2101. &lt;span class="s1"&gt;/^:public key/{ if (oldoff&amp;gt;-1) { print (off - oldoff) &amp;quot; &amp;quot; keyid }; oldoff = off; keyid = &amp;quot;unset&amp;quot;; }&lt;/span&gt;
  2102. &lt;span class="s1"&gt;/keyid:/ {if (keyid == &amp;quot;unset&amp;quot;) { keyid = $1; } }&lt;/span&gt;
  2103. &lt;span class="s1"&gt;END { print (off - oldoff) &amp;quot; &amp;quot; keyid ; };&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;sort&lt;span class="w"&gt; &lt;/span&gt;-n
  2104. ...
  2105. &lt;span class="m"&gt;18420&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;keyid:&lt;span class="w"&gt; &lt;/span&gt;D9C4D26D0E604491
  2106. &lt;span class="m"&gt;19724&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;keyid:&lt;span class="w"&gt; &lt;/span&gt;4A95E75A1354AAF0
  2107. &lt;span class="m"&gt;15874931&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;keyid:&lt;span class="w"&gt; &lt;/span&gt;DB1187B9DD5F693B
  2108. &lt;span class="m"&gt;15923848&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;keyid:&lt;span class="w"&gt; &lt;/span&gt;4E2C6E8793298290
  2109. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  2110.  
  2111. &lt;p&gt;La (grande) commande bash ci-dessous vous listera vos clefs avec la taille de celles-ci. Les deux dernières avec une taille à 8 chiffres sont les clefs problématiques.&lt;/p&gt;
  2112. &lt;p&gt;Si l'on veut les garder (au cas où), vous pouvez les exporter en plaintext (ce qui donne un fichier de 21MB pour la clef ci-dessous)&lt;/p&gt;
  2113. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;gpg&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;--export&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;DB1187B9DD5F693B&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;badkey.asc
  2114. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  2115.  
  2116. &lt;p&gt;Mais, il y a de bonnes chances que vous désiriez plutôt les supprimer.&lt;/p&gt;
  2117. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;gpg&lt;span class="w"&gt; &lt;/span&gt;--delete-key&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;DB1187B9DD5F693B&amp;#39;&lt;/span&gt;
  2118. gpg&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;GnuPG&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.2.17&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Copyright&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;C&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2019&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Free&lt;span class="w"&gt; &lt;/span&gt;Software&lt;span class="w"&gt; &lt;/span&gt;Foundation,&lt;span class="w"&gt; &lt;/span&gt;Inc.
  2119. This&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;free&lt;span class="w"&gt; &lt;/span&gt;software:&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;are&lt;span class="w"&gt; &lt;/span&gt;free&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;change&lt;span class="w"&gt; &lt;/span&gt;and&lt;span class="w"&gt; &lt;/span&gt;redistribute&lt;span class="w"&gt; &lt;/span&gt;it.
  2120. There&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;NO&lt;span class="w"&gt; &lt;/span&gt;WARRANTY,&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;extent&lt;span class="w"&gt; &lt;/span&gt;permitted&lt;span class="w"&gt; &lt;/span&gt;by&lt;span class="w"&gt; &lt;/span&gt;law.
  2121.  
  2122.  
  2123. pub&lt;span class="w"&gt;  &lt;/span&gt;rsa4096/DB1187B9DD5F693B&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2015&lt;/span&gt;-01-17&lt;span class="w"&gt; &lt;/span&gt;Patrick&lt;span class="w"&gt; &lt;/span&gt;Brunschwig
  2124.  
  2125. Delete&lt;span class="w"&gt; &lt;/span&gt;this&lt;span class="w"&gt; &lt;/span&gt;key&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;keyring?&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;y/N&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;y
  2126. gpg:&lt;span class="w"&gt; &lt;/span&gt;removing&lt;span class="w"&gt; &lt;/span&gt;stale&lt;span class="w"&gt; &lt;/span&gt;lockfile&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;created&lt;span class="w"&gt; &lt;/span&gt;by&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;598252&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
  2127. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  2128.  
  2129. &lt;p&gt;Après la suppression des clefs problématiques, tout devrait rentrer dans l'ordre !&lt;/p&gt;
  2130. &lt;p&gt;Source des commandes : &lt;a href="https://tech.michaelaltfield.net/2019/07/14/mitigating-poisoned-pgp-certificates/" rel="noopener noreferrer" target="_blank"&gt;Mitigating Poisoned PGP Certificates (CVE-2019-13050)&lt;/a&gt;&lt;/p&gt;</content><category term="GNU/Linux"></category><category term="gpg"></category><category term="planet-libre"></category></entry><entry><title>Nxt, Ardor et l'évolution des crypto-monnaies</title><link href="https://mart-e.be/post/2016/10/14/nxt-ardor-et-levolution-des-crypto-monnaies" rel="alternate"></link><published>2016-10-14T17:54:00+02:00</published><updated>2016-10-14T17:54:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2016-10-14:/post/2016/10/14/nxt-ardor-et-levolution-des-crypto-monnaies</id><summary type="html">&lt;p&gt;J'ai un avis mitigé sur le bitcoin. Tout avait bien commencé avec un concept de blockchain assez révolutionnaire. Un réseau peer-to-peer permettant des échanges sans qu'aucun tiers de confiance ne …&lt;/p&gt;</summary><content type="html">&lt;p&gt;J'ai un avis mitigé sur le bitcoin. Tout avait bien commencé avec un concept de blockchain assez révolutionnaire. Un réseau peer-to-peer permettant des échanges sans qu'aucun tiers de confiance ne soit nécessaire. Une bande d'amateurs de crypto dans un monde post-crise financière se disant qu'ils n'avaient pas besoin de gouvernement ou d'institution pour créer une monnaie.&lt;br&gt;
  2131. Et puis, en grandissant, les limites du système sont apparues : une impossibilité d'évoluer (cf le débat sans fin sur les tailles de bloc), une consommation énergétique stupide, une taille de blockchain n'en finissant pas, une &lt;a href="http://www.coindesk.com/bitcoin-mining-detente-ghash-io-51-issue/"&gt;centralisation&lt;/a&gt; du pouvoir de minage,...&lt;/p&gt;
  2132. &lt;figure&gt;
  2133.    &lt;img src="https://mart-e.be/wp-content/uploads/2016/10/CVhkEhtUAAAl0LH-300x222.jpg" class="size-medium wp-image-3496" width="300" height="222" alt="conférence mineurs bitcoin" /&gt;
  2134.    &lt;figcaption&gt;90% de la puissance de hash bitcoin assis dans le même canapé &lt;a href="https://twitter.com/lopp/status/673398201307664384"&gt;source&lt;/a&gt;&lt;/figcaption&gt;
  2135. &lt;/figure&gt;
  2136.  
  2137. &lt;p&gt;Avec le succès du bitcoin, nombreux sont ceux qui ont tenté de surfer sur la vague. On a d'abord eu tout ceux qui reproduisent le modèle qui fonctionne en modifiant 2, 3 variables (litecoin, dogecoin et autres ersatz de bitcoin). Certaines vont ajouter des fonctionnalités intéressantes (meilleur algorithme de minage, plus d'anonymat, plus rapide,...) mais sans changement révolutionnaire, elles sont souvent sans autre intérêt que spéculatif.&lt;/p&gt;
  2138. &lt;p&gt;Et puis, on a les altcoins, souvent surnommées "Bitcoin 2.0", qui vont réellement changer le principe de fonctionnement. On pense par exemple à Ethereum qui a été la cryptocoin du moment et a fait beaucoup parler d'elle lors d'&lt;a href="http://www.bortzmeyer.org/the-dao-ethereum-et-une-attaque.html"&gt;un hack&lt;/a&gt; qui a entraîné un fork de la monnaie. En dehors de cette gestion de crise critiquable (mais cela est une autre histoire), on a là un système réellement différent du bitcoin.&lt;/p&gt;
  2139. &lt;p&gt;Mon but n'est pas de présenter le vaste monde des altcoins mais de parler d'une injustement peu connue : &lt;strong&gt;Nxt&lt;/strong&gt;.&lt;/p&gt;
  2140. &lt;figure&gt;
  2141.    &lt;img src="https://mart-e.be/wp-content/uploads/2016/10/logo-nxt-rond@2x-150x150.png" class="aligncenter size-thumbnail wp-image-3502" width="150" height="150" alt="logo-nxt-rond2x" /&gt;
  2142. &lt;/figure&gt;
  2143.  
  2144. &lt;p&gt;Nxt est sûrement un des systèmes les plus révolutionnaires de cryptocoin. Créé en 2013, c'était un des premiers systèmes à ne pas être un fork du code de bitcoin.&lt;/p&gt;
  2145. &lt;h3&gt;Proof-of-stake&lt;/h3&gt;
  2146. &lt;p&gt;Nxt n'utilise pas le mécanisme de consensus habituel de &lt;a href="https://fr.wikipedia.org/wiki/Preuve_de_travail"&gt;proof-of-work&lt;/a&gt;. Dans bitcoin, la difficulté de minage, l'activité qui sécurise le réseau (et accessoirement récompense avec des bitcoins), augmente continuellement et est responsable d'une consommation électrique à vomir. Ma conscience écologique ne peut soutenir un système déjà aussi énergivore &lt;a href="https://karlodwyer.github.io/publications/pdf/bitcoin_KJOD_2014.pdf"&gt;qu'un pays&lt;/a&gt; alors qu'il ne concerne encore qu'une niche de la population.&lt;/p&gt;
  2147. &lt;p&gt;Dans le &lt;a href="https://fr.wikipedia.org/wiki/Preuve_d%27enjeu"&gt;proof-of-stake&lt;/a&gt;, le mécanisme n'est pas celui qui a le plus gros GPU mais celui qui a le plus de richesse. Plus de pièces un utilisateur possède, plus il a de chance de forger (on ne parle plus de miner) le bloc suivant. Forger ne sert plus qu'à valider les transactions en cours et requiert une fraction de l'utilisation du processeur. Pour donner un exemple, je forge via un raspberrypi.&lt;/p&gt;
  2148. &lt;figure&gt;
  2149. &lt;img src="https://mart-e.be/wp-content/uploads/2016/10/forger-300x235.jpg" class="aligncenter size-medium wp-image-3503" width="300" height="235" alt="forger" /&gt;
  2150. &lt;/figure&gt;
  2151.  
  2152. &lt;p&gt;La critique du système est que c'est un pouvoir aux riches permettant aux riches de devenir encore plus riche. Sans défendre un tel système, je tiens à faire remarquer que:&lt;/p&gt;
  2153. &lt;p&gt;- c'est également le cas avec le bitcoin, seuls les riches peuvent se permettre une ferme de minage consommant des GW pour accumuler encore plus de bitcoins&lt;br&gt;
  2154. - une personne riche a peu d’intérêts à attaquer le système : si on a vu &lt;a href="https://news.bitcoin.com/ethereum-clones-susceptible-51-attacks/"&gt;des attaques à 51%&lt;/a&gt; récemment sur des monnaies PoW basée sur Ethereum (il suffit de louer des machines pendant quelques heures), faire une attaque à 51% sur une monnaie PoS implique d'avoir déjà acheté la moitié des pièces et de faire perdre sa valeur à notre investissement.&lt;/p&gt;
  2155. &lt;p&gt;Pour l'anecdote, un &lt;a href="https://cointelegraph.com/news/the-inevitable-failure-of-proof-of-stake-blockchains-and-why-a-new-algorithm-is-needed"&gt;article critiquant proof-of-stake&lt;/a&gt; calcule qu'il faudrait plus de 1000 ans pour que le plus riche possesseur de NXT obtienne plus de 51% via le stake. On a de la marge.&lt;/p&gt;
  2156. &lt;p&gt;Proof-of-stake n'est certainement pas un système parfait (se pose aussi le complexe problème de la distribution initiale) mais proof-of-work ne me semble simplement pas viable en grandissant.&lt;/p&gt;
  2157. &lt;h3&gt;Plateforme&lt;/h3&gt;
  2158. &lt;p&gt;Nxt n'a pas pour vocation de devenir une monnaie concurrente au bitcoin. Lorsque l'on utilise le terme crypto-monnaie, les gens ont tendance à l'envisager comme un moyen d'acheter des biens. Cependant, Nxt permet bien plus que cela : en plus de la myriade de fonctionnalités directement inclues dans le client (&lt;a href="https://nxt.org/what-is-nxt/coin-shuffling/"&gt;coinshuffle&lt;/a&gt;, intégration &lt;a href="https://shapeshift.io/"&gt;shapeshift&lt;/a&gt;,...), il se comporte en plateforme pour usages divers :&lt;br&gt;
  2159. - une messagerie (chiffrée ou non)&lt;br&gt;
  2160. - un système de vote publique&lt;br&gt;
  2161. - un magasin en ligne&lt;br&gt;
  2162. - un stockage distribué&lt;/p&gt;
  2163. &lt;p&gt;Si cela ne suffisait pas, il permet la création &lt;a href="http://nxt.org/what-is-nxt/asset-exchange/"&gt;d'assets&lt;/a&gt; et même &lt;a href="http://nxt.org/what-is-nxt/monetary-system/"&gt;d'autres crypto-monnaies&lt;/a&gt;.&lt;/p&gt;
  2164. &lt;p&gt;En bref, un asset permet de distribuer des parts (pensez actions ou tickets de concert) que les gens peuvent s'échanger librement tandis qu'une monnaie permet de créer réellement sa monnaie proof-of-stake en quelques clics.&lt;/p&gt;
  2165. &lt;figure&gt;
  2166. &lt;img src="https://mart-e.be/wp-content/uploads/2016/10/2871166780_26e14bab69_z-300x233.jpg" class="aligncenter size-medium wp-image-3509" width="300" height="233" alt="pile de monnaie" /&gt;
  2167. &lt;/figure&gt;
  2168.  
  2169. &lt;p&gt;Nxt permet de servir de plateforme pour les assets et monnaies naissantes en bénéficiant de la sécurité et robustesse du réseau tout en masquant les difficultés techniques.&lt;/p&gt;
  2170. &lt;h3&gt;Ardor&lt;/h3&gt;
  2171. &lt;p&gt;Toute cela est très bien mais ce n'est pas encore suffisant. Il reste deux points problématiques dans le système actuel:&lt;br&gt;
  2172. - en grandissant, la blockchain devient obèse et difficile à manipuler&lt;br&gt;
  2173. - les assets et monnaies payent toujours leurs frais de transaction en NXT&lt;/p&gt;
  2174. &lt;p&gt;La première est commune à toutes les chaînes gagnant un peu de succès. Il est illusoire de vouloir télécharger la blockchain Bitcoin (on &lt;a href="https://blockchain.info/charts/blocks-size"&gt;approche des 100GB&lt;/a&gt; cette année) sur son smartphone par exemple. Et ça ne fait qu'empirer.&lt;br&gt;
  2175. Si Nxt &lt;a href="https://docs.google.com/document/d/1J8uhdshu9epGRrQHBaloGc4itdvuAHZDAUtNDjOhz-8/edit"&gt;atteignait la taille de Bitcoin&lt;/a&gt;, le problème se poserait probablement aussi.&lt;/p&gt;
  2176. &lt;p&gt;La deuxième rend le système moins attractif pour créer sa propre crypto-monnaie puisqu'il force les utilisateurs à continuer d'acheter des Nxt pour les transactions.&lt;/p&gt;
  2177. &lt;p&gt;Pour régler ces problèmes, l'équipe de développeurs est en train de mettre au point &lt;a href="https://www.ardorplatform.org/"&gt;&lt;strong&gt;Ardor&lt;/strong&gt;&lt;/a&gt;, une sorte de Nxt 2.0 (un Bitcoin 4.0 donc ?).&lt;/p&gt;
  2178. &lt;p&gt;Ardor sera une blockchain qui aura pour but de supporter les child chains uniquement. Fini les votes, stockage, messagerie et autres sur Ardor. Toutes ces fonctionnalités restent mais sont déplacées sur les chaînes enfants.&lt;/p&gt;
  2179. &lt;p&gt;Ardor et les chaînes enfants intégreront un mécanisme de purge pour ne garder que les dernières transactions pour maintenir une taille faible du réseau même en cas de forte croissance. Un système de hash sera intégré pour s'assurer que l'historique n'a pas été altéré.&lt;/p&gt;
  2180. &lt;figure&gt;
  2181.    &lt;img src="https://mart-e.be/wp-content/uploads/2016/10/9268327638_5ef228cdec_z-300x239.jpg" class="size-medium wp-image-3510" width="300" height="239" alt="Traders attendant l’arrivée d&amp;#39;Ardor" /&gt;
  2182.    &lt;figcaption&gt;Traders attendant l’arrivée d'Ardor (&lt;a href="https://www.flickr.com/photos/thenationalmuseumofdenmark/9268327638/"&gt;source&lt;/a&gt;)&lt;/figcaption&gt;
  2183. &lt;/figure&gt;
  2184.  
  2185. &lt;p&gt;Le deuxième problème est également réglé. Les transactions sur les chaînes enfants seront payées dans la monnaie de celle-ci. Pour supporter le réseau, ces frais de transactions seront reversés aux bundlers, des personnes payant des frais en Ardor pour transmettre les transactions à tout le réseau.&lt;/p&gt;
  2186. &lt;p&gt;Le principe économique sera donc que, tant que la chaîne enfant aura de la valeur, des bundlers accepteront de payer les frais de transactions en Ardor. Si la valeur du token enfant diminue, les frais devront augmenter pour que le bundler continue de les accepter.&lt;/p&gt;
  2187. &lt;p&gt;Si tout se passe bien, tout cela sera caché aux yeux des utilisateurs qui ne devront pas se soucier des bundlers ou d'Ardor. Un utilisateur d'une chaîne enfant n'aura même pas besoin de savoir qu'elle fonctionne sur Ardor !&lt;/p&gt;
  2188. &lt;h3&gt;Future&lt;/h3&gt;
  2189. &lt;p&gt;Si après tout ce blabla, vous êtes convaincus d'acheter des NXT, vous vous êtes sans doute rendu compte que &lt;a href="https://coinmarketcap.com/currencies/nxt/"&gt;le cours du NXT&lt;/a&gt; a grandement chuté ces derniers mois. Cela est du à la phase de transition entre Nxt et Ardor.&lt;/p&gt;
  2190. &lt;figure&gt;
  2191.    &lt;a href="https://mart-e.be/wp-content/uploads/2016/10/roadmap.jpg"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2016/10/roadmap-300x169.jpg" class="aligncenter size-medium wp-image-3500" width="300" height="169" alt="roadmap" /&gt;&lt;/a&gt;
  2192. &lt;/figure&gt;
  2193.  
  2194. &lt;p&gt;Au stade actuel, Ardor n'est pas encore déployé. Les développeurs de Nxt ont annoncé une &lt;a href="http://nxt.org/roadmap/"&gt;feuille de route&lt;/a&gt; pour fin 2017 pour prendre le temps de développer la nouvelle solution.&lt;br&gt;
  2195. Cette semaine, des tokens de Ardor ont été distribué aux possesseurs de NXT comme un asset. S'il y avait un motif de garder ses NXT, celui-ci vient de tomber et est vu comme un projet sans avenir auprès des traders.&lt;/p&gt;
  2196. &lt;p&gt;Vu qu'il reste encore un an avant que Ardor ne soit déployé et que Nxt restera parfaitement fonctionnel après cela (la magie des blockchains), il n'y a pas de raison de ne plus l'utiliser. De plus, un prix faible veut dire des frais de transaction faibles ce qui le rend encore plus attractif comme plateforme (et non comme monnaie).&lt;/p&gt;</content><category term="News"></category><category term="bitcoin"></category><category term="cryptomonnaie"></category><category term="nxt"></category></entry><entry><title>LetsEncrypt, .well-known et NGINX</title><link href="https://mart-e.be/post/2015/11/03/letsencrypt-well-known-et-nginx" rel="alternate"></link><published>2015-11-03T13:43:00+01:00</published><updated>2015-11-03T13:43:00+01:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2015-11-03:/post/2015/11/03/letsencrypt-well-known-et-nginx</id><summary type="html">&lt;p&gt;Il y a quelques jours, j'ai eu la bonne surprise de voir ma demande a la beta de &lt;a href="https://letsencrypt.org/"&gt;Let's Encrypt&lt;/a&gt; être acceptée. A moi l'argent, la gloire et la crypto …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Il y a quelques jours, j'ai eu la bonne surprise de voir ma demande a la beta de &lt;a href="https://letsencrypt.org/"&gt;Let's Encrypt&lt;/a&gt; être acceptée. A moi l'argent, la gloire et la crypto !&lt;/p&gt;
  2197. &lt;p&gt;&lt;a href="https://mart-e.be/wp-content/uploads/2015/11/letsencrypt.png"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2015/11/letsencrypt-300x72.png" class="aligncenter size-medium wp-image-3481" width="300" height="72" alt="letsencrypt" /&gt;&lt;/a&gt;
  2198. Pour rappel, letsencrypt est une autorité de certification (CA) qui ne demande aucune validation humaine de leur part. Pas d'envoie de papiers d'identité ou autre preuves. Pour prouver que vous etes bien possesseur du domaine, il suffit que, lors de la génération du certificat, vous placiez un fichier json accessible a une url "mondomaine.com/.well-known/...".&lt;/p&gt;
  2199. &lt;p&gt;La procédure de génération est donnée (et risque d’évoluer d'ici la fin de la beta) mais en résumé:&lt;/p&gt;
  2200. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;Make&lt;/span&gt; &lt;span class="n"&gt;sure&lt;/span&gt; &lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="n"&gt;web&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="n"&gt;displays&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;following&lt;/span&gt; &lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt;                                                                                          
  2201. &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;mart&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;be&lt;/span&gt;&lt;span class="o"&gt;/.&lt;/span&gt;&lt;span class="n"&gt;well&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;known&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;acme&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;challenge&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;abcdef&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="n"&gt;before&lt;/span&gt; &lt;span class="n"&gt;continuing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  2202.  
  2203. &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;header&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  2204.  
  2205. &lt;span class="n"&gt;Content&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Type&lt;/span&gt; &lt;span class="n"&gt;header&lt;/span&gt; &lt;span class="n"&gt;MUST&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;jose&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
  2206.  
  2207. &lt;span class="n"&gt;If&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;don&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;t have HTTP server configured, you can run the following&lt;/span&gt;
  2208. &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="n"&gt;server&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;root&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  2209.  
  2210. &lt;span class="n"&gt;mkdir&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;letsencrypt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;public_html&lt;/span&gt;&lt;span class="o"&gt;/.&lt;/span&gt;&lt;span class="n"&gt;well&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;known&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;acme&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;challenge&lt;/span&gt;
  2211. &lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;letsencrypt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;public_html&lt;/span&gt;
  2212. &lt;span class="n"&gt;echo&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;{&amp;quot;header&amp;quot;: ...}&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;well&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;known&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;acme&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;challenge&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;abcdef&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;
  2213. &lt;span class="c1"&gt;# run only once per server:&lt;/span&gt;
  2214. &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="n"&gt;python2&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="n"&gt;python2&lt;/span&gt;&lt;span class="mf"&gt;.7&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="n"&gt;python2&lt;/span&gt;&lt;span class="mf"&gt;.6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;  
  2215. &lt;span class="s2"&gt;&amp;quot;import BaseHTTPServer, SimpleHTTPServer;   &lt;/span&gt;
  2216. &lt;span class="n"&gt;SimpleHTTPServer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SimpleHTTPRequestHandler&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;extensions_map&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;application/jose+json&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;  
  2217. &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;BaseHTTPServer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HTTPServer&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;SimpleHTTPServer&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SimpleHTTPRequestHandler&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
  2218. &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;serve_forever&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
  2219. &lt;span class="n"&gt;Press&lt;/span&gt; &lt;span class="n"&gt;ENTER&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="k"&gt;continue&lt;/span&gt;
  2220. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  2221.  
  2222. &lt;p&gt;Super, seulement wordpress ne me laisse pas créer des dossiers arbitraires dans mon dossier contenant le code (et c'est une bonne nouvelle en soit). Pour résoudre cela, un petit bricolage nginx s'imposait.&lt;/p&gt;
  2223. &lt;figure&gt;
  2224.    &lt;a href="https://mart-e.be/wp-content/uploads/2015/11/elephant_machine_gun.jpg"&gt;&lt;img src="//mart-e.be/wp-content/uploads/2015/11/elephant_machine_gun-300x238.jpg" class="size-medium wp-image-3485" width="300" height="238" alt="HTTPS sur un blog, c&amp;#39;est comme un éléphant-mitrailleuse. Ça ne sert pas a grand chose mais c&amp;#39;est cool!" /&gt;&lt;/a&gt;
  2225.    &lt;figcaption&gt;HTTPS sur un blog, c'est comme un éléphant-mitrailleuse. Ça ne sert pas a grand chose mais c'est cool!&lt;/figcaption&gt;
  2226. &lt;/figure&gt;
  2227.  
  2228. &lt;p&gt;Dans la config nginx du blog, ajoutez un bloc &lt;code&gt;location&lt;/code&gt;:&lt;/p&gt;
  2229. &lt;p&gt;&lt;strong&gt;Mise à jour: Michel &lt;a href="#comment-108179"&gt;propose&lt;/a&gt; une solution plus simple sans s'ennuyer avec un serveur local en python!&lt;/strong&gt;&lt;/p&gt;
  2230. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  2231. &lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="err"&gt;listen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  2232. &lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="err"&gt;server_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;mart-e.be&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  2233. &lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="err"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;~&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/.well-known&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;
  2234. &lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="err"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="mf"&gt;127.0.0.1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;7890&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  2235. &lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
  2236.  
  2237. &lt;span class="w"&gt;           &lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;reste&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;de&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;la&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;config&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;pour&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;wordpress&lt;/span&gt;
  2238. &lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;
  2239. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  2240.  
  2241. &lt;p&gt;Où 7890 est un numero de port totalement arbitraire.&lt;br&gt;
  2242. Ensuite, suivant +/- les conseils du wizard de letsencrypt&lt;/p&gt;
  2243. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;mkdir&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;letsencrypt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;public_html&lt;/span&gt;&lt;span class="o"&gt;/.&lt;/span&gt;&lt;span class="n"&gt;well&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;known&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;acme&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;challenge&lt;/span&gt;
  2244. &lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;cd&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;letsencrypt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;public_html&lt;/span&gt;
  2245. &lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;echo&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;{&amp;quot;header&amp;quot;:...}  &amp;gt; .well-known/acme-challenge/abcdef...&lt;/span&gt;
  2246. &lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;import BaseHTTPServer, SimpleHTTPServer; SimpleHTTPServer.SimpleHTTPRequestHandler.extensions_map = {&amp;#39;&amp;#39;: &amp;#39;application/jose+json&amp;#39;}; s = BaseHTTPServer.HTTPServer((&amp;#39;&amp;#39;, 7890), SimpleHTTPServer.SimpleHTTPRequestHandler); s.serve_forever()&amp;quot;&lt;/span&gt;
  2247. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  2248.  
  2249. &lt;p&gt;Notez que j'ai changé le numéro de port de 80 a 7890 dans les paramètres de &lt;code&gt;HTTPServer&lt;/code&gt;.&lt;/p&gt;
  2250. &lt;p&gt;On relance NGINX (&lt;code&gt;nginx -s reload&lt;/code&gt;), continue l'exécution du wizard (press ENTER) et victoire !&lt;/p&gt;
  2251. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;Press&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ENTER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;continue&lt;/span&gt;
  2252.  
  2253. &lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;IMPORTANT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;NOTES&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  2254. &lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Congratulations&lt;/span&gt;&lt;span class="p"&gt;!&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;certificate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;chain&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;have&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;been&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;saved&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;at&lt;/span&gt;
  2255. &lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;letsencrypt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;live&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;mart&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;fullchain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cert&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;will&lt;/span&gt;
  2256. &lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="nx"&gt;expire&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2016&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;01&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;26&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;To&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;obtain&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;certificate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;
  2257. &lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="nx"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;future&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;simply&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Let&lt;/span&gt;&lt;span class="err"&gt;&amp;#39;&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Encrypt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;again&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
  2258. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  2259.  
  2260. &lt;p&gt;Vous pouvez tuer la commande python une fois validé et retirer la config nginx (ou commentez, le certificat beta ne vaut que 90 jours).&lt;/p&gt;
  2261. &lt;p&gt;En bonus, la config nginx qui va bien:&lt;/p&gt;
  2262. &lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;ssl_certificate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;letsencrypt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;live&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;mart-e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;be&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;fullchain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;pem&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  2263. &lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;ssl_certificate_key&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;letsencrypt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;live&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;mart-e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;be&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;privkey&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;pem&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  2264. &lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;ssl_ciphers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  2265. &lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;ssl_protocols&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;TLSv1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;TLSv1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;2&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  2266. &lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;ssl_prefer_server_ciphers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;on&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  2267. &lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;ssl_dhparam&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;nginx&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;dhparams&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;pem&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
  2268. &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  2269.  
  2270. &lt;p&gt;Avec le fichier &lt;code&gt;dhparams.pem&lt;/code&gt; servant à la génération d'une clef diffie-helman, via la commande &lt;code&gt;openssl dhparam -out dhparam.pem 2048&lt;/code&gt;&lt;/p&gt;
  2271. &lt;p&gt;Mozilla a un super &lt;a href="https://mozilla.github.io/server-side-tls/ssl-config-generator/"&gt;générateur de config&lt;/a&gt;. J'ai prit la config moderne, désolé utilisateurs de vieux soft, je décroche ainsi un beau A sur le &lt;a href="https://tls.imirhil.fr/"&gt;CryptCheck&lt;/a&gt; un peu nazi de &lt;a href="https://blog.imirhil.fr/"&gt;Aeris&lt;/a&gt; !&lt;/p&gt;
  2272. &lt;p&gt;&lt;a href="https://mart-e.be/wp-content/uploads/2015/11/Screenshot-from-2015-11-01-08-58-00.png"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2015/11/Screenshot-from-2015-11-01-08-58-00-300x66.png" class="aligncenter size-medium wp-image-3472" width="300" height="66" alt="CrptCheck" /&gt;&lt;/a&gt;&lt;/p&gt;
  2273. &lt;p&gt;Vous pouvez maintenant accéder a mart-e.be &lt;a href="https://mart-e.be"&gt;en https&lt;/a&gt; !&lt;/p&gt;</content><category term="Tips"></category><category term="cryptographie"></category><category term="letsencrypt"></category><category term="planet-libre"></category><category term="securite"></category><category term="wordpress"></category></entry><entry><title>Brotli, féminisme et enculage de mouches</title><link href="https://mart-e.be/post/2015/10/14/brotli-feminisme-et-enculage-de-mouches" rel="alternate"></link><published>2015-10-14T09:12:00+02:00</published><updated>2015-10-14T09:12:00+02:00</updated><author><name>mart</name></author><id>tag:mart-e.be,2015-10-14:/post/2015/10/14/brotli-feminisme-et-enculage-de-mouches</id><summary type="html">&lt;p&gt;Si le mot Brotli ne vous évoque qu'un chou au gout discutable, c'est normal. Il s'agit d'un nouveau logiciel de compression par Google qui vise à réduire la taille des …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Si le mot Brotli ne vous évoque qu'un chou au gout discutable, c'est normal. Il s'agit d'un nouveau logiciel de compression par Google qui vise à réduire la taille des pages transmises pour remplacer les bon vieux gzip.&lt;/p&gt;
  2274. &lt;p&gt;Sur le &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=366559"&gt;ticket Bugzilla&lt;/a&gt; concernant son support dans Firefox, un ingénieur de chez Mozilla &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=366559#c147"&gt;conseille&lt;/a&gt; d'éviter d'utiliser "bro" comme extension et ligne de commande en raison d'une potentielle connotation misogyne. Plutôt que d'ouvrir des débats lors de la phase de validation par l'IETF et le risque de choquer les gens, l'on propose de remplacer l'extension par "br". Facile et court, adjugé, emballé, c'est pesé et l'on applique &lt;a href="https://github.com/google/brotli/commit/c4f439dbe6007b2a37d50c20419253d5aaa8b46b"&gt;le changement sur GitHub&lt;/a&gt;.&lt;/p&gt;
  2275. &lt;figure&gt;
  2276. &lt;img src="https://mart-e.be/wp-content/uploads/2015/10/compression.gif" class="size-full wp-image-3453" width="299" height="203" alt="La compression avant l&amp;#39;heure" /&gt;
  2277. &lt;figcaption&gt;La compression avant l'heure&lt;/figcaption&gt;
  2278. &lt;/figure&gt;
  2279.  
  2280. &lt;p&gt;Est-ce que c'est triste que l'on change une extension pour éviter le risque potentiel que sans doute des gens vont être choqués ? Non. Il est normal de respecter les croyances et opinions de tout le monde. Je ne vais pas utiliser &lt;code&gt;.nigga&lt;/code&gt; dans mon programme en raison des connotations racistes qu'il pourrait avoir.&lt;/p&gt;
  2281. &lt;p&gt;Est-ce que c'est triste de considérer "bro" comme misogyne ? Probablement mais reprochez cela à ceux qui l'utilisent avec une connotation sexiste. Si vous aimez les "bro-joke", tant mieux pour vous, sachez juste que ça peut choquer/vexer/énerver des gens et que l'argument de l'humour n'est pas excusable. Je ne suis certainement pas le dernier à aimer les blagues que certains trouveront de mauvais gout, j'évite juste d'en faire une commande shell.&lt;/p&gt;
  2282. &lt;p&gt;Est-ce que, dans le fond, on s'en fout de cette extension bien technique pour un format qu'on ne verra probablement jamais sur nos PC ? Oui.&lt;/p&gt;
  2283. &lt;figure&gt;
  2284.    &lt;a href="https://mart-e.be/wp-content/uploads/2015/10/what-happened-to-the-man-i-married.jpg"&gt;&lt;img src="https://mart-e.be/wp-content/uploads/2015/10/what-happened-to-the-man-i-married-300x226.jpg" class="size-medium wp-image-3448" width="300" height="226" alt="C'est vraiment ce que vous retenez de mon algo de compression ?" /&gt;&lt;/a&gt;
  2285.    &lt;figcaption&gt;C'est vraiment ce que vous retenez de mon algo de compression ?&lt;/figcaption&gt;
  2286. &lt;/figure&gt;
  2287.  
  2288. &lt;p&gt;Seulement, on est sur internet, cet endroit merveilleux qui recueille un amas de trolls qui s'ennuient. Un poste sur &lt;a href="http://tech.slashdot.org/story/15/10/10/2212233/there-is-no-bro-in-brotli-googlemozilla-engineers-nix-file-type-as-offensive"&gt;slashdot&lt;/a&gt;, &lt;a href="https://www.reddit.com/r/technology/comments/3oa2qh/google_removes_bro_file_extension_from_project/"&gt;reddit&lt;/a&gt;, &lt;a href="http://www.numerama.com/tech/126441-google-renonce-a-lextension-de-fichiers-bro-jugee-sexiste.html"&gt;numérama&lt;/a&gt; et j'en passe et hop, 68 commentaires sur un &lt;a href="https://github.com/google/brotli/commit/c4f439dbe6007b2a37d50c20419253d5aaa8b46b"&gt;commit de 2 caractères&lt;/a&gt; !&lt;/p&gt;
  2289. &lt;p&gt;Ça va crier au chantage, a créer un grave précédent, à la manipulation du lobby féministe et jouer à celui qui va déterrer toutes les extensions existantes ayant une connotation potentielle. Allez, il manque plus qu'un petit hashtag, je propose #BroGate !&lt;/p&gt;
  2290. &lt;figure&gt;
  2291.    &lt;img src="https://mart-e.be/wp-content/uploads/2015/10/raising-goats.jpg" class="size-full wp-image-3455" width="350" height="230" alt="Au moins les chèvres ne se prennent pas la tête avec tant de bullshit" /&gt;
  2292.    &lt;figcaption&gt;Au moins les chèvres ne se prennent pas la tête avec tant de bullshit&lt;/figcaption&gt;
  2293. &lt;/figure&gt;
  2294.  
  2295. &lt;p&gt;Il n'est pas triste qu'on soit dans un monde tellement politiquement correct qu'on change un format pour quelque chose qui n'aurait sûrement dérangé personne. Il est triste qu'il y ai autant de gens que ce changement fasse réagir. On peut trouver ça stupide/normal/navrant/amusant/énervant comme décision mais ça reste mineur. C'est fait, ça ne vaut plus la peine de perdre du temps sur ces détails. Et si, dans le fond, on s'intéressait a implémenter ce logiciel, qui semble avoir des &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=366559#c104"&gt;très bons taux de compression&lt;/a&gt;, plutôt que de se toucher la nouille ?&lt;/p&gt;</content><category term="News"></category><category term="brotli"></category><category term="féminisme"></category><category term="rhaa"></category><category term="troll"></category></entry></feed>

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid Atom 1.0" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=https%3A//mart-e.be/feed

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda