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

index.html 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  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. Renards
  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="Entre chien et loup, le renard pointe le bout de son nez pointu. Après avoir attendu patiemment attendu que mon appareil photo arrive à ses limites, le voilà avançant vers moi d’un pas décidé.">
  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>Renards</h1>
  136. <p>Le <time datetime="2024-02-12">12 février 2024</time></p>
  137. </hgroup>
  138. </header>
  139. <nav>
  140. <p>
  141. <a rel="prev"
  142. href="/david/2024/02/11/"
  143. title="Publication précédente : Violence">← 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/02/13/"
  150. title="Publication suivante : Feutrage">Suivant →</a>
  151. </p>
  152. </nav>
  153. <p>Entre chien et loup, le renard pointe le bout de son nez pointu. Après avoir attendu patiemment attendu que mon appareil photo arrive à ses limites, le voilà avançant vers moi d’un pas&nbsp;décidé.</p>
  154. <figure>
  155. <a href="/static/david/2024/2024-02-12-renards-1.jpg"
  156. title="Cliquer pour une version haute résolution">
  157. <img
  158. src="/static/david/2024/2024-02-12-renards-1.jpg"
  159. width="3456" height="2304"
  160. srcset="/static/david/2024/2024-02-12-renards-1.jpg 3456w, /static/david/2024/2024-02-12-renards-1_660x440.jpg 660w, /static/david/2024/2024-02-12-renards-1_990x660.jpg 990w, /static/david/2024/2024-02-12-renards-1_1320x880.jpg 1320w"
  161. sizes="min(100vw, calc(100vh * 3456 / 2304))"
  162. loading="lazy"
  163. decoding="async"
  164. alt="Un renard trottinant sur la rivière gelée.">
  165. </a>
  166. <figcaption>Un renard trottinant sur la rivière&nbsp;gelée.</figcaption>
  167. </figure>
  168. <p>Même en poussant les réglages au maximum lors du développement, je me rends bien compte que je suis dans la nuit bientôt noire. Alors je tente d’utiliser l’éclairage de la ville, la pollution lumineuse se reflétant sur la neige m’offre de précieux <em>stops</em>&nbsp;photographiques.</p>
  169. <figure>
  170. <a href="/static/david/2024/2024-02-12-renards-2.jpg"
  171. title="Cliquer pour une version haute résolution">
  172. <img
  173. src="/static/david/2024/2024-02-12-renards-2.jpg"
  174. width="2560" height="3840"
  175. srcset="/static/david/2024/2024-02-12-renards-2.jpg 2560w, /static/david/2024/2024-02-12-renards-2_660x440.jpg 660w, /static/david/2024/2024-02-12-renards-2_990x660.jpg 990w, /static/david/2024/2024-02-12-renards-2_1320x880.jpg 1320w"
  176. sizes="min(100vw, calc(100vh * 2560 / 3840))"
  177. loading="lazy"
  178. decoding="async"
  179. alt="Un renard sur la rivière gelée avec un pont en fond.">
  180. </a>
  181. <figcaption>Un renard sur la rivière gelée avec un pont en&nbsp;fond.</figcaption>
  182. </figure>
  183. <p>L’équivalent 800mm que je tiens à bout de bras n’aide pas à faire baisser les ISO, tant pis, je compte trop sur ma mobilité pour être capable de tenter une approche. La neige est bien trop gelée et bruyante pour que j’ai la moindre chance. Un skieur nocturne détourne leur&nbsp;attention.</p>
  184. <figure>
  185. <a href="/static/david/2024/2024-02-12-renards-3.jpg"
  186. title="Cliquer pour une version haute résolution">
  187. <img
  188. src="/static/david/2024/2024-02-12-renards-3.jpg"
  189. width="3840" height="2560"
  190. srcset="/static/david/2024/2024-02-12-renards-3.jpg 3840w, /static/david/2024/2024-02-12-renards-3_660x440.jpg 660w, /static/david/2024/2024-02-12-renards-3_990x660.jpg 990w, /static/david/2024/2024-02-12-renards-3_1320x880.jpg 1320w"
  191. sizes="min(100vw, calc(100vh * 3840 / 2560))"
  192. loading="lazy"
  193. decoding="async"
  194. alt="Deux renards&nbsp;: l’un sur la rivière, l’autre sur un ponton abandonné.">
  195. </a>
  196. <figcaption>Deux renards : l’un sur la rivière, l’autre sur un ponton&nbsp;abandonné.</figcaption>
  197. </figure>
  198. <p>La luminosité est telle que je vois la lumière de mon autofocus qui se reflète, bien rouge, au fond de ses yeux à une cinquantaine de mètres. Iel m’attend. Je ne saurais jamais jusqu’à quelle distance est-ce que l’on se seraient acceptés car une coureuse met fin à ce tête-à-tête nocturne. Si nous sommes tous le deux routiniers, nous aurons certainement d’autres occasions de nous&nbsp;croiser.</p>
  199. <figure>
  200. <a href="/static/david/2024/2024-02-12-renards-4.jpg"
  201. title="Cliquer pour une version haute résolution">
  202. <img
  203. src="/static/david/2024/2024-02-12-renards-4.jpg"
  204. width="3840" height="2560"
  205. srcset="/static/david/2024/2024-02-12-renards-4.jpg 3840w, /static/david/2024/2024-02-12-renards-4_660x440.jpg 660w, /static/david/2024/2024-02-12-renards-4_990x660.jpg 990w, /static/david/2024/2024-02-12-renards-4_1320x880.jpg 1320w"
  206. sizes="min(100vw, calc(100vh * 3840 / 2560))"
  207. loading="lazy"
  208. decoding="async"
  209. alt="Un renard qui me regarde depuis le chemin.">
  210. </a>
  211. <figcaption>Un renard qui me regarde depuis le&nbsp;chemin.</figcaption>
  212. </figure>
  213. <p>Photographiquement parlant, je crois que je préfère la prise floue de la veille. Une forme d’acceptation qu’il puisse encore y avoir des animaux libres d’une capture trop&nbsp;nette.</p>
  214. <figure>
  215. <a href="/static/david/2024/2024-02-12-renards-5.jpg"
  216. title="Cliquer pour une version haute résolution">
  217. <img
  218. src="/static/david/2024/2024-02-12-renards-5.jpg"
  219. width="3840" height="2560"
  220. srcset="/static/david/2024/2024-02-12-renards-5.jpg 3840w, /static/david/2024/2024-02-12-renards-5_660x440.jpg 660w, /static/david/2024/2024-02-12-renards-5_990x660.jpg 990w, /static/david/2024/2024-02-12-renards-5_1320x880.jpg 1320w"
  221. sizes="min(100vw, calc(100vh * 3840 / 2560))"
  222. loading="lazy"
  223. decoding="async"
  224. alt="Un renard flou qui se reflète dans l’eau de la rivière qui fond.">
  225. </a>
  226. <figcaption>Vais-je passer à travers ? Je ne suis pas le seul à me poser ces&nbsp;questions…</figcaption>
  227. </figure>
  228. <p>Merci au parent devant l’école qui m’a dit qu’il n’y avait pas de renards dans le parc cette année. Mon esprit de con·tradiction a fait le&nbsp;reste.</p>
  229. <a href="#hr-71" title="Lien vers cette section de la page"><hr id="hr-71" /></a>
  230. <blockquote>
  231. <p>Les carnets Web servent également à faire rêver les autres de façon inattendue et la plupart du temps silencieusement. N’hésitez pas à publier. Vous toucherez le cœur et l’imagination d’une personne quelque part dans le&nbsp;monde.</p>
  232. <p><cite><em><a data-link-domain="la-grange.net" href="https://www.la-grange.net/2024/02/04/enfant" hreflang="fr"
  233. title="Consultation de l’article">D’un enfant à l’autre</a>
  234. <a href="/david/cache/2024/40a1a0f90d7ac25a6150e6e27ac310d4/" hreflang="fr"
  235. data-tippy data-description=""
  236. data-source="https://www.la-grange.net/2024/02/04/enfant"
  237. data-date="2024-02-12"
  238. data-favicon="https://www.la-grange.net/favicon.ico"
  239. data-domain="la-grange.net"
  240. ><svg xmlns="http://www.w3.org/2000/svg"
  241. width="24" height="24" viewBox="0 0 24 24" fill="none"
  242. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  243. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  244. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  245. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  246. </svg>
  247. <span class="sr-only">[archive]</span></a></em></cite></p>
  248. </blockquote>
  249. <p>🧡</p>
  250. <nav>
  251. <p>
  252. <a href="/david/2024/apprentissage/"
  253. title="Liste de tous les articles 2024 associés à cette étiquette"
  254. rel="tag">#apprentissage</a>
  255. <a href="/david/2024/echanges/"
  256. title="Liste de tous les articles 2024 associés à cette étiquette"
  257. rel="tag">#échanges</a>
  258. <a href="/david/2024/photographie/"
  259. title="Liste de tous les articles 2024 associés à cette étiquette"
  260. rel="tag">#photographie</a>
  261. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  262. </p>
  263. </nav>
  264. <nav>
  265. <p>
  266. <a rel="prev"
  267. href="/david/2024/02/11/"
  268. title="Publication précédente : Violence">← Précédent</a> •
  269. <a href="/david/2024/" title="Liste des publications récentes">↑ En 2024</a>
  270. • <a rel="next"
  271. href="/david/2024/02/13/"
  272. title="Publication suivante : Feutrage">Suivant →</a>
  273. </p>
  274. </nav>
  275. <form action="/david/recherche/" method="get">
  276. <fieldset>
  277. <legend>Recherche</legend>
  278. <label for="input-search">Termes de votre recherche :</label>
  279. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  280. <input type="submit" value="Chercher">
  281. <p id="indexation-infos">
  282. <small>
  283. Seuls les contenus de ces 8 dernières années sont indexés.
  284. </small>
  285. </p>
  286. </fieldset>
  287. </form>
  288. <aside>
  289. <theme-toggle></theme-toggle>
  290. </aside>
  291. </article>
  292. <hr>
  293. <footer>
  294. <p>
  295. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  296. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  297. <a href="http://larlet.com"
  298. title="Go to my English profile"
  299. data-instant>Pro</a>
  300. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  301. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  302. </p>
  303. <template id="theme-selector">
  304. <form>
  305. <style type="text/css">
  306. fieldset div {
  307. text-align: center;
  308. }
  309. </style>
  310. <fieldset>
  311. <legend>Thème</legend>
  312. <div>
  313. <label>
  314. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  315. Auto
  316. </label>
  317. <label>
  318. <input type="radio" value="dark" name="chosen-color-scheme">
  319. Foncé
  320. </label>
  321. <label>
  322. <input type="radio" value="light" name="chosen-color-scheme">
  323. Clair
  324. </label>
  325. </div>
  326. </fieldset>
  327. </form>
  328. </template>
  329. </footer>
  330. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  331. <script>
  332. class ThemeToggle extends HTMLElement {
  333. constructor() {
  334. super()
  335. const themeSelectorTemplate = document.querySelector('#theme-selector')
  336. const form = themeSelectorTemplate.content.firstElementChild
  337. this.attachShadow({ mode: 'open' })
  338. this.shadowRoot.appendChild(form.cloneNode(true))
  339. }
  340. connectedCallback() {
  341. const form = this.shadowRoot.querySelector('form')
  342. form.addEventListener('change', (e) => {
  343. const chosenColorScheme = e.target.value
  344. localStorage.setItem('theme', chosenColorScheme)
  345. toggleTheme(chosenColorScheme)
  346. })
  347. const selectedTheme = localStorage.getItem('theme')
  348. if (selectedTheme && selectedTheme !== 'undefined') {
  349. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  350. }
  351. }
  352. }
  353. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  354. window.addEventListener('load', () => {
  355. let colorsLayer = undefined
  356. let hasDarkRules = false
  357. for (const styleSheet of Array.from(document.styleSheets)) {
  358. let mediaRules = []
  359. for (const layerRule of styleSheet.cssRules) {
  360. if (!(layerRule instanceof CSSLayerBlockRule)) {
  361. continue
  362. }
  363. if (layerRule.name === 'colors') {
  364. colorsLayer = layerRule
  365. }
  366. for (const cssRule of layerRule.cssRules) {
  367. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  368. continue
  369. }
  370. // WARNING: Safari does not have/supports `conditionText`.
  371. if (cssRule.conditionText) {
  372. if (cssRule.conditionText !== prefersColorSchemeDark) {
  373. continue
  374. }
  375. } else {
  376. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  377. continue
  378. }
  379. }
  380. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  381. }
  382. }
  383. // WARNING: do not try to insert a Rule to a styleSheet you are
  384. // currently iterating on, otherwise the browser will be stuck
  385. // in a infinite loop…
  386. for (const mediaRule of mediaRules) {
  387. // Safari requires the `0` second parameter (even if default).
  388. colorsLayer.insertRule(mediaRule.cssText, 0)
  389. hasDarkRules = true
  390. }
  391. }
  392. if (hasDarkRules) {
  393. if ('customElements' in window && !customElements.get('theme-toggle')) {
  394. customElements.define('theme-toggle', ThemeToggle)
  395. }
  396. }
  397. })
  398. </script>
  399. <script src="/static/david/js/popper-2.11.8.min.js"></script>
  400. <script src="/static/david/js/tippy-bundle-6.3.7.umd.min.js"></script>
  401. <script>
  402. tippy('[data-tippy]', {
  403. content(reference) {
  404. reference.addEventListener('click', (e) => e.preventDefault())
  405. return `
  406. <h3 lang="fr">
  407. <img src="${reference.dataset.favicon}" loading="lazy">
  408. <a href="${reference.dataset.source}"
  409. >Article sur ${reference.dataset.domain}</a></h3>
  410. <p lang="${reference.hreflang}"><em>${reference.dataset.description}</em></p>
  411. <div class="tippy-links" lang="fr">
  412. <a href="${reference.href}">Archive au ${reference.dataset.date}</a>
  413. </div>
  414. `
  415. },
  416. allowHTML: true,
  417. interactive: true,
  418. delay: [150, 700],
  419. hideOnClick: false
  420. })
  421. </script>
  422. <script type="module">
  423. import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js'
  424. const markObserver = new IntersectionObserver((entries, observer) => {
  425. const computedStyle = getComputedStyle(document.documentElement)
  426. const markBackground = computedStyle.getPropertyValue('--mark-background')
  427. for (const entry of entries) {
  428. if (entry.intersectionRatio === 0) continue
  429. const markElement = entry.target
  430. const annotation = annotate(
  431. markElement, {
  432. type: 'highlight',
  433. multiline: true,
  434. color: markBackground,
  435. animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches
  436. }
  437. )
  438. annotation.show()
  439. observer.unobserve(markElement)
  440. }
  441. }, {threshold: 1.0})
  442. for (const markElement of document.querySelectorAll('mark')) {
  443. markElement.style.backgroundColor = 'inherit'
  444. markObserver.observe(markElement)
  445. }
  446. </script>
  447. </body>
  448. </html>