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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  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 1
  14. — David Larlet</title>
  15. <script>
  16. function toggleTheme(themeName) {
  17. document.documentElement.classList.toggle(
  18. 'forced-dark',
  19. themeName === 'dark'
  20. )
  21. document.documentElement.classList.toggle(
  22. 'forced-light',
  23. themeName === 'light'
  24. )
  25. }
  26. const selectedTheme = localStorage.getItem('theme')
  27. if (selectedTheme !== 'undefined') {
  28. toggleTheme(selectedTheme)
  29. }
  30. </script>
  31. <!-- Documented, feel free to shoot an email. -->
  32. <link rel="stylesheet" href="/static/david/css/style_2024-03-09.css">
  33. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  34. <link rel="preload"
  35. href="/static/david/css/fonts/century_supra_ot_a_regular.woff2"
  36. as="font"
  37. type="font/woff2"
  38. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  39. crossorigin>
  40. <link rel="preload"
  41. href="/static/david/css/fonts/century_supra_ot_a_bold.woff2"
  42. as="font"
  43. type="font/woff2"
  44. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  45. crossorigin>
  46. <link rel="preload"
  47. href="/static/david/css/fonts/century_supra_ot_a_italic.woff2"
  48. as="font"
  49. type="font/woff2"
  50. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  51. crossorigin>
  52. <link rel="preload"
  53. href="/static/david/css/fonts/century_supra_ot_b_regular.woff2"
  54. as="font"
  55. type="font/woff2"
  56. media="(prefers-color-scheme: dark)"
  57. crossorigin>
  58. <link rel="preload"
  59. href="/static/david/css/fonts/century_supra_ot_b_bold.woff2"
  60. as="font"
  61. type="font/woff2"
  62. media="(prefers-color-scheme: dark)"
  63. crossorigin>
  64. <link rel="preload"
  65. href="/static/david/css/fonts/century_supra_ot_b_italic.woff2"
  66. as="font"
  67. type="font/woff2"
  68. media="(prefers-color-scheme: dark)"
  69. crossorigin>
  70. <meta name="description" content="Réveil à 6h. Je veux tenter une sortie longue en prévision d’une encore plus longue. Comme chaque printemps, j’ai l’espoir de ne pas tomber sur des conditions trop pénibles lorsque ça fond. Comme chaque printemps, je me retrouve à viser les arbres entre deux plaques de verglas pour pouvoir me rattraper dans les dévers. Sans compter le fait que le sentier qui a été tapé par les raquettes tout l’hiver est bien souvent le seul serpent de glace restant. Un exemple parmi tant d’autres un peu plus critiques :">
  71. <!-- That good ol' feed, subscribe :). -->
  72. <link rel="alternate"
  73. type="application/atom+xml"
  74. title="Feed"
  75. href="/david/log/">
  76. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  77. <link rel="apple-touch-icon"
  78. sizes="180x180"
  79. href="/static/david/icons2/apple-touch-icon.png">
  80. <link rel="icon"
  81. type="image/png"
  82. sizes="32x32"
  83. href="/static/david/icons2/favicon-32x32.png">
  84. <link rel="icon"
  85. type="image/png"
  86. sizes="16x16"
  87. href="/static/david/icons2/favicon-16x16.png">
  88. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  89. <link rel="mask-icon"
  90. href="/static/david/icons2/safari-pinned-tab.svg"
  91. color="#07486c">
  92. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  93. <meta name="msapplication-TileColor" content="#f7f7f7">
  94. <meta name="msapplication-config"
  95. content="/static/david/icons2/browserconfig.xml">
  96. <meta name="theme-color"
  97. content="#f7f7f7"
  98. media="(prefers-color-scheme: light)">
  99. <meta name="theme-color"
  100. content="#272727"
  101. media="(prefers-color-scheme: dark)">
  102. <!-- Is that even respected? Retrospectively? What a shAItshow…
  103. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  104. <meta name="robots" content="noai, noimageai">
  105. <style type="text/css">
  106. .tippy-content {
  107. min-width: 280px;
  108. padding: .5rem;
  109. font-size: calc(var(--fluid-0) * 0.8);
  110. font-family: var(--labor-font);
  111. letter-spacing: initial;
  112. text-align: left;
  113. }
  114. .tippy-content h3 {
  115. margin-top: 0;
  116. }
  117. .tippy-content h3 img {
  118. max-width: 2rem;
  119. max-height: 2rem;
  120. display: inline-block;
  121. }
  122. .tippy-content .tippy-links {
  123. display: flex;
  124. justify-content: space-around;
  125. }
  126. .tippy-content a {
  127. padding: .4rem;
  128. color: #F06048;
  129. }
  130. </style>
  131. <body data-instant-intensity="viewport-all">
  132. <article>
  133. <header>
  134. <hgroup>
  135. <h1>Jour 1</h1>
  136. <p>Le <time datetime="2024-03-29">29 mars 2024</time></p>
  137. </hgroup>
  138. </header>
  139. <nav>
  140. <p>
  141. <a rel="prev"
  142. href="/david/2024/03/28/"
  143. title="Publication précédente : Collectif">← Précédent</a> •
  144. <a href="/david/" title="Aller à l’accueil" rel="up">Accueil</a>
  145. <a href="/david/recherche/"
  146. title="Aller à la page de recherche"
  147. rel="search" data-no-instant>Recherche</a>
  148. • <a rel="next"
  149. href="/david/2024/03/30/"
  150. title="Publication suivante : Jour 2">Suivant →</a>
  151. </p>
  152. </nav>
  153. <p>Réveil à 6h. Je veux tenter une sortie longue en prévision d’une <a href="/david/2024/03/11/#hr-109">encore plus longue</a>. Comme chaque printemps, j’ai l’espoir de ne pas tomber sur des conditions trop pénibles lorsque ça fond. Comme chaque printemps, je me retrouve à viser les arbres entre deux plaques de verglas pour pouvoir me rattraper dans les dévers. Sans compter le fait que le sentier qui a été tapé par les raquettes tout l’hiver est bien souvent le seul serpent de glace restant. Un exemple parmi tant d’autres un peu plus&nbsp;critiques&nbsp;:</p>
  154. <figure>
  155. <a href="/static/david/2024/2024-03-29-chemin-glace.jpg"
  156. title="Cliquer pour une version haute résolution">
  157. <img
  158. src="/static/david/2024/2024-03-29-chemin-glace.jpg"
  159. width="3024" height="4032"
  160. srcset="/static/david/2024/2024-03-29-chemin-glace.jpg 3024w, /static/david/2024/2024-03-29-chemin-glace_660x440.jpg 660w, /static/david/2024/2024-03-29-chemin-glace_990x660.jpg 990w, /static/david/2024/2024-03-29-chemin-glace_1320x880.jpg 1320w"
  161. sizes="min(100vw, calc(100vh * 3024 / 4032))"
  162. loading="lazy"
  163. decoding="async"
  164. alt="Un chemin gelé.">
  165. </a>
  166. <figcaption>Sur 100 mètres ça va, mais sur plusieurs kilomètres c’est usant&nbsp;!</figcaption>
  167. </figure>
  168. <p>Il y a vraiment deux faces, deux ambiances dans ces situations avec d’un côté du gel et de l’autre le sol déjà fondu mais parfois boueux et donc tout autant&nbsp;glissant…</p>
  169. <p>Je découvre un emplacement de camping à une dizaine de kilomètres du départ, ce qui me permettra de revenir cet été avec l’enfant. J’aime bien ce genre de découverte non&nbsp;documentée.</p>
  170. <figure>
  171. <a href="/static/david/2024/2024-03-29-riviere.jpg"
  172. title="Cliquer pour une version haute résolution">
  173. <img
  174. src="/static/david/2024/2024-03-29-riviere.jpg"
  175. width="3024" height="4032"
  176. srcset="/static/david/2024/2024-03-29-riviere.jpg 3024w, /static/david/2024/2024-03-29-riviere_660x440.jpg 660w, /static/david/2024/2024-03-29-riviere_990x660.jpg 990w, /static/david/2024/2024-03-29-riviere_1320x880.jpg 1320w"
  177. sizes="min(100vw, calc(100vh * 3024 / 4032))"
  178. loading="lazy"
  179. decoding="async"
  180. alt="Une rivière avec les bords enneigés.">
  181. </a>
  182. <figcaption>Je chiale beaucoup mais il y a aussi des décors qui valent le coup&nbsp;hein.</figcaption>
  183. </figure>
  184. <p>J’avais fait la <a data-link-domain="komoot.com" href="https://www.komoot.com/fr-fr/plan">trace sur Komoot</a> pour tester le suivi avec <a href="/david/2024/03/14/" title="Montre 2">la montre</a> (je ferai un retour complet à son sujet plus tard) ce qui a eu pour effet de m’encourager <em>et</em> de me décourager à la fois. D’un côté la certitude d’être sur le «&nbsp;droit&nbsp;» chemin et d’anticiper les côtes, de l’autre se rendre compte en cours de route que l’estimation initiale en terme de distance / dénivelé était très optimiste (+25% en distance et +50% en dénivelé ça fait une&nbsp;différence&#8239;!).</p>
  185. <p>Je pensais être déjà limite niveau capacités physiques mais de voir le chemin s’allonger et le temps passer a fini par avoir raison de mon énergie. Lorsque la lucidité flanche après presque 7h d’effort à <del>lutter</del> m’adapter aux éléments, il vaut mieux faire une pause en pensant au retour. Je retiens qu’il faut démarrer plus tôt aussi pour être plus serein en cas&nbsp;d’imprévu.</p>
  186. <p>La nourriture était un autre test important de cette sortie. Je me suis rendu compte que de s’alimenter sur 4&nbsp;jours intensifs allait peser lourd. Lorsque j’ai enregistré le parcours, la montre m’a indiqué 2300&nbsp;kcal de dépensées ce qui me donne une idée des ordres de grandeur. Pour une fois, je voulais tenter les plats lyophilisés et non seulement c’était pas bon mais en plus j’avais faim avant de me coucher&#8239;! Il faut que j’essaye de déshydrater mes propres&nbsp;plats.</p>
  187. <p>En parlant du couchage, trouver un emplacement en pleine forêt québécoise qui soit suffisamment plat <em>et</em> sec non gelé <em>et</em> proche d’eau courante revient bien souvent à s’installer sur le sentier. Ce que j’ai fait après n’avoir croisé personne de la&nbsp;journée.</p>
  188. <figure>
  189. <a href="/static/david/2024/2024-03-29-couchage-sentier.jpg"
  190. title="Cliquer pour une version haute résolution">
  191. <img
  192. src="/static/david/2024/2024-03-29-couchage-sentier.jpg"
  193. width="3024" height="4032"
  194. srcset="/static/david/2024/2024-03-29-couchage-sentier.jpg 3024w, /static/david/2024/2024-03-29-couchage-sentier_660x440.jpg 660w, /static/david/2024/2024-03-29-couchage-sentier_990x660.jpg 990w, /static/david/2024/2024-03-29-couchage-sentier_1320x880.jpg 1320w"
  195. sizes="min(100vw, calc(100vh * 3024 / 4032))"
  196. loading="lazy"
  197. decoding="async"
  198. alt="Un campement en plein chemin.">
  199. </a>
  200. <figcaption>On ne dirait pas sur la photo mais le sol est bien&nbsp;humide.</figcaption>
  201. </figure>
  202. <p>La météo indiquait -5°C, je prévoyais un -10°C niveau équipement et… il a bien fait -15°C avec le vent qui a soufflé par rafales toute la nuit. Difficile de réussir à être minimaliste / léger dans ces conditions sans prendre quelques&nbsp;risques.</p>
  203. <nav>
  204. <p>
  205. <a href="/david/2024/experience/"
  206. title="Liste de tous les articles 2024 associés à cette étiquette"
  207. rel="tag">#expérience</a>
  208. <a href="/david/2024/foret/"
  209. title="Liste de tous les articles 2024 associés à cette étiquette"
  210. rel="tag">#forêt</a>
  211. <a href="/david/2024/partage/"
  212. title="Liste de tous les articles 2024 associés à cette étiquette"
  213. rel="tag">#partage</a>
  214. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  215. </p>
  216. </nav>
  217. <nav>
  218. <p>
  219. <a rel="prev"
  220. href="/david/2024/03/28/"
  221. title="Publication précédente : Collectif">← Précédent</a> •
  222. <a href="/david/2024/" title="Liste des publications récentes">↑ En 2024</a>
  223. • <a rel="next"
  224. href="/david/2024/03/30/"
  225. title="Publication suivante : Jour 2">Suivant →</a>
  226. </p>
  227. </nav>
  228. <form action="/david/recherche/" method="get">
  229. <fieldset>
  230. <legend>Recherche</legend>
  231. <label for="input-search">Termes de votre recherche :</label>
  232. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  233. <input type="submit" value="Chercher">
  234. <p id="indexation-infos">
  235. <small>
  236. Seuls les contenus de ces 8 dernières années sont indexés.
  237. </small>
  238. </p>
  239. </fieldset>
  240. </form>
  241. <aside>
  242. <theme-toggle></theme-toggle>
  243. </aside>
  244. </article>
  245. <hr>
  246. <footer>
  247. <p>
  248. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  249. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  250. <a href="http://larlet.com"
  251. title="Go to my English profile"
  252. data-instant>Pro</a>
  253. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  254. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  255. </p>
  256. <template id="theme-selector">
  257. <form>
  258. <style type="text/css">
  259. fieldset div {
  260. text-align: center;
  261. }
  262. </style>
  263. <fieldset>
  264. <legend>Thème</legend>
  265. <div>
  266. <label>
  267. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  268. Auto
  269. </label>
  270. <label>
  271. <input type="radio" value="dark" name="chosen-color-scheme">
  272. Foncé
  273. </label>
  274. <label>
  275. <input type="radio" value="light" name="chosen-color-scheme">
  276. Clair
  277. </label>
  278. </div>
  279. </fieldset>
  280. </form>
  281. </template>
  282. </footer>
  283. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  284. <script>
  285. class ThemeToggle extends HTMLElement {
  286. constructor() {
  287. super()
  288. const themeSelectorTemplate = document.querySelector('#theme-selector')
  289. const form = themeSelectorTemplate.content.firstElementChild
  290. this.attachShadow({ mode: 'open' })
  291. this.shadowRoot.appendChild(form.cloneNode(true))
  292. }
  293. connectedCallback() {
  294. const form = this.shadowRoot.querySelector('form')
  295. form.addEventListener('change', (e) => {
  296. const chosenColorScheme = e.target.value
  297. localStorage.setItem('theme', chosenColorScheme)
  298. toggleTheme(chosenColorScheme)
  299. })
  300. const selectedTheme = localStorage.getItem('theme')
  301. if (selectedTheme && selectedTheme !== 'undefined') {
  302. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  303. }
  304. }
  305. }
  306. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  307. window.addEventListener('load', () => {
  308. let colorsLayer = undefined
  309. let hasDarkRules = false
  310. for (const styleSheet of Array.from(document.styleSheets)) {
  311. let mediaRules = []
  312. for (const layerRule of styleSheet.cssRules) {
  313. if (!(layerRule instanceof CSSLayerBlockRule)) {
  314. continue
  315. }
  316. if (layerRule.name === 'colors') {
  317. colorsLayer = layerRule
  318. }
  319. for (const cssRule of layerRule.cssRules) {
  320. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  321. continue
  322. }
  323. // WARNING: Safari does not have/supports `conditionText`.
  324. if (cssRule.conditionText) {
  325. if (cssRule.conditionText !== prefersColorSchemeDark) {
  326. continue
  327. }
  328. } else {
  329. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  330. continue
  331. }
  332. }
  333. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  334. }
  335. }
  336. // WARNING: do not try to insert a Rule to a styleSheet you are
  337. // currently iterating on, otherwise the browser will be stuck
  338. // in a infinite loop…
  339. for (const mediaRule of mediaRules) {
  340. // Safari requires the `0` second parameter (even if default).
  341. colorsLayer.insertRule(mediaRule.cssText, 0)
  342. hasDarkRules = true
  343. }
  344. }
  345. if (hasDarkRules) {
  346. if ('customElements' in window && !customElements.get('theme-toggle')) {
  347. customElements.define('theme-toggle', ThemeToggle)
  348. }
  349. }
  350. })
  351. </script>
  352. <script src="/static/david/js/popper-2.11.8.min.js"></script>
  353. <script src="/static/david/js/tippy-bundle-6.3.7.umd.min.js"></script>
  354. <script>
  355. tippy('[data-tippy]', {
  356. content(reference) {
  357. reference.addEventListener('click', (e) => e.preventDefault())
  358. return `
  359. <h3 lang="fr">
  360. <img src="${reference.dataset.favicon}" loading="lazy">
  361. <a href="${reference.dataset.source}"
  362. >Article sur ${reference.dataset.domain}</a></h3>
  363. <p lang="${reference.hreflang}"><em>${reference.dataset.description}</em></p>
  364. <div class="tippy-links" lang="fr">
  365. <a href="${reference.href}">Archive au ${reference.dataset.date}</a>
  366. </div>
  367. `
  368. },
  369. allowHTML: true,
  370. interactive: true,
  371. delay: [150, 700],
  372. hideOnClick: false
  373. })
  374. </script>
  375. <script type="module">
  376. import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js'
  377. const markObserver = new IntersectionObserver((entries, observer) => {
  378. const computedStyle = getComputedStyle(document.documentElement)
  379. const markBackground = computedStyle.getPropertyValue('--mark-background')
  380. for (const entry of entries) {
  381. if (entry.intersectionRatio === 0) continue
  382. const markElement = entry.target
  383. markElement.style.backgroundColor = 'inherit'
  384. const annotation = annotate(
  385. markElement, {
  386. type: 'highlight',
  387. multiline: true,
  388. color: markBackground,
  389. // animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches
  390. animate: false
  391. }
  392. )
  393. annotation.show()
  394. observer.unobserve(markElement)
  395. }
  396. }, {threshold: 1.0})
  397. for (const markElement of document.querySelectorAll('mark')) {
  398. markObserver.observe(markElement)
  399. }
  400. </script>
  401. </body>
  402. </html>