Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

index.html 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435
  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. Véhicule
  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="John Burroughs est d’avis que l’étude expérimentale des animaux en captivité est totalement futile. Leur caractère, leurs habitudes, leur appétit changent complètement lorsqu’ils sont arrachés à leur habitat naturel. Comment pourrions-nous donc envisager les potentialités de la nature humaine alors qu’elle est confinée dans un espace restreint et contrainte quotidiennement à la soumission ?">
  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>Véhicule</h1>
  138. <p>Le <time datetime="2024-02-20">20 février 2024</time></p>
  139. </hgroup>
  140. </header>
  141. <nav>
  142. <p>
  143. <a rel="prev"
  144. href="/david/2024/02/19/"
  145. title="Publication précédente : Injection">← 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/02/21/"
  152. title="Publication suivante : Cinéma">Suivant →</a>
  153. </p>
  154. </nav>
  155. <blockquote>
  156. <p>John Burroughs est d’avis que l’étude expérimentale des animaux en captivité est totalement futile. Leur caractère, leurs habitudes, leur appétit changent complètement lorsqu’ils sont arrachés à leur habitat naturel. Comment pourrions-nous donc envisager les potentialités de la nature humaine alors qu’elle est confinée dans un espace restreint et contrainte quotidiennement à la&nbsp;soumission&#8239;?</p>
  157. <p>Seuls la liberté, l’épanouissement, la chance et, par-dessous tout, la paix et la sérénité peuvent nous renseigner sur les véritables facteurs dominants de la nature humaine et toutes ses merveilleuses&nbsp;possibilités.</p>
  158. <p>L’anarchisme représente donc essentiellement la libération de l’esprit de la domination religieuse&#8239;; la libération du corps du joug de la propriété&#8239;; la libération de l’individu des entraves et des restrictions du gouvernement. L’anarchisme représente un ordre social fondé sur <mark>le regroupement volontaire des individus en vue de produire une véritable richesse sociale</mark>&#8239;; un ordre qui garantira à tout être humain le libre accès à la terre et la pleine jouissance des nécessités de la vie, selon les désirs, les goûts et les inclinations de&nbsp;chacun.</p>
  159. <p><cite><em>Ce que l’anarchisme représente vraiment</em>, Emma Goldman, 1911</cite></p>
  160. </blockquote>
  161. <p>L’exercice Scopyleft du jour était d’imaginer et de partager le véhicule que représente la coopérative pour chacun·e d’entre nous aujourd’hui. J’ai été agréablement surpris que nous proposions tou·tes quelque chose de différent. Les questions n’ont pas besoin d’être très élaborées pour apporter des éclairages personnels sur une même&nbsp;situation.</p>
  162. <a href="#hr-81" title="Lien vers cette section de la page"><hr id="hr-81" /></a>
  163. <blockquote lang="en">
  164. <p>Your AI-free Content Deserves a&nbsp;Badge</p>
  165. <p>Artificial Intelligence (AI) is trained using human-created content. If humans stop producing new content and rely solely on AI, online content across the world may become repetitive and&nbsp;stagnant.</p>
  166. <p>If your content is not AI-generated, add the badge to your work, with&nbsp;pride.</p>
  167. <p><cite><em><a data-link-domain="notbyai.fyi" href="https://notbyai.fyi/">not by&nbsp;AI</a></em></cite></p>
  168. </blockquote>
  169. <p>De <a href="/david/2024/02/19/#hr-80">même qu’hier</a>, je m’interroge beaucoup sur le notion de plagIAt. Je copie-colle des citations, j’explore des idées déjà connues, je crée un <em>patchwork</em> quotidien, quelle différence avec un algorithme suffisamment bien&nbsp;nourri&#8239;?</p>
  170. <a href="#hr-82" title="Lien vers cette section de la page"><hr id="hr-82" /></a>
  171. <blockquote>
  172. <p>Depuis plus de dix ans, l’Ouvre-Boîtes a mis en place les prêts Coopitalistes. Le principe est simple&nbsp;: des citoyennes et citoyens ou associations investissent de l’argent à l’Ouvre-Boîtes pour sept&nbsp;ans.</p>
  173. <p>En captant cette épargne solidaire, <mark>la coopérative se créée une banque interne</mark> qui finance des projets&nbsp;comme&nbsp;:</p>
  174. <ul>
  175. <li>Des projets collectifs&nbsp;: travaux pour aménager un lieu à disposition des entrepreneur·es (le Grand&nbsp;Bain),</li>
  176. <li>Des investissements pour des entrepreneur·es qui en ont besoin pour lancer leur activité&nbsp;: vélos, voiture, appareil photos, ordinateurs, outils de&nbsp;jardinage…</li>
  177. <li>Des besoins exceptionnels de&nbsp;trésorerie</li>
  178. </ul>
  179. <p><cite><em><a data-link-domain="ouvre-boites.coop" href="https://www.ouvre-boites.coop/les-coopitalistes" hreflang="fr"
  180. title="Consultation de l’article">Les Coopitalistes</a>
  181. <a href="/david/cache/2024/865257313ae3d6aca13284128d6523d5/" hreflang="fr"
  182. data-tippy data-description="Depuis plus de dix ans, l’Ouvre-Boîtes a mis en place les prêts Coopitalistes."
  183. data-source="https://www.ouvre-boites.coop/les-coopitalistes"
  184. data-date="2024-02-20"
  185. data-favicon="https://www.ouvre-boites.coop/themes/custom/front/favicon.ico"
  186. data-domain="ouvre-boites.coop"
  187. ><svg xmlns="http://www.w3.org/2000/svg"
  188. width="24" height="24" viewBox="0 0 24 24" fill="none"
  189. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  190. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  191. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  192. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  193. </svg>
  194. <span class="sr-only">[archive]</span></a></em></cite></p>
  195. </blockquote>
  196. <p>Les alternatives existent, elles sont moins faciles à trouver mais elles existent. Et elles&nbsp;inspirent.</p>
  197. <nav>
  198. <p>
  199. <a href="/david/2024/echanges/"
  200. title="Liste de tous les articles 2024 associés à cette étiquette"
  201. rel="tag">#échanges</a>
  202. <a href="/david/2024/laboratoire/"
  203. title="Liste de tous les articles 2024 associés à cette étiquette"
  204. rel="tag">#laboratoire</a>
  205. <a href="/david/2024/protopie/"
  206. title="Liste de tous les articles 2024 associés à cette étiquette"
  207. rel="tag">#protopie</a>
  208. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  209. </p>
  210. </nav>
  211. <nav>
  212. <p>
  213. <a rel="prev"
  214. href="/david/2024/02/19/"
  215. title="Publication précédente : Injection">← Précédent</a> •
  216. <a href="/david/2024/" title="Liste des publications récentes">↑ En 2024</a>
  217. • <a rel="next"
  218. href="/david/2024/02/21/"
  219. title="Publication suivante : Cinéma">Suivant →</a>
  220. </p>
  221. </nav>
  222. <form action="/david/recherche/" method="get">
  223. <fieldset>
  224. <legend>Recherche</legend>
  225. <label for="input-search">Termes de votre recherche :</label>
  226. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  227. <input type="submit" value="Chercher">
  228. <p id="indexation-infos">
  229. <small>
  230. Seuls les contenus de ces 8 dernières années sont indexés.
  231. </small>
  232. </p>
  233. </fieldset>
  234. </form>
  235. <aside>
  236. <theme-toggle></theme-toggle>
  237. </aside>
  238. </article>
  239. <hr>
  240. <footer>
  241. <p>
  242. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  243. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  244. <a href="http://larlet.com"
  245. title="Go to my English profile"
  246. data-instant>Pro</a>
  247. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  248. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  249. </p>
  250. <template id="theme-selector">
  251. <form>
  252. <style type="text/css">
  253. fieldset div {
  254. text-align: center;
  255. }
  256. </style>
  257. <fieldset>
  258. <legend>Thème</legend>
  259. <div>
  260. <label>
  261. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  262. Auto
  263. </label>
  264. <label>
  265. <input type="radio" value="dark" name="chosen-color-scheme">
  266. Foncé
  267. </label>
  268. <label>
  269. <input type="radio" value="light" name="chosen-color-scheme">
  270. Clair
  271. </label>
  272. </div>
  273. </fieldset>
  274. </form>
  275. </template>
  276. </footer>
  277. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  278. <script>
  279. class ThemeToggle extends HTMLElement {
  280. constructor() {
  281. super()
  282. const themeSelectorTemplate = document.querySelector('#theme-selector')
  283. const form = themeSelectorTemplate.content.firstElementChild
  284. this.attachShadow({ mode: 'open' })
  285. this.shadowRoot.appendChild(form.cloneNode(true))
  286. }
  287. connectedCallback() {
  288. const form = this.shadowRoot.querySelector('form')
  289. form.addEventListener('change', (e) => {
  290. const chosenColorScheme = e.target.value
  291. localStorage.setItem('theme', chosenColorScheme)
  292. toggleTheme(chosenColorScheme)
  293. })
  294. const selectedTheme = localStorage.getItem('theme')
  295. if (selectedTheme && selectedTheme !== 'undefined') {
  296. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  297. }
  298. }
  299. }
  300. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  301. window.addEventListener('load', () => {
  302. let colorsLayer = undefined
  303. let hasDarkRules = false
  304. for (const styleSheet of Array.from(document.styleSheets)) {
  305. let mediaRules = []
  306. for (const layerRule of styleSheet.cssRules) {
  307. if (!(layerRule instanceof CSSLayerBlockRule)) {
  308. continue
  309. }
  310. if (layerRule.name === 'colors') {
  311. colorsLayer = layerRule
  312. }
  313. for (const cssRule of layerRule.cssRules) {
  314. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  315. continue
  316. }
  317. // WARNING: Safari does not have/supports `conditionText`.
  318. if (cssRule.conditionText) {
  319. if (cssRule.conditionText !== prefersColorSchemeDark) {
  320. continue
  321. }
  322. } else {
  323. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  324. continue
  325. }
  326. }
  327. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  328. }
  329. }
  330. // WARNING: do not try to insert a Rule to a styleSheet you are
  331. // currently iterating on, otherwise the browser will be stuck
  332. // in a infinite loop…
  333. for (const mediaRule of mediaRules) {
  334. // Safari requires the `0` second parameter (even if default).
  335. colorsLayer.insertRule(mediaRule.cssText, 0)
  336. hasDarkRules = true
  337. }
  338. }
  339. if (hasDarkRules) {
  340. if ('customElements' in window && !customElements.get('theme-toggle')) {
  341. customElements.define('theme-toggle', ThemeToggle)
  342. }
  343. }
  344. })
  345. </script>
  346. <script src="/static/david/js/popper-2.11.8.min.js"></script>
  347. <script src="/static/david/js/tippy-bundle-6.3.7.umd.min.js"></script>
  348. <script>
  349. tippy('[data-tippy]', {
  350. content(reference) {
  351. reference.addEventListener('click', (e) => e.preventDefault())
  352. return `
  353. <h3 lang="fr">
  354. <img src="${reference.dataset.favicon}" loading="lazy">
  355. <a href="${reference.dataset.source}"
  356. >Article sur ${reference.dataset.domain}</a></h3>
  357. <p lang="${reference.hreflang}"><em>${reference.dataset.description}</em></p>
  358. <div class="tippy-links" lang="fr">
  359. <a href="${reference.href}">Archive au ${reference.dataset.date}</a>
  360. </div>
  361. `
  362. },
  363. allowHTML: true,
  364. interactive: true,
  365. delay: [150, 700],
  366. hideOnClick: false
  367. })
  368. </script>
  369. <script type="module">
  370. import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js'
  371. const markObserver = new IntersectionObserver((entries, observer) => {
  372. const computedStyle = getComputedStyle(document.documentElement)
  373. const markBackground = computedStyle.getPropertyValue('--mark-background')
  374. for (const entry of entries) {
  375. if (entry.intersectionRatio === 0) continue
  376. const markElement = entry.target
  377. markElement.style.backgroundColor = 'inherit'
  378. const annotation = annotate(
  379. markElement, {
  380. type: 'highlight',
  381. multiline: true,
  382. color: markBackground,
  383. // animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches
  384. animate: false
  385. }
  386. )
  387. annotation.show()
  388. observer.unobserve(markElement)
  389. }
  390. }, {threshold: 1.0})
  391. for (const markElement of document.querySelectorAll('mark')) {
  392. markObserver.observe(markElement)
  393. }
  394. </script>
  395. </body>
  396. </html>