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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421
  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. Objectif
  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="C’est fou comme le fait de se donner un objectif (sportif) change la donne en terme de motivation. Pour cette année, ce sera la Traversée de Charlevoix. Je vais essayer de documenter le processus de préparation.">
  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>Objectif</h1>
  136. <p>Le <time datetime="2024-01-06">6 janvier 2024</time></p>
  137. </hgroup>
  138. </header>
  139. <nav>
  140. <p>
  141. <a rel="prev"
  142. href="/david/2024/01/05/"
  143. title="Publication précédente : Vocabulaire">← 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/07/"
  150. title="Publication suivante : Dons">Suivant →</a>
  151. </p>
  152. </nav>
  153. <p>C’est fou comme le fait de se donner un objectif (sportif) change la donne en terme de motivation. Pour cette année, ce sera la <em>Traversée de Charlevoix</em>. Je vais essayer de documenter le processus de&nbsp;préparation.</p>
  154. <a href="#hr-10" title="Lien vers cette section de la page"><hr id="hr-10" /></a>
  155. <p>Au détour d’un vieux&nbsp;chalet&nbsp;:</p>
  156. <figure>
  157. <a href="/static/david/2024/2024-01-05-la-recherche-sida.jpg"
  158. title="Cliquer pour une version haute résolution">
  159. <img
  160. src="/static/david/2024/2024-01-05-la-recherche-sida.jpg"
  161. width="4032" height="3024"
  162. srcset="/static/david/2024/2024-01-05-la-recherche-sida.jpg 4032w, /static/david/2024/2024-01-05-la-recherche-sida_660x440.jpg 660w, /static/david/2024/2024-01-05-la-recherche-sida_990x660.jpg 990w, /static/david/2024/2024-01-05-la-recherche-sida_1320x880.jpg 1320w"
  163. sizes="min(100vw, calc(100vh * 4032 / 3024))"
  164. loading="lazy"
  165. decoding="async"
  166. alt="Photo du Magazine «&nbsp;La Recherche&nbsp;» (couverture)">
  167. </a>
  168. <figcaption>La Recherche, juin 1985. Les mécanismes biologiques autour du SIDA étaient en cours de&nbsp;découverte.</figcaption>
  169. </figure>
  170. <p>D’autres temps, d’autres&nbsp;démons.</p>
  171. <a href="#hr-11" title="Lien vers cette section de la page"><hr id="hr-11" /></a>
  172. <p>Le dossier spécial sur la voiture électrique se terminait&nbsp;ainsi&nbsp;:</p>
  173. <blockquote>
  174. <p>Nous sommes loin des anticipations du début des années 1970&nbsp;qui attribuaient au véhicule électrique 7&nbsp;à 10&#8239;% du parc automobile à l’horizon 1990-1995. L’avenir même du véhicule, du moins en ce qui concerne l’étendue de son champ d’utilisation, demeure incertain. Celle-ci sera fonction des progrès qui seront réalisés sur les générateurs électrochimiques. Les filières potentiellement les plus performantes (filières chaudes, filières organiques, piles à combustibles) n’en sont encore qu’au stade de la recherche appliquée ou du développement et quelques-unes au stade de la recherche fondamentale. Mais des progrès sont enregistrés et les raisons profondes de poursuivre l’effort demeurent. <mark>Si une volonté politique s’affirme et parvient à motiver les premiers utilisateurs potentiels</mark> (administrations et grands organismes publics), on peut espérer voir sortir les premières séries industrielles de véhicules au début de la prochaine&nbsp;décennie.</p>
  175. </blockquote>
  176. <p>D’autres époques, mêmes utopies. Je vois de plus en plus de gros véhicules électriques, j’ai même croisé une JEEP l’autre fois. Tristesse du rêve&nbsp;américain.</p>
  177. <a href="#hr-12" title="Lien vers cette section de la page"><hr id="hr-12" /></a>
  178. <blockquote>
  179. <p>J’aime bien l’expression «&nbsp;sans nom&nbsp;» (genre une galère sans nom, une injustice sans nom)<br />
  180. Ça fait un peu eldritchien pour moi, genre quelque chose de si terrible qu’on ne peut pas le nommer, qu’on ne peut pas concevoir&nbsp;entièrement</p>
  181. <p>Mais aussi ça me donne l’impression que si je nomme les choses ça va régler une partie du problème c’est&nbsp;fun</p>
  182. <p>«&nbsp;ma vie était une galère sans nom c’était terrible. Bha je l’ai appelé bob et du coup depuis ça&nbsp;va&nbsp;»</p>
  183. <p><cite><a data-link-domain="pipou.academy" href="https://pipou.academy/@tiphaine/111629699683457788">@tiphaine@pipou.academy</a></cite></p>
  184. </blockquote>
  185. <nav>
  186. <p>
  187. <a href="/david/2024/addiction/"
  188. title="Liste de tous les articles 2024 associés à cette étiquette"
  189. rel="tag">#addiction</a>
  190. <a href="/david/2024/processus/"
  191. title="Liste de tous les articles 2024 associés à cette étiquette"
  192. rel="tag">#processus</a>
  193. <a href="/david/2024/sport/"
  194. title="Liste de tous les articles 2024 associés à cette étiquette"
  195. rel="tag">#sport</a>
  196. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  197. </p>
  198. </nav>
  199. <nav>
  200. <p>
  201. <a rel="prev"
  202. href="/david/2024/01/05/"
  203. title="Publication précédente : Vocabulaire">← Précédent</a> •
  204. <a href="/david/2024/" title="Liste des publications récentes">↑ En 2024</a>
  205. • <a rel="next"
  206. href="/david/2024/01/07/"
  207. title="Publication suivante : Dons">Suivant →</a>
  208. </p>
  209. </nav>
  210. <form action="/david/recherche/" method="get">
  211. <fieldset>
  212. <legend>Recherche</legend>
  213. <label for="input-search">Termes de votre recherche :</label>
  214. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  215. <input type="submit" value="Chercher">
  216. <p id="indexation-infos">
  217. <small>
  218. Seuls les contenus de ces 8 dernières années sont indexés.
  219. </small>
  220. </p>
  221. </fieldset>
  222. </form>
  223. <aside>
  224. <theme-toggle></theme-toggle>
  225. </aside>
  226. </article>
  227. <hr>
  228. <footer>
  229. <p>
  230. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  231. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  232. <a href="http://larlet.com"
  233. title="Go to my English profile"
  234. data-instant>Pro</a>
  235. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  236. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  237. </p>
  238. <template id="theme-selector">
  239. <form>
  240. <style type="text/css">
  241. fieldset div {
  242. text-align: center;
  243. }
  244. </style>
  245. <fieldset>
  246. <legend>Thème</legend>
  247. <div>
  248. <label>
  249. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  250. Auto
  251. </label>
  252. <label>
  253. <input type="radio" value="dark" name="chosen-color-scheme">
  254. Foncé
  255. </label>
  256. <label>
  257. <input type="radio" value="light" name="chosen-color-scheme">
  258. Clair
  259. </label>
  260. </div>
  261. </fieldset>
  262. </form>
  263. </template>
  264. </footer>
  265. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  266. <script>
  267. class ThemeToggle extends HTMLElement {
  268. constructor() {
  269. super()
  270. const themeSelectorTemplate = document.querySelector('#theme-selector')
  271. const form = themeSelectorTemplate.content.firstElementChild
  272. this.attachShadow({ mode: 'open' })
  273. this.shadowRoot.appendChild(form.cloneNode(true))
  274. }
  275. connectedCallback() {
  276. const form = this.shadowRoot.querySelector('form')
  277. form.addEventListener('change', (e) => {
  278. const chosenColorScheme = e.target.value
  279. localStorage.setItem('theme', chosenColorScheme)
  280. toggleTheme(chosenColorScheme)
  281. })
  282. const selectedTheme = localStorage.getItem('theme')
  283. if (selectedTheme && selectedTheme !== 'undefined') {
  284. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  285. }
  286. }
  287. }
  288. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  289. window.addEventListener('load', () => {
  290. let colorsLayer = undefined
  291. let hasDarkRules = false
  292. for (const styleSheet of Array.from(document.styleSheets)) {
  293. let mediaRules = []
  294. for (const layerRule of styleSheet.cssRules) {
  295. if (!(layerRule instanceof CSSLayerBlockRule)) {
  296. continue
  297. }
  298. if (layerRule.name === 'colors') {
  299. colorsLayer = layerRule
  300. }
  301. for (const cssRule of layerRule.cssRules) {
  302. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  303. continue
  304. }
  305. // WARNING: Safari does not have/supports `conditionText`.
  306. if (cssRule.conditionText) {
  307. if (cssRule.conditionText !== prefersColorSchemeDark) {
  308. continue
  309. }
  310. } else {
  311. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  312. continue
  313. }
  314. }
  315. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  316. }
  317. }
  318. // WARNING: do not try to insert a Rule to a styleSheet you are
  319. // currently iterating on, otherwise the browser will be stuck
  320. // in a infinite loop…
  321. for (const mediaRule of mediaRules) {
  322. // Safari requires the `0` second parameter (even if default).
  323. colorsLayer.insertRule(mediaRule.cssText, 0)
  324. hasDarkRules = true
  325. }
  326. }
  327. if (hasDarkRules) {
  328. if ('customElements' in window && !customElements.get('theme-toggle')) {
  329. customElements.define('theme-toggle', ThemeToggle)
  330. }
  331. }
  332. })
  333. </script>
  334. <script src="/static/david/js/popper-2.11.8.min.js"></script>
  335. <script src="/static/david/js/tippy-bundle-6.3.7.umd.min.js"></script>
  336. <script>
  337. tippy('[data-tippy]', {
  338. content(reference) {
  339. reference.addEventListener('click', (e) => e.preventDefault())
  340. return `
  341. <h3 lang="fr">
  342. <img src="${reference.dataset.favicon}" loading="lazy">
  343. <a href="${reference.dataset.source}"
  344. >Article sur ${reference.dataset.domain}</a></h3>
  345. <p lang="${reference.hreflang}"><em>${reference.dataset.description}</em></p>
  346. <div class="tippy-links" lang="fr">
  347. <a href="${reference.href}">Archive au ${reference.dataset.date}</a>
  348. </div>
  349. `
  350. },
  351. allowHTML: true,
  352. interactive: true,
  353. delay: [150, 700],
  354. hideOnClick: false
  355. })
  356. </script>
  357. <script type="module">
  358. import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js'
  359. const markObserver = new IntersectionObserver((entries, observer) => {
  360. const computedStyle = getComputedStyle(document.documentElement)
  361. const markBackground = computedStyle.getPropertyValue('--mark-background')
  362. for (const entry of entries) {
  363. if (entry.intersectionRatio === 0) continue
  364. const markElement = entry.target
  365. const annotation = annotate(
  366. markElement, {
  367. type: 'highlight',
  368. multiline: true,
  369. color: markBackground,
  370. animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches
  371. }
  372. )
  373. annotation.show()
  374. observer.unobserve(markElement)
  375. }
  376. }, {threshold: 1.0})
  377. for (const markElement of document.querySelectorAll('mark')) {
  378. markElement.style.backgroundColor = 'inherit'
  379. markObserver.observe(markElement)
  380. }
  381. </script>
  382. </body>
  383. </html>