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.

index.html 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  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. Étiquette #enthousiasme
  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="Publications relatives au tag #enthousiasme">
  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. details[open] summary {
  107. display: none;
  108. }
  109. </style>
  110. <body data-instant-intensity="viewport-all">
  111. <article>
  112. <header>
  113. <hgroup>
  114. <h1>#enthousiasme</h1>
  115. <p>Publications relatives à cette étiquette</p>
  116. </hgroup>
  117. </header>
  118. <nav>
  119. <p>
  120. <a href="/david/" title="Aller à l’accueil">
  121. Accueil</a>
  122. <a rel="tags"
  123. href="/david/2024/#tags"
  124. title="Liste de toutes les étiquettes">
  125. Étiquettes</a>
  126. <a href="/david/recherche/" title="Aller à la page de recherche" rel="search" data-no-instant>Recherche</a>
  127. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  128. </p>
  129. </nav>
  130. <h2>
  131. <a href="/david/2024/04/08/" title="Lien permanent vers cet article">Éclipse</a> <time datetime="2024-04-08">8 avril 2024</time>
  132. </h2>
  133. <p>Il y a l’éclipse et puis il y a toute l’ambiance autour. Je crois que c’est ce qui m’a le plus marqué, cet émerveillement doublé d’un enthousiasme collectif. Lorsque tout le monde retire les lunettes ou même un peu avant lorsque la lumière change et que l’on voit un coucher (??) de soleil en version accéléré qui s’avance vers nous en pleine&nbsp;après-midi.</p>
  134. <p>L’éclipse totale était censée être de 1&#8239;min 45&#8239;sec à ma position mais alors en ressenti derrière l’objectif c’était du 20&nbsp;secondes&#8239;! À peine le temps de réduire au maximum l’exposition et de déclencher. J’avais fait une mise au point sur un avion au préalable et j’étais passé en manuel mais c’était stupide et ça a rendu floues toutes les photos… jusqu’aux deux dernières. Coup de bol d’avoir pris le temps de tester l’autofocus en sentant venir la&nbsp;fin.</p>
  135. <figure>
  136. <a href="/static/david/2024/2024-04-08-eclipse-1.jpg"
  137. title="Cliquer pour une version haute résolution">
  138. <img
  139. src="/static/david/2024/2024-04-08-eclipse-1.jpg"
  140. width="2000" height="2000"
  141. srcset="/static/david/2024/2024-04-08-eclipse-1.jpg 2000w, /static/david/2024/2024-04-08-eclipse-1_660x440.jpg 660w, /static/david/2024/2024-04-08-eclipse-1_990x660.jpg 990w, /static/david/2024/2024-04-08-eclipse-1_1320x880.jpg 1320w"
  142. sizes="min(100vw, calc(100vh * 2000 / 2000))"
  143. loading="lazy"
  144. decoding="async"
  145. alt="Le moment de l’éclipse où la lune passe totalement devant le soleil.">
  146. </a>
  147. <figcaption>J’étais tellement content de découvrir des éruptions solaires au développement&nbsp;!</figcaption>
  148. </figure>
  149. <p>En étant sur la fin, cela permet d’être vraiment à la limite de la couronne solaire et de photographier un phénomène que je ne pensait pas possible avec mon&nbsp;matériel.</p>
  150. <p>Et puis, il y a ce moment où l’hystérie collective redevient sérieuse car il faut remettre les lunettes et prendre le temps de se demander ce qu’il vient de se&nbsp;passer.</p>
  151. <figure>
  152. <a href="/static/david/2024/2024-04-08-eclipse-2.jpg"
  153. title="Cliquer pour une version haute résolution">
  154. <img
  155. src="/static/david/2024/2024-04-08-eclipse-2.jpg"
  156. width="3840" height="2560"
  157. srcset="/static/david/2024/2024-04-08-eclipse-2.jpg 3840w, /static/david/2024/2024-04-08-eclipse-2_660x440.jpg 660w, /static/david/2024/2024-04-08-eclipse-2_990x660.jpg 990w, /static/david/2024/2024-04-08-eclipse-2_1320x880.jpg 1320w"
  158. sizes="min(100vw, calc(100vh * 3840 / 2560))"
  159. loading="lazy"
  160. decoding="async"
  161. alt="Le moment de l’éclipse où la lune va découvrir le soleil.">
  162. </a>
  163. <figcaption>En mode halo au développement car c’est quand même&nbsp;sympa.</figcaption>
  164. </figure>
  165. <p>Fait étonnant, quelques petites minutes après l’apogée, on voyait un avion et surtout son ombre projetée de manière inhabituelle. J’ai l’intuition qu’il était dans une zone qui n’arrive jamais en temps normal car cet angle lumineux n’est pas possible. J’aurais dû prendre une photo pour pouvoir faire des calculs à ce&nbsp;sujet.</p>
  166. <nav>
  167. <p>
  168. <a href="/david/2024/enthousiasme/"
  169. title="Liste de tous les articles 2024 associés à cette étiquette"
  170. rel="tag">#enthousiasme</a>
  171. <a href="/david/2024/experience/"
  172. title="Liste de tous les articles 2024 associés à cette étiquette"
  173. rel="tag">#expérience</a>
  174. <a href="/david/2024/photographie/"
  175. title="Liste de tous les articles 2024 associés à cette étiquette"
  176. rel="tag">#photographie</a>
  177. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  178. </p>
  179. </nav>
  180. <h2>
  181. <a href="/david/2024/03/19/" title="Lien permanent vers cet article">Excitation</a> <time datetime="2024-03-19">19 mars 2024</time>
  182. </h2>
  183. <p>Il y a cette petite étincelle qui s’allume lorsque j’entrevois la possibilité de démarrer un petit bout de code qui pourrait changer mon/le monde (en toute&nbsp;modestie).</p>
  184. <p>Idée du jour&nbsp;: faire un <em>web component</em> qui s’intitulerait <code>&lt;page-crypt&gt;</code> en s’inspirant grandement de <a data-link-domain="github.com" href="https://github.com/MaxLaumeister/PageCrypt/">PageCrypt</a> (et de sa <a data-link-domain="github.com" href="https://github.com/Greenheart/pagecrypt">version à jour</a>). La génération de la page chiffrée pourrait <a data-link-domain="github.com" href="https://github.com/MaxLaumeister/PageCrypt/blob/master/python/encrypt.py">se faire en Python</a>.</p>
  185. <p>Cela essayerait de résoudre une problématique d’accès à du contenu privé sur des pages pré-générées de manière statique. Il est probable que j’en ai besoin sous peu afin d’afficher une progression personnalisée d’informations sensibles dans un contexte pro, ce qui me motive d’autant&nbsp;plus.</p>
  186. <p>Je découvre au passage qu’il n’est pas trivial de <a data-link-domain="MDN" href="https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem">convertir de l’unicode en base64 via JS</a>.</p>
  187. <p>Note&nbsp;: il existe aussi <a data-link-domain="github.com" href="https://github.com/robinmoisson/staticrypt">StatiCrypt</a>.</p>
  188. <a href="#hr-123" title="Lien vers cette section de la page"><hr id="hr-123" /></a>
  189. <blockquote lang="en">
  190. <p>If majority is always right – let’s eat shit… millions of flies can’t be&nbsp;wrong.</p>
  191. <p><cite><em>Statek</em>, Waldemar Łysiak, 1994</cite></p>
  192. </blockquote>
  193. <p>Cette citation aura fait ma&nbsp;journée.</p>
  194. <a href="#hr-124" title="Lien vers cette section de la page"><hr id="hr-124" /></a>
  195. <p>Je suis frustré par les capacités d’export des données de <a href="/david/2024/03/14/" title="Montre 2">la montre</a>. En inspectant, je pourrais récupérer les JSON qui passent avec Playwright mais c’est un peu la face nord. <em>Ça me fait glousser qu’un tel site utilise&nbsp;Vite.</em></p>
  196. <p>Il faut que je teste <a data-link-domain="github.com" href="https://github.com/xballoy/coros-api">coros-api</a> (TypeScript) et/ou <a data-link-domain="github.com" href="https://github.com/futoshita/Coros-Training-Hub-Exporter">Coros-Training-Hub-Exporter</a> (Java), je ne suis pas le seul à vouloir récupérer ces&nbsp;données.</p>
  197. <p>Aussi, il y a des données qui ne sont pas exposées par le TrainingHub mais auxquelles on semble avoir accès <a data-link-domain="tryterra.co" href="https://tryterra.co/integrations/coros">via une API tierce</a> (et très dispendieuse&#8239;!). Étrange et&nbsp;décevant…</p>
  198. <nav>
  199. <p>
  200. <a href="/david/2024/apprentissage/"
  201. title="Liste de tous les articles 2024 associés à cette étiquette"
  202. rel="tag">#apprentissage</a>
  203. <a href="/david/2024/enthousiasme/"
  204. title="Liste de tous les articles 2024 associés à cette étiquette"
  205. rel="tag">#enthousiasme</a>
  206. <a href="/david/2024/technique/"
  207. title="Liste de tous les articles 2024 associés à cette étiquette"
  208. rel="tag">#technique</a>
  209. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  210. </p>
  211. </nav>
  212. <h2>
  213. <a href="/david/2024/03/14/" title="Lien permanent vers cet article">Montre 2</a> <time datetime="2024-03-14">14 mars 2024</time>
  214. </h2>
  215. <p>J’ai reçu un <a href="/david/2024/03/02/" title="Montre">nouveau jouet</a> aujourd’hui. Alors je me suis amusé. Il me reste beaucoup de données et fonctionnalités à&nbsp;explorer.</p>
  216. <p>J’ai finalement opté pour la version non-Pro afin de privilégier un format qui me convient mieux (taille / poids), j’ai pu tester en magasin les deux&nbsp;auparavant.</p>
  217. <p>Il faut que j’apprenne à ne pas courir <em>contre</em> mais <em>avec</em> la montre. J’ai trop tendance à pousser alors qu’elle sait bien à mon poignet que mon cœur ne va pas&nbsp;suivre.</p>
  218. <p>Il y a du travail à faire pour transformer un jugement en&nbsp;allié.</p>
  219. <blockquote>
  220. <p>Tu peux parler fort, exhiber ton savoir, assener tes arguments, brandir ta culture…<br />
  221. … mais la conversation est à sens unique et totalement stérile.<br />
  222. Au terme de l’échange tu demeures exactement le même, tu n’as pas évolué d’un&nbsp;pouce.</p>
  223. <p>La rencontre n’a pas eu&nbsp;lieu.</p>
  224. <p>Ou bien, tu peux laisser l’autre s’exprimer, l’écouter. Et alors te hisser sur la marche qu’il érige puis en poser une à ton tour.<br />
  225. Vois ta balle de tennis comme le lien qui te rattache aux autres. Cultive-le tant que tu peux.<br />
  226. Ne cherche plus à lutter contre les autres pour être meilleur, Max, mais deviens meilleur grâce à&nbsp;eux.</p>
  227. <p>Le tennis est un art. L’art de&nbsp;l’échange.</p>
  228. <p><cite><em>Max Winson</em>, Jérémie&nbsp;Moreau</cite></p>
  229. </blockquote>
  230. <nav>
  231. <p>
  232. <a href="/david/2024/deception/"
  233. title="Liste de tous les articles 2024 associés à cette étiquette"
  234. rel="tag">#déception</a>
  235. <a href="/david/2024/enthousiasme/"
  236. title="Liste de tous les articles 2024 associés à cette étiquette"
  237. rel="tag">#enthousiasme</a>
  238. <a href="/david/2024/sport/"
  239. title="Liste de tous les articles 2024 associés à cette étiquette"
  240. rel="tag">#sport</a>
  241. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  242. </p>
  243. </nav>
  244. <form action="/david/recherche/" method="get">
  245. <fieldset>
  246. <legend>Recherche</legend>
  247. <label for="input-search">Termes de votre recherche :</label>
  248. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  249. <input type="submit" value="Chercher">
  250. <p id="indexation-infos">
  251. <small>
  252. Seuls les contenus de ces 8 dernières années sont indexés.
  253. </small>
  254. </p>
  255. </fieldset>
  256. </form>
  257. <aside>
  258. <theme-toggle></theme-toggle>
  259. </aside>
  260. </article>
  261. <hr>
  262. <footer>
  263. <p>
  264. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  265. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  266. <a href="http://larlet.com"
  267. title="Go to my English profile"
  268. data-instant>Pro</a>
  269. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  270. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  271. </p>
  272. <template id="theme-selector">
  273. <form>
  274. <style type="text/css">
  275. fieldset div {
  276. text-align: center;
  277. }
  278. </style>
  279. <fieldset>
  280. <legend>Thème</legend>
  281. <div>
  282. <label>
  283. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  284. Auto
  285. </label>
  286. <label>
  287. <input type="radio" value="dark" name="chosen-color-scheme">
  288. Foncé
  289. </label>
  290. <label>
  291. <input type="radio" value="light" name="chosen-color-scheme">
  292. Clair
  293. </label>
  294. </div>
  295. </fieldset>
  296. </form>
  297. </template>
  298. </footer>
  299. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  300. <script>
  301. class ThemeToggle extends HTMLElement {
  302. constructor() {
  303. super()
  304. const themeSelectorTemplate = document.querySelector('#theme-selector')
  305. const form = themeSelectorTemplate.content.firstElementChild
  306. this.attachShadow({ mode: 'open' })
  307. this.shadowRoot.appendChild(form.cloneNode(true))
  308. }
  309. connectedCallback() {
  310. const form = this.shadowRoot.querySelector('form')
  311. form.addEventListener('change', (e) => {
  312. const chosenColorScheme = e.target.value
  313. localStorage.setItem('theme', chosenColorScheme)
  314. toggleTheme(chosenColorScheme)
  315. })
  316. const selectedTheme = localStorage.getItem('theme')
  317. if (selectedTheme && selectedTheme !== 'undefined') {
  318. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  319. }
  320. }
  321. }
  322. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  323. window.addEventListener('load', () => {
  324. let colorsLayer = undefined
  325. let hasDarkRules = false
  326. for (const styleSheet of Array.from(document.styleSheets)) {
  327. let mediaRules = []
  328. for (const layerRule of styleSheet.cssRules) {
  329. if (!(layerRule instanceof CSSLayerBlockRule)) {
  330. continue
  331. }
  332. if (layerRule.name === 'colors') {
  333. colorsLayer = layerRule
  334. }
  335. for (const cssRule of layerRule.cssRules) {
  336. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  337. continue
  338. }
  339. // WARNING: Safari does not have/supports `conditionText`.
  340. if (cssRule.conditionText) {
  341. if (cssRule.conditionText !== prefersColorSchemeDark) {
  342. continue
  343. }
  344. } else {
  345. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  346. continue
  347. }
  348. }
  349. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  350. }
  351. }
  352. // WARNING: do not try to insert a Rule to a styleSheet you are
  353. // currently iterating on, otherwise the browser will be stuck
  354. // in a infinite loop…
  355. for (const mediaRule of mediaRules) {
  356. // Safari requires the `0` second parameter (even if default).
  357. colorsLayer.insertRule(mediaRule.cssText, 0)
  358. hasDarkRules = true
  359. }
  360. }
  361. if (hasDarkRules) {
  362. if ('customElements' in window && !customElements.get('theme-toggle')) {
  363. customElements.define('theme-toggle', ThemeToggle)
  364. }
  365. }
  366. })
  367. </script>
  368. </body>
  369. </html>