Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

index.html 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  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. <!-- To get attribution when linking on mastodon. -->
  106. <meta name="fediverse:creator" content="@david@larlet.fr">
  107. <style type="text/css">
  108. .tippy-content {
  109. min-width: 280px;
  110. padding: .5rem;
  111. font-size: calc(var(--fluid-0) * 0.8);
  112. font-family: var(--labor-font);
  113. letter-spacing: initial;
  114. text-align: left;
  115. }
  116. .tippy-content h3 {
  117. margin-top: 0;
  118. }
  119. .tippy-content h3 img {
  120. max-width: 2rem;
  121. max-height: 2rem;
  122. display: inline-block;
  123. }
  124. .tippy-content .tippy-links {
  125. display: flex;
  126. justify-content: space-around;
  127. }
  128. .tippy-content a {
  129. padding: .4rem;
  130. color: #F06048;
  131. }
  132. </style>
  133. <body data-instant-intensity="viewport-all">
  134. <article>
  135. <header>
  136. <hgroup>
  137. <h1>Objectif</h1>
  138. <p>Le <time datetime="2024-01-06">6 janvier 2024</time></p>
  139. </hgroup>
  140. </header>
  141. <nav>
  142. <p>
  143. <a rel="prev"
  144. href="/david/2024/01/05/"
  145. title="Publication précédente : Vocabulaire">← Précédent</a> •
  146. <a href="/david/" title="Aller à l’accueil" rel="up">Accueil</a>
  147. <a href="/david/recherche/"
  148. title="Aller à la page de recherche"
  149. rel="search" data-no-instant>Recherche</a>
  150. • <a rel="next"
  151. href="/david/2024/01/07/"
  152. title="Publication suivante : Dons">Suivant →</a>
  153. </p>
  154. </nav>
  155. <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>
  156. <a href="#hr-10" title="Lien vers cette section de la page"><hr id="hr-10" /></a>
  157. <p>Au détour d’un vieux&nbsp;chalet&nbsp;:</p>
  158. <figure>
  159. <a href="/static/david/2024/2024-01-05-la-recherche-sida.jpg"
  160. title="Cliquer pour une version haute résolution">
  161. <img
  162. src="/static/david/2024/2024-01-05-la-recherche-sida.jpg"
  163. width="4032" height="3024"
  164. 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"
  165. sizes="min(100vw, calc(100vh * 4032 / 3024))"
  166. loading="lazy"
  167. decoding="async"
  168. alt="Photo du Magazine «&nbsp;La Recherche&nbsp;» (couverture)">
  169. </a>
  170. <figcaption>La Recherche, juin 1985. Les mécanismes biologiques autour du SIDA étaient en cours de&nbsp;découverte.</figcaption>
  171. </figure>
  172. <p>D’autres temps, d’autres&nbsp;démons.</p>
  173. <a href="#hr-11" title="Lien vers cette section de la page"><hr id="hr-11" /></a>
  174. <p>Le dossier spécial sur la voiture électrique se terminait&nbsp;ainsi&nbsp;:</p>
  175. <blockquote>
  176. <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>
  177. </blockquote>
  178. <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>
  179. <a href="#hr-12" title="Lien vers cette section de la page"><hr id="hr-12" /></a>
  180. <blockquote>
  181. <p>J’aime bien l’expression «&nbsp;sans nom&nbsp;» (genre une galère sans nom, une injustice sans nom)<br />
  182. Ç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>
  183. <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>
  184. <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>
  185. <p><cite><a data-link-domain="pipou.academy" href="https://pipou.academy/@tiphaine/111629699683457788">@tiphaine@pipou.academy</a></cite></p>
  186. </blockquote>
  187. <nav>
  188. <p>
  189. <a href="/david/2024/addiction/"
  190. title="Liste de tous les articles 2024 associés à cette étiquette"
  191. rel="tag">#addiction</a>
  192. <a href="/david/2024/processus/"
  193. title="Liste de tous les articles 2024 associés à cette étiquette"
  194. rel="tag">#processus</a>
  195. <a href="/david/2024/sport/"
  196. title="Liste de tous les articles 2024 associés à cette étiquette"
  197. rel="tag">#sport</a>
  198. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  199. </p>
  200. </nav>
  201. <nav>
  202. <p>
  203. <a rel="prev"
  204. href="/david/2024/01/05/"
  205. title="Publication précédente : Vocabulaire">← Précédent</a> •
  206. <a href="/david/2024/" title="Liste des publications récentes">↑ En 2024</a>
  207. • <a rel="next"
  208. href="/david/2024/01/07/"
  209. title="Publication suivante : Dons">Suivant →</a>
  210. </p>
  211. </nav>
  212. <form action="/david/recherche/" method="get">
  213. <fieldset>
  214. <legend>Recherche</legend>
  215. <label for="input-search">Termes de votre recherche :</label>
  216. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  217. <input type="submit" value="Chercher">
  218. <p id="indexation-infos">
  219. <small>
  220. Seuls les contenus de ces 8 dernières années sont indexés.
  221. </small>
  222. </p>
  223. </fieldset>
  224. </form>
  225. <aside>
  226. <theme-toggle></theme-toggle>
  227. </aside>
  228. </article>
  229. <hr>
  230. <footer>
  231. <p>
  232. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  233. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  234. <a href="http://larlet.com"
  235. title="Go to my English profile"
  236. data-instant>Pro</a>
  237. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  238. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  239. </p>
  240. <template id="theme-selector">
  241. <form>
  242. <style type="text/css">
  243. fieldset div {
  244. text-align: center;
  245. }
  246. </style>
  247. <fieldset>
  248. <legend>Thème</legend>
  249. <div>
  250. <label>
  251. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  252. Auto
  253. </label>
  254. <label>
  255. <input type="radio" value="dark" name="chosen-color-scheme">
  256. Foncé
  257. </label>
  258. <label>
  259. <input type="radio" value="light" name="chosen-color-scheme">
  260. Clair
  261. </label>
  262. </div>
  263. </fieldset>
  264. </form>
  265. </template>
  266. </footer>
  267. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  268. <script>
  269. class ThemeToggle extends HTMLElement {
  270. constructor() {
  271. super()
  272. const themeSelectorTemplate = document.querySelector('#theme-selector')
  273. const form = themeSelectorTemplate.content.firstElementChild
  274. this.attachShadow({ mode: 'open' })
  275. this.shadowRoot.appendChild(form.cloneNode(true))
  276. }
  277. connectedCallback() {
  278. const form = this.shadowRoot.querySelector('form')
  279. form.addEventListener('change', (e) => {
  280. const chosenColorScheme = e.target.value
  281. localStorage.setItem('theme', chosenColorScheme)
  282. toggleTheme(chosenColorScheme)
  283. })
  284. const selectedTheme = localStorage.getItem('theme')
  285. if (selectedTheme && selectedTheme !== 'undefined') {
  286. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  287. }
  288. }
  289. }
  290. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  291. window.addEventListener('load', () => {
  292. let colorsLayer = undefined
  293. let hasDarkRules = false
  294. for (const styleSheet of Array.from(document.styleSheets)) {
  295. let mediaRules = []
  296. for (const layerRule of styleSheet.cssRules) {
  297. if (!(layerRule instanceof CSSLayerBlockRule)) {
  298. continue
  299. }
  300. if (layerRule.name === 'colors') {
  301. colorsLayer = layerRule
  302. }
  303. for (const cssRule of layerRule.cssRules) {
  304. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  305. continue
  306. }
  307. // WARNING: Safari does not have/supports `conditionText`.
  308. if (cssRule.conditionText) {
  309. if (cssRule.conditionText !== prefersColorSchemeDark) {
  310. continue
  311. }
  312. } else {
  313. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  314. continue
  315. }
  316. }
  317. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  318. }
  319. }
  320. // WARNING: do not try to insert a Rule to a styleSheet you are
  321. // currently iterating on, otherwise the browser will be stuck
  322. // in a infinite loop…
  323. for (const mediaRule of mediaRules) {
  324. // Safari requires the `0` second parameter (even if default).
  325. colorsLayer.insertRule(mediaRule.cssText, 0)
  326. hasDarkRules = true
  327. }
  328. }
  329. if (hasDarkRules) {
  330. if ('customElements' in window && !customElements.get('theme-toggle')) {
  331. customElements.define('theme-toggle', ThemeToggle)
  332. }
  333. }
  334. })
  335. </script>
  336. <script src="/static/david/js/popper-2.11.8.min.js"></script>
  337. <script src="/static/david/js/tippy-bundle-6.3.7.umd.min.js"></script>
  338. <script>
  339. tippy('[data-tippy]', {
  340. content(reference) {
  341. reference.addEventListener('click', (e) => e.preventDefault())
  342. return `
  343. <h3 lang="fr">
  344. <img src="${reference.dataset.favicon}" loading="lazy">
  345. <a href="${reference.dataset.source}"
  346. >Article sur ${reference.dataset.domain}</a></h3>
  347. <p lang="${reference.hreflang}"><em>${reference.dataset.description}</em></p>
  348. <div class="tippy-links" lang="fr">
  349. <a href="${reference.href}">Archive au ${reference.dataset.date}</a>
  350. </div>
  351. `
  352. },
  353. allowHTML: true,
  354. interactive: true,
  355. delay: [150, 700],
  356. hideOnClick: false
  357. })
  358. </script>
  359. <script type="module">
  360. import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js'
  361. const markObserver = new IntersectionObserver((entries, observer) => {
  362. const computedStyle = getComputedStyle(document.documentElement)
  363. const markBackground = computedStyle.getPropertyValue('--mark-background')
  364. for (const entry of entries) {
  365. if (entry.intersectionRatio === 0) continue
  366. const markElement = entry.target
  367. markElement.style.backgroundColor = 'inherit'
  368. const annotation = annotate(
  369. markElement, {
  370. type: 'highlight',
  371. multiline: true,
  372. color: markBackground,
  373. // animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches
  374. animate: false
  375. }
  376. )
  377. annotation.show()
  378. observer.unobserve(markElement)
  379. }
  380. }, {threshold: 1.0})
  381. for (const markElement of document.querySelectorAll('mark')) {
  382. markObserver.observe(markElement)
  383. }
  384. </script>
  385. </body>
  386. </html>