Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
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 25KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  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. Étiquette #forêt
  14. — David Larlet</title>
  15. <meta name="description" content="Publications relatives au tag #forêt">
  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_2024-01-28.css">
  52. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  53. <link rel="preload"
  54. href="/static/david/css/fonts/century_supra_ot_a_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/century_supra_ot_a_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/century_supra_ot_a_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/century_supra_ot_b_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/century_supra_ot_b_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/century_supra_ot_b_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 data-instant-intensity="viewport-all">
  111. <article>
  112. <header>
  113. <hgroup>
  114. <h1>#forêt</h1>
  115. <p>Publications relatives à cette étiquette</p>
  116. </hgroup>
  117. </header>
  118. <nav>
  119. <p>
  120. <a href="/david/" title="Aller à l’accueil">
  121. Accueil</a>
  122. <a rel="tags"
  123. href="/david/2024/#tags"
  124. title="Liste de toutes les étiquettes">
  125. Étiquettes</a>
  126. <a href="/david/recherche/" title="Aller à la page de recherche" rel="search">Recherche</a>
  127. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  128. </p>
  129. </nav>
  130. <h2>
  131. <a href="/david/2024/01/28/" title="Lien permanent vers cet article">Jour&nbsp;2</a> <time datetime="2024-01-28">28 janvier 2024</time>
  132. </h2>
  133. <p>Même avec la nourriture suspendue, les souris on fait un sacré raffut. Elles devaient elles aussi avoir trop chaud. Après avoir dormi avec 2&nbsp;fenêtres ouvertes, il fait tout de même 18°C au réveil. Parfait pour notre gruau de camping (seconde tradition avec les nouilles instantanées), cette fois à la neige&nbsp;fondue.</p>
  134. <p>On prend le temps d’aller faire un petit tour à skis sur le lac car c’est une première pour l’enfant. On suit des traces de lapins qui nous mènent à un point d’eau liquide qui est un point de concentration de la faune locale. Si on avait su avant, on aurait peut-être pris le risque de s’en approcher avec nos gourdes. C’est peut-être mieux de ne pas l’avoir su&nbsp;avant.</p>
  135. <figure>
  136. <a href="/static/david/2024/2024-01-28-lac-foret.jpg"
  137. title="Cliquer pour une version haute résolution">
  138. <img
  139. src="/static/david/2024/2024-01-28-lac-foret.jpg"
  140. width="3024" height="4032"
  141. srcset="/static/david/2024/2024-01-28-lac-foret.jpg 3024w, /static/david/2024/2024-01-28-lac-foret_660x440.jpg 660w, /static/david/2024/2024-01-28-lac-foret_990x660.jpg 990w, /static/david/2024/2024-01-28-lac-foret_1320x880.jpg 1320w"
  142. sizes="min(100vw, calc(100vh * 3024 / 4032))"
  143. loading="lazy"
  144. decoding="async"
  145. alt="Un lac gelé avec la forêt en arrière plan.">
  146. </a>
  147. <figcaption>Une bonne ambiance hivernale mais sans la fraîcheur de la&nbsp;saison.</figcaption>
  148. </figure>
  149. <p>Une fois le matériel rangé, on repart. Cette fois j’ai resserré le système de tractage improvisé avec des tuyaux en PVC de la <em>pulka</em>. Et j’ai aussi troqué les peaux complètes pour des demi-peaux, ça me permet de glisser un peu plus dans les descentes mais quand même pas trop. Difficile de ne pas forcer sur la cheville lorsqu’on est contraint par l’étroitesse du chemin. Bon puis il y a vraiment trop d’arbres dans ces&nbsp;forêts&nbsp;:p.</p>
  150. <p>On s’amuse vraiment sur ce retour et je suis obligé d’imposer des pauses pour ne pas arriver dans le même état que la veille (et me faire semer). L’enfant serait partant pour ne pas s’arrêter du tout, ça fait plaisir. On prend confiance et on enchaîne les bosses. Nos seules traces de la veille aident pas mal. Les conditions sont vraiment chaudes pour la&nbsp;saison.</p>
  151. <figure>
  152. <a href="/static/david/2024/2024-01-28-neige-collante.jpg"
  153. title="Cliquer pour une version haute résolution">
  154. <img
  155. src="/static/david/2024/2024-01-28-neige-collante.jpg"
  156. width="4032" height="3024"
  157. srcset="/static/david/2024/2024-01-28-neige-collante.jpg 4032w, /static/david/2024/2024-01-28-neige-collante_660x440.jpg 660w, /static/david/2024/2024-01-28-neige-collante_990x660.jpg 990w, /static/david/2024/2024-01-28-neige-collante_1320x880.jpg 1320w"
  158. sizes="min(100vw, calc(100vh * 4032 / 3024))"
  159. loading="lazy"
  160. decoding="async"
  161. alt="De la neige qui pend d’un arbre.">
  162. </a>
  163. <figcaption>Lorsqu’on me demande si la neige était&nbsp;collante.</figcaption>
  164. </figure>
  165. <p>Nous sommes progressivement rejoints par les skieur·euses qui descendent à travers les arbres et à une centaine de mètres de la voiture, il y a un passage plus difficile que les autres&nbsp;: une pente qui arrive sur un pont. On passe sur le côté pour être retenus par la neige fraîche mais la <em>pulka</em> décide de faire le drapeau et de prendre la «&nbsp;piste&nbsp;» tapée principale. J’essaye de la rattraper tant bien que mal tout en attendant / prenant soin de l’enfant et je me retrouve dans le décor. Encore. Ce n’est pas tant la chute que de forcer pour s’extraire de la neige tout en étant harnaché et les skis empêtrés dans les arbres qui me fait forcer sur les mauvais tendons… si près du but c’est&nbsp;rageant&nbsp;😔.</p>
  166. <p>Une sortie haute en émotions. Je vais maintenant pouvoir prendre le temps de soigner cette <a href="/david/2024/01/09/" title="Blessure">blessure</a>&nbsp;correctement.</p>
  167. <nav>
  168. <p>
  169. <a href="/david/2024/experience/"
  170. title="Liste de tous les articles 2024 associés à cette étiquette"
  171. rel="tag">#expérience</a>
  172. <a href="/david/2024/foret/"
  173. title="Liste de tous les articles 2024 associés à cette étiquette"
  174. rel="tag">#forêt</a>
  175. <a href="/david/2024/parentalite/"
  176. title="Liste de tous les articles 2024 associés à cette étiquette"
  177. rel="tag">#parentalité</a>
  178. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  179. </p>
  180. </nav>
  181. <h2>
  182. <a href="/david/2024/01/27/" title="Lien permanent vers cet article">Jour&nbsp;1</a> <time datetime="2024-01-27">27 janvier 2024</time>
  183. </h2>
  184. <p>De la pluie verglaçante depuis 2&nbsp;jours. Une cheville pas encore opérationnelle. Mais de l’envie et une réservation depuis deux mois pour une première sortie hivernale en refuge. Ensemble. La route pour y aller est déjà épique et des flocons gros comme des pastèques s’écrasent sur le pare-brise. Il est rare au Québec de suivre un <em>pickup</em> qui ne dépasse pas les 70&#8239;km/h sur&nbsp;l’autoroute.</p>
  185. <p>C’est aussi la première sortie pour la <em>pulka</em> ramenée de France cet été. Le temps de charger et de se préparer, la neige est déjà moins intense. Néanmoins, dès les premières centaines de mètres, je sens bien que ça va être galère. La montée est vraiment pentue et les skis-raquettes de l’enfant ne sont pas adaptés à ces conditions ce qui le rend <del>pénible</del> ronchon. De mon côté, avec les peaux complètes ça passe mais je force énormément car je dois bien avoir 35&#8239;kg à tracter derrière. On fait au moins deux kilomètres comme ça… avant de se rendre compte que l’on est sur la montée de ski de randonnée de la Montagne&nbsp;Noire&#8239;!</p>
  186. <figure>
  187. <a href="/static/david/2024/2024-01-27-enfant-qui-skie.jpg"
  188. title="Cliquer pour une version haute résolution">
  189. <img
  190. src="/static/david/2024/2024-01-27-enfant-qui-skie.jpg"
  191. width="3024" height="4032"
  192. srcset="/static/david/2024/2024-01-27-enfant-qui-skie.jpg 3024w, /static/david/2024/2024-01-27-enfant-qui-skie_660x440.jpg 660w, /static/david/2024/2024-01-27-enfant-qui-skie_990x660.jpg 990w, /static/david/2024/2024-01-27-enfant-qui-skie_1320x880.jpg 1320w"
  193. sizes="min(100vw, calc(100vh * 3024 / 4032))"
  194. loading="lazy"
  195. decoding="async"
  196. alt="Un enfant en train de skier sur un chemin.">
  197. </a>
  198. <figcaption>Avant que tout ne&nbsp;dérape.</figcaption>
  199. </figure>
  200. <p>Grosse erreur d’orientation qui nous coûte cher&nbsp;: impossible de descendre par cette montée et couper par la forêt serait très hasardeux, sans compter mon état. L’heure tourne et on finit par descendre en ayant déchaussé tous les deux. Deux paires de skis en plus à retenir à bout de bras en ayant le choix entre un chemin de 30&nbsp;cm de large tapé qui glisse ou un mètre de poudreuse tout autour. C’est un peu casse patte, juste ce qu’il me fallait pour une rééducation&nbsp;active&nbsp;😬.</p>
  201. <figure>
  202. <a href="/static/david/2024/2024-01-27-attache-pulka.jpg"
  203. title="Cliquer pour une version haute résolution">
  204. <img
  205. src="/static/david/2024/2024-01-27-attache-pulka.jpg"
  206. width="2320" height="3088"
  207. srcset="/static/david/2024/2024-01-27-attache-pulka.jpg 2320w, /static/david/2024/2024-01-27-attache-pulka_660x440.jpg 660w, /static/david/2024/2024-01-27-attache-pulka_990x660.jpg 990w, /static/david/2024/2024-01-27-attache-pulka_1320x880.jpg 1320w"
  208. sizes="min(100vw, calc(100vh * 2320 / 3088))"
  209. loading="lazy"
  210. decoding="async"
  211. alt="La pulka visible depuis mon entre-jambe.">
  212. </a>
  213. <figcaption>Un point de vue&nbsp;discutable.</figcaption>
  214. </figure>
  215. <p>Quasi-retour au point de départ, à deux doigts d’abandonner vue l’énergie que l’on vient de dépenser&nbsp;: <q lang="fr">c’est pas la grosse marrade</q>. Une pause bienvenue et le chemin loupé qui semble accueillant me font hésiter tout de même. Je prends finalement la décision d’y aller car dans mon souvenir c’est accessible (si on ne se trompe pas de sentier…). Prise de risque assez élevée au passage, il ne faut pas d’autres erreurs ou problèmes sur le trajet ou on va finir à la frontale (au mieux). Difficile de savoir jusqu’où est-ce que ça va être tracé&nbsp;aussi.</p>
  216. <p>Ce nouveau chemin est beaucoup plus adapté à notre niveau (de forme). Le système d’attache de la <em>pulka</em> est loin d’être optimal mais ça passe, même entre les arbres. L’enfant prend confiance et s’amuse dans les descentes. On arrive enfin au refuge sans encombres, il est 15&#8239;h passé et on n’a pas mangé, à peine bu 200&nbsp;ml depuis le départ… il va falloir recharger les corps avant demain sinon ça va&nbsp;piquer.</p>
  217. <figure>
  218. <a href="/static/david/2024/2024-01-27-dessins-cartes.jpg"
  219. title="Cliquer pour une version haute résolution">
  220. <img
  221. src="/static/david/2024/2024-01-27-dessins-cartes.jpg"
  222. width="3024" height="4032"
  223. srcset="/static/david/2024/2024-01-27-dessins-cartes.jpg 3024w, /static/david/2024/2024-01-27-dessins-cartes_660x440.jpg 660w, /static/david/2024/2024-01-27-dessins-cartes_990x660.jpg 990w, /static/david/2024/2024-01-27-dessins-cartes_1320x880.jpg 1320w"
  224. sizes="min(100vw, calc(100vh * 3024 / 4032))"
  225. loading="lazy"
  226. decoding="async"
  227. alt="Des cartes dessinées à la bougie visible en fond.">
  228. </a>
  229. <figcaption>Le dessin à la bougie, c’est mieux à&nbsp;deux.</figcaption>
  230. </figure>
  231. <p>Heureusement, cet endroit est assez fabuleux et il y a une ambiance brumeuse qui lui donne un aspect féérique. Une fois repus, on va faire un tour sur le lac en contrebas. Il sautille sur le chemin (moi pas) et semble déjà avoir oublié les péripéties de la matinée. On passe une bonne soirée à faire des cadavre-exquis et à dessiner des cartes. Il fait 27°C dans le refuge, on supporte nos caleçons mais c’est un peu limite pour aller chercher la neige à faire&nbsp;fondre&#8239;!</p>
  232. <figure>
  233. <a href="/static/david/2024/2024-01-27-enfant-lac.jpg"
  234. title="Cliquer pour une version haute résolution">
  235. <img
  236. src="/static/david/2024/2024-01-27-enfant-lac.jpg"
  237. width="4032" height="3024"
  238. srcset="/static/david/2024/2024-01-27-enfant-lac.jpg 4032w, /static/david/2024/2024-01-27-enfant-lac_660x440.jpg 660w, /static/david/2024/2024-01-27-enfant-lac_990x660.jpg 990w, /static/david/2024/2024-01-27-enfant-lac_1320x880.jpg 1320w"
  239. sizes="min(100vw, calc(100vh * 4032 / 3024))"
  240. loading="lazy"
  241. decoding="async"
  242. alt="Un enfant sur un lac gelé (le lac, pas l’enfant).">
  243. </a>
  244. <figcaption>Un enfant sur un lac gelé (le lac, pas l’enfant). Il est 17h17. Je crois que j’aime de plus en plus les photos qui ont du&nbsp;grain.</figcaption>
  245. </figure>
  246. <p>Vu le bruit que font les souris alors qu’il y a encore de la lumière, la nuit risque de ne pas être de tout repos… On s’endort au son du poêle qui&nbsp;craque.</p>
  247. <nav>
  248. <p>
  249. <a href="/david/2024/experience/"
  250. title="Liste de tous les articles 2024 associés à cette étiquette"
  251. rel="tag">#expérience</a>
  252. <a href="/david/2024/foret/"
  253. title="Liste de tous les articles 2024 associés à cette étiquette"
  254. rel="tag">#forêt</a>
  255. <a href="/david/2024/parentalite/"
  256. title="Liste de tous les articles 2024 associés à cette étiquette"
  257. rel="tag">#parentalité</a>
  258. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  259. </p>
  260. </nav>
  261. <h2>
  262. <a href="/david/2024/01/21/" title="Lien permanent vers cet article">Bois</a> <time datetime="2024-01-21">21 janvier 2024</time>
  263. </h2>
  264. <p>La dissonance cognitive du jour&nbsp;: faire un atelier de tour à bois et lire dans la foulée <em>La vie secrète des arbre</em> de Peter Wohlleben brillamment mise en version BD par Fred Bernard et Benjamin&nbsp;Flao.</p>
  265. <figure>
  266. <a href="/static/david/2024/2024-01-20-tour-a-bois.jpg"
  267. title="Cliquer pour une version haute résolution">
  268. <img
  269. src="/static/david/2024/2024-01-20-tour-a-bois.jpg"
  270. width="3024" height="4032"
  271. srcset="/static/david/2024/2024-01-20-tour-a-bois.jpg 3024w, /static/david/2024/2024-01-20-tour-a-bois_660x440.jpg 660w, /static/david/2024/2024-01-20-tour-a-bois_990x660.jpg 990w, /static/david/2024/2024-01-20-tour-a-bois_1320x880.jpg 1320w"
  272. sizes="min(100vw, calc(100vh * 3024 / 4032))"
  273. loading="lazy"
  274. decoding="async"
  275. alt="Une assiette, un bol et une cuillère en bois à côté du livre cité avec des plantes en fond.">
  276. </a>
  277. <figcaption>6 heures de travail non-stop pour faire cette assiette et ce&nbsp;bol.</figcaption>
  278. </figure>
  279. <blockquote>
  280. <p>Lorsque je marche en foret, je sens que je fais partie intégrante du vivant. Je suis, nous sommes naturellement, unis au minéral, aux bactéries, aux virus, aux champignons aux plantes, aux chenilles, aux papillons, à tous les&nbsp;animaux.</p>
  281. <p>Nous sommes tous reliés et <mark>ne faisons que passer sur cette mince pellicule de vie</mark> qui couvre miraculeusement la terre. Tout le vivant est constitue des mêmes atomes présents sur notre planète depuis sa&nbsp;création.</p>
  282. <p>Je porte en moi des particules qui ont constitue des arbres du crétacé, des légionnaires romains, des plants de tomates rapportés d’Amérique par les conquistadors… rien ne se crée, tout se transforme, dit-on. Rien n’est plus&nbsp;vrai.</p>
  283. </blockquote>
  284. <figure>
  285. <a href="/static/david/2024/2024-01-20-vie-secrete-arbres.jpg"
  286. title="Cliquer pour une version haute résolution">
  287. <img
  288. src="/static/david/2024/2024-01-20-vie-secrete-arbres.jpg"
  289. width="3024" height="4032"
  290. srcset="/static/david/2024/2024-01-20-vie-secrete-arbres.jpg 3024w, /static/david/2024/2024-01-20-vie-secrete-arbres_660x440.jpg 660w, /static/david/2024/2024-01-20-vie-secrete-arbres_990x660.jpg 990w, /static/david/2024/2024-01-20-vie-secrete-arbres_1320x880.jpg 1320w"
  291. sizes="min(100vw, calc(100vh * 3024 / 4032))"
  292. loading="lazy"
  293. decoding="async"
  294. alt="Extrait du livre «&nbsp;La vie secrète des arbres&nbsp;» dont est issue la citation ci-dessus.">
  295. </a>
  296. <figcaption>J’aime beaucoup des livres transformés en BD, je trouve que l’image leur donne une autre&nbsp;dimension.</figcaption>
  297. </figure>
  298. <p>D’autant plus motivé pour trouver un bout de forêt à préserver —&nbsp;des chasseurs, de l’exploitation, de la pollution, etc.&nbsp;— dans le coin. Un de mes objectifs&nbsp;2024.</p>
  299. <nav>
  300. <p>
  301. <a href="/david/2024/apprentissage/"
  302. title="Liste de tous les articles 2024 associés à cette étiquette"
  303. rel="tag">#apprentissage</a>
  304. <a href="/david/2024/foret/"
  305. title="Liste de tous les articles 2024 associés à cette étiquette"
  306. rel="tag">#forêt</a>
  307. <a href="/david/2024/protopie/"
  308. title="Liste de tous les articles 2024 associés à cette étiquette"
  309. rel="tag">#protopie</a>
  310. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  311. </p>
  312. </nav>
  313. <form action="/david/recherche/" method="get">
  314. <fieldset>
  315. <legend>Recherche</legend>
  316. <label for="input-search">Termes de votre recherche :</label>
  317. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  318. <input type="submit" value="Chercher">
  319. <p id="indexation-infos">
  320. <small>
  321. Seuls les contenus de ces 8 dernières années sont indexés.
  322. </small>
  323. </p>
  324. </fieldset>
  325. </form>
  326. <aside>
  327. <theme-toggle></theme-toggle>
  328. </aside>
  329. </article>
  330. <hr>
  331. <footer>
  332. <p>
  333. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  334. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  335. <a href="http://larlet.com"
  336. title="Go to my English profile"
  337. data-instant>Pro</a>
  338. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  339. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  340. </p>
  341. <template id="theme-selector">
  342. <form>
  343. <style type="text/css">
  344. fieldset div {
  345. text-align: center;
  346. }
  347. </style>
  348. <fieldset>
  349. <legend>Thème</legend>
  350. <div>
  351. <label>
  352. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  353. Auto
  354. </label>
  355. <label>
  356. <input type="radio" value="dark" name="chosen-color-scheme">
  357. Foncé
  358. </label>
  359. <label>
  360. <input type="radio" value="light" name="chosen-color-scheme">
  361. Clair
  362. </label>
  363. </div>
  364. </fieldset>
  365. </form>
  366. </template>
  367. </footer>
  368. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  369. <script>
  370. class ThemeToggle extends HTMLElement {
  371. constructor() {
  372. super()
  373. const themeSelectorTemplate = document.querySelector('#theme-selector')
  374. const form = themeSelectorTemplate.content.firstElementChild
  375. this.attachShadow({ mode: 'open' })
  376. this.shadowRoot.appendChild(form.cloneNode(true))
  377. }
  378. connectedCallback() {
  379. const form = this.shadowRoot.querySelector('form')
  380. form.addEventListener('change', (e) => {
  381. const chosenColorScheme = e.target.value
  382. localStorage.setItem('theme', chosenColorScheme)
  383. toggleTheme(chosenColorScheme)
  384. })
  385. const selectedTheme = localStorage.getItem('theme')
  386. if (selectedTheme && selectedTheme !== 'undefined') {
  387. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  388. }
  389. }
  390. }
  391. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  392. window.addEventListener('load', () => {
  393. let colorsLayer = undefined
  394. let hasDarkRules = false
  395. for (const styleSheet of Array.from(document.styleSheets)) {
  396. let mediaRules = []
  397. for (const layerRule of styleSheet.cssRules) {
  398. if (!(layerRule instanceof CSSLayerBlockRule)) {
  399. continue
  400. }
  401. if (layerRule.name === 'colors') {
  402. colorsLayer = layerRule
  403. }
  404. for (const cssRule of layerRule.cssRules) {
  405. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  406. continue
  407. }
  408. // WARNING: Safari does not have/supports `conditionText`.
  409. if (cssRule.conditionText) {
  410. if (cssRule.conditionText !== prefersColorSchemeDark) {
  411. continue
  412. }
  413. } else {
  414. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  415. continue
  416. }
  417. }
  418. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  419. }
  420. }
  421. // WARNING: do not try to insert a Rule to a styleSheet you are
  422. // currently iterating on, otherwise the browser will be stuck
  423. // in a infinite loop…
  424. for (const mediaRule of mediaRules) {
  425. // Safari requires the `0` second parameter (even if default).
  426. colorsLayer.insertRule(mediaRule.cssText, 0)
  427. hasDarkRules = true
  428. }
  429. }
  430. if (hasDarkRules) {
  431. if ('customElements' in window && !customElements.get('theme-toggle')) {
  432. customElements.define('theme-toggle', ThemeToggle)
  433. }
  434. }
  435. })
  436. </script>
  437. </body>
  438. </html>