Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

vor 10 Monaten
vor 8 Monaten
vor 10 Monaten
vor 10 Monaten
vor 8 Monaten
vor 10 Monaten
vor 10 Monaten
vor 9 Monaten
vor 10 Monaten
vor 8 Monaten
vor 10 Monaten
vor 10 Monaten
vor 10 Monaten
vor 8 Monaten
vor 10 Monaten
vor 8 Monaten
vor 10 Monaten
vor 9 Monaten
vor 9 Monaten
vor 9 Monaten
vor 8 Monaten
vor 8 Monaten
vor 8 Monaten
vor 8 Monaten
vor 8 Monaten
vor 8 Monaten
vor 8 Monaten
vor 9 Monaten
vor 10 Monaten
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451
  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="De la pluie verglaçante depuis 2 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 pickup qui ne dépasse pas les 70 km/h sur l’autoroute.">
  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-01-27">27 janvier 2024</time></p>
  137. </hgroup>
  138. </header>
  139. <nav>
  140. <p>
  141. <a rel="prev"
  142. href="/david/2024/01/26/"
  143. title="Publication précédente : Cargo">← 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/01/28/"
  150. title="Publication suivante : Jour 2">Suivant →</a>
  151. </p>
  152. </nav>
  153. <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>
  154. <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>
  155. <figure>
  156. <a href="/static/david/2024/2024-01-27-enfant-qui-skie.jpg"
  157. title="Cliquer pour une version haute résolution">
  158. <img
  159. src="/static/david/2024/2024-01-27-enfant-qui-skie.jpg"
  160. width="3024" height="4032"
  161. 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"
  162. sizes="min(100vw, calc(100vh * 3024 / 4032))"
  163. loading="lazy"
  164. decoding="async"
  165. alt="Un enfant en train de skier sur un chemin.">
  166. </a>
  167. <figcaption>Avant que tout ne&nbsp;dérape.</figcaption>
  168. </figure>
  169. <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>
  170. <figure>
  171. <a href="/static/david/2024/2024-01-27-attache-pulka.jpg"
  172. title="Cliquer pour une version haute résolution">
  173. <img
  174. src="/static/david/2024/2024-01-27-attache-pulka.jpg"
  175. width="2320" height="3088"
  176. 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"
  177. sizes="min(100vw, calc(100vh * 2320 / 3088))"
  178. loading="lazy"
  179. decoding="async"
  180. alt="La pulka visible depuis mon entre-jambe.">
  181. </a>
  182. <figcaption>Un point de vue&nbsp;discutable.</figcaption>
  183. </figure>
  184. <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>
  185. <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>
  186. <figure>
  187. <a href="/static/david/2024/2024-01-27-dessins-cartes.jpg"
  188. title="Cliquer pour une version haute résolution">
  189. <img
  190. src="/static/david/2024/2024-01-27-dessins-cartes.jpg"
  191. width="3024" height="4032"
  192. 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"
  193. sizes="min(100vw, calc(100vh * 3024 / 4032))"
  194. loading="lazy"
  195. decoding="async"
  196. alt="Des cartes dessinées à la bougie visible en fond.">
  197. </a>
  198. <figcaption>Le dessin à la bougie, c’est mieux à&nbsp;deux.</figcaption>
  199. </figure>
  200. <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>
  201. <figure>
  202. <a href="/static/david/2024/2024-01-27-enfant-lac.jpg"
  203. title="Cliquer pour une version haute résolution">
  204. <img
  205. src="/static/david/2024/2024-01-27-enfant-lac.jpg"
  206. width="4032" height="3024"
  207. 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"
  208. sizes="min(100vw, calc(100vh * 4032 / 3024))"
  209. loading="lazy"
  210. decoding="async"
  211. alt="Un enfant sur un lac gelé (le lac, pas l’enfant).">
  212. </a>
  213. <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>
  214. </figure>
  215. <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>
  216. <nav>
  217. <p>
  218. <a href="/david/2024/experience/"
  219. title="Liste de tous les articles 2024 associés à cette étiquette"
  220. rel="tag">#expérience</a>
  221. <a href="/david/2024/foret/"
  222. title="Liste de tous les articles 2024 associés à cette étiquette"
  223. rel="tag">#forêt</a>
  224. <a href="/david/2024/parentalite/"
  225. title="Liste de tous les articles 2024 associés à cette étiquette"
  226. rel="tag">#parentalité</a>
  227. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  228. </p>
  229. </nav>
  230. <nav>
  231. <p>
  232. <a rel="prev"
  233. href="/david/2024/01/26/"
  234. title="Publication précédente : Cargo">← Précédent</a> •
  235. <a href="/david/2024/" title="Liste des publications récentes">↑ En 2024</a>
  236. • <a rel="next"
  237. href="/david/2024/01/28/"
  238. title="Publication suivante : Jour 2">Suivant →</a>
  239. </p>
  240. </nav>
  241. <form action="/david/recherche/" method="get">
  242. <fieldset>
  243. <legend>Recherche</legend>
  244. <label for="input-search">Termes de votre recherche :</label>
  245. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  246. <input type="submit" value="Chercher">
  247. <p id="indexation-infos">
  248. <small>
  249. Seuls les contenus de ces 8 dernières années sont indexés.
  250. </small>
  251. </p>
  252. </fieldset>
  253. </form>
  254. <aside>
  255. <theme-toggle></theme-toggle>
  256. </aside>
  257. </article>
  258. <hr>
  259. <footer>
  260. <p>
  261. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  262. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  263. <a href="http://larlet.com"
  264. title="Go to my English profile"
  265. data-instant>Pro</a>
  266. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  267. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  268. </p>
  269. <template id="theme-selector">
  270. <form>
  271. <style type="text/css">
  272. fieldset div {
  273. text-align: center;
  274. }
  275. </style>
  276. <fieldset>
  277. <legend>Thème</legend>
  278. <div>
  279. <label>
  280. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  281. Auto
  282. </label>
  283. <label>
  284. <input type="radio" value="dark" name="chosen-color-scheme">
  285. Foncé
  286. </label>
  287. <label>
  288. <input type="radio" value="light" name="chosen-color-scheme">
  289. Clair
  290. </label>
  291. </div>
  292. </fieldset>
  293. </form>
  294. </template>
  295. </footer>
  296. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  297. <script>
  298. class ThemeToggle extends HTMLElement {
  299. constructor() {
  300. super()
  301. const themeSelectorTemplate = document.querySelector('#theme-selector')
  302. const form = themeSelectorTemplate.content.firstElementChild
  303. this.attachShadow({ mode: 'open' })
  304. this.shadowRoot.appendChild(form.cloneNode(true))
  305. }
  306. connectedCallback() {
  307. const form = this.shadowRoot.querySelector('form')
  308. form.addEventListener('change', (e) => {
  309. const chosenColorScheme = e.target.value
  310. localStorage.setItem('theme', chosenColorScheme)
  311. toggleTheme(chosenColorScheme)
  312. })
  313. const selectedTheme = localStorage.getItem('theme')
  314. if (selectedTheme && selectedTheme !== 'undefined') {
  315. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  316. }
  317. }
  318. }
  319. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  320. window.addEventListener('load', () => {
  321. let colorsLayer = undefined
  322. let hasDarkRules = false
  323. for (const styleSheet of Array.from(document.styleSheets)) {
  324. let mediaRules = []
  325. for (const layerRule of styleSheet.cssRules) {
  326. if (!(layerRule instanceof CSSLayerBlockRule)) {
  327. continue
  328. }
  329. if (layerRule.name === 'colors') {
  330. colorsLayer = layerRule
  331. }
  332. for (const cssRule of layerRule.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. }
  349. // WARNING: do not try to insert a Rule to a styleSheet you are
  350. // currently iterating on, otherwise the browser will be stuck
  351. // in a infinite loop…
  352. for (const mediaRule of mediaRules) {
  353. // Safari requires the `0` second parameter (even if default).
  354. colorsLayer.insertRule(mediaRule.cssText, 0)
  355. hasDarkRules = true
  356. }
  357. }
  358. if (hasDarkRules) {
  359. if ('customElements' in window && !customElements.get('theme-toggle')) {
  360. customElements.define('theme-toggle', ThemeToggle)
  361. }
  362. }
  363. })
  364. </script>
  365. <script src="/static/david/js/popper-2.11.8.min.js"></script>
  366. <script src="/static/david/js/tippy-bundle-6.3.7.umd.min.js"></script>
  367. <script>
  368. tippy('[data-tippy]', {
  369. content(reference) {
  370. reference.addEventListener('click', (e) => e.preventDefault())
  371. return `
  372. <h3 lang="fr">
  373. <img src="${reference.dataset.favicon}" loading="lazy">
  374. <a href="${reference.dataset.source}"
  375. >Article sur ${reference.dataset.domain}</a></h3>
  376. <p lang="${reference.hreflang}"><em>${reference.dataset.description}</em></p>
  377. <div class="tippy-links" lang="fr">
  378. <a href="${reference.href}">Archive au ${reference.dataset.date}</a>
  379. </div>
  380. `
  381. },
  382. allowHTML: true,
  383. interactive: true,
  384. delay: [150, 700],
  385. hideOnClick: false
  386. })
  387. </script>
  388. <script type="module">
  389. import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js'
  390. const markObserver = new IntersectionObserver((entries, observer) => {
  391. const computedStyle = getComputedStyle(document.documentElement)
  392. const markBackground = computedStyle.getPropertyValue('--mark-background')
  393. for (const entry of entries) {
  394. if (entry.intersectionRatio === 0) continue
  395. const markElement = entry.target
  396. markElement.style.backgroundColor = 'inherit'
  397. const annotation = annotate(
  398. markElement, {
  399. type: 'highlight',
  400. multiline: true,
  401. color: markBackground,
  402. // animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches
  403. animate: false
  404. }
  405. )
  406. annotation.show()
  407. observer.unobserve(markElement)
  408. }
  409. }, {threshold: 1.0})
  410. for (const markElement of document.querySelectorAll('mark')) {
  411. markObserver.observe(markElement)
  412. }
  413. </script>
  414. </body>
  415. </html>