Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

index.html 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  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>Tag #solastalgia — David Larlet</title>
  13. <meta name="description" content="Publications relatives au tag #solastalgia">
  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="#f7f7f7">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
  26. <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
  27. <!-- Documented, feel free to shoot an email. -->
  28. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  29. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  30. <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>
  31. <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>
  32. <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>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  36. <script>
  37. function toggleTheme(themeName) {
  38. document.documentElement.classList.toggle(
  39. 'forced-dark',
  40. themeName === 'dark'
  41. )
  42. document.documentElement.classList.toggle(
  43. 'forced-light',
  44. themeName === 'light'
  45. )
  46. }
  47. const selectedTheme = localStorage.getItem('theme')
  48. if (selectedTheme !== 'undefined') {
  49. toggleTheme(selectedTheme)
  50. }
  51. </script>
  52. <style type="text/css">
  53. details[open] summary {
  54. display: none;
  55. }
  56. </style>
  57. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  58. <header>
  59. <h1>Publications relatives au tag #solastalgia</h1>
  60. </header>
  61. <nav>
  62. <p class="center">
  63. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  64. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  65. </svg> Accueil</a>
  66. • <a rel="tags" href="/david/#tags-2023" title="Liste de toutes les étiquettes"><svg class="icon icon-tags">
  67. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-tags"></use>
  68. </svg> Étiquettes</a>
  69. </p>
  70. </nav>
  71. <hr>
  72. <main>
  73. <p>Les plus récentes en premier, les 3 premières sont dépliées et ensuite c’est à la demande, bonne exploration !</p>
  74. <h2><a href="/david/2023/06/26/" title="Lien permanent vers cet article">Particules</a> (2023-06-26)</h2>
  75. <blockquote>
  76. <p>La mémoire est la source de la libération, et l’oubli est la racine de&nbsp;l’exil.</p>
  77. <p><cite>Ba’al&nbsp;Shem-Tov</cite></p>
  78. </blockquote>
  79. <p>On attend que les particules fines retombent pour pouvoir décoller. Si ça n’est pas un grand écart <em>facepalm</em>&nbsp;ça…</p>
  80. <hr />
  81. <p>Pas vraiment d’<a href="/david/2021/06/15/">avihonte</a> chez les ami·es (expatrié·es). J’évite de trop y penser, je vis déjà assez reclus comme ça. Et je suis loin d’être&nbsp;exemplaire.</p>
  82. <hr />
  83. <p>Il y a un besoin urgent à ce que je devienne ringard. Comme la cigarette, la voiture, l’avion. Un sous-groupe de ma génération doit incarner ce qu’il ne faut <strong>pas</strong>&nbsp;devenir.</p>
  84. <hr />
  85. <p>Les Sardaukars ont en eu marre de se battre contre des Fremens et sont retournés sur Geidi Prime pour le dire. Denis Villeneuve doit se frotter les&nbsp;mains.</p>
  86. <hr />
  87. <p>J’ai lu le Paradoxe de Fermi de Jean-Pierre Boudine ainsi que <a href="https://www.visualcapitalist.com/path-of-human-evolution/">cette illustration</a>&nbsp;(<a href="/david/cache/2023/58bdc0bd6ed37d5990d24384ee40022b/">cache</a>), serait-on sur la dernière marche&#8239;? Celle du grand&nbsp;sot.</p>
  88. <hr />
  89. <p>Combien d’appareils pourraient être rendus meilleurs en enlevant des choses dedans&#8239;? Tous&#8239;? <a href="http://mikebeauchamp.com/misc/sennheiser-hd-555-to-hd-595-mod/">Au moins un.</a>&nbsp;(<a href="/david/cache/2023/8f76362de8331d4dc5d3e0e0a882606e/">cache</a>)</p>
  90. <hr />
  91. <p>J’ai failli acheter une casquette sur laquelle était&nbsp;inscrite&nbsp;:</p>
  92. <blockquote>
  93. <p>Ce qui distingue les garçons des hommes c’est le prix de leurs jouets. (Oui, ça sonnait mieux en&nbsp;anglais…)</p>
  94. </blockquote>
  95. <p>Depuis, je ris&nbsp;jaune.</p>
  96. <hr />
  97. <p>Je me suis mis au skate pour pouvoir suivre l’enfant. Je me demande à quel point le <em>longboard</em> est un skate bourgeois. Je retrouve des sensations de <em>snowboard</em> intéressantes cela&nbsp;dit.</p>
  98. <hr />
  99. <p>Je suis content de ne pas avoir pris mon appareil photo pour cette dernière sortie en forêt. Documenter <a href="/david/2023/06/12/" title="Apocalypse">l’apocalypse</a> sans la rendre belle est un enjeu&nbsp;important.</p>
  100. <figure>
  101. <a href="/static/david/2023/2023-06-25-ouareau-smog.jpg"
  102. title="Cliquer pour une version haute résolution">
  103. <img
  104. src="/static/david/2023/2023-06-25-ouareau-smog.jpg"
  105. width="3024" height="4032"
  106. srcset="/static/david/2023/2023-06-25-ouareau-smog.jpg 3024w, /static/david/2023/2023-06-25-ouareau-smog_660x440.jpg 660w, /static/david/2023/2023-06-25-ouareau-smog_990x660.jpg 990w, /static/david/2023/2023-06-25-ouareau-smog_1320x880.jpg 1320w"
  107. sizes="min(100vw, calc(100vh * 3024 / 4032))"
  108. loading="lazy"
  109. decoding="async"
  110. alt="Un soleil rouge au-dessus de la forêt embrumée par des cendres à des centaines de kilomètres plus au nord.">
  111. </a>
  112. <figcaption>Ou&nbsp;ringard.</figcaption>
  113. </figure>
  114. <h2><a href="/david/2023/06/12/" title="Lien permanent vers cet article">Apocalypse</a> (2023-06-12)</h2>
  115. <blockquote>
  116. <p>Lorsque je reste assis ou marche dans la forêt, je ne suis pas un «&nbsp;sujet&nbsp;» en train d’observer des «&nbsp;objets&nbsp;». En entrant dans le mandala, je suis pris dans des réseaux de communication, des maillages de relations. Que j’en sois conscient ou non, je mets en branle ces réseaux en effarouchant un cerf, en faisant sursauter un tamia ou en marchant sur une feuille verte. Il n’est pas possible d’observer le milieu en en étant&nbsp;dissocié.</p>
  117. <p>Les réseaux exercent également une influence sur moi. Chaque inspiration introduit dans mon organisme des centaines de molécules en suspension dans l’air. Ces molécules constituent l’arôme des bois, la senteur combinée de milliers de créatures. Certains arômes sont si agréables à l’homme qu’il les a domestiqués pour en extraire des «&nbsp;parfums&nbsp;». Un de ces parfums au moins, le jasmonate, est un signal d’alarme chimique, qui avertit les autres plantes d’un danger. Peut-être notre esthétique olfactive reflète-t-elle un désir de participer à la lutte de la&nbsp;nature&#8239;?</p>
  118. <p>Mais les parfums sont l’exception. La plupart des molécules de la forêt court-circuitent mon odorat et se dissolvent directement dans mon sang, pénétrant dans mon corps et mon esprit sans que j’en aie conscience. Les effets de cette imprégnation chimique de notre organisme par les arômes végétaux ont été très peu étudiés. La science occidentale ne s’est pas abaissée à prendre au sérieux l’idée que la forêt, ou son absence, puisse faire partie de notre être. Pourtant les amoureux de la forêt savent très bien que les arbres influent sur notre état d’esprit. Les Japonais ont nommé cette connaissance et en ont fait une pratique, <em>shinrin-yoku</em>, «&nbsp;se baigner dans l’air de la forêt&nbsp;». Il semble que le fait de participer à la communauté d’information du mandala apporte un certain bien-être dans le cœur chimique de notre&nbsp;organisme.</p>
  119. <p><cite><em>Un an dans la vie d’une forêt</em>, David G. Haskell</cite></p>
  120. </blockquote>
  121. <p>La couleur du ciel de cette semaine est peut-être la nouvelle lueur du ciel en été&nbsp;: jaune, cendrée, atypique. Mortelle.</p>
  122. <p>J’ai déjà un filtre sur mon robinet (une partie de mes conduites sont en plomb, encore courant à Montréal), est-ce qu’il va bientôt me falloir un filtre à air pour pouvoir respirer sainement&#8239;? La sélection privilégio-capitaliste est en&nbsp;marche.</p>
  123. <p>Comment pleure-t-on (de rire&#8239;?) devant un film lorsqu’on porte un masque de ski&#8239;? Est-ce qu’un casque de <em>Spatial Computing</em> permettra de protéger ses yeux de la fumée&#8239;? Et si cela devenait la seule façon de voir un ciel bleu&#8239;? Peut-être que <a href="/david/blog/2016/si-cest-gratuit/">la symbiose</a> devra faire partie de nos conditions de survie dans la fournaise que nous&nbsp;créons.</p>
  124. <p>Nous n’avons plus le temps pour des outils numériques individualistes. Nous n’avons plus le temps. Pour <a href="https://fr.wikipedia.org/wiki/Notre_maison_br%C3%BBle_et_nous_regardons_ailleurs">paraphraser</a> un autre escroc&nbsp;présidentiel&nbsp;:</p>
  125. <blockquote>
  126. <p>Notre forêt brûle et nous mettons des&nbsp;masques.</p>
  127. </blockquote>
  128. <h2><a href="/david/2023/02/25/" title="Lien permanent vers cet article">Transmission</a> (2023-02-25)</h2>
  129. <blockquote lang="en">
  130. <p>So I would. I would grab a coffee, sit down, and start reading. Often we’d share posts back and forth, or chat about some of the more interesting ones we had read. It was something we did that was never on accident… <mark>it was intentional, deliberate.</mark> It was a way, I think, of investing in ourselves while also acknowledging how much we still could learn from&nbsp;others.</p>
  131. <p><cite><em><a href="https://timkadlec.com/remembers/2023-02-23-investing-in-rss/">Investing in RSS</a></em>&nbsp;(<a href="/david/cache/2023/19ec475bd5d92b02fbef043c52ea0589/">cache</a>)</cite></p>
  132. </blockquote>
  133. <p>Il y a ce réveil des blogs qui me rend silencieux, laisser la place d’une attention pour les autres. Et en même temps, ce sont plutôt des réveils que de nouvelles personnes. <strong>Je suis très disposé à me faire le relais de nouveaux blogs si vous en créez&nbsp;un.</strong></p>
  134. <p>Il y a la constatation récurrente que la <a href="https://fr.wikipedia.org/wiki/Loi_de_Conway">Loi de Conway</a> se vérifie dès que je travaille avec des structures à taille inhumaine. L’aliénation de l’humain aux processus est l’un des grands mystères de ce temps. L’expérience de ces hiérarchies me permet d’attendre d’être en communication avec LA personne compétente pour aller de&nbsp;l’avant.</p>
  135. <p>Il y a la transmission douloureuse, je me demande par exemple si sa génération sera la dernière à pouvoir faire du ski de fond dans les parcs montréalais. Au même titre qu’il a été l’un des derniers à pouvoir patiner sur le Lac aux Castors du Mont-Royal. Et encore, il était dans la&nbsp;poussette.</p>
  136. <p>Il y a cette rupture vraiment pas conventionnelle qui me questionne sur le fait qu’une transmission ultime puisse passer par la destruction pour voir ce qui est recréé ensuite, valider les acquis et les envies en quelque sorte. Tellement difficile de décortiquer certaines intentions sans raviver les&nbsp;tensions.</p>
  137. <hr />
  138. <blockquote>
  139. <p>🔄 Que se passe-t-il quand un LLM se nourrit en continu&#8239;&#8239;? Soit il se retrouve exposé à des <mark>contenus produits par d’autres LLM</mark>, soit il continue à être alimenté par des données hiérarchisées par des scrutins alimentés par des personnes qui, elles-mêmes, sont exposées à des contenus produits par un LLM.&nbsp;Quel impact cela pourrait-il avoir sur la qualité des&nbsp;contenus&#8239;&#8239;?</p>
  140. <p><cite><em><a href="https://boris.schapira.dev/notes/2023-02-des-questions/">Des questions · Boris Schapira</a></em>&nbsp;(<a href="/david/cache/2023/482252d2b8806e99bc30ffab2b2c51c9/">cache</a>)</cite></p>
  141. </blockquote>
  142. <blockquote lang="en">
  143. <p>🚜 Today’s cloud services have the look and feel of that tractor. They’re conceived by infrastructure people who care about efficient computation, fast networking, and cheap storage. The comfort and convenience of the developers who need to drive these services to build end-user facing applications has been an&nbsp;afterthought.</p>
  144. <p>Both the tractor and the cloud service of the past made sense: <mark>The majority of people who made the purchasing decisions didn’t operate them</mark>, and those who did had little influence. Why bother making them nice to&nbsp;operate?</p>
  145. <p><cite><em><a href="https://pydantic.dev/announcement/">Company Announcement | Pydantic</a></em>&nbsp;(<a href="/david/cache/2023/0f8bbba127c48a13b35fdf265c2dc106/">cache</a>)</cite></p>
  146. </blockquote>
  147. <blockquote lang="en">
  148. <p>🤸 It comes down to this annoying, upsetting, stupid fact: <mark>the only way to build a great product is to use it every day, to stare at it, to hold it in your hands to feel its lumps.</mark> The data and customers will lie to you but the product never will. And most product orgs suck because they simply don’t use the products that they’re building; they ship incremental nothings without direction because they’re looking at spreadsheets all day long filled with junk data&nbsp;nothings.</p>
  149. <p><cite><em><a href="https://www.robinrendle.com/notes/vibe-driven-development/">Vibe Driven Development</a></em>&nbsp;(<a href="/david/cache/2023/660b2a27b116787ac44e536e6c9dbcd3/">cache</a>)</cite></p>
  150. </blockquote>
  151. <blockquote lang="en">
  152. <p>🧑‍⚖️ Traditional open source is based on the flawed premise that technology is fundamentally neutral, and that unrestricted access to source code— even for explicitly “evil” purposes— is in fact an unqualified good. But around the world, open source developers are starting to realize that the software that they create, with its tremendous potential to change the world for the better, is also being abused to sustain and promote systems of inequity and injustice, globally, and at unprecedented&nbsp;scale.</p>
  153. <p>The Hippocratic License 3.0 (HL3) aims <mark>to confront the potential harms and abuses technology can have</mark> on fundamental human rights. It empowers open source communities to establish a clear set of ethical standards that licensees must abide by in order to adopt their&nbsp;code.</p>
  154. <p><cite><em><a href="https://firstdonoharm.dev/">The Hippocratic License</a></em>&nbsp;(<a href="/david/cache/2023/e44bfaaecad989f67cb2032fac000276/">cache</a>)</cite></p>
  155. </blockquote>
  156. <blockquote lang="en">
  157. <p>😮 I am all for radical criticism, especially targeted at billion-dollar tech corporations and powerful project leaders who <a href="https://fediverse.zachleat.com/@zachleat/109830047951867907">try to silence critics</a>. We need <mark>to hold them accountable</mark> for tech that produces harmful, subpar web experiences. They deserve their decent share of “told you&nbsp;so”.</p>
  158. <p><cite><em><a href="https://molily.de/update-on-robust-javascript/">An update on Robust Client-Side JavaScript</a></em>&nbsp;(<a href="/david/cache/2023/9718ae2062146285e1c4f406240e04af/">cache</a>)</cite></p>
  159. </blockquote>
  160. <blockquote lang="en">
  161. <p>🤗 As we build stuff, we make trade-off decisions like this all the time. If I have a point, it’s that we should consider these tradeoffs <mark>with our most junior teammates in mind;</mark> how much complexity are we adding for them? Is it worth&nbsp;it?</p>
  162. <p><cite><em><a href="https://www.joshwcomeau.com/career/clever-code-considered-harmful/">Clever Code Considered Harmful</a></em>&nbsp;(<a href="/david/cache/2023/a09b5bf450d2cf86fb9e9d6f13b070e0/">cache</a>)</cite></p>
  163. </blockquote>
  164. </main>
  165. <hr>
  166. <footer>
  167. <p>
  168. <nobr>
  169. <a href="/david/" title="Aller à l’accueil"
  170. ><svg class="icon icon-home">
  171. <use
  172. xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-home"
  173. ></use>
  174. </svg>
  175. Accueil</a
  176. >
  177. </nobr>
  178. <nobr>
  179. <a href="/david/log/" title="Accès au flux RSS"
  180. ><svg class="icon icon-rss2">
  181. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-rss2"></use>
  182. </svg>
  183. Suivre</a
  184. >
  185. </nobr>
  186. <nobr>
  187. <a href="http://larlet.com" title="Go to my English profile" data-instant
  188. ><svg class="icon icon-user-tie">
  189. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-user-tie"></use>
  190. </svg>
  191. Pro</a
  192. >
  193. </nobr>
  194. <nobr>
  195. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"
  196. ><svg class="icon icon-mail">
  197. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-mail"></use>
  198. </svg>
  199. Email</a
  200. >
  201. </nobr>
  202. <nobr>
  203. <abbr
  204. class="nowrap"
  205. title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"
  206. ><svg class="icon icon-hammer2">
  207. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-hammer2"></use>
  208. </svg>
  209. Légal</abbr
  210. >
  211. </nobr>
  212. </p>
  213. <template id="theme-selector">
  214. <form>
  215. <fieldset>
  216. <legend><svg class="icon icon-brightness-contrast">
  217. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-brightness-contrast"></use>
  218. </svg> Thème</legend>
  219. <label>
  220. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  221. </label>
  222. <label>
  223. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  224. </label>
  225. <label>
  226. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  227. </label>
  228. </fieldset>
  229. </form>
  230. </template>
  231. </footer>
  232. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  233. <script>
  234. function loadThemeForm(templateName) {
  235. const themeSelectorTemplate = document.querySelector(templateName)
  236. const form = themeSelectorTemplate.content.firstElementChild
  237. themeSelectorTemplate.replaceWith(form)
  238. form.addEventListener('change', (e) => {
  239. const chosenColorScheme = e.target.value
  240. localStorage.setItem('theme', chosenColorScheme)
  241. toggleTheme(chosenColorScheme)
  242. })
  243. const selectedTheme = localStorage.getItem('theme')
  244. if (selectedTheme && selectedTheme !== 'undefined') {
  245. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  246. }
  247. }
  248. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  249. window.addEventListener('load', () => {
  250. let hasDarkRules = false
  251. for (const styleSheet of Array.from(document.styleSheets)) {
  252. let mediaRules = []
  253. for (const cssRule of styleSheet.cssRules) {
  254. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  255. continue
  256. }
  257. // WARNING: Safari does not have/supports `conditionText`.
  258. if (cssRule.conditionText) {
  259. if (cssRule.conditionText !== prefersColorSchemeDark) {
  260. continue
  261. }
  262. } else {
  263. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  264. continue
  265. }
  266. }
  267. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  268. }
  269. // WARNING: do not try to insert a Rule to a styleSheet you are
  270. // currently iterating on, otherwise the browser will be stuck
  271. // in a infinite loop…
  272. for (const mediaRule of mediaRules) {
  273. styleSheet.insertRule(mediaRule.cssText)
  274. hasDarkRules = true
  275. }
  276. }
  277. if (hasDarkRules) {
  278. loadThemeForm('#theme-selector')
  279. }
  280. })
  281. </script>
  282. </body>
  283. </html>