Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

index.html 24KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411
  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` element
  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>
  13. Tag #confidentialité
  14. — David Larlet</title>
  15. <meta name="description" content="Publications relatives au tag #confidentialité">
  16. <!-- That good ol' feed, subscribe :). -->
  17. <link rel="alternate"
  18. type="application/atom+xml"
  19. title="Feed"
  20. href="/david/log/">
  21. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  22. <link rel="apple-touch-icon"
  23. sizes="180x180"
  24. href="/static/david/icons2/apple-touch-icon.png">
  25. <link rel="icon"
  26. type="image/png"
  27. sizes="32x32"
  28. href="/static/david/icons2/favicon-32x32.png">
  29. <link rel="icon"
  30. type="image/png"
  31. sizes="16x16"
  32. href="/static/david/icons2/favicon-16x16.png">
  33. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  34. <link rel="mask-icon"
  35. href="/static/david/icons2/safari-pinned-tab.svg"
  36. color="#07486c">
  37. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  38. <meta name="msapplication-TileColor" content="#f7f7f7">
  39. <meta name="msapplication-config"
  40. content="/static/david/icons2/browserconfig.xml">
  41. <meta name="theme-color"
  42. content="#f7f7f7"
  43. media="(prefers-color-scheme: light)">
  44. <meta name="theme-color"
  45. content="#272727"
  46. media="(prefers-color-scheme: dark)">
  47. <!-- Is that even respected? Retrospectively? What a shAItshow…
  48. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  49. <meta name="robots" content="noai, noimageai">
  50. <!-- Documented, feel free to shoot an email. -->
  51. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  52. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  53. <link rel="preload"
  54. href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2"
  55. as="font"
  56. type="font/woff2"
  57. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  58. crossorigin>
  59. <link rel="preload"
  60. href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2"
  61. as="font"
  62. type="font/woff2"
  63. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  64. crossorigin>
  65. <link rel="preload"
  66. href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2"
  67. as="font"
  68. type="font/woff2"
  69. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  70. crossorigin>
  71. <link rel="preload"
  72. href="/static/david/css/fonts/triplicate_t3_regular.woff2"
  73. as="font"
  74. type="font/woff2"
  75. media="(prefers-color-scheme: dark)"
  76. crossorigin>
  77. <link rel="preload"
  78. href="/static/david/css/fonts/triplicate_t3_bold.woff2"
  79. as="font"
  80. type="font/woff2"
  81. media="(prefers-color-scheme: dark)"
  82. crossorigin>
  83. <link rel="preload"
  84. href="/static/david/css/fonts/triplicate_t3_italic.woff2"
  85. as="font"
  86. type="font/woff2"
  87. media="(prefers-color-scheme: dark)"
  88. crossorigin>
  89. <script>
  90. function toggleTheme(themeName) {
  91. document.documentElement.classList.toggle(
  92. 'forced-dark',
  93. themeName === 'dark'
  94. )
  95. document.documentElement.classList.toggle(
  96. 'forced-light',
  97. themeName === 'light'
  98. )
  99. }
  100. const selectedTheme = localStorage.getItem('theme')
  101. if (selectedTheme !== 'undefined') {
  102. toggleTheme(selectedTheme)
  103. }
  104. </script>
  105. <style type="text/css">
  106. details[open] summary {
  107. display: none;
  108. }
  109. </style>
  110. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick"
  111. data-instant-intensity="viewport-all">
  112. <header>
  113. <h1>Publications relatives au tag #confidentialité</h1>
  114. </header>
  115. <nav>
  116. <p class="center">
  117. <a href="/david/" title="Aller à l’accueil">
  118. <svg class="icon icon-home">
  119. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  120. </svg>
  121. Accueil</a>
  122. • <a rel="tags"
  123. href="/david/#tags-2023"
  124. title="Liste de toutes les étiquettes">
  125. <svg class="icon icon-tags">
  126. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-tags"></use>
  127. </svg>
  128. Étiquettes</a>
  129. </p>
  130. </nav>
  131. <hr>
  132. <main>
  133. <p>Les plus récentes en premier, les 3 premières sont dépliées et ensuite c’est à la demande, bonne exploration !</p>
  134. <h2>
  135. <a href="/david/2023/09/08/" title="Lien permanent vers cet article">Char&nbsp;2</a> (2023-09-08)
  136. </h2>
  137. <blockquote>
  138. <p>Je voulais le <a href="/david/2020/02/07/#cars">moins d’électronique</a> possible et plutôt prendre un vieux véhicule robuste qui me permette de sortir d’un banc de neige et peut-être à terme de la&nbsp;ville.</p>
  139. <p><cite><em><a href="/david/2021/07/16/">Char</a></em></cite></p>
  140. </blockquote>
  141. <p>Suite des mes aventures avec une <a href="http://tmp.larlet.fr/ccmc/">comptabilité à jour</a> depuis bientôt 3&nbsp;ans. Divulgâcheur&nbsp;: ça coûte très&nbsp;cher.</p>
  142. <p>Le résultat n’est pas joli-joli avec environ vingt mille kilomètres au compteur sur la période. Je n’ai pas non plus réussi à descendre en-dessous des 12L/100km avec ce véhicule qui n’a pas été pensé pour être économe et qui alimente les 4&nbsp;roues en permanence… MAIS je crois que si c’était à refaire, je choisirais un <em>véhicule stupide</em> à&nbsp;nouveau.</p>
  143. <blockquote lang="en">
  144. <p>Car companies are on the forefront of postcapitalism, and <mark>they understand that digital is the key to rent-extraction.</mark> Remember when BMW announced that it was going to rent you the seatwarmer in your own fucking&nbsp;car?</p>
  145. <p>[…]</p>
  146. <p>This is the urinary tract infection business model: without digitization, all your car’s value flowed in a healthy stream. But once the car-makers add semiconductors, each one of those features comes out in a painful, burning dribble, with every button on that farkakta touchscreen wired directly into your&nbsp;credit-card.</p>
  147. <p><cite><em><a href="https://pluralistic.net/2023/07/24/rent-to-pwn/">Pluralistic: Autoenshittification (24&nbsp;July 2023)</a></em>&nbsp;(<a href="/david/cache/2023/8be5d8a651e8f8e211cfe10fd49bb3f0/">cache</a>)</cite></p>
  148. </blockquote>
  149. <p>Je pourrais citer tellement de passages de cet article de Cory Doctorow qui confirment ce choix que ça en est édifiant. Et si vous pensez que certaines marques ne font quand même pas n’importe quoi avec vos données, Mozilla se charge — chiffres à l’appui&nbsp;— de démentir cette&nbsp;idée&nbsp;:</p>
  150. <blockquote lang="en">
  151. <p>The gist is: they can collect super intimate information about you -- from your medical information, your genetic information, to your “sex life” (seriously), to how fast you drive, where you drive, and what songs you play in your car -- in huge quantities. They then use it to invent more data about you through “inferences” about things like your intelligence, abilities, and&nbsp;interests.</p>
  152. <p>[…]</p>
  153. <p>It’s bad enough for the behemoth corporations that own the car brands to have all that personal information in their possession, to use for their own research, marketing, or the ultra-vague “business purposes.” But then, most (84%) of the car brands we researched say they can share your personal data -- with service providers, data brokers, and other businesses we know little or nothing about. Worse, <mark>nineteen (76%) say they can sell your personal&nbsp;data.</mark></p>
  154. <p>A surprising number (56%) also say they can share your information with the government or law enforcement in response to a “request.” Not a high bar court order, but something as easy as an “informal request.” Yikes -- that’s a very low&nbsp;bar!</p>
  155. <p><cite><em><a href="https://foundation.mozilla.org/en/privacynotincluded/articles/its-official-cars-are-the-worst-product-category-we-have-ever-reviewed-for-privacy/">It’s Official: Cars Are the Worst Product Category We Have Ever Reviewed for Privacy</a></em>&nbsp;(<a href="/david/cache/2023/81eb35bbd276cb28230820176152af87/">cache</a>)</cite></p>
  156. </blockquote>
  157. <p>Progressivement, j’en apprends un peu plus sur la mécanique d’une vieille voiture thermique et je crois que c’est ma seule option. Elle n’est peut-être pas payante mais elle me garantit une certaine <em>confidensanité</em>.</p>
  158. <blockquote lang="en">
  159. <p>Welcome to the future. <mark>Sabotage&nbsp;it.</mark></p>
  160. <p><cite><a href="https://thenib.com/im-a-luddite/">I’m a Luddite (and So Can&nbsp;You!)</a></cite></p>
  161. </blockquote>
  162. <hr />
  163. <blockquote lang="en">
  164. <p>😶 You can’t talk about all the friends and family you’ve lost. You can’t talk about how tired you are. You can’t talk about politics. You can’t talk about climate change. You can’t talk about the wildfires or that town that burned down. You can’t talk about living through the hottest days in human history. You can’t talk about masks or air purifiers. You can’t talk about student loans. You can’t talk about the wars we’re fighting or getting ready to&nbsp;fight.</p>
  165. <p><mark>You can’t talk about anything that&nbsp;matters.</mark></p>
  166. <p>You can only talk about the latest shitty superhero movie. You can talk about Barbie. You can talk about celebrity gossip. You can talk about the vacation you pretended to enjoy. You can talk about&nbsp;yoga.</p>
  167. <p>You can talk about your morning&nbsp;routine.</p>
  168. <p>You can talk about&nbsp;sports.</p>
  169. <p><cite><em><a href="https://www.okdoomer.io/watching-the-world-burn-on-our-phones/">Watching The World Burn on Our Phones</a></em>&nbsp;(<a href="/david/cache/2023/977dc3c51f364f41db786f881d2c3fd2/">cache</a>)</cite></p>
  170. </blockquote>
  171. <blockquote lang="en">
  172. <p>😁 I’m not young enough to know&nbsp;everything.</p>
  173. <p><cite><em><a href="https://blog.jim-nielsen.com/2023/family-tree-wisdom/">Family Tree Wisdom</a></em>&nbsp;(<a href="/david/cache/2023/d40295a6495f934934436470ad425cac/">cache</a>)</cite></p>
  174. </blockquote>
  175. <h2>
  176. <a href="/david/2023/02/08/" title="Lien permanent vers cet article">TextcAIst</a> (2023-02-08)
  177. </h2>
  178. <blockquote lang="en">
  179. <p>Still… this is amazing. If I have learned anything from this journey, it’s that the ability to generate high-quality, <mark>readable transcripts from podcast audio is going to be here soon.</mark> It’s not quite here yet—Whisper has quirks that make it better for searchable transcripts than actual reading, and it doesn’t identify speakers—but it’s perilously close&nbsp;now.</p>
  180. <p><cite><em><a href="https://sixcolors.com/post/2023/02/automating-podcast-transcripts-on-my-mac-with-openai-whisper/">Automating podcast transcripts on my Mac with OpenAI Whisper</a></em>&nbsp;(<a href="/david/cache/2023/eebbf1a999fdf5c8aa80b65eccd9c48a/">cache</a>)</cite></p>
  181. </blockquote>
  182. <p>Suite des <a href="/david/2021/01/18/">mes recherches</a> pour pallier mon manque d’attention uniquement auditive (qui me prive des <em>podcasts</em>/balados). Je n’avais pas du tout exploré ni même envisagé la piste de l’Intelligence Artificielle mais c’est peut-être prometteur pour un affinage en post-traitement vu que ça a le vent en&nbsp;poupe&#8239;!</p>
  183. <p>En allant plus loin, ça pourrait potentiellement même m’en faire un&nbsp;résumé…</p>
  184. <hr />
  185. <blockquote lang="en">
  186. <p>🎥 Alongside Cameron’s recent comments, discussions on representation and “blue face” controversies have resurfaced. “Blue face” is the practice of taking creative liberties to hybridize various indigenous groups and make their own race then have non-Indigenous actors play them. <mark>Various groups across the globe have called for a boycott of the new film.</mark> At the very least, it makes sense to draw attention to the excellent films actually produced and created by Indigenous&nbsp;people.</p>
  187. <p><cite><em><a href="https://www.cbr.com/better-movies-than-camerons-avatar-2-inigenous-creators/">10&nbsp;Films By Indigenous Filmmakers To Watch Instead Of Avatar: The Way Of Water</a></em>&nbsp;(<a href="/david/cache/2023/98a93dedbf2eb7665680ec6b1bb31e8c/">cache</a>)</cite></p>
  188. </blockquote>
  189. <blockquote>
  190. <p>🌱 En restant sur un thème de rythme de la nature, et du fait que <mark>ce rythme ne s’applique pas au web,</mark> j’ai eu envie d’insérer un autre témoin du temps qui passe. Là, il ne sera pas lié à mon entretien de cet espace web mais plutôt au jour de&nbsp;l’année.</p>
  191. <p><cite><em><a href="https://blog.professeurjoachim.com/billet/2023-01-05-exercices-de-feuille-de-styles">Exercices (de feuille) de styles</a></em>&nbsp;(<a href="/david/cache/2023/c45d25b1d1062fcf10fbf7caaf9e21b1/">cache</a>)</cite></p>
  192. </blockquote>
  193. <blockquote>
  194. <p>🔋 Quand ils ont fait les barrages, ils ne nous ont pas écoutés, quand ils ont fait des coupes forestières au point de faire fuir l’orignal et le caribou dans certaines régions, ils ne nous ont pas écoutés, <mark>et maintenant, ils veulent extraire du lithium</mark> et d’autres&nbsp;métaux</p>
  195. <p><cite><em><a href="https://www.ledevoir.com/societe/780738/lithium-et-mineraux-critiques-lithium-et-mineraux-critiques-le-combat-d-une-mere-crie-de-8-enfants">Lithium et minéraux critiques&nbsp;: le combat d’une mère crie de huit enfants</a></em>&nbsp;(<a href="/david/cache/2023/a0d209f5273c7d9f984f78773fa089f2/">cache</a>)</cite></p>
  196. </blockquote>
  197. <h2>
  198. <a href="/david/2023/01/08/" title="Lien permanent vers cet article">Partage</a> (2023-01-08)
  199. </h2>
  200. <p><a href="https://maiadereva.net/">Maïa</a> me pose la question suite à une discussion Mastodon autour de <a href="/david/2023/01/04/" title="Rétrospectives">Rétrospectives</a>&nbsp;:</p>
  201. <blockquote>
  202. <p>Je me suis d’ailleurs demandé comment tu faisais la distinction entre ce que tu documentes et ce que tu ne documentes pas… Vu que tu dis que ça a un impact sur comment tu te comportes, tu acceptes donc cet impact pour certains&nbsp;domaines&#8239;?</p>
  203. </blockquote>
  204. <p>Je partage beaucoup de choses en ligne, des réflexions, des émotions, des créations, des explorations, etc. Ma limite se définit généralement selon plusieurs&nbsp;critères&nbsp;:</p>
  205. <ul>
  206. <li>si je suis avec des personnes, je ne partage pas forcément leur présence et encore moins leur photo (à part évènement public avec représentation, et encore), ça s’applique très souvent à la&nbsp;famille&#8239;;</li>
  207. <li>si je parle d’un endroit, la géolocalisation reste assez floue intentionnellement (je suis passé par ce lac tel jour par exemple, pas&nbsp;plus)&#8239;;</li>
  208. <li>si j’utilise un outil, il faut qu’il soit possible d’en garder les traces en privé et que ce soit explicite d’en rendre possible l’accès si à un moment je change&nbsp;d’avis.</li>
  209. </ul>
  210. <p>Il y a certainement eu des exceptions depuis que je publie des choses et ces critères ont pu évoluer au cours du temps aussi. Je suis content d’avoir pris le temps d’y répondre par ici pour pouvoir revenir dessus dans quelques années/décennies et comparer cette frontière floue à&nbsp;t+1.</p>
  211. <p><em>Note&nbsp;: c’est un peu pour ça aussi que j’ai arrêté de faire des <a href="https://media.larlet.fr/2021--videos-01.html">vidéos</a>, la mise en scène allait au-delà de ce qui était acceptable pour que je ne sois pas en outrospection&nbsp;constante.</em></p>
  212. <hr />
  213. <blockquote lang="en">
  214. <p>🤗 Writing takes time. Writing well takes a lot of time. On the other hand, the output of writing is almost always more clarity, and sometimes a clear decision. Over my career, I think I’ve wasted at least ten times more time going around and around in conversations without finding consensus than I have writing documents that didn’t turn out to be valuable. It’s very seldom that I think back over writing something and conclude that it wasn’t a good investment of my time. That can happen, and you have to watch for it, but it doesn’t happen to me a&nbsp;lot.</p>
  215. <p><cite><em><a href="https://brooker.co.za/blog/2022/11/08/writing.html">Writing Is Magic</a></em>&nbsp;(<a href="/david/cache/2023/36a8b8a87633796d41c2574720812594/">cache</a>)</cite></p>
  216. </blockquote>
  217. <h2>
  218. <a href="/david/2023/01/04/" title="Lien permanent vers cet article">Rétrospectives</a> (2023-01-04)
  219. </h2>
  220. <details>
  221. <summary>Déplier pour lire le contenu de la publication</summary>
  222. <blockquote>
  223. <p>J’ai mauvaise conscience. Aujourd’hui, j’ai gagné de l’argent en récompense d’une activité inutile. J’ai monopolisé l’attention et l’admiration d’enfants et d’adultes pour n’avoir fait rien d’autre que mettre un pied devant l’autre un peu plus vite qu’ils ne le&nbsp;font.</p>
  224. <p>Individuellement, je suis en accord avec moi-même sur le fait que courir m’a tout donné. En revanche, si j’y réfléchis en me replaçant dans le tissu de la société, je reconnais la stérilité de cette&nbsp;occupation.</p>
  225. <p><cite><em>Au-delà des sommets</em>, Kilian&nbsp;Jornet</cite></p>
  226. </blockquote>
  227. <p>À chaque fois que je lis des rétrospectives sportives sur l’année, je me rends compte que ça serait quand même flippant que tant de personnes aient accès à mes moindres ballades, mes sautes de cœur, mes humeurs du jour, mes parcours préférés, etc.</p>
  228. <p>Sociologiquement, qu’est ce que ça signifie d’avoir besoin de consigner chacun de ses pas&#8239;? Les rares fois où j’ai fait usage d’un outil de suivi lors de mes activités, cela a modifié ma façon d’évoluer et donc d’être. Peut-être que j’ai davantage besoin d’intimité que d’accompagnement dans ces moments là&#8239;? Est-ce que l’aventure c’est réussir à sortir de la <em>heatmap</em>&nbsp;locale&#8239;?!</p>
  229. <p>Mon cyclomètre est non connecté, j’ai essayé de trouver l’outil le plus stupide qui soit pour consigner tout de même une distance totale. Pareil pour <a href="/david/2021/07/16/">mon char</a>. Jusqu’à ce que la déconnexion devienne trop louche socialement pour pouvoir continuer à me sentir&nbsp;libre.</p>
  230. <p>Ces données portent tellement bien leur nom. Et surtout la&nbsp;santé&#8239;!</p>
  231. <hr />
  232. <blockquote lang="en">
  233. <p>😬 This is the crux of the Yard-sale model. In a free market, one person ends up with all of the wealth – <mark>completely by&nbsp;chance.</mark></p>
  234. <p>This is completely&nbsp;counterintuitive.</p>
  235. <p><cite><em><a href="https://pudding.cool/2022/12/yard-sale/">Why the super rich are inevitable</a></em>&nbsp;(<a href="/david/cache/2023/669f9d9d8f0c6cfb8131887c17eecfa9/">cache</a>)</cite></p>
  236. </blockquote>
  237. <blockquote lang="en">
  238. <p>👀 For more than 20&nbsp;years, we’ve known that teams spending time watching users, can see improvements. Yet we still see many teams with regular user research programs that produce complicated, unusable products. We couldn’t understand why, until&nbsp;now.</p>
  239. <p><mark>Each team member has to be exposed directly to the users&nbsp;themselves.</mark></p>
  240. <p><cite><em><a href="https://articles.uie.com/user_exposure_hours/">Fast Path to a Great UX - Increased Exposure Hours</a></em>&nbsp;(<a href="/david/cache/2023/4c5b3193ced812222ef1a6d53e3470aa/">cache</a>)</cite></p>
  241. </blockquote>
  242. </details>
  243. </main>
  244. <hr>
  245. <footer>
  246. <p>
  247. <nobr>
  248. <a href="/david/" title="Aller à l’accueil">
  249. <svg class="icon icon-home">
  250. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-home"></use>
  251. </svg>
  252. Accueil</a>
  253. </nobr>
  254. <nobr>
  255. <a href="/david/log/" title="Accès au flux RSS">
  256. <svg class="icon icon-rss2">
  257. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-rss2"></use>
  258. </svg>
  259. Suivre</a>
  260. </nobr>
  261. <nobr>
  262. <a href="http://larlet.com"
  263. title="Go to my English profile"
  264. data-instant>
  265. <svg class="icon icon-user-tie">
  266. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-user-tie"></use>
  267. </svg>
  268. Pro</a>
  269. </nobr>
  270. <nobr>
  271. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">
  272. <svg class="icon icon-mail">
  273. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-mail"></use>
  274. </svg>
  275. Email</a>
  276. </nobr>
  277. <nobr>
  278. <abbr class="nowrap"
  279. title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">
  280. <svg class="icon icon-hammer2">
  281. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-hammer2"></use>
  282. </svg>
  283. Légal</abbr>
  284. </nobr>
  285. </p>
  286. <template id="theme-selector">
  287. <form>
  288. <fieldset>
  289. <legend>
  290. <svg class="icon icon-brightness-contrast">
  291. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-brightness-contrast"></use>
  292. </svg>
  293. Thème
  294. </legend>
  295. <label>
  296. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  297. Auto
  298. </label>
  299. <label>
  300. <input type="radio" value="dark" name="chosen-color-scheme">
  301. Foncé
  302. </label>
  303. <label>
  304. <input type="radio" value="light" name="chosen-color-scheme">
  305. Clair
  306. </label>
  307. </fieldset>
  308. </form>
  309. </template>
  310. </footer>
  311. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  312. <script>
  313. function loadThemeForm(templateName) {
  314. const themeSelectorTemplate = document.querySelector(templateName)
  315. const form = themeSelectorTemplate.content.firstElementChild
  316. themeSelectorTemplate.replaceWith(form)
  317. form.addEventListener('change', (e) => {
  318. const chosenColorScheme = e.target.value
  319. localStorage.setItem('theme', chosenColorScheme)
  320. toggleTheme(chosenColorScheme)
  321. })
  322. const selectedTheme = localStorage.getItem('theme')
  323. if (selectedTheme && selectedTheme !== 'undefined') {
  324. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  325. }
  326. }
  327. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  328. window.addEventListener('load', () => {
  329. let hasDarkRules = false
  330. for (const styleSheet of Array.from(document.styleSheets)) {
  331. let mediaRules = []
  332. for (const cssRule of styleSheet.cssRules) {
  333. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  334. continue
  335. }
  336. // WARNING: Safari does not have/supports `conditionText`.
  337. if (cssRule.conditionText) {
  338. if (cssRule.conditionText !== prefersColorSchemeDark) {
  339. continue
  340. }
  341. } else {
  342. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  343. continue
  344. }
  345. }
  346. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  347. }
  348. // WARNING: do not try to insert a Rule to a styleSheet you are
  349. // currently iterating on, otherwise the browser will be stuck
  350. // in a infinite loop…
  351. for (const mediaRule of mediaRules) {
  352. styleSheet.insertRule(mediaRule.cssText)
  353. hasDarkRules = true
  354. }
  355. }
  356. if (hasDarkRules) {
  357. loadThemeForm('#theme-selector')
  358. }
  359. })
  360. </script>
  361. </body>
  362. </html>