Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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