A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 26KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="fr">
  4. <!-- Has to be within the first 1024 bytes, hence before the <title>
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>(Dé)possession virtuelle (archive) — David Larlet</title>
  13. <meta name="description" content="Publication mise en cache pour en conserver une trace.">
  14. <!-- That good ol' feed, subscribe :). -->
  15. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  16. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  17. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  18. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  19. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  20. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  21. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  22. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  23. <meta name="msapplication-TileColor" content="#f0f0ea">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f0f0ea">
  26. <!-- Documented, feel free to shoot an email. -->
  27. <link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
  28. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  29. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  30. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  31. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  32. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <script type="text/javascript">
  36. function toggleTheme(themeName) {
  37. document.documentElement.classList.toggle(
  38. 'forced-dark',
  39. themeName === 'dark'
  40. )
  41. document.documentElement.classList.toggle(
  42. 'forced-light',
  43. themeName === 'light'
  44. )
  45. }
  46. const selectedTheme = localStorage.getItem('theme')
  47. if (selectedTheme !== 'undefined') {
  48. toggleTheme(selectedTheme)
  49. }
  50. </script>
  51. <meta name="robots" content="noindex, nofollow">
  52. <meta content="origin-when-cross-origin" name="referrer">
  53. <!-- Canonical URL for SEO purposes -->
  54. <link rel="canonical" href="https://www.hypothermia.fr/2020/08/depossession-virtuelle/">
  55. <body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">
  56. <article>
  57. <header>
  58. <h1>(Dé)possession virtuelle</h1>
  59. </header>
  60. <nav>
  61. <p class="center">
  62. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  63. <a href="https://www.hypothermia.fr/2020/08/depossession-virtuelle/" title="Lien vers le contenu original">Source originale</a>
  64. </p>
  65. </nav>
  66. <hr>
  67. <main>
  68. <p>Cela fait quelques mois que mon royaume virtuel se désagrège au bord de l’effondrement, et je ne sais que faire pour le réparer. Pour une raison que j’ignore, Hypothermia a décidé de ne pas digérer la dernière mise à jour de WordPress – à moins que ça soit une nouvelle version de PHP. Si les apparences sont sauvées, elles sont aussi trompeuses : je rédige mes articles sur une interface minuscule aux briques défaillantes et au goût d’obsolescence programmée. Je me demande chaque semaine quand mon site va définitivement cesser de fonctionner.</p>
  69. <figure><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="https://www.hypothermia.fr/media/2020/08/screenshot-1024x265.png" alt="" class="alignnone size-large wp-image-16015" data-srcset="https://www.hypothermia.fr/media/2020/08/screenshot-1024x265.png 1024w, https://www.hypothermia.fr/media/2020/08/screenshot-768x199.png 768w, https://www.hypothermia.fr/media/2020/08/screenshot.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px"/><noscript><img src="https://www.hypothermia.fr/media/2020/08/screenshot-1024x265.png" alt="" class="alignnone size-large wp-image-16015" srcset="https://www.hypothermia.fr/media/2020/08/screenshot-1024x265.png 1024w, https://www.hypothermia.fr/media/2020/08/screenshot-768x199.png 768w, https://www.hypothermia.fr/media/2020/08/screenshot.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px"/></noscript></figure>
  70. <p class="legend">La pointe de l’ergonomie.</p>
  71. <p>Il y a des jours où je me réjouis que le blog ait enfin un problème suffisamment gros pour que j’arrête de le rafistoler à bouts de scotch : je fantasme alors sur une idée de refonte qui en assainirait le code depuis les fondations. Moins de dépendances, plus de contrôle : la mode des sites statiques me séduit, sans doute par la nostalgie de mes débuts de publications sur le web il y a plus de vingt ans.</p>
  72. <p>Il y a des jours plus réalistes où je désespère. Réparer le blog, c’est la promesse de dizaines et dizaines d’heures immergée dans des lignes de code – mettons le double si je décide de le transférer sur une nouvelle plateforme. En envisageant la montagne de boulot qui m’attend, j’ai parfois envie de tout plaquer et de me libérer de ce qui me donne l’impression d’avoir un travail parallèle à mi-temps.</p>
  73. <p>La majorité de ma vie s’écoule déjà devant un écran. Le cœur de mon <em>« vrai »</em> travail réside dans des lignes de commande, des scripts à compiler, des jeux de données à analyser. J’ai basé une grande partie de mon métier sur ce qui était au départ une passion adolescente. Avec le prix à payer de la transformer en travail : une fois de retour chez moi le soir, j’ai tout le mal du monde à m’installer sur l’ordinateur pour faire avancer mes projets personnels. À ma droite, la fenêtre qui donne vue sur la forêt où j’ai envie de me balader. À ma gauche, Olaf qui réclame jeux et grattouilles et le canapé où K m’attend pour regarder un film. Mon cœur refuse de se concentrer sur ce qui m’attend devant moi : un clavier, un écran, un tunnel.</p>
  74. <p>J’ai eu un goût doux-amer de cette immersion virtuelle ces derniers jours, lorsque j’ai voulu avancer sur mon souhait de <a href="https://www.hypothermia.fr/2019/08/david-vs-goliath/">retrouver le contrôle de mes données privées en ligne</a>. Atteignant les limites de mon hébergement mutualisé et me laissant entraîner par l’enthousiasme de quelques geeks dans mon entourage, j’ai acheté un Raspberry Pi que je comptais transformer en petit serveur autohébergé.</p>
  75. <figure><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="https://www.hypothermia.fr/media/2020/08/raspberry.jpg" alt="" class="alignnone size-full wp-image-15991" data-srcset="https://www.hypothermia.fr/media/2020/08/raspberry.jpg 1200w, https://www.hypothermia.fr/media/2020/08/raspberry-1024x683.jpg 1024w, https://www.hypothermia.fr/media/2020/08/raspberry-768x512.jpg 768w, https://www.hypothermia.fr/media/2020/08/raspberry-480x320.jpg 480w" sizes="(max-width: 1200px) 100vw, 1200px"/><noscript><img src="https://www.hypothermia.fr/media/2020/08/raspberry.jpg" alt="" class="alignnone size-full wp-image-15991" srcset="https://www.hypothermia.fr/media/2020/08/raspberry.jpg 1200w, https://www.hypothermia.fr/media/2020/08/raspberry-1024x683.jpg 1024w, https://www.hypothermia.fr/media/2020/08/raspberry-768x512.jpg 768w, https://www.hypothermia.fr/media/2020/08/raspberry-480x320.jpg 480w" sizes="(max-width: 1200px) 100vw, 1200px"/></noscript></figure>
  76. <figure><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="https://www.hypothermia.fr/media/2020/08/microsd.jpg" alt="" class="alignnone size-full wp-image-15989" data-srcset="https://www.hypothermia.fr/media/2020/08/microsd.jpg 1200w, https://www.hypothermia.fr/media/2020/08/microsd-1024x683.jpg 1024w, https://www.hypothermia.fr/media/2020/08/microsd-768x512.jpg 768w, https://www.hypothermia.fr/media/2020/08/microsd-480x320.jpg 480w" sizes="(max-width: 1200px) 100vw, 1200px"/><noscript><img src="https://www.hypothermia.fr/media/2020/08/microsd.jpg" alt="" class="alignnone size-full wp-image-15989" srcset="https://www.hypothermia.fr/media/2020/08/microsd.jpg 1200w, https://www.hypothermia.fr/media/2020/08/microsd-1024x683.jpg 1024w, https://www.hypothermia.fr/media/2020/08/microsd-768x512.jpg 768w, https://www.hypothermia.fr/media/2020/08/microsd-480x320.jpg 480w" sizes="(max-width: 1200px) 100vw, 1200px"/></noscript></figure>
  77. <p class="legend">Mon petit Raspberry avec sa carte mémoire d’une capacité environ 3000 fois supérieure à son ancêtre :</p>
  78. <figure><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="https://www.hypothermia.fr/media/2020/08/ibm_ramac.jpg" alt="" class="alignnone size-full wp-image-15995" data-srcset="https://www.hypothermia.fr/media/2020/08/ibm_ramac.jpg 1280w, https://www.hypothermia.fr/media/2020/08/ibm_ramac-1024x568.jpg 1024w, https://www.hypothermia.fr/media/2020/08/ibm_ramac-768x426.jpg 768w" sizes="(max-width: 1280px) 100vw, 1280px"/><noscript><img src="https://www.hypothermia.fr/media/2020/08/ibm_ramac.jpg" alt="" class="alignnone size-full wp-image-15995" srcset="https://www.hypothermia.fr/media/2020/08/ibm_ramac.jpg 1280w, https://www.hypothermia.fr/media/2020/08/ibm_ramac-1024x568.jpg 1024w, https://www.hypothermia.fr/media/2020/08/ibm_ramac-768x426.jpg 768w" sizes="(max-width: 1280px) 100vw, 1280px"/></noscript></figure>
  79. <p class="legend">L’IBM RAMAC 305, premier ordinateur à disque dur (5Mb) commercialisé en 1956.</p>
  80. <p>L’idée était plutôt simple : je comptais rapatrier plusieurs des services que j’utilise encore en ligne (calendriers, contacts, lecteur de flux, archivage d’articles, cloud de fichiers, …) sur mon mini serveur à la maison accessible des quatre coins du monde. Il est vrai que j’aime énormément l’idée d’avoir tous ces éléments dans <a href="https://www.hypothermia.fr/search/memorabilia">une petite boîte physique que je conserve dans mon chez moi.</a> Au programme ? Une instance <a href="https://nextcloud.com/">Nextcloud</a> bien huilée, un <a href="https://www.wallabag.it/en">Wallabag</a> et <a href="https://miniflux.app/">Miniflux</a> pour commencer.</p>
  81. <p>Allez, au maximum un weekend et ça serait bouclé ? Quelle naïveté. J’ai passé des soirées bien trop longues les mains dans le cambouis à essayer de configurer la bête. Sous la main, une trentaine d’onglets Internet ouverts chacun m’indiquant une marche à suivre différente digne d’une adaptation de recette dans les commentaires d’un blog de cuisine. Je me faisais insulter par la ligne de commande à chaque étape, n’ayant aucune idée de comment décrypter la plupart des messages d’erreur, lançant la majorité des commandes à l’aveuglette en priant pour que les étoiles s’alignent et que mon système fonctionne.</p>
  82. <p>Cerise sur le gâteau, plus je lisais de tutoriels dans l’espoir de trouver des instructions qui m’aideraient, plus je lisais de mises en gardes sur l’extrême importance de tout maîtriser et de parfaitement tout configurer sans quoi de petits hackers chinois de 13 ans allaient s’infiltrer dans mon réseau, prendre mes données en otage et kidnapper mes ressources virtuelles pour les mettre au service du Dark Web. Après une dernière insulte du terminal à une heure bien trop avancée, de rage j’ai tout débranché, je me suis servie une grenadine, un bol de pâtes et j’ai boulotté une saison de <em>Selling Sunset</em> pour me calmer <a href="https://www.youtube.com/watch?v=DXdO0Revllc"><span class="smaller">(ne me jugez pas)</span></a>.</p>
  83. <figure><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="https://www.hypothermia.fr/media/2020/08/terminal.jpg" alt="" class="alignnone size-full wp-image-15992" data-srcset="https://www.hypothermia.fr/media/2020/08/terminal.jpg 1200w, https://www.hypothermia.fr/media/2020/08/terminal-1024x683.jpg 1024w, https://www.hypothermia.fr/media/2020/08/terminal-768x512.jpg 768w, https://www.hypothermia.fr/media/2020/08/terminal-480x320.jpg 480w" sizes="(max-width: 1200px) 100vw, 1200px"/><noscript><img src="https://www.hypothermia.fr/media/2020/08/terminal.jpg" alt="" class="alignnone size-full wp-image-15992" srcset="https://www.hypothermia.fr/media/2020/08/terminal.jpg 1200w, https://www.hypothermia.fr/media/2020/08/terminal-1024x683.jpg 1024w, https://www.hypothermia.fr/media/2020/08/terminal-768x512.jpg 768w, https://www.hypothermia.fr/media/2020/08/terminal-480x320.jpg 480w" sizes="(max-width: 1200px) 100vw, 1200px"/></noscript></figure>
  84. <p class="legend">ON S’AMUSE (non).</p>
  85. <p>Même si je ne me considère pas comme une geekette de pointe, je suis pourtant loin d’être une tanche dans le domaine. Autodidacte certes, mais bidouilleuse de guerre quand il s’agit d’arriver à mes fins. Au fil des jours et malgré ma frustration, j’ai réussi à construire un système à peu près utilisable : tout n’est pas encore installé, tout n’est sans doute pas hyper sécurisé, mais je commence à m’en servir au quotidien ce qui est un bon signe. Je regrette toutefois que l’alternative aux solutions clef-en-un-si-pratiques-en-plus-gratuites-mais-peu-respectueuses-de-la-vie-privée passe forcément par la case <em>« bidouilles intenses à la sueur de votre front, ne passez pas par la case départ et ne sauvez pas 20000 heures de votre temps libre »</em>. Il y a un côté ironiquement frustrant, à avoir suffisamment de compétences pour comprendre l’étendue du problème sans pour autant être en capacité de le résoudre.</p>
  86. <p>Prenons l’exemple <a href="https://evernote.com/intl/fr/">Evernote</a>. Je me suis servie de ses services durant des années pour collecter et organiser tout type d’information : de mes recettes préférées à des idées d’articles en passant par l’organisation de mes voyages et les codes d’accès à mon centre des impôts. Peu à l’aise avec <a href="https://www.reddit.com/r/Evernote/comments/6itd9c/what_do_you_store_in_evernote_and_do_you_trust/djapgia/">leur changement de position constant sur la confidentialité de mes données</a>, j’ai recherché une alternative qui me rendrait plus confortable sans pour autant sacrifier les fonctionnalités dont j’ai besoin.</p>
  87. <figure><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="https://www.hypothermia.fr/media/2020/08/pannitas_dashboard-scaled.jpg" alt="" class="alignnone size-full wp-image-16003" data-srcset="https://www.hypothermia.fr/media/2020/08/pannitas_dashboard-scaled.jpg 2560w, https://www.hypothermia.fr/media/2020/08/pannitas_dashboard-1024x652.jpg 1024w, https://www.hypothermia.fr/media/2020/08/pannitas_dashboard-768x489.jpg 768w, https://www.hypothermia.fr/media/2020/08/pannitas_dashboard-1536x978.jpg 1536w, https://www.hypothermia.fr/media/2020/08/pannitas_dashboard-2048x1304.jpg 2048w" sizes="(max-width: 2560px) 100vw, 2560px"/><noscript><img src="https://www.hypothermia.fr/media/2020/08/pannitas_dashboard-scaled.jpg" alt="" class="alignnone size-full wp-image-16003" srcset="https://www.hypothermia.fr/media/2020/08/pannitas_dashboard-scaled.jpg 2560w, https://www.hypothermia.fr/media/2020/08/pannitas_dashboard-1024x652.jpg 1024w, https://www.hypothermia.fr/media/2020/08/pannitas_dashboard-768x489.jpg 768w, https://www.hypothermia.fr/media/2020/08/pannitas_dashboard-1536x978.jpg 1536w, https://www.hypothermia.fr/media/2020/08/pannitas_dashboard-2048x1304.jpg 2048w" sizes="(max-width: 2560px) 100vw, 2560px"/></noscript></figure>
  88. <p class="legend">Notion, porteur de flambeau du bullet journal en ligne. <a href="https://korpannita.wordpress.com/2019/03/25/notion-vs-evernote/">Source : Notion VS Evernote, Pannita’s toy box</a></p>
  89. <p><a href="https://www.notion.so/">Notion</a> a actuellement le vent en poupe et correspond parfaitement à mes critères : applications sur toutes les plateformes et interface web, personnalisation pointue, interface sexy, grande flexibilité, et en prime depuis peu la gratuité pour les utilisateurs particuliers… Ce qui devrait mettre la puce à l’oreille. En effet. En farfouillant un peu, je constate qu’il est <a href="https://www.reddit.com/r/Notion/comments/eqvrz0/end_to_end_encryption_is_must/">impossible de chiffrer les information qu’on y stocke</a>. Ce qui veut dire que les serveurs de Notion contiennent de façon claire tous les éléments que vous y publiez, lisibles de ce fait par quiconque y a accès (ou quiconque à qui Notion les partage…) La preuve ? Le service de hotline peut consulter toutes vos données – mais ne vous inquiétez pas, <a href="https://www.reddit.com/r/Notion/comments/egai5n/do_you_trust_notion_with_your_sensitive_data/">ils vous demanderont s’il-te-plaît au préalable</a>.</p>
  90. <p><audio class="wp-audio-shortcode" id="audio-15988-1" preload="none" controls="controls"><source type="audio/mpeg" src="https://www.hypothermia.fr/media/2020/08/KOMPROMAT-Possession.mp3?_=1"/><a href="https://www.hypothermia.fr/media/2020/08/KOMPROMAT-Possession.mp3">https://www.hypothermia.fr/media/2020/08/KOMPROMAT-Possession.mp3</a></audio><p class="legend">KOMPROMAT – Possession</p><p>C’est d’une logique économique évidente, qu’un service gratuit cherche à se rémunérer par d’autres fins, en exploitant les données de ses clients par exemple. Pour éviter ce problème j’étais prête à souscrire à un service payant répondant à mes critères en matière de confidentialité – je n’ai hélas pas trouvé chaussure à mon pied. J’ai trouvé <a href="https://standardnotes.org/">Standard Notes</a> qui derrière une présentation alléchante a un goût de bâclé très limité (quelle galère pour juste insérer une image !) Ou bien j’ai failli m’abonner à <a href="https://crypt.ee/">crypt.ee</a> tant la démarche de ses développeurs et le goût du détail m’ont plu. Hélas après quelques utilisations, la sécurité poussée à l’extrême en rendait l’utilisation trop lente pour répondre à mes besoins (rentrer la clef de déchiffrage à chaque fois que je souhaitais prendre une note rapide me devenait bien trop pénible).</p>
  91. <figure><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="https://www.hypothermia.fr/media/2020/08/cryptee.jpg" alt="" class="alignnone size-full wp-image-16004" data-srcset="https://www.hypothermia.fr/media/2020/08/cryptee.jpg 1200w, https://www.hypothermia.fr/media/2020/08/cryptee-1024x576.jpg 1024w, https://www.hypothermia.fr/media/2020/08/cryptee-768x432.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px"/><noscript><img src="https://www.hypothermia.fr/media/2020/08/cryptee.jpg" alt="" class="alignnone size-full wp-image-16004" srcset="https://www.hypothermia.fr/media/2020/08/cryptee.jpg 1200w, https://www.hypothermia.fr/media/2020/08/cryptee-1024x576.jpg 1024w, https://www.hypothermia.fr/media/2020/08/cryptee-768x432.jpg 768w" sizes="(max-width: 1200px) 100vw, 1200px"/></noscript></figure><p>J’en suis donc restée à <a href="https://joplinapp.org/">Joplin</a>, solution open source pas très jolie et sans interface web mais qui remplit mes critères fonctionnels, me permet de tout stocker « chez moi » et de chiffrer les informations que j’y recueille, les rendant lisibles par moi seule. J’ai essayé toute une soirée de faire fonctionner <a href="https://github.com/foxmask/joplin-web">Joplin web</a> pour me garantir un accès à distance depuis n’importe quel terminal, en vain ; on ne peut décidément pas tout avoir.</p><p>K m’a demandé si ce n’était pas mon cahier des charges qui était bien trop exigeant pour des solutions que développent des Jean-Michels libristes durant leurs nuits d’insomnies. Pourtant je suis prête à soutenir une structure professionnelle et des développements plus conséquents en souscrivant à un abonnement. Payé avec de l’argent, mais pas avec mes informations personnelles. Ce qui semble hélas encore utopique à l’heure actuelle. Je ne peux m’empêcher de me dire que si aussi peu de solutions payantes respectueuses de la vie privée existent, c’est bien que l’exploitation des données utilisateurs est beaucoup plus rentable.</p><p><em>« C’est bien d’avoir des principes, surtout que toi tu t’y tiens »</em> me soutenait K en essayant de me remonter le moral. Le prix que j’y paie, ce sont ces centaines d’heures de mon temps libre passées devant l’écran à bidouiller des solutions jusqu’à atteindre un compromis qui me satisfait. Une fois que j’aurai mis au point mon système maison, le blog sera le prochain à passer sous le bistouri. Je ne suis pas prête à abandonner mes critères en termes de fonctionnalité, d’esthétique et de confidentialité. Alors je n’ai pas d’autre choix que de me retrousser les manches, et de ressortir mon rouleau de scotch.</p>
  92. <figure><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="https://www.hypothermia.fr/media/2020/08/no_idea.jpg" alt="" class="alignnone size-full wp-image-15990" data-srcset="https://www.hypothermia.fr/media/2020/08/no_idea.jpg 1200w, https://www.hypothermia.fr/media/2020/08/no_idea-1024x683.jpg 1024w, https://www.hypothermia.fr/media/2020/08/no_idea-768x512.jpg 768w, https://www.hypothermia.fr/media/2020/08/no_idea-480x320.jpg 480w" sizes="(max-width: 1200px) 100vw, 1200px"/><noscript><img src="https://www.hypothermia.fr/media/2020/08/no_idea.jpg" alt="" class="alignnone size-full wp-image-15990" srcset="https://www.hypothermia.fr/media/2020/08/no_idea.jpg 1200w, https://www.hypothermia.fr/media/2020/08/no_idea-1024x683.jpg 1024w, https://www.hypothermia.fr/media/2020/08/no_idea-768x512.jpg 768w, https://www.hypothermia.fr/media/2020/08/no_idea-480x320.jpg 480w" sizes="(max-width: 1200px) 100vw, 1200px"/></noscript></figure></p>
  93. </main>
  94. </article>
  95. <hr>
  96. <footer>
  97. <p>
  98. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  99. <a href="/david/log/" title="Accès au flux RSS">🤖</a> •
  100. <a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
  101. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
  102. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
  103. </p>
  104. <template id="theme-selector">
  105. <form>
  106. <fieldset>
  107. <legend>Thème</legend>
  108. <label>
  109. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  110. </label>
  111. <label>
  112. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  113. </label>
  114. <label>
  115. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  116. </label>
  117. </fieldset>
  118. </form>
  119. </template>
  120. </footer>
  121. <script type="text/javascript">
  122. function loadThemeForm(templateName) {
  123. const themeSelectorTemplate = document.querySelector(templateName)
  124. const form = themeSelectorTemplate.content.firstElementChild
  125. themeSelectorTemplate.replaceWith(form)
  126. form.addEventListener('change', (e) => {
  127. const chosenColorScheme = e.target.value
  128. localStorage.setItem('theme', chosenColorScheme)
  129. toggleTheme(chosenColorScheme)
  130. })
  131. const selectedTheme = localStorage.getItem('theme')
  132. if (selectedTheme && selectedTheme !== 'undefined') {
  133. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  134. }
  135. }
  136. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  137. window.addEventListener('load', () => {
  138. let hasDarkRules = false
  139. for (const styleSheet of Array.from(document.styleSheets)) {
  140. let mediaRules = []
  141. for (const cssRule of styleSheet.cssRules) {
  142. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  143. continue
  144. }
  145. // WARNING: Safari does not have/supports `conditionText`.
  146. if (cssRule.conditionText) {
  147. if (cssRule.conditionText !== prefersColorSchemeDark) {
  148. continue
  149. }
  150. } else {
  151. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  152. continue
  153. }
  154. }
  155. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  156. }
  157. // WARNING: do not try to insert a Rule to a styleSheet you are
  158. // currently iterating on, otherwise the browser will be stuck
  159. // in a infinite loop…
  160. for (const mediaRule of mediaRules) {
  161. styleSheet.insertRule(mediaRule.cssText)
  162. hasDarkRules = true
  163. }
  164. }
  165. if (hasDarkRules) {
  166. loadThemeForm('#theme-selector')
  167. }
  168. })
  169. </script>
  170. </body>
  171. </html>