Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

index.html 45KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824
  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. Accueil
  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="Voici l’espace personnel de David Larlet sur le Web.">
  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. <body data-instant-intensity="viewport-all">
  108. <article>
  109. <header>
  110. <hgroup>
  111. <h1>David Larlet</h1>
  112. <p>Avant Facebook, il y avait les sites perso.</p>
  113. </hgroup>
  114. </header>
  115. <h2>Bienvenue</h2>
  116. <p>
  117. Voici mon espace sur le Web.
  118. C’est un jardin pour faire pousser mes idées,
  119. une boîte à chaussure pour mes souvenirs,
  120. la forêt de mes réflexions plus ou moins enchevêtrées,
  121. les métaphores ne manquent pas.
  122. Je vous souhaite de vous y perdre, de revenir,
  123. d’engager des échanges, d’être en désaccord,
  124. d’improviser une rencontre
  125. et que l’on finisse par s’échanger nos meilleures recettes.
  126. </p>
  127. <p>
  128. Souvent je <a href="https://code.larlet.fr/">code</a>,
  129. parfois je vais <a href="https://nature.larlet.fr/">en forêt</a>
  130. et il m’arrive même de prendre <a href="https://media.larlet.fr/">des photos</a>.
  131. On peut papoter <a href="https://fedi.larlet.fr/@david">sur mastodon</a>
  132. ou <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">par courriel</a>.
  133. Vous pouvez <a href="/david/log/" title="Accès au flux RSS">suivre les publications</a>
  134. grâce au flux RSS/Atom (<a href="/david/blog/2019/flux-rss/">explications</a>).
  135. </p>
  136. <p lang="en">
  137. <em>
  138. Check out my
  139. <a href="http://larlet.com" data-instant>profile in English</a>🇨🇦
  140. for up-to-date professional informations.
  141. </em>
  142. </p>
  143. <h2>Publications 2024</h2>
  144. <style type="text/css">
  145. body [data-tag="accessibilite"]:hover,
  146. body [data-accessibilite]:hover,
  147. body:has([data-tag="accessibilite"]:hover) [data-accessibilite],
  148. body:has([data-accessibilite]:hover) [data-tag="accessibilite"] {
  149. background-color: var(--hover-tag-color);
  150. }
  151. body [data-tag="accompagnement"]:hover,
  152. body [data-accompagnement]:hover,
  153. body:has([data-tag="accompagnement"]:hover) [data-accompagnement],
  154. body:has([data-accompagnement]:hover) [data-tag="accompagnement"] {
  155. background-color: var(--hover-tag-color);
  156. }
  157. body [data-tag="adaptation"]:hover,
  158. body [data-adaptation]:hover,
  159. body:has([data-tag="adaptation"]:hover) [data-adaptation],
  160. body:has([data-adaptation]:hover) [data-tag="adaptation"] {
  161. background-color: var(--hover-tag-color);
  162. }
  163. body [data-tag="addiction"]:hover,
  164. body [data-addiction]:hover,
  165. body:has([data-tag="addiction"]:hover) [data-addiction],
  166. body:has([data-addiction]:hover) [data-tag="addiction"] {
  167. background-color: var(--hover-tag-color);
  168. }
  169. body [data-tag="apprentissage"]:hover,
  170. body [data-apprentissage]:hover,
  171. body:has([data-tag="apprentissage"]:hover) [data-apprentissage],
  172. body:has([data-apprentissage]:hover) [data-tag="apprentissage"] {
  173. background-color: var(--hover-tag-color);
  174. }
  175. body [data-tag="aventure"]:hover,
  176. body [data-aventure]:hover,
  177. body:has([data-tag="aventure"]:hover) [data-aventure],
  178. body:has([data-aventure]:hover) [data-tag="aventure"] {
  179. background-color: var(--hover-tag-color);
  180. }
  181. body [data-tag="biologie"]:hover,
  182. body [data-biologie]:hover,
  183. body:has([data-tag="biologie"]:hover) [data-biologie],
  184. body:has([data-biologie]:hover) [data-tag="biologie"] {
  185. background-color: var(--hover-tag-color);
  186. }
  187. body [data-tag="cinema"]:hover,
  188. body [data-cinema]:hover,
  189. body:has([data-tag="cinema"]:hover) [data-cinema],
  190. body:has([data-cinema]:hover) [data-tag="cinema"] {
  191. background-color: var(--hover-tag-color);
  192. }
  193. body [data-tag="commun"]:hover,
  194. body [data-commun]:hover,
  195. body:has([data-tag="commun"]:hover) [data-commun],
  196. body:has([data-commun]:hover) [data-tag="commun"] {
  197. background-color: var(--hover-tag-color);
  198. }
  199. body [data-tag="communaute"]:hover,
  200. body [data-communaute]:hover,
  201. body:has([data-tag="communaute"]:hover) [data-communaute],
  202. body:has([data-communaute]:hover) [data-tag="communaute"] {
  203. background-color: var(--hover-tag-color);
  204. }
  205. body [data-tag="courage"]:hover,
  206. body [data-courage]:hover,
  207. body:has([data-tag="courage"]:hover) [data-courage],
  208. body:has([data-courage]:hover) [data-tag="courage"] {
  209. background-color: var(--hover-tag-color);
  210. }
  211. body [data-tag="decentralisation"]:hover,
  212. body [data-decentralisation]:hover,
  213. body:has([data-tag="decentralisation"]:hover) [data-decentralisation],
  214. body:has([data-decentralisation]:hover) [data-tag="decentralisation"] {
  215. background-color: var(--hover-tag-color);
  216. }
  217. body [data-tag="deception"]:hover,
  218. body [data-deception]:hover,
  219. body:has([data-tag="deception"]:hover) [data-deception],
  220. body:has([data-deception]:hover) [data-tag="deception"] {
  221. background-color: var(--hover-tag-color);
  222. }
  223. body [data-tag="decision"]:hover,
  224. body [data-decision]:hover,
  225. body:has([data-tag="decision"]:hover) [data-decision],
  226. body:has([data-decision]:hover) [data-tag="decision"] {
  227. background-color: var(--hover-tag-color);
  228. }
  229. body [data-tag="dependance"]:hover,
  230. body [data-dependance]:hover,
  231. body:has([data-tag="dependance"]:hover) [data-dependance],
  232. body:has([data-dependance]:hover) [data-tag="dependance"] {
  233. background-color: var(--hover-tag-color);
  234. }
  235. body [data-tag="documentation"]:hover,
  236. body [data-documentation]:hover,
  237. body:has([data-tag="documentation"]:hover) [data-documentation],
  238. body:has([data-documentation]:hover) [data-tag="documentation"] {
  239. background-color: var(--hover-tag-color);
  240. }
  241. body [data-tag="dystopie"]:hover,
  242. body [data-dystopie]:hover,
  243. body:has([data-tag="dystopie"]:hover) [data-dystopie],
  244. body:has([data-dystopie]:hover) [data-tag="dystopie"] {
  245. background-color: var(--hover-tag-color);
  246. }
  247. body [data-tag="echanges"]:hover,
  248. body [data-echanges]:hover,
  249. body:has([data-tag="echanges"]:hover) [data-echanges],
  250. body:has([data-echanges]:hover) [data-tag="echanges"] {
  251. background-color: var(--hover-tag-color);
  252. }
  253. body [data-tag="ecriture"]:hover,
  254. body [data-ecriture]:hover,
  255. body:has([data-tag="ecriture"]:hover) [data-ecriture],
  256. body:has([data-ecriture]:hover) [data-tag="ecriture"] {
  257. background-color: var(--hover-tag-color);
  258. }
  259. body [data-tag="enthousiasme"]:hover,
  260. body [data-enthousiasme]:hover,
  261. body:has([data-tag="enthousiasme"]:hover) [data-enthousiasme],
  262. body:has([data-enthousiasme]:hover) [data-tag="enthousiasme"] {
  263. background-color: var(--hover-tag-color);
  264. }
  265. body [data-tag="equipe"]:hover,
  266. body [data-equipe]:hover,
  267. body:has([data-tag="equipe"]:hover) [data-equipe],
  268. body:has([data-equipe]:hover) [data-tag="equipe"] {
  269. background-color: var(--hover-tag-color);
  270. }
  271. body [data-tag="evolution"]:hover,
  272. body [data-evolution]:hover,
  273. body:has([data-tag="evolution"]:hover) [data-evolution],
  274. body:has([data-evolution]:hover) [data-tag="evolution"] {
  275. background-color: var(--hover-tag-color);
  276. }
  277. body [data-tag="experience"]:hover,
  278. body [data-experience]:hover,
  279. body:has([data-tag="experience"]:hover) [data-experience],
  280. body:has([data-experience]:hover) [data-tag="experience"] {
  281. background-color: var(--hover-tag-color);
  282. }
  283. body [data-tag="fediverse"]:hover,
  284. body [data-fediverse]:hover,
  285. body:has([data-tag="fediverse"]:hover) [data-fediverse],
  286. body:has([data-fediverse]:hover) [data-tag="fediverse"] {
  287. background-color: var(--hover-tag-color);
  288. }
  289. body [data-tag="foret"]:hover,
  290. body [data-foret]:hover,
  291. body:has([data-tag="foret"]:hover) [data-foret],
  292. body:has([data-foret]:hover) [data-tag="foret"] {
  293. background-color: var(--hover-tag-color);
  294. }
  295. body [data-tag="gratitude"]:hover,
  296. body [data-gratitude]:hover,
  297. body:has([data-tag="gratitude"]:hover) [data-gratitude],
  298. body:has([data-gratitude]:hover) [data-tag="gratitude"] {
  299. background-color: var(--hover-tag-color);
  300. }
  301. body [data-tag="ia"]:hover,
  302. body [data-ia]:hover,
  303. body:has([data-tag="ia"]:hover) [data-ia],
  304. body:has([data-ia]:hover) [data-tag="ia"] {
  305. background-color: var(--hover-tag-color);
  306. }
  307. body [data-tag="identite"]:hover,
  308. body [data-identite]:hover,
  309. body:has([data-tag="identite"]:hover) [data-identite],
  310. body:has([data-identite]:hover) [data-tag="identite"] {
  311. background-color: var(--hover-tag-color);
  312. }
  313. body [data-tag="introspection"]:hover,
  314. body [data-introspection]:hover,
  315. body:has([data-tag="introspection"]:hover) [data-introspection],
  316. body:has([data-introspection]:hover) [data-tag="introspection"] {
  317. background-color: var(--hover-tag-color);
  318. }
  319. body [data-tag="laboratoire"]:hover,
  320. body [data-laboratoire]:hover,
  321. body:has([data-tag="laboratoire"]:hover) [data-laboratoire],
  322. body:has([data-laboratoire]:hover) [data-tag="laboratoire"] {
  323. background-color: var(--hover-tag-color);
  324. }
  325. body [data-tag="lecture"]:hover,
  326. body [data-lecture]:hover,
  327. body:has([data-tag="lecture"]:hover) [data-lecture],
  328. body:has([data-lecture]:hover) [data-tag="lecture"] {
  329. background-color: var(--hover-tag-color);
  330. }
  331. body [data-tag="liens"]:hover,
  332. body [data-liens]:hover,
  333. body:has([data-tag="liens"]:hover) [data-liens],
  334. body:has([data-liens]:hover) [data-tag="liens"] {
  335. background-color: var(--hover-tag-color);
  336. }
  337. body [data-tag="opendata"]:hover,
  338. body [data-opendata]:hover,
  339. body:has([data-tag="opendata"]:hover) [data-opendata],
  340. body:has([data-opendata]:hover) [data-tag="opendata"] {
  341. background-color: var(--hover-tag-color);
  342. }
  343. body [data-tag="opensource"]:hover,
  344. body [data-opensource]:hover,
  345. body:has([data-tag="opensource"]:hover) [data-opensource],
  346. body:has([data-opensource]:hover) [data-tag="opensource"] {
  347. background-color: var(--hover-tag-color);
  348. }
  349. body [data-tag="parentalite"]:hover,
  350. body [data-parentalite]:hover,
  351. body:has([data-tag="parentalite"]:hover) [data-parentalite],
  352. body:has([data-parentalite]:hover) [data-tag="parentalite"] {
  353. background-color: var(--hover-tag-color);
  354. }
  355. body [data-tag="partage"]:hover,
  356. body [data-partage]:hover,
  357. body:has([data-tag="partage"]:hover) [data-partage],
  358. body:has([data-partage]:hover) [data-tag="partage"] {
  359. background-color: var(--hover-tag-color);
  360. }
  361. body [data-tag="parvenir"]:hover,
  362. body [data-parvenir]:hover,
  363. body:has([data-tag="parvenir"]:hover) [data-parvenir],
  364. body:has([data-parvenir]:hover) [data-tag="parvenir"] {
  365. background-color: var(--hover-tag-color);
  366. }
  367. body [data-tag="photographie"]:hover,
  368. body [data-photographie]:hover,
  369. body:has([data-tag="photographie"]:hover) [data-photographie],
  370. body:has([data-photographie]:hover) [data-tag="photographie"] {
  371. background-color: var(--hover-tag-color);
  372. }
  373. body [data-tag="poesie"]:hover,
  374. body [data-poesie]:hover,
  375. body:has([data-tag="poesie"]:hover) [data-poesie],
  376. body:has([data-poesie]:hover) [data-tag="poesie"] {
  377. background-color: var(--hover-tag-color);
  378. }
  379. body [data-tag="processus"]:hover,
  380. body [data-processus]:hover,
  381. body:has([data-tag="processus"]:hover) [data-processus],
  382. body:has([data-processus]:hover) [data-tag="processus"] {
  383. background-color: var(--hover-tag-color);
  384. }
  385. body [data-tag="propriete"]:hover,
  386. body [data-propriete]:hover,
  387. body:has([data-tag="propriete"]:hover) [data-propriete],
  388. body:has([data-propriete]:hover) [data-tag="propriete"] {
  389. background-color: var(--hover-tag-color);
  390. }
  391. body [data-tag="protopie"]:hover,
  392. body [data-protopie]:hover,
  393. body:has([data-tag="protopie"]:hover) [data-protopie],
  394. body:has([data-protopie]:hover) [data-tag="protopie"] {
  395. background-color: var(--hover-tag-color);
  396. }
  397. body [data-tag="psychologie"]:hover,
  398. body [data-psychologie]:hover,
  399. body:has([data-tag="psychologie"]:hover) [data-psychologie],
  400. body:has([data-psychologie]:hover) [data-tag="psychologie"] {
  401. background-color: var(--hover-tag-color);
  402. }
  403. body [data-tag="solastalgia"]:hover,
  404. body [data-solastalgia]:hover,
  405. body:has([data-tag="solastalgia"]:hover) [data-solastalgia],
  406. body:has([data-solastalgia]:hover) [data-tag="solastalgia"] {
  407. background-color: var(--hover-tag-color);
  408. }
  409. body [data-tag="sport"]:hover,
  410. body [data-sport]:hover,
  411. body:has([data-tag="sport"]:hover) [data-sport],
  412. body:has([data-sport]:hover) [data-tag="sport"] {
  413. background-color: var(--hover-tag-color);
  414. }
  415. body [data-tag="technique"]:hover,
  416. body [data-technique]:hover,
  417. body:has([data-tag="technique"]:hover) [data-technique],
  418. body:has([data-technique]:hover) [data-tag="technique"] {
  419. background-color: var(--hover-tag-color);
  420. }
  421. body [data-tag="velo"]:hover,
  422. body [data-velo]:hover,
  423. body:has([data-tag="velo"]:hover) [data-velo],
  424. body:has([data-velo]:hover) [data-tag="velo"] {
  425. background-color: var(--hover-tag-color);
  426. }
  427. body [data-tag="web"]:hover,
  428. body [data-web]:hover,
  429. body:has([data-tag="web"]:hover) [data-web],
  430. body:has([data-web]:hover) [data-tag="web"] {
  431. background-color: var(--hover-tag-color);
  432. }
  433. </style>
  434. <p>Liste des publications récentes en ordre anté-chronologique :</p>
  435. <p>
  436. <a href="/david/2024/09/30/" data-adaptation data-ecriture data-ia title="Étiquettes : adaptation, écriture, IA.">Vain</a>,
  437. <a href="/david/2024/08/10/" data-experience data-psychologie data-sport title="Étiquettes : expérience, psychologie, sport.">Kudopamine</a>,
  438. <a href="/david/2024/06/28/" data-ecriture data-ia data-parvenir title="Étiquettes : écriture, IA, parvenir.">CompAIgnon</a>,
  439. <a href="/david/2024/06/22/" data-biologie data-foret data-laboratoire title="Étiquettes : biologie, forêt, laboratoire.">Jour 2</a>,
  440. <a href="/david/2024/06/21/" data-ecriture data-foret data-introspection title="Étiquettes : écriture, forêt, introspection.">Jour 1</a>,
  441. <a href="/david/2024/06/20/" data-commun data-introspection data-psychologie title="Étiquettes : commun, introspection, psychologie.">Auto-promotion</a>,
  442. <a href="/david/2024/06/09/" data-evolution data-processus data-protopie title="Étiquettes : évolution, processus, protopie.">Possibilités</a>,
  443. <a href="/david/2024/06/06/" data-deception data-experience data-introspection title="Étiquettes : déception, expérience, introspection.">Sensibilité</a>,
  444. <a href="/david/2024/05/31/" data-apprentissage data-deception data-dystopie title="Étiquettes : apprentissage, déception, dystopie.">Technocritique</a>,
  445. <a href="/david/2024/05/24/" data-evolution data-liens data-web title="Étiquettes : évolution, liens, web.">Tout</a>,
  446. <a href="/david/2024/05/20/" data-apprentissage data-documentation data-liens title="Étiquettes : apprentissage, documentation, liens.">Stimulations</a>,
  447. <a href="/david/2024/05/13/" data-ecriture data-lecture data-psychologie title="Étiquettes : écriture, lecture, psychologie.">Tensions</a>,
  448. <a href="/david/2024/05/12/" data-apprentissage data-introspection data-psychologie title="Étiquettes : apprentissage, introspection, psychologie.">Alien</a>,
  449. <a href="/david/2024/05/10/" data-enthousiasme data-parentalite data-photographie title="Étiquettes : enthousiasme, parentalité, photographie.">Aurores</a>,
  450. <a href="/david/2024/05/05/" data-aventure data-foret data-sport title="Étiquettes : aventure, forêt, sport.">Jour 2</a>,
  451. <a href="/david/2024/05/04/" data-aventure data-foret data-sport title="Étiquettes : aventure, forêt, sport.">Jour 1</a>,
  452. <a href="/david/2024/04/23/" data-experience data-gratitude data-introspection title="Étiquettes : expérience, gratitude, introspection.">42</a>,
  453. <a href="/david/2024/04/22/" data-adaptation data-laboratoire data-sport title="Étiquettes : adaptation, laboratoire, sport.">Alimentation</a>,
  454. <a href="/david/2024/04/20/" data-apprentissage data-deception data-foret title="Étiquettes : apprentissage, déception, forêt.">Jour 1</a>,
  455. <a href="/david/2024/04/18/" data-apprentissage data-introspection data-technique title="Étiquettes : apprentissage, introspection, technique.">Calme</a>,
  456. <a href="/david/2024/04/17/" data-commun data-decentralisation data-protopie title="Étiquettes : commun, décentralisation, protopie.">Échelle</a>,
  457. <a href="/david/2024/04/14/" data-enthousiasme data-laboratoire data-sport title="Étiquettes : enthousiasme, laboratoire, sport.">Apex 2</a>,
  458. <a href="/david/2024/04/13/" data-dystopie data-lecture data-psychologie title="Étiquettes : dystopie, lecture, psychologie.">Fondation</a>,
  459. <a href="/david/2024/04/10/" data-communaute data-poesie data-psychologie title="Étiquettes : communauté, poésie, psychologie.">Weird</a>,
  460. <a href="/david/2024/04/08/" data-enthousiasme data-experience data-photographie title="Étiquettes : enthousiasme, expérience, photographie.">Éclipse</a>,
  461. <a href="/david/2024/04/07/" data-courage data-sport data-technique title="Étiquettes : courage, sport, technique.">Piscine</a>,
  462. <a href="/david/2024/04/05/" data-documentation data-experience data-psychologie title="Étiquettes : documentation, expérience, psychologie.">Productivité</a>,
  463. <a href="/david/2024/04/03/" data-equipe data-experience data-gratitude title="Étiquettes : équipe, expérience, gratitude.">Décision</a>,
  464. <a href="/david/2024/04/02/" data-commun data-opensource data-protopie title="Étiquettes : commun, opensource, protopie.">Porte</a>,
  465. <a href="/david/2024/03/30/" data-experience data-foret data-partage title="Étiquettes : expérience, forêt, partage.">Jour 2</a>,
  466. <a href="/david/2024/03/29/" data-experience data-foret data-partage title="Étiquettes : expérience, forêt, partage.">Jour 1</a>,
  467. <a href="/david/2024/03/28/" data-commun data-equipe data-protopie title="Étiquettes : commun, équipe, protopie.">Collectif</a>,
  468. <a href="/david/2024/03/26/" data-apprentissage data-technique data-web title="Étiquettes : apprentissage, technique, web.">GPX Viewer</a>,
  469. <a href="/david/2024/03/25/" data-dependance data-partage data-technique title="Étiquettes : dépendance, partage, technique.">Inclusion</a>,
  470. <a href="/david/2024/03/24/" data-courage data-lecture data-poesie title="Étiquettes : courage, lecture, poésie.">Cage</a>,
  471. <a href="/david/2024/03/23/" data-dependance data-psychologie data-technique title="Étiquettes : dépendance, psychologie, technique.">Intendant</a>,
  472. <a href="/david/2024/03/21/" data-communaute data-opensource data-technique title="Étiquettes : communauté, opensource, technique.">Fourchette</a>,
  473. <a href="/david/2024/03/20/" data-laboratoire data-opensource data-technique title="Étiquettes : laboratoire, opensource, technique.">PageCrypt</a>,
  474. <a href="/david/2024/03/19/" data-apprentissage data-enthousiasme data-technique title="Étiquettes : apprentissage, enthousiasme, technique.">Excitation</a>,
  475. <a href="/david/2024/03/18/" data-adaptation data-addiction data-evolution title="Étiquettes : adaptation, addiction, évolution.">Casquettes</a>,
  476. <a href="/david/2024/03/16/" data-aventure data-ecriture data-lecture title="Étiquettes : aventure, écriture, lecture.">Descriptions</a>,
  477. <a href="/david/2024/03/14/" data-deception data-enthousiasme data-sport title="Étiquettes : déception, enthousiasme, sport.">Montre 2</a>,
  478. <a href="/david/2024/03/13/" data-liens data-partage data-web title="Étiquettes : liens, partage, web.">Sérendipité</a>,
  479. <a href="/david/2024/03/12/" data-partage data-technique data-web title="Étiquettes : partage, technique, web.">Surligner</a>,
  480. <a href="/david/2024/03/11/" data-decentralisation data-dependance data-web title="Étiquettes : décentralisation, dépendance, web.">LoginWall</a>,
  481. <a href="/david/2024/03/10/" data-adaptation data-cinema data-lecture title="Étiquettes : adaptation, cinéma, lecture.">Dune</a>,
  482. <a href="/david/2024/03/09/" data-evolution data-identite data-poesie title="Étiquettes : évolution, identité, poésie.">Marque</a>,
  483. <a href="/david/2024/03/08/" data-experience data-psychologie data-technique title="Étiquettes : expérience, psychologie, technique.">Flow</a>,
  484. <a href="/david/2024/03/07/" data-commun data-deception data-web title="Étiquettes : commun, déception, web.">Sondages</a>,
  485. <a href="/david/2024/03/06/" data-apprentissage data-parentalite data-protopie title="Étiquettes : apprentissage, parentalité, protopie.">Vannerie</a>,
  486. <a href="/david/2024/03/05/" data-adaptation data-aventure data-psychologie title="Étiquettes : adaptation, aventure, psychologie.">Jour 2</a>,
  487. <a href="/david/2024/03/04/" data-dystopie data-foret data-solastalgia title="Étiquettes : dystopie, forêt, solastalgia.">Jour 1</a>,
  488. <a href="/david/2024/03/03/" data-dependance data-opensource data-parvenir title="Étiquettes : dépendance, opensource, parvenir.">Permanence</a>,
  489. <a href="/david/2024/03/02/" data-dependance data-sport data-technique title="Étiquettes : dépendance, sport, technique.">Montre</a>,
  490. <a href="/david/2024/03/01/" data-evolution data-laboratoire data-web title="Étiquettes : évolution, laboratoire, web.">Simple</a>,
  491. <a href="/david/2024/02/29/" data-commun data-deception data-psychologie title="Étiquettes : commun, déception, psychologie.">Wikipédia</a>,
  492. <a href="/david/2024/02/28/" data-documentation data-partage data-solastalgia title="Étiquettes : documentation, partage, solastalgia.">Dérèglement</a>,
  493. <a href="/david/2024/02/27/" data-ecriture data-processus data-psychologie title="Étiquettes : écriture, processus, psychologie.">Rédaction</a>,
  494. <a href="/david/2024/02/26/" data-parentalite data-poesie data-solastalgia title="Étiquettes : parentalité, poésie, solastalgia.">Galaxie</a>,
  495. <a href="/david/2024/02/25/" data-aventure data-foret data-gratitude title="Étiquettes : aventure, forêt, gratitude.">Jour 2</a>,
  496. <a href="/david/2024/02/24/" data-aventure data-foret data-sport title="Étiquettes : aventure, forêt, sport.">Jour 1</a>,
  497. <a href="/david/2024/02/23/" data-apprentissage data-processus data-web title="Étiquettes : apprentissage, processus, web.">Préparatifs</a>,
  498. <a href="/david/2024/02/22/" data-decision data-experience data-partage title="Étiquettes : décision, expérience, partage.">Responsabilité</a>,
  499. <a href="/david/2024/02/21/" data-dystopie data-ia data-psychologie title="Étiquettes : dystopie, IA, psychologie.">Cinéma</a>,
  500. <a href="/david/2024/02/20/" data-echanges data-laboratoire data-protopie title="Étiquettes : échanges, laboratoire, protopie.">Véhicule</a>,
  501. <a href="/david/2024/02/19/" data-apprentissage data-laboratoire data-web title="Étiquettes : apprentissage, laboratoire, web.">Injection</a>,
  502. <a href="/david/2024/02/18/" data-commun data-dependance data-technique title="Étiquettes : commun, dépendance, technique.">In·directions</a>,
  503. <a href="/david/2024/02/17/" data-ecriture data-lecture data-solastalgia title="Étiquettes : écriture, lecture, solastalgia.">Quotidien</a>,
  504. <a href="/david/2024/02/16/" data-commun data-decision data-opensource title="Étiquettes : commun, décision, opensource.">uMap 2</a>,
  505. <a href="/david/2024/02/15/" data-commun data-decision data-opensource title="Étiquettes : commun, décision, opensource.">Licence</a>,
  506. <a href="/david/2024/02/14/" data-commun data-opendata data-technique title="Étiquettes : commun, opendata, technique.">GéoCodage</a>,
  507. <a href="/david/2024/02/13/" data-apprentissage data-processus data-protopie title="Étiquettes : apprentissage, processus, protopie.">Feutrage</a>,
  508. <a href="/david/2024/02/12/" data-apprentissage data-echanges data-photographie title="Étiquettes : apprentissage, échanges, photographie.">Renards</a>,
  509. <a href="/david/2024/02/11/" data-communaute data-opensource data-psychologie title="Étiquettes : communauté, opensource, psychologie.">Violence</a>,
  510. <a href="/david/2024/02/10/" data-accessibilite data-experience data-psychologie title="Étiquettes : accessibilité, expérience, psychologie.">Validisme</a>,
  511. <a href="/david/2024/02/09/" data-apprentissage data-decision data-opensource title="Étiquettes : apprentissage, décision, opensource.">Version</a>,
  512. <a href="/david/2024/02/08/" data-apprentissage data-equipe data-evolution title="Étiquettes : apprentissage, équipe, évolution.">Écoute</a>,
  513. <a href="/david/2024/02/07/" data-decision data-foret data-photographie title="Étiquettes : décision, forêt, photographie.">Écureuil</a>,
  514. <a href="/david/2024/02/06/" data-communaute data-equipe data-lecture title="Étiquettes : communauté, équipe, lecture.">Anneau</a>,
  515. <a href="/david/2024/02/05/" data-experience data-psychologie data-technique title="Étiquettes : expérience, psychologie, technique.">Jeu</a>,
  516. <a href="/david/2024/02/04/" data-apprentissage data-technique data-web title="Étiquettes : apprentissage, technique, web.">Tooltipopover</a>,
  517. <a href="/david/2024/02/03/" data-dependance data-opensource data-technique title="Étiquettes : dépendance, opensource, technique.">Archives</a>,
  518. <a href="/david/2024/02/02/" data-equipe data-processus data-protopie title="Étiquettes : équipe, processus, protopie.">Valeurs</a>,
  519. <a href="/david/2024/02/01/" data-accessibilite data-dystopie data-evolution title="Étiquettes : accessibilité, dystopie, évolution.">Vision</a>,
  520. <a href="/david/2024/01/31/" data-commun data-documentation data-partage title="Étiquettes : commun, documentation, partage.">Mécénat</a>,
  521. <a href="/david/2024/01/30/" data-apprentissage data-equipe data-processus title="Étiquettes : apprentissage, équipe, processus.">Équipe</a>,
  522. <a href="/david/2024/01/29/" data-echanges data-technique data-web title="Étiquettes : échanges, technique, web.">Déploiement</a>,
  523. <a href="/david/2024/01/28/" data-experience data-foret data-parentalite title="Étiquettes : expérience, forêt, parentalité.">Jour 2</a>,
  524. <a href="/david/2024/01/27/" data-experience data-foret data-parentalite title="Étiquettes : expérience, forêt, parentalité.">Jour 1</a>,
  525. <a href="/david/2024/01/26/" data-gratitude data-partage data-psychologie title="Étiquettes : gratitude, partage, psychologie.">Cargo</a>,
  526. <a href="/david/2024/01/25/" data-apprentissage data-equipe data-velo title="Étiquettes : apprentissage, équipe, vélo.">Stratégie</a>,
  527. <a href="/david/2024/01/24/" data-communaute data-equipe data-processus title="Étiquettes : communauté, équipe, processus.">Taille</a>,
  528. <a href="/david/2024/01/23/" data-commun data-experience data-processus title="Étiquettes : commun, expérience, processus.">Thèse</a>,
  529. <a href="/david/2024/01/22/" data-echanges data-experience data-gratitude title="Étiquettes : échanges, expérience, gratitude.">Légitimité</a>,
  530. <a href="/david/2024/01/21/" data-apprentissage data-foret data-protopie title="Étiquettes : apprentissage, forêt, protopie.">Bois</a>,
  531. <a href="/david/2024/01/20/" data-dependance data-evolution data-parentalite title="Étiquettes : dépendance, évolution, parentalité.">Extinction</a>,
  532. <a href="/david/2024/01/19/" data-accompagnement data-communaute data-echanges title="Étiquettes : accompagnement, communauté, échanges.">Marcher</a>,
  533. <a href="/david/2024/01/18/" data-commun data-decision data-opensource title="Étiquettes : commun, décision, opensource.">Open-source</a>,
  534. <a href="/david/2024/01/17/" data-experience data-technique data-web title="Étiquettes : expérience, technique, web.">Vieillesse</a>,
  535. <a href="/david/2024/01/16/" data-addiction data-evolution data-technique title="Étiquettes : addiction, évolution, technique.">Endorphines</a>,
  536. <a href="/david/2024/01/15/" data-addiction data-evolution data-sport title="Étiquettes : addiction, évolution, sport.">Rééducation</a>,
  537. <a href="/david/2024/01/14/" data-ecriture data-experience data-protopie title="Étiquettes : écriture, expérience, protopie.">Fiction</a>,
  538. <a href="/david/2024/01/13/" data-ecriture data-ia data-parvenir title="Étiquettes : écriture, IA, parvenir.">Wuwei</a>,
  539. <a href="/david/2024/01/12/" data-ecriture data-processus data-psychologie title="Étiquettes : écriture, processus, psychologie.">Personnel</a>,
  540. <a href="/david/2024/01/11/" data-evolution data-technique data-web title="Étiquettes : évolution, technique, web.">Impact</a>,
  541. <a href="/david/2024/01/10/" data-apprentissage data-ecriture data-ia title="Étiquettes : apprentissage, écriture, IA.">Écriture</a>,
  542. <a href="/david/2024/01/09/" data-accessibilite data-sport data-technique title="Étiquettes : accessibilité, sport, technique.">Blessure</a>,
  543. <a href="/david/2024/01/08/" data-processus data-solastalgia data-technique title="Étiquettes : processus, solastalgia, technique.">Liens</a>,
  544. <a href="/david/2024/01/07/" data-apprentissage data-communaute data-fediverse title="Étiquettes : apprentissage, communauté, fédiverse.">Dons</a>,
  545. <a href="/david/2024/01/06/" data-addiction data-processus data-sport title="Étiquettes : addiction, processus, sport.">Objectif</a>,
  546. <a href="/david/2024/01/05/" data-apprentissage data-decision data-equipe title="Étiquettes : apprentissage, décision, équipe.">Vocabulaire</a>,
  547. <a href="/david/2024/01/04/" data-decision data-parvenir data-propriete title="Étiquettes : décision, parvenir, propriété.">Repos</a>,
  548. <a href="/david/2024/01/03/" data-accompagnement data-ecriture data-web title="Étiquettes : accompagnement, écriture, web.">Appariement</a>,
  549. <a href="/david/2024/01/02/" data-experience data-technique data-web title="Étiquettes : expérience, technique, web.">Fondations</a>,
  550. <a href="/david/2024/01/01/" data-addiction data-experience data-protopie title="Étiquettes : addiction, expérience, protopie.">Dryear(s)</a>.
  551. </p>
  552. <p id="tags-2024">Ou par étiquettes :</p>
  553. <p>
  554. <a href="/david/2024/accessibilite/" data-tag="accessibilite" rel="tag">#accessibilité (3)</a>,
  555. <a href="/david/2024/accompagnement/" data-tag="accompagnement" rel="tag">#accompagnement (2)</a>,
  556. <a href="/david/2024/adaptation/" data-tag="adaptation" rel="tag">#adaptation (5)</a>,
  557. <a href="/david/2024/addiction/" data-tag="addiction" rel="tag">#addiction (5)</a>,
  558. <a href="/david/2024/apprentissage/" data-tag="apprentissage" rel="tag">#apprentissage (21)</a>,
  559. <a href="/david/2024/aventure/" data-tag="aventure" rel="tag">#aventure (6)</a>,
  560. <a href="/david/2024/biologie/" data-tag="biologie" rel="tag">#biologie (1)</a>,
  561. <a href="/david/2024/cinema/" data-tag="cinema" rel="tag">#cinéma (1)</a>,
  562. <a href="/david/2024/commun/" data-tag="commun" rel="tag">#commun (13)</a>,
  563. <a href="/david/2024/communaute/" data-tag="communaute" rel="tag">#communauté (7)</a>,
  564. <a href="/david/2024/courage/" data-tag="courage" rel="tag">#courage (2)</a>,
  565. <a href="/david/2024/decentralisation/" data-tag="decentralisation" rel="tag">#décentralisation (2)</a>,
  566. <a href="/david/2024/deception/" data-tag="deception" rel="tag">#déception (6)</a>,
  567. <a href="/david/2024/decision/" data-tag="decision" rel="tag">#décision (8)</a>,
  568. <a href="/david/2024/dependance/" data-tag="dependance" rel="tag">#dépendance (8)</a>,
  569. <a href="/david/2024/documentation/" data-tag="documentation" rel="tag">#documentation (4)</a>,
  570. <a href="/david/2024/dystopie/" data-tag="dystopie" rel="tag">#dystopie (5)</a>,
  571. <a href="/david/2024/echanges/" data-tag="echanges" rel="tag">#échanges (5)</a>,
  572. <a href="/david/2024/ecriture/" data-tag="ecriture" rel="tag">#écriture (12)</a>,
  573. <a href="/david/2024/enthousiasme/" data-tag="enthousiasme" rel="tag">#enthousiasme (5)</a>,
  574. <a href="/david/2024/equipe/" data-tag="equipe" rel="tag">#équipe (9)</a>,
  575. <a href="/david/2024/evolution/" data-tag="evolution" rel="tag">#évolution (11)</a>,
  576. <a href="/david/2024/experience/" data-tag="experience" rel="tag">#expérience (20)</a>,
  577. <a href="/david/2024/fediverse/" data-tag="fediverse" rel="tag">#fédiverse (1)</a>,
  578. <a href="/david/2024/foret/" data-tag="foret" rel="tag">#forêt (14)</a>,
  579. <a href="/david/2024/gratitude/" data-tag="gratitude" rel="tag">#gratitude (5)</a>,
  580. <a href="/david/2024/ia/" data-tag="ia" rel="tag">#IA (5)</a>,
  581. <a href="/david/2024/identite/" data-tag="identite" rel="tag">#identité (1)</a>,
  582. <a href="/david/2024/introspection/" data-tag="introspection" rel="tag">#introspection (6)</a>,
  583. <a href="/david/2024/laboratoire/" data-tag="laboratoire" rel="tag">#laboratoire (7)</a>,
  584. <a href="/david/2024/lecture/" data-tag="lecture" rel="tag">#lecture (7)</a>,
  585. <a href="/david/2024/liens/" data-tag="liens" rel="tag">#liens (3)</a>,
  586. <a href="/david/2024/opendata/" data-tag="opendata" rel="tag">#opendata (1)</a>,
  587. <a href="/david/2024/opensource/" data-tag="opensource" rel="tag">#opensource (10)</a>,
  588. <a href="/david/2024/parentalite/" data-tag="parentalite" rel="tag">#parentalité (6)</a>,
  589. <a href="/david/2024/partage/" data-tag="partage" rel="tag">#partage (9)</a>,
  590. <a href="/david/2024/parvenir/" data-tag="parvenir" rel="tag">#parvenir (4)</a>,
  591. <a href="/david/2024/photographie/" data-tag="photographie" rel="tag">#photographie (4)</a>,
  592. <a href="/david/2024/poesie/" data-tag="poesie" rel="tag">#poésie (4)</a>,
  593. <a href="/david/2024/processus/" data-tag="processus" rel="tag">#processus (11)</a>,
  594. <a href="/david/2024/propriete/" data-tag="propriete" rel="tag">#propriété (1)</a>,
  595. <a href="/david/2024/protopie/" data-tag="protopie" rel="tag">#protopie (11)</a>,
  596. <a href="/david/2024/psychologie/" data-tag="psychologie" rel="tag">#psychologie (18)</a>,
  597. <a href="/david/2024/solastalgia/" data-tag="solastalgia" rel="tag">#solastalgia (5)</a>,
  598. <a href="/david/2024/sport/" data-tag="sport" rel="tag">#sport (12)</a>,
  599. <a href="/david/2024/technique/" data-tag="technique" rel="tag">#technique (23)</a>,
  600. <a href="/david/2024/velo/" data-tag="velo" rel="tag">#vélo (1)</a>,
  601. <a href="/david/2024/web/" data-tag="web" rel="tag">#web (15)</a>.
  602. </p>
  603. <p>
  604. Les <a href="/david/blogroll/">liens des ami·es</a> avec leurs dernières publications 🤗.
  605. </p>
  606. <h2>Publications plus anciennes</h2>
  607. <p>
  608. J’ai publié
  609. sporadiquement en <a href="/david/2023/"
  610. title="Voir la liste de toutes les publications 2023">2023</a>
  611. ainsi qu’en <a href="/david/2022/"
  612. title="Voir la liste de toutes les publications 2022">2022</a>,
  613. (pres)quotidiennemment en <a href="/david/2021/"
  614. title="Voir la liste de toutes les publications 2021">2021</a> et
  615. hebdomadairement en <a href="/david/2020/"
  616. title="Voir la liste de toutes les publications 2020">2020</a>
  617. .
  618. </p>
  619. <p>
  620. Vous pouvez aussi consulter les différents
  621. <a href="/david/blog/">billets de blog</a> qui ont été rédigés de 2004 (!) à 2019
  622. ou les <a href="/david/stream/">entrées de journaux</a> relativement
  623. régulières entre 2009 et 2019.
  624. </p>
  625. <p>
  626. <em>
  627. Notez qu’avec un tel historique, certaines informations sont obsolètes et/ou
  628. plus cautionnées.
  629. </em>
  630. </p>
  631. <form action="/david/recherche/" method="get">
  632. <fieldset>
  633. <legend>Recherche</legend>
  634. <label for="input-search">Termes de votre recherche :</label>
  635. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  636. <input type="submit" value="Chercher">
  637. <p id="indexation-infos">
  638. <small>
  639. Seuls les contenus de ces 8 dernières années sont indexés.
  640. </small>
  641. </p>
  642. </fieldset>
  643. </form>
  644. <aside>
  645. <theme-toggle></theme-toggle>
  646. </aside>
  647. </article>
  648. <hr>
  649. <footer>
  650. <p>
  651. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  652. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  653. <a href="http://larlet.com"
  654. title="Go to my English profile"
  655. data-instant>Pro</a>
  656. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  657. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  658. </p>
  659. <template id="theme-selector">
  660. <form>
  661. <style type="text/css">
  662. fieldset div {
  663. text-align: center;
  664. }
  665. </style>
  666. <fieldset>
  667. <legend>Thème</legend>
  668. <div>
  669. <label>
  670. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  671. Auto
  672. </label>
  673. <label>
  674. <input type="radio" value="dark" name="chosen-color-scheme">
  675. Foncé
  676. </label>
  677. <label>
  678. <input type="radio" value="light" name="chosen-color-scheme">
  679. Clair
  680. </label>
  681. </div>
  682. </fieldset>
  683. </form>
  684. </template>
  685. </footer>
  686. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  687. <script>
  688. class ThemeToggle extends HTMLElement {
  689. constructor() {
  690. super()
  691. const themeSelectorTemplate = document.querySelector('#theme-selector')
  692. const form = themeSelectorTemplate.content.firstElementChild
  693. this.attachShadow({ mode: 'open' })
  694. this.shadowRoot.appendChild(form.cloneNode(true))
  695. }
  696. connectedCallback() {
  697. const form = this.shadowRoot.querySelector('form')
  698. form.addEventListener('change', (e) => {
  699. const chosenColorScheme = e.target.value
  700. localStorage.setItem('theme', chosenColorScheme)
  701. toggleTheme(chosenColorScheme)
  702. })
  703. const selectedTheme = localStorage.getItem('theme')
  704. if (selectedTheme && selectedTheme !== 'undefined') {
  705. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  706. }
  707. }
  708. }
  709. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  710. window.addEventListener('load', () => {
  711. let colorsLayer = undefined
  712. let hasDarkRules = false
  713. for (const styleSheet of Array.from(document.styleSheets)) {
  714. let mediaRules = []
  715. for (const layerRule of styleSheet.cssRules) {
  716. if (!(layerRule instanceof CSSLayerBlockRule)) {
  717. continue
  718. }
  719. if (layerRule.name === 'colors') {
  720. colorsLayer = layerRule
  721. }
  722. for (const cssRule of layerRule.cssRules) {
  723. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  724. continue
  725. }
  726. // WARNING: Safari does not have/supports `conditionText`.
  727. if (cssRule.conditionText) {
  728. if (cssRule.conditionText !== prefersColorSchemeDark) {
  729. continue
  730. }
  731. } else {
  732. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  733. continue
  734. }
  735. }
  736. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  737. }
  738. }
  739. // WARNING: do not try to insert a Rule to a styleSheet you are
  740. // currently iterating on, otherwise the browser will be stuck
  741. // in a infinite loop…
  742. for (const mediaRule of mediaRules) {
  743. // Safari requires the `0` second parameter (even if default).
  744. colorsLayer.insertRule(mediaRule.cssText, 0)
  745. hasDarkRules = true
  746. }
  747. }
  748. if (hasDarkRules) {
  749. if ('customElements' in window && !customElements.get('theme-toggle')) {
  750. customElements.define('theme-toggle', ThemeToggle)
  751. }
  752. }
  753. })
  754. </script>
  755. </body>
  756. </html>