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 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  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. Jour&nbsp;2
  14. — David Larlet</title>
  15. <meta name="description" content="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 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 fondue.">
  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-19.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. <body data-instant-intensity="viewport-all">
  106. <article>
  107. <header>
  108. <hgroup>
  109. <h1>Jour&nbsp;2</h1>
  110. <p>Le <time datetime="2024-01-28">28 janvier 2024</time></p>
  111. </hgroup>
  112. </header>
  113. <nav>
  114. <p>
  115. <a rel="prev"
  116. href="/david/2024/01/27/"
  117. title="Publication précédente : Jour&nbsp;1">← Précédent</a> •
  118. <a href="/david/" title="Aller à l’accueil" rel="up">Accueil</a>
  119. <a href="/david/recherche/"
  120. title="Aller à la page de recherche"
  121. rel="search">Recherche</a>
  122. </p>
  123. </nav>
  124. <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>
  125. <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>
  126. <figure>
  127. <a href="/static/david/2024/2024-01-28-lac-foret.jpg"
  128. title="Cliquer pour une version haute résolution">
  129. <img
  130. src="/static/david/2024/2024-01-28-lac-foret.jpg"
  131. width="3024" height="4032"
  132. 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"
  133. sizes="min(100vw, calc(100vh * 3024 / 4032))"
  134. loading="lazy"
  135. decoding="async"
  136. alt="Un lac gelé avec la forêt en arrière plan.">
  137. </a>
  138. <figcaption>Une bonne ambiance hivernale mais sans la fraîcheur de la&nbsp;saison.</figcaption>
  139. </figure>
  140. <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>
  141. <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>
  142. <figure>
  143. <a href="/static/david/2024/2024-01-28-neige-collante.jpg"
  144. title="Cliquer pour une version haute résolution">
  145. <img
  146. src="/static/david/2024/2024-01-28-neige-collante.jpg"
  147. width="4032" height="3024"
  148. 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"
  149. sizes="min(100vw, calc(100vh * 4032 / 3024))"
  150. loading="lazy"
  151. decoding="async"
  152. alt="De la neige qui pend d’un arbre.">
  153. </a>
  154. <figcaption>Lorsqu’on me demande si la neige était&nbsp;collante.</figcaption>
  155. </figure>
  156. <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>
  157. <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>
  158. <nav>
  159. <p>
  160. <a href="/david/2024/experience/"
  161. title="Liste de tous les articles 2024 associés à cette étiquette"
  162. rel="tag">#expérience</a>
  163. <a href="/david/2024/foret/"
  164. title="Liste de tous les articles 2024 associés à cette étiquette"
  165. rel="tag">#forêt</a>
  166. <a href="/david/2024/parentalite/"
  167. title="Liste de tous les articles 2024 associés à cette étiquette"
  168. rel="tag">#parentalité</a>
  169. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  170. </p>
  171. </nav>
  172. <nav>
  173. <p>
  174. <a rel="prev"
  175. href="/david/2024/01/27/"
  176. title="Publication précédente : Jour&nbsp;1">← Précédent</a> •
  177. <a href="/david/2024/" title="Liste des publications récentes">↑ En 2024</a>
  178. </p>
  179. </nav>
  180. <form action="/david/recherche/" method="get">
  181. <fieldset>
  182. <legend>Recherche</legend>
  183. <label for="input-search">Termes de votre recherche :</label>
  184. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  185. <input type="submit" value="Chercher">
  186. <p id="indexation-infos">
  187. <small>
  188. Seuls les contenus de ces 8 dernières années sont indexés.
  189. </small>
  190. </p>
  191. </fieldset>
  192. </form>
  193. <aside>
  194. <theme-toggle></theme-toggle>
  195. </aside>
  196. </article>
  197. <hr>
  198. <footer>
  199. <p>
  200. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  201. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  202. <a href="http://larlet.com"
  203. title="Go to my English profile"
  204. data-instant>Pro</a>
  205. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  206. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  207. </p>
  208. <template id="theme-selector">
  209. <form>
  210. <style type="text/css">
  211. fieldset div {
  212. text-align: center;
  213. }
  214. </style>
  215. <fieldset>
  216. <legend>Thème</legend>
  217. <div>
  218. <label>
  219. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  220. Auto
  221. </label>
  222. <label>
  223. <input type="radio" value="dark" name="chosen-color-scheme">
  224. Foncé
  225. </label>
  226. <label>
  227. <input type="radio" value="light" name="chosen-color-scheme">
  228. Clair
  229. </label>
  230. </div>
  231. </fieldset>
  232. </form>
  233. </template>
  234. </footer>
  235. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  236. <script>
  237. class ThemeToggle extends HTMLElement {
  238. constructor() {
  239. super()
  240. const themeSelectorTemplate = document.querySelector('#theme-selector')
  241. const form = themeSelectorTemplate.content.firstElementChild
  242. this.attachShadow({ mode: 'open' })
  243. this.shadowRoot.appendChild(form.cloneNode(true))
  244. }
  245. connectedCallback() {
  246. const form = this.shadowRoot.querySelector('form')
  247. form.addEventListener('change', (e) => {
  248. const chosenColorScheme = e.target.value
  249. localStorage.setItem('theme', chosenColorScheme)
  250. toggleTheme(chosenColorScheme)
  251. })
  252. const selectedTheme = localStorage.getItem('theme')
  253. if (selectedTheme && selectedTheme !== 'undefined') {
  254. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  255. }
  256. }
  257. }
  258. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  259. window.addEventListener('load', () => {
  260. let colorsLayer = undefined
  261. let hasDarkRules = false
  262. for (const styleSheet of Array.from(document.styleSheets)) {
  263. let mediaRules = []
  264. for (const layerRule of styleSheet.cssRules) {
  265. if (!(layerRule instanceof CSSLayerBlockRule)) {
  266. continue
  267. }
  268. if (layerRule.name === 'colors') {
  269. colorsLayer = layerRule
  270. }
  271. for (const cssRule of layerRule.cssRules) {
  272. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  273. continue
  274. }
  275. // WARNING: Safari does not have/supports `conditionText`.
  276. if (cssRule.conditionText) {
  277. if (cssRule.conditionText !== prefersColorSchemeDark) {
  278. continue
  279. }
  280. } else {
  281. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  282. continue
  283. }
  284. }
  285. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  286. }
  287. }
  288. // WARNING: do not try to insert a Rule to a styleSheet you are
  289. // currently iterating on, otherwise the browser will be stuck
  290. // in a infinite loop…
  291. for (const mediaRule of mediaRules) {
  292. // Safari requires the `0` second parameter (even if default).
  293. colorsLayer.insertRule(mediaRule.cssText, 0)
  294. hasDarkRules = true
  295. }
  296. }
  297. if (hasDarkRules) {
  298. if ('customElements' in window && !customElements.get('theme-toggle')) {
  299. customElements.define('theme-toggle', ThemeToggle)
  300. }
  301. }
  302. })
  303. </script>
  304. </body>
  305. </html>