|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400 |
- <!doctype html><!-- This is a valid HTML5 document. -->
- <!-- Screen readers, SEO, extensions and so on. -->
- <html lang="fr">
- <!-- Has to be within the first 1024 bytes, hence before the `title` element
- See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
- <meta charset="utf-8">
- <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
- <!-- The viewport meta is quite crowded and we are responsible for that.
- See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
- <meta name="viewport" content="width=device-width,initial-scale=1">
- <!-- Required to make a valid HTML5 document. -->
- <title>Tag #accompagnement — David Larlet</title>
- <meta name="description" content="Publications relatives au tag #accompagnement">
- <!-- That good ol' feed, subscribe :). -->
- <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
- <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
- <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
- <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
- <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
- <link rel="manifest" href="/static/david/icons2/site.webmanifest">
- <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
- <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
- <meta name="msapplication-TileColor" content="#f7f7f7">
- <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
- <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
- <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
- <!-- Documented, feel free to shoot an email. -->
- <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
- <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
- <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <script>
- function toggleTheme(themeName) {
- document.documentElement.classList.toggle(
- 'forced-dark',
- themeName === 'dark'
- )
- document.documentElement.classList.toggle(
- 'forced-light',
- themeName === 'light'
- )
- }
- const selectedTheme = localStorage.getItem('theme')
- if (selectedTheme !== 'undefined') {
- toggleTheme(selectedTheme)
- }
- </script>
-
- <style type="text/css">
- details[open] summary {
- display: none;
- }
- </style>
-
- <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
-
-
- <header>
- <h1>Publications relatives au tag #accompagnement</h1>
- </header>
- <nav>
- <p class="center">
- <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
- <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
- </svg> Accueil</a>
- • <a rel="tags" href="/david/#tags-2023" title="Liste de toutes les étiquettes"><svg class="icon icon-tags">
- <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-tags"></use>
- </svg> Étiquettes</a>
- </p>
- </nav>
- <hr>
- <main>
- <p>Les plus récentes en premier, les 3 premières sont dépliées et ensuite c’est à la demande, bonne exploration !</p>
-
- <h2><a href="/david/2023/02/18/" title="Lien permanent vers cet article">Quiz</a> (2023-02-18)</h2>
-
-
-
- <blockquote>
- <p>On aimerait pouvoir faire des quiz.</p>
- </blockquote>
- <p>Il y a 20 ans, j’aurais commencé à modéliser cela dans une base de données relationnelles avec les bons index et tout.</p>
- <p>Il y a 15 ans, j’aurais essayé de représenter cela avec des données liées et du RDF pour une réutilisation sémantique.</p>
- <p>Il y a 10 ans, je me serais demandé si ça pouvait rentrer dans Redis ou MongoDB et à quel point ça passerait à l’échelle.</p>
- <p>Il y a 5 ans, j’aurais imaginé une API pour pouvoir généraliser l’usage et décliner plusieurs services équivalents.</p>
- <p><strong>Et aujourd’hui alors ?</strong></p>
- <p>Je commence par me demander comment est-ce que les utilisateur·ices vont pouvoir saisir ces données et devenir autonomes.</p>
- <p>Je n’envisage pas qu’iels puissent saisir du HTML — qui plus est valide et accessible — pour concevoir ce quiz. Je me demande quelle serait la structure la plus logique pour déterminer les réponses possibles et mentionner la bonne. Il y a un enjeu de <em>feedback</em> immédiat lors de la rédaction, par exemple en <em>CommonMark</em> un peu étendu dans un <em>pad</em> ou un forge <em>git</em>. J’imagine une structure qui ressemble à :</p>
- <pre><code>Le consentement c’est :
-
- * [ ] Demander la permission
- * [x] S’assurer à tout moment que l’autre↩
- est à l’aise et désire ce qu’on lui fait
- * [ ] Peut se donner avec un peu de pression
- </code></pre>
- <p>C’est ensuite à moi de convertir cette structure plate, textuelle, relativement compréhensible en un formulaire web interactif. C’est le seul moment où la technique entre en jeux avec des dépendances aussi minimalistes que possible.</p>
- <p>Ce qui a changé en 20 ans, c’est que j’ai pris conscience que la pérennité d’une donnée tient à l’autonomie que l’on peut donner aux personnes qui vont s’assurer de son évolution. La « bonne » modélisation est celle qui est explicite et non réservée à une élite de dévelopeur·euses.</p>
- <p>Entre l’<em>User eXperience</em> (UX) et la <em>Developer eXperience</em> (DX), il y aurait peut-être la <em>Maintenance eXperience</em> (MX) ? Et dans ce contexte, l’autonomie vis-à-vis des données est cruciale. Ce n’est peut-être pas techniquement très propre, c’est difficile à mettre en valeur sur un CV ou dans une conférence, c’est même aux antipodes de la mode actuelle.</p>
- <p>Mais c’est là où je positionne ma valeur aujourd’hui. De la cathédrale qu’il faut reconstruire tous les 2 ans au refuge qui ne nécessite que quelques planches et clous en maintenance annuelle pour qu’une poignée de personnes y trouvent du réconfort. Et soient en capacité de participer à l’effort commun.</p>
- <hr />
- <p>Bandes-dessinées de la semaine :</p>
- <ul>
- <li><a href="https://editions-sarbacane.com/bd/rene-e-aux-bois-dormants">René.e aux bois dormants</a> de Elene Usdin.</li>
- <li><a href="https://ecosociete.org/livres/megantic-un-train-dans-la-nuit">Mégantic, un train dans la nuit</a> de Anne-Marie Saint-Cerny et Christian Quesnel.</li>
- </ul>
- <p>Je ne sais pas si c’est le fait de résider sur ces territoires mais les deux m’ont pas mal affecté. L’héritage de la colonisation en étant sur les lieux colonisés est encore plus difficile à porter.</p>
- <hr />
- <p>Film de la semaine : <a href="https://en.wikipedia.org/wiki/The_Menu_(2022_film)">The Menu</a> (essayez de ne pas vous divulgâcher…).</p>
- <hr />
-
- <blockquote lang="en">
- <p>💯 Always remember that although a subset of the JavaScript community can be very loud, they represent a paltry portion of the web as a whole. This means that when they say something like “Best practices don’t actually work”—what they mean is “Best practices don’t actually work for a small subset of less than 5 percent of the web”.</p>
- <p><cite><em><a href="https://andy-bell.co.uk/the-extremely-loud-minority/">The (extremely) loud minority</a></em> (<a href="/david/cache/2023/78d79db0da7f60c48a02cfd088885085/">cache</a>)</cite></p>
- </blockquote>
-
- <blockquote lang="en">
- <p>🐦 Spinners are the dumbest progress bar.</p>
- <p><cite><em><a href="https://interconnected.org/home/2023/02/10/progress">A notification center for progress bars that sounds like birdsong</a></em> (<a href="/david/cache/2023/29dac969af1faa8ba0338a2e7e59ebbd/">cache</a>)</cite></p>
- </blockquote>
-
-
-
-
- <h2><a href="/david/2023/02/13/" title="Lien permanent vers cet article">Livre</a> (2023-02-13)</h2>
-
-
-
- <blockquote lang="en">
- <p>They both would have been ‘good enough’ for my purposes, but since I’m comfortable with Markdown, HTML, and CSS, using Pandoc made the most sense.</p>
- <p>If you’re comfortable with Markdown then Pandoc is <em>amazing</em>. It integrates out of the box with both Weasyprint and paged.js. <mark>Either of them is a decent option for generating PDFs.</mark> Paged.js uses headless Chrome, which gives it access to a broader spectrum of CSS features and makes it a little bit flakier.</p>
- <p><cite><em><a href="https://www.baldurbjarnason.com/2023/how-i-made-my-book/">Some thoughts on how to make a book, three months after I made one</a></em> (<a href="/david/cache/2023/8cb87dbe21c3f5a7a69735a70daf51c3/">cache</a>)</cite></p>
- </blockquote>
- <p>Je commence à avoir quelques expériences avec Pandoc si vous voulez que l’on produise un livre numérique ensemble. Pas forcément technique. Potentiellement sur le Web. Dans le meilleur des cas on apprendrait chacun·e des choses et on repartirait à la fois plus autonomes <em>et</em> paradoxalement plus lié·es aussi.</p>
- <p>(Dé)livrez-vous.</p>
-
-
-
-
- <h2><a href="/david/2023/01/31/" title="Lien permanent vers cet article">Ennui</a> (2023-01-31)</h2>
-
-
-
- <blockquote lang="en">
- <p>There’s a quote from a writer that has rattled around in my head for years (although I have never been able to source it, leading me to wonder if I accidentally made it up), but it went something like, “I only need a half hour a day to write. But I have to wait around an awful long time for that half hour to show up.” I think about this all the time—that the actual amount of time spent in doing something creative (writing, designing, making music, whathaveyou) is often buffered by hours and hours on either side by real—sometimes pleasant, sometimes infuriating—boredom.</p>
- <p>[…] That is, not merely an absence of doing, but a not-doing so complete it doesn’t stimulate, and it doesn’t heal. It merely waits—patiently or otherwise—for an arrival. <mark>I fear we have forgotten how to wait.</mark></p>
- <p><cite><em><a href="https://aworkinglibrary.com/writing/tolerance-for-boredom">Tolerance for boredom</a></em> (<a href="/david/cache/2023/ae079737f65e55da1d7a672b3a685b46/">cache</a>)</cite></p>
- </blockquote>
- <p>C’est l’une des choses que je trouve être la plus difficile à transmettre en tant que parent. Accepter que l’on a du temps devant soi et qu’il est possible et sain de ne « rien faire » pendant une période plus ou moins longue. Ce qui est complexe, c’est cet apprentissage de l’alternance entre des périodes d’activités <em>intentionnelles</em> et celles qui sont induites par ce qui semble être — à première vue — de l’inactivité.</p>
- <p>Compenser de l’hyper-activité par de la sur-activité est une voie qui semble naturelle mais qui ne <em>me</em> parait pas être soutenable et/ou enviable sur du long terme.</p>
- <p>La difficulté vient peut-être du fait qu’il n’est pas facile de montrer l’ennui à partir du moment où la demande d’attention (externe) vient interrompre de fait cette période…</p>
- <hr />
- <p>Pensée du jour :</p>
-
- <blockquote>
- <p>Ce monde sera plus terne lorsqu’il n’y aura plus de neige.</p>
- </blockquote>
- <hr />
-
- <blockquote lang="en">
- <p>His wildly popular “Last Child in the Woods: Saving Our Children From Nature-Deficit Disorder” includes evidence that exposure to nature is essential not just to children’s mental and physical health, but to everyone’s. Adults are just as susceptible to a “Vitamin N” deficiency he explains in his more recent “The Nature Principle: Reconnecting with Life in a Virtual Age.” I asked him about my writing-outside theory.</p>
- <p>“It’s likely you find it easier to write outside not only because of nature’s direct impact, but because of the absence of so many distractions, most of them technological.” says Mr. Louv, who also finds his writing better when he does it by a lake or in the woods. “The info-blitzkrieg has spawned a new field called ‘interruption science’ and a newly minted condition: continuous partial attention.” Constant electronic intrusions, he says, leave anyone trying to work frustrated, stressed and certainly less creative.</p>
- <p><cite><em><a href="https://archive.nytimes.com/opinionator.blogs.nytimes.com/2013/09/16/time-to-write-go-outside/">Time to Write? Go Outside</a></em> (<a href="/david/cache/2023/300b9aa899d44f7606a8448991e2acfd/">cache</a>)</cite></p>
- </blockquote>
-
-
-
-
- <h2><a href="/david/2023/01/30/" title="Lien permanent vers cet article">Lecture</a> (2023-01-30)</h2>
-
- <details>
- <summary>Déplier pour lire le contenu de la publication</summary>
-
-
- <blockquote lang="en">
- <p>Reading is a technology that works. And it works in part by immersing the reader in the text itself. The lack of video / music / pop-up ads / crypto tokens / mini-games aren’t a problem to be solve. <mark>The lack of those thing is the feature.</mark> Books are engaging precisely <em>because</em> they lack those things.</p>
- <p><cite><em><a href="https://countercraft.substack.com/p/maybe-the-book-doesnt-need-to-disrupted">Maybe the Book Doesn’t Need to Be “Disrupted” in the First Place?</a></em> (<a href="/david/cache/2023/04ad9e0f254b2d6111aef95102654f7d/">cache</a>)</cite></p>
- </blockquote>
- <p>Pour avoir modestement participé à la publication de certains ouvrages sur les <a href="http://ateliers.sens-public.org/">Ateliers de Sens-Public</a> ou les <a href="http://www.parcoursnumeriques-pum.ca/">Parcours numériques</a> des Presses de l’Université de Montréal, cette publication me fait pas mal cogiter. Je me raccroche au fait qu’il y ait différents publics pour différentes lectures et pour différents types d’ouvrages aussi.</p>
- <p>Ironiquement, je ne lis que des livres sur papier mais je lis tellement d’articles sur mon écran que la limite est floue et qu’il faudrait commencer par définir ce que l’on entend par « lecture » et « livre ».</p>
- <p>Ce qu’il me manque avec un support papier, c’est de pouvoir facilement consigner des passages (par exemple pour usage/recopie ici) mais depuis que la reconnaissance de texte est automatisée dans macOS Photos ça va beaucoup plus vite de prendre la page en photo pour y revenir plus tard et ça n’interrompt pas tant mon flux de lecture.</p>
- <p>Quelques questions pour toi lecteur·ice :</p>
- <ul>
- <li>Est-ce que tu lis ce blog sur une liseuse ?</li>
- <li>Est-ce qu’un format particulier t’aiderait ?</li>
- <li>Est-ce qu’un recueil annuel/périodique serait pertinent ?</li>
- <li>Est-ce que le format ePub permettrait d’avoir des liens vers les articles en cache tout en ayant une navigation fluide ? (Est-ce nécessaire ?)</li>
- </ul>
- <hr />
-
- <blockquote>
- <p>🧡 Information importante : ce prototype ne restera en ligne qu’au maximum pendant 2 mois.</p>
- <p>Il est extrêmement court.<br />
- Il est extrêmement simple.<br />
- Il est extrêmement rudimentaire.<br />
- Mais il est terminé, et c’est le plus important.</p>
- <p><cite><em><a href="https://marienfressinaud.fr/exploratrices.html">Exploratrices, un prototype de jeu vidéo</a></em> (<a href="/david/cache/2023/3cffe9d9946878273e050e9d35d9bf9e/">cache</a>)</cite></p>
- </blockquote>
-
- </details>
-
-
-
- <h2><a href="/david/2023/01/24/" title="Lien permanent vers cet article">Capot</a> (2023-01-24)</h2>
-
- <details>
- <summary>Déplier pour lire le contenu de la publication</summary>
-
-
- <blockquote>
- <p>En tant que premier projet public depuis mon arrivée chez Gandi, je suis content d’avoir pu tester tant de nouvelles chose—nouvelles pour moi, nouvelles pour l’équipe… <mark>la possibilité d’apprendre des nouveaux concepts et des nouvelles pratiques,</mark> c’est l’une des principales raisons pour laquelle je pratique ce métier. L’autre raison c’est que ça me permet de réaliser des choses pratiques et utiles dans le respect des personnes qui les utiliseront.</p>
- <p><cite><em><a href="https://blog.gandi.net/fr/posts/un-coup-d-oeil-sous-le-capot/">Un coup d’œil sous le capot</a></em> (<a href="/david/cache/2023/e29bd9361e89e31ac21ee21180ec1dfb/">cache</a>)</cite></p>
- </blockquote>
- <p>J’adore ces retours où il « suffit » d’une nouvelle personne pour qu’un partage devienne possible.</p>
- <p>En ce moment, je me questionne sur l’accueil potentiel d’une personne en alternance dans <a href="http://scopyleft.fr/">Scopyleft</a>. C’est un engagement sur deux ans avec 4 jours par semaine, c’est énorme. Et en même temps, ça permettrait peut-être à cette personne de ne plus être considérée comme totalement débutante et d’accéder à des postes/situations plus enviables.</p>
- <p>Peut-être que ce serait aussi l’occasion de publier davantage d’outils et de pratiques que nous avons et qui ne sont pas documentées et/ou pas publiques.</p>
- <p>Tellement de choses peuvent se passer en 2 ans…</p>
-
- </details>
-
-
-
- <h2><a href="/david/2023/01/10/" title="Lien permanent vers cet article">Qualité</a> (2023-01-10)</h2>
-
- <details>
- <summary>Déplier pour lire le contenu de la publication</summary>
-
-
- <blockquote>
- <p>Quiconque cherche à circonscrire une discipline en lui imposant un cadre ne cherche généralement qu’à protéger son œuvre, et il le fait en perpétuant les standards qui ont permis son émergence. Celui-ci essaie de convaincre les générations à venir qu’elles doivent suivre les règles qu’il a édictées si elles comptent parvenir à l’excellence. Mais, comme disait Charles Bukowski, « il est quatre heures et demie du matin, il sera toujours quatre heures et demie du matin… ».</p>
- <p>Nous sommes à ce point focalisés sur le chemin que nous nous efforçons de suivre, en voulant toujours tout faire au mieux, armés d’une dévotion sans faille pour notre discipline <mark>alors que les œillères de la peur nous empêchent d’envisager des terrains inconnus,</mark> que nos yeux restent fixés sur cette route, sur ces mains qui prennent appui sur des genoux. Et nous ne réalisons pas que nous ne faisons que suivre les règles promulguées par un homme qui a un jour disputé une course contre des chevaux, ou par un autre qui s’est frotté à un sommet de plus de huit mille mètres sans oxygène, ou par un autre encore qui a décidé de laisser chez lui ses pitons, ses cordes et la sécurité pour ne faire qu’un avec les murs à escalader. Nous suivons les lois de ceux qui en ont enfreint de plus anciennes.</p>
- <p><cite><em>Au-delà des sommets</em>, Kilian Jornet</cite></p>
- </blockquote>
- <p>On parlait de code et de qualité avec <a href="https://thom4.net/">Thomas</a>. Je lui faisais part de ma frustration vis-à-vis d’un code qui n’avait pas été écrit par moi et que je trouvais problématique. En creusant un peu (merci !), je réalise que ce qui coince est au niveau de la pérennité et de la transmission. Et j’ai aussi conscience de produire moi-même du code qui serait difficile à reprendre par d’autres personnes n’ayant pas les mêmes aspirations/compétences.</p>
- <p>En Python, on a la chance de pouvoir automatiser certaines conversions/vérifications qui tendent à aller vers une certaine uniformisation (et donc universalité ?) : <a href="https://github.com/psf/black">black</a>, <a href="https://flake8.pycqa.org/">flake8</a>, <a href="https://pypi.org/project/isort/">isort</a> ou <a href="https://mypy.readthedocs.io/">mypy</a> par exemple.</p>
- <p>Pour aller plus loin, le code en lui-même n’est peut-être pas si critique, mais ce que l’on a appris en le concevant et l’utilisant l’est bien davantage. C’est cette transmission qu’il est important de rendre possible au sein de l’équipe. Outiller la base commune est un moyen de <strong>plus rapidement</strong> passer à l’étape de partage des concepts importants/métiers, en ce souciant moins de la forme.</p>
- <p>Et peut-être au contraire, que cette <strong>vitesse</strong> acquise nous empêche d’échanger sur des concepts importants ? Des envies différentes ? Des choix à côté desquels on peut passer par manque d’attention.</p>
-
- <blockquote lang="en">
- <p>Tradition (n.): Peer pressure from dead people.</p>
- <p><cite><em>Lu plusieurs fois sur masto</em></cite></p>
- </blockquote>
- <hr />
-
- <blockquote>
- <p>🦋 Depuis quelques années, j’essaie d’écrire un code le plus direct possible.</p>
- <p>Mon objectif : diminuer au maximum ma charge cognitive.</p>
- <p><cite><em><a href="https://sklein.xyz/garden/020-keep-it-simple-stupid-le-plus-longtemps-possible/">Keep it simple, stupid le plus longtemps possible</a></em> (<a href="/david/cache/2023/646ebfa25432bc6b653e524b52d25c9a/">cache</a>)</cite></p>
- </blockquote>
-
- <blockquote lang="en">
- <p>⛵️ Many of the tools that we thought we could rely on broke down, whether it is Apple products, or software that require subscription services, DRM, etc. As an artist you spend time developing a skill, <mark>you become a Photoshop illustrator.</mark> When your connection to the internet fails and that the software locks up, that skill that you thought was yours was actually entirely owned by someone, and can be taken away.</p>
- <p>Even though we’ve been paying for this sort of software for years, the moment that you can’t have access to authenticate yourself that skill is gone. We didn’t expect this, it scared us.</p>
- <p><cite><em><a href="https://100r.co/site/weathering_software_winter.html">weathering software winter</a></em> (<a href="/david/cache/2023/c564325b28ec854b6b098950df5c8c8f/">cache</a>)</cite></p>
- </blockquote>
-
- <blockquote lang="en">
- <p>🔎 It’s important to remember concepts and high level approaches, but don’t worry about remembering the details. You can always look that stuff up when you need it.</p>
- <p><cite><em><a href="https://gomakethings.com/you-dont-have-to-remember-everything-to-be-a-good-programmer/">You don’t have to remember everything to be a good programmer</a></em> (<a href="/david/cache/2023/2f4b8ec8f6fd2cbc48a04dcac2cc7d24/">cache</a>)</cite></p>
- </blockquote>
-
- </details>
-
-
-
- </main>
-
-
- <hr>
-
- <footer>
- <p>
- <nobr>
- <a href="/david/" title="Aller à l’accueil"
- ><svg class="icon icon-home">
- <use
- xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-home"
- ></use>
- </svg>
- Accueil</a
- >
- </nobr>
- •
- <nobr>
- <a href="/david/log/" title="Accès au flux RSS"
- ><svg class="icon icon-rss2">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-rss2"></use>
- </svg>
- Suivre</a
- >
- </nobr>
- •
- <nobr>
- <a href="http://larlet.com" title="Go to my English profile" data-instant
- ><svg class="icon icon-user-tie">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-user-tie"></use>
- </svg>
- Pro</a
- >
- </nobr>
- •
- <nobr>
- <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"
- ><svg class="icon icon-mail">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-mail"></use>
- </svg>
- Email</a
- >
- </nobr>
- •
- <nobr>
- <abbr
- class="nowrap"
- title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"
- ><svg class="icon icon-hammer2">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-hammer2"></use>
- </svg>
- Légal</abbr
- >
- </nobr>
- </p>
- <template id="theme-selector">
- <form>
- <fieldset>
- <legend><svg class="icon icon-brightness-contrast">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-brightness-contrast"></use>
- </svg> Thème</legend>
- <label>
- <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
- </label>
- <label>
- <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
- </label>
- <label>
- <input type="radio" value="light" name="chosen-color-scheme"> Clair
- </label>
- </fieldset>
- </form>
- </template>
- </footer>
- <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
- <script>
- function loadThemeForm(templateName) {
- const themeSelectorTemplate = document.querySelector(templateName)
- const form = themeSelectorTemplate.content.firstElementChild
- themeSelectorTemplate.replaceWith(form)
-
- form.addEventListener('change', (e) => {
- const chosenColorScheme = e.target.value
- localStorage.setItem('theme', chosenColorScheme)
- toggleTheme(chosenColorScheme)
- })
-
- const selectedTheme = localStorage.getItem('theme')
- if (selectedTheme && selectedTheme !== 'undefined') {
- form.querySelector(`[value="${selectedTheme}"]`).checked = true
- }
- }
-
- const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
- window.addEventListener('load', () => {
- let hasDarkRules = false
- for (const styleSheet of Array.from(document.styleSheets)) {
- let mediaRules = []
- for (const cssRule of styleSheet.cssRules) {
- if (cssRule.type !== CSSRule.MEDIA_RULE) {
- continue
- }
- // WARNING: Safari does not have/supports `conditionText`.
- if (cssRule.conditionText) {
- if (cssRule.conditionText !== prefersColorSchemeDark) {
- continue
- }
- } else {
- if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
- continue
- }
- }
- mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
- }
-
- // WARNING: do not try to insert a Rule to a styleSheet you are
- // currently iterating on, otherwise the browser will be stuck
- // in a infinite loop…
- for (const mediaRule of mediaRules) {
- styleSheet.insertRule(mediaRule.cssText)
- hasDarkRules = true
- }
- }
- if (hasDarkRules) {
- loadThemeForm('#theme-selector')
- }
- })
- </script>
-
- </body>
- </html>
|