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 25KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  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 #commun
  14. — David Larlet</title>
  15. <meta name="description" content="Publications relatives au tag #commun">
  16. <!-- That good ol' feed, subscribe :). -->
  17. <link rel="alternate"
  18. type="application/atom+xml"
  19. title="Feed"
  20. href="/david/log/">
  21. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  22. <link rel="apple-touch-icon"
  23. sizes="180x180"
  24. href="/static/david/icons2/apple-touch-icon.png">
  25. <link rel="icon"
  26. type="image/png"
  27. sizes="32x32"
  28. href="/static/david/icons2/favicon-32x32.png">
  29. <link rel="icon"
  30. type="image/png"
  31. sizes="16x16"
  32. href="/static/david/icons2/favicon-16x16.png">
  33. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  34. <link rel="mask-icon"
  35. href="/static/david/icons2/safari-pinned-tab.svg"
  36. color="#07486c">
  37. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  38. <meta name="msapplication-TileColor" content="#f7f7f7">
  39. <meta name="msapplication-config"
  40. content="/static/david/icons2/browserconfig.xml">
  41. <meta name="theme-color"
  42. content="#f7f7f7"
  43. media="(prefers-color-scheme: light)">
  44. <meta name="theme-color"
  45. content="#272727"
  46. media="(prefers-color-scheme: dark)">
  47. <!-- Is that even respected? Retrospectively? What a shAItshow…
  48. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  49. <meta name="robots" content="noai, noimageai">
  50. <!-- Documented, feel free to shoot an email. -->
  51. <link rel="stylesheet" href="/static/david/css/style_2024-01-28.css">
  52. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  53. <link rel="preload"
  54. href="/static/david/css/fonts/century_supra_ot_a_regular.woff2"
  55. as="font"
  56. type="font/woff2"
  57. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  58. crossorigin>
  59. <link rel="preload"
  60. href="/static/david/css/fonts/century_supra_ot_a_bold.woff2"
  61. as="font"
  62. type="font/woff2"
  63. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  64. crossorigin>
  65. <link rel="preload"
  66. href="/static/david/css/fonts/century_supra_ot_a_italic.woff2"
  67. as="font"
  68. type="font/woff2"
  69. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  70. crossorigin>
  71. <link rel="preload"
  72. href="/static/david/css/fonts/century_supra_ot_b_regular.woff2"
  73. as="font"
  74. type="font/woff2"
  75. media="(prefers-color-scheme: dark)"
  76. crossorigin>
  77. <link rel="preload"
  78. href="/static/david/css/fonts/century_supra_ot_b_bold.woff2"
  79. as="font"
  80. type="font/woff2"
  81. media="(prefers-color-scheme: dark)"
  82. crossorigin>
  83. <link rel="preload"
  84. href="/static/david/css/fonts/century_supra_ot_b_italic.woff2"
  85. as="font"
  86. type="font/woff2"
  87. media="(prefers-color-scheme: dark)"
  88. crossorigin>
  89. <script>
  90. function toggleTheme(themeName) {
  91. document.documentElement.classList.toggle(
  92. 'forced-dark',
  93. themeName === 'dark'
  94. )
  95. document.documentElement.classList.toggle(
  96. 'forced-light',
  97. themeName === 'light'
  98. )
  99. }
  100. const selectedTheme = localStorage.getItem('theme')
  101. if (selectedTheme !== 'undefined') {
  102. toggleTheme(selectedTheme)
  103. }
  104. </script>
  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>#commun</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/01/31/" title="Lien permanent vers cet article">Mécénat</a> <time datetime="2024-01-31">31 janvier 2024</time>
  132. </h2>
  133. <p>Je termine mon mécénat de compétence avec uMap sur ces 4&nbsp;derniers mois (25&nbsp;jours de travail). Je suis très content d’avoir pu faire cette expérience avec / grâce à Scopyleft et&nbsp;OSM-FR.</p>
  134. <p>Voici les notes que j’avais prises avant d’établir une Convention de mécénat avec <a data-link-domain="openstreetmap.fr" href="https://www.openstreetmap.fr/association/">OpenStreetMap France</a>, j’ai pris le soin de documenter la démarche car ça pourrait donner lieu à d’autres dons en nature de la part de Scopyleft (et puis ça pourrait peut-être vous inspirer&nbsp;😇).</p>
  135. <p><em>Note&nbsp;: vous pouvez réutiliser ces sources d’informations mais elles n’ont pas été validées par une personnes qui serait compétente dans le domaine. #IAmNotALawyer</em></p>
  136. <blockquote>
  137. <p>Une des possibilités offertes à un mécène entreprise consiste à apporter non pas des financements en numéraire mais des moyens (produits ou services) à la cause qu’elle entend soutenir. Il s’agit ici, d’un «&nbsp;mécénat en nature ou de compétence&nbsp;». Les critères d’éligibilité à cette forme de mécénat sont exactement les mêmes que ceux prévus pour une contribution en&nbsp;numéraire.</p>
  138. <p><cite><em><a data-link-domain="culture.gouv.fr" href="https://www.culture.gouv.fr/Thematiques/Mecenat/Entreprises/Le-mecenat-en-nature-ou-en-competence">Source</a></em></cite></p>
  139. </blockquote>
  140. <blockquote>
  141. <p>Le prêt de main d’œuvre&nbsp;: l’entreprise met à disposition d’un organisme éligible au mécénat un ou plusieurs salariés. C’est l’organisme qui pilote la mission et qui peut faire figure d’autorité fonctionnelle dans ce cadre. Le temps et la fréquence du mécénat de compétences peuvent considérablement varier en fonction des besoins&nbsp;: il peut aussi bien s’agir d’une mission courte, même d’une seule demi-journée, que d’une mission plus longue voir d’un plein temps dans la limite de&nbsp;3&nbsp;ans.</p>
  142. <p><cite><em><a data-link-domain="cci.fr" href="https://www.cci.fr/actualites/le-mecenat-de-competences-comment-le-mettre-en-place-et-mobiliser-les-equipes">Source</a></em></cite></p>
  143. </blockquote>
  144. <p>Lorsque les dons sont effectués en nature, il est nécessaire de procéder à leur&nbsp;valorisation&nbsp;:</p>
  145. <ul>
  146. <li>pour le calcul de la réduction d’impôt que déclare&nbsp;l’entreprise&#8239;;</li>
  147. <li>pour la réintégration extra-comptable de la valeur du don par&nbsp;l’entreprise&#8239;;</li>
  148. <li>pour l’établissement du reçu fiscal par l’organisme bénéficiaire du&nbsp;don&#8239;;</li>
  149. <li>pour la détermination des éventuels contreparties remises à l’entreprise par l’organisme bénéficiaire du&nbsp;don.</li>
  150. </ul>
  151. <h2 id="comment-valoriser-un-don-au-titre-dun-mecenat-de-competence">Comment valoriser un don au titre d’un mécénat de compétence&#8239;? <a href="#comment-valoriser-un-don-au-titre-dun-mecenat-de-competence" title="Ancre vers cette partie">#</a></h2>
  152. <blockquote>
  153. <p>Pour chaque salarié mis à disposition, ce don est évalué à son coût de revient, à savoir la somme de sa rémunération et des charges sociales y afférentes dans la limite de trois fois le montant du plafond mentionné à l’article L. 241-3&nbsp;du code de la sécurité sociale (CSS), soit 10&#8239;284&#8239;€ par mois en&nbsp;2022.</p>
  154. <p><cite><em><a data-link-domain="culture.gouv.fr" href="https://www.culture.gouv.fr/Thematiques/Mecenat/Entreprises/Le-mecenat-en-nature-ou-en-competence">Source</a></em></cite></p>
  155. </blockquote>
  156. <p>Ce n’est donc <strong>pas un TJM</strong> mais un <em>coût de revient</em>.</p>
  157. <blockquote>
  158. <p>A la suite de l’adoption de la <a data-link-domain="legifrance.gouv.fr" href="https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000043964778">loi du 24&nbsp;août 2021&nbsp;confortant le respect des principes de la République</a>, l’administration fiscale a rappelé que <mark>la valorisation du don relève de la seule responsabilité de l’entreprise mécène</mark> qu’il s’agisse d’un don sous forme de biens (dons alimentaires notamment), de services ou d’une mise à disposition de personnel. Un <a data-link-domain="culture.gouv.fr" href="https://www.culture.gouv.fr/Media/Medias-creation-rapide/2041-mec-sd_4032.pdf">nouveau modèle de reçu fiscal</a> a été publié le 10&nbsp;juin&nbsp;2022.</p>
  159. </blockquote>
  160. <h2 id="avantages-fiscaux">Avantages fiscaux <a href="#avantages-fiscaux" title="Ancre vers cette partie">#</a></h2>
  161. <blockquote>
  162. <p>Le mécénat de compétences ouvre droit à un avantage fiscal. Concrètement, comme pour toute action de mécénat, le «&nbsp;don&nbsp;» de compétences de l’entreprise ouvrira droit à une réduction d’impôts de 60% du montant du salaire chargé du salarié mis à disposition. Cet avantage est accessible à tous les types d’entreprises, sans montant minimum de&nbsp;don.</p>
  163. <p><cite><em><a data-link-domain="economie.gouv.fr" href="https://www.economie.gouv.fr/files/Guide-pratique-mecenat-competences-novembre2021.pdf">Source</a></em></cite></p>
  164. </blockquote>
  165. <h2 id="modele">Modèle <a href="#modele" title="Ancre vers cette partie">#</a></h2><p>Un modèle de <a data-link-domain="culture.gouv.fr" href="https://www.culture.gouv.fr/Media/Medias-creation-rapide/Modele-de-convention-de-mecenat-d-entreprise.docx">convention de mécénat</a>, <a data-link-domain="associations.gouv.fr" href="https://www.associations.gouv.fr/IMG/pdf/asso_mecenat_2021_v1b.pdf">un autre</a> et <a data-link-domain="occitanie.developpement-durable.gouv.fr" href="https://www.occitanie.developpement-durable.gouv.fr/IMG/pdf/ex_convention_mecenat_competences_cle065a53.pdf">encore un autre</a>.</p>
  166. <p>En synthèse, il&nbsp;faut&nbsp;:</p>
  167. <h3>Les&nbsp;coordonnées</h3>
  168. <p>Entre&nbsp;:</p>
  169. <p>L’entreprise …, statut, dont le siège social est au …,<br />
  170. Représentée par …, fonction,<br />
  171. Ci-après dénommée «&nbsp;le&nbsp;mécène&nbsp;»,</p>
  172. <p>Et</p>
  173. <p>L’association …, sise au …,<br />
  174. Représentée par son Président (&#8239;?), …<br />
  175. Ci-après dénommée&nbsp;«&nbsp;l’association&nbsp;»,</p>
  176. <p>Vu la loi n°2003-79&nbsp;du 1<sup>er</sup> août 2003&nbsp;relative au mécénat, aux associations et aux fondations et notamment les dispositions codifiées à l’article 238&nbsp;bis du code général des&nbsp;impôts.</p>
  177. <h3>(optionnel) Préambule&nbsp;(contexte)</h3>
  178. <ul>
  179. <li>objet du mécénat de l’entreprise, de la&nbsp;fondation…</li>
  180. <li>objet de l’association&nbsp;: présentation de sa mission/vocation générale, et laïus sur le
  181. projet qu’ils portent en commun avec l’entreprise le cas&nbsp;échéant</li>
  182. <li>rencontre de ces deux&nbsp;objets&#8239;?</li>
  183. </ul>
  184. <h3>Ce qui est&nbsp;convenu</h3>
  185. <p>Il est convenu et décidé ce qui&nbsp;suit&nbsp;:</p>
  186. <ul>
  187. <li>La présente convention a pour objet de définir les conditions du soutien à l’association pour le projet suivant&nbsp;: (descriptif de l’action ou de la&nbsp;manifestation)</li>
  188. <li>L’entreprise mécène s’engage à mettre à disposition le personnel suivant&nbsp;: représentant une valeur de … € sur la période de&nbsp;…</li>
  189. </ul>
  190. <blockquote>
  191. <p>Pour valoriser ce mécénat de compétences, l’entreprise s’engage à comptabiliser et à valoriser le temps passé sur la mission sus nommée, soit le nombre d’heures passées x salaire horaire chargé (son commissaire aux comptes devra valider ce montant de salaire&nbsp;chargé).</p>
  192. <p>L’association pourra ainsi remettre à l’entreprise un reçu fiscal précisant le nombre d’heures et le coût équivalent donné à&nbsp;l’association.</p>
  193. <p>Conformément à l’article 238bis du code général des impôts, ce don en temps donnera droit à une réduction d’impôt égale à 60&#8239;% du montant des sommes versées dans la limite de 0,5% du C.A. HT.</p>
  194. </blockquote>
  195. <h3>Conditions</h3>
  196. <ul>
  197. <li>(optionnel / à adapter) L’association s’engage à faire figurer le nom de l’entreprise donatrice sur les supports d’information de l’action ou de la&nbsp;manifestation.</li>
  198. <li>La présente convention est établie en vertu des dispositions de l’article 238&nbsp;bis du&nbsp;CGI</li>
  199. <li>La présente convention prendra effet à sa date de signature et prendra fin le&nbsp;….</li>
  200. </ul>
  201. <p>Dans le cas où l’une des parties ne respecterait pas ses obligations contractuelles, cette convention serait résiliée de plein droit. En cas de litige, les parties conviennent d’une conciliation à&nbsp;l’amiable.</p>
  202. <h3>Signatures</h3>
  203. <p>Date, lieu et signatures&nbsp;:<br />
  204. A … le …<br />
  205. Représentant de l’entreprise / Représentant de&nbsp;l’association</p>
  206. <nav>
  207. <p>
  208. <a href="/david/2024/commun/"
  209. title="Liste de tous les articles 2024 associés à cette étiquette"
  210. rel="tag">#commun</a>
  211. <a href="/david/2024/documentation/"
  212. title="Liste de tous les articles 2024 associés à cette étiquette"
  213. rel="tag">#documentation</a>
  214. <a href="/david/2024/partage/"
  215. title="Liste de tous les articles 2024 associés à cette étiquette"
  216. rel="tag">#partage</a>
  217. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  218. </p>
  219. </nav>
  220. <h2>
  221. <a href="/david/2024/01/23/" title="Lien permanent vers cet article">Thèse</a> <time datetime="2024-01-23">23 janvier 2024</time>
  222. </h2>
  223. <blockquote>
  224. <p>Cette thèse porte sur les processus d’édition en considérant qu’ils sont constitutifs de la production du sens et qu’ils reflètent des visions du monde plurielles. Nous considérons le phénomène de fabrique d’édition comme un acte éditorial qui comprend autant la formalisation d’un texte <mark>que la constitution des outils permettant ce travail.</mark> Les dimensions techniques de l’édition sont ainsi imbriquées, telles que la construction de procédés de fabrication et de production de formes, d’objets et d’artefacts que sont les livres, ou telles que des opérations sur le texte comme l’architecture des contenus, la structuration sémantique et la composition&nbsp;typographique.</p>
  225. <p><cite><em><a data-link-domain="these.quaternum.net" href="https://these.quaternum.net/">Fabriquer des éditions
  226. Éditer des fabriques - Reconfiguration des processus techniques éditoriaux et nouveaux modèles épistémologiques</a></em>, Antoine&nbsp;Fauchié</cite></p>
  227. </blockquote>
  228. <p>J’assiste en direct à une soutenance de thèse pour la première fois de ma vie. Il s’agit d’un exercice moins facile que ce que je m’imaginais mais pas toutes les soutenances ne se font dans un tel contexte si j’ai bien réussi à lire entre les lignes. En tout cas, j’étais impressionné par la pertinence des réponses d’Antoine à chaud et sa faculté à recentrer les&nbsp;discussions.</p>
  229. <p>Les questions que j’aurais aimé&nbsp;poser&nbsp;:</p>
  230. <ol>
  231. <li>Comment transformer ces fabriques de logiciels <em>open-source</em> en communs numériques impliquant une gouvernance partagée&#8239;? Comment sont impliquées les différentes parties&nbsp;prenantes&#8239;?</li>
  232. <li>Quelle est la littéracie numérique nécessaire pour devenir auteur·ice aujourd’hui&#8239;? Quelle est l’in·accessibilité de ces fabriques sous cet angle&nbsp;là&#8239;?</li>
  233. <li>Le rôle de l’éditeur·ice devient-il également celui d’un·e accompagnateur·ice technique&#8239;? Quelle part pour l’éthique dans ce choix&nbsp;d’intermédiaire&#8239;?</li>
  234. </ol>
  235. <p>Niveau technique, dommage qu’il ne soit pas possible de faire référence à des passages particuliers vu qu’ils sont déjà numérotés dans la version HTML (mais en&nbsp;CSS).</p>
  236. <p><mark>@nnotation(contexte)</mark>&nbsp;: J’ai <a href="/david/2023/12/08/">participé au développement</a> d’une partie des outils présentés dans la thèse et on se connait depuis un moment avec&nbsp;Antoine.</p>
  237. <a href="#hr-45" title="Lien vers cette section de la page"><hr id="hr-45" /></a>
  238. <blockquote>
  239. <p>La sociologie parle de «&nbsp;dépossession économique&nbsp;» et de «&nbsp;dépossession culturelle&nbsp;» pour nommer la manière dont la société limite les capacités d’accès à certaines ressources et les expériences qu’elles rendent possibles. Ne pourrait-on pas suggérer qu’il y a aussi, à côté de ces deux phénomènes, ce que l’on pourrait désigner comme des mécanismes de dépossession existentielle&#8239;? Subir la forme-de-vie qui s’empare de nous et nous fait être ce que nous sommes, c’est subir sa vie et subir certains modes d’existence alors que d’autres auraient pu beaucoup mieux nous convenir et nous rendre plus heureux. C’est même, en un sens, se faire voler son existence par la société et les autres — et peut-être même par soi-même, par une certaine version de&nbsp;soi-même.</p>
  240. <p><mark>Nous ne devons jamais, comme dit Adorno, confondre ce que nous sommes et ce que la société a fait de nous.</mark> Nous ne sommes pas de toute éternité ce que nous avons été amenés à devenir. Il n’y a donc pas de projet qui vise à mettre en place une analytique oppositionnelle de l’ordre social et de notre inscription à l’intérieur de celui-ci qui pourrait faire l’économie d’une investigation de l’existence — d’une interrogation sur les formes de la vie et le tissu relationnel qui nous&nbsp;constitue.</p>
  241. <p><cite><em>Une aspiration au dehors</em>, Geoffroy de&nbsp;Lagasnerie</cite></p>
  242. </blockquote>
  243. <p>D’une certaine manière, je vis une <em>dépossession existentielle</em> choisie en assistant à cet exercice après avoir bifurqué d’une carrière&nbsp;universitaire.</p>
  244. <p>Merci Antoine pour&nbsp;l’invitation.</p>
  245. <nav>
  246. <p>
  247. <a href="/david/2024/commun/"
  248. title="Liste de tous les articles 2024 associés à cette étiquette"
  249. rel="tag">#commun</a>
  250. <a href="/david/2024/experience/"
  251. title="Liste de tous les articles 2024 associés à cette étiquette"
  252. rel="tag">#expérience</a>
  253. <a href="/david/2024/processus/"
  254. title="Liste de tous les articles 2024 associés à cette étiquette"
  255. rel="tag">#processus</a>
  256. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  257. </p>
  258. </nav>
  259. <h2>
  260. <a href="/david/2024/01/18/" title="Lien permanent vers cet article">Open-source</a> <time datetime="2024-01-18">18 janvier 2024</time>
  261. </h2>
  262. <p>Deux phrases du&nbsp;jour&nbsp;:</p>
  263. <ol>
  264. <li><q lang="en">Open Source is the Right to Repair, for software.</q>, <a data-link-domain="macaw.social" href="https://macaw.social/@andypiper/111774169944729337">sur&nbsp;masto</a></li>
  265. <li><q lang="fr">uMap est-il un produit ou un commun&#8239;?</q>, en réunion&nbsp;interne</li>
  266. </ol>
  267. <p>Faute de temps, le développement est laissé comme exercice aux&nbsp;lecteur·ices.</p>
  268. <nav>
  269. <p>
  270. <a href="/david/2024/commun/"
  271. title="Liste de tous les articles 2024 associés à cette étiquette"
  272. rel="tag">#commun</a>
  273. <a href="/david/2024/decision/"
  274. title="Liste de tous les articles 2024 associés à cette étiquette"
  275. rel="tag">#décision</a>
  276. <a href="/david/2024/opensource/"
  277. title="Liste de tous les articles 2024 associés à cette étiquette"
  278. rel="tag">#opensource</a>
  279. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  280. </p>
  281. </nav>
  282. <form action="/david/recherche/" method="get">
  283. <fieldset>
  284. <legend>Recherche</legend>
  285. <label for="input-search">Termes de votre recherche :</label>
  286. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  287. <input type="submit" value="Chercher">
  288. <p id="indexation-infos">
  289. <small>
  290. Seuls les contenus de ces 8 dernières années sont indexés.
  291. </small>
  292. </p>
  293. </fieldset>
  294. </form>
  295. <aside>
  296. <theme-toggle></theme-toggle>
  297. </aside>
  298. </article>
  299. <hr>
  300. <footer>
  301. <p>
  302. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  303. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  304. <a href="http://larlet.com"
  305. title="Go to my English profile"
  306. data-instant>Pro</a>
  307. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  308. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  309. </p>
  310. <template id="theme-selector">
  311. <form>
  312. <style type="text/css">
  313. fieldset div {
  314. text-align: center;
  315. }
  316. </style>
  317. <fieldset>
  318. <legend>Thème</legend>
  319. <div>
  320. <label>
  321. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  322. Auto
  323. </label>
  324. <label>
  325. <input type="radio" value="dark" name="chosen-color-scheme">
  326. Foncé
  327. </label>
  328. <label>
  329. <input type="radio" value="light" name="chosen-color-scheme">
  330. Clair
  331. </label>
  332. </div>
  333. </fieldset>
  334. </form>
  335. </template>
  336. </footer>
  337. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  338. <script>
  339. class ThemeToggle extends HTMLElement {
  340. constructor() {
  341. super()
  342. const themeSelectorTemplate = document.querySelector('#theme-selector')
  343. const form = themeSelectorTemplate.content.firstElementChild
  344. this.attachShadow({ mode: 'open' })
  345. this.shadowRoot.appendChild(form.cloneNode(true))
  346. }
  347. connectedCallback() {
  348. const form = this.shadowRoot.querySelector('form')
  349. form.addEventListener('change', (e) => {
  350. const chosenColorScheme = e.target.value
  351. localStorage.setItem('theme', chosenColorScheme)
  352. toggleTheme(chosenColorScheme)
  353. })
  354. const selectedTheme = localStorage.getItem('theme')
  355. if (selectedTheme && selectedTheme !== 'undefined') {
  356. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  357. }
  358. }
  359. }
  360. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  361. window.addEventListener('load', () => {
  362. let colorsLayer = undefined
  363. let hasDarkRules = false
  364. for (const styleSheet of Array.from(document.styleSheets)) {
  365. let mediaRules = []
  366. for (const layerRule of styleSheet.cssRules) {
  367. if (!(layerRule instanceof CSSLayerBlockRule)) {
  368. continue
  369. }
  370. if (layerRule.name === 'colors') {
  371. colorsLayer = layerRule
  372. }
  373. for (const cssRule of layerRule.cssRules) {
  374. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  375. continue
  376. }
  377. // WARNING: Safari does not have/supports `conditionText`.
  378. if (cssRule.conditionText) {
  379. if (cssRule.conditionText !== prefersColorSchemeDark) {
  380. continue
  381. }
  382. } else {
  383. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  384. continue
  385. }
  386. }
  387. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  388. }
  389. }
  390. // WARNING: do not try to insert a Rule to a styleSheet you are
  391. // currently iterating on, otherwise the browser will be stuck
  392. // in a infinite loop…
  393. for (const mediaRule of mediaRules) {
  394. // Safari requires the `0` second parameter (even if default).
  395. colorsLayer.insertRule(mediaRule.cssText, 0)
  396. hasDarkRules = true
  397. }
  398. }
  399. if (hasDarkRules) {
  400. if ('customElements' in window && !customElements.get('theme-toggle')) {
  401. customElements.define('theme-toggle', ThemeToggle)
  402. }
  403. }
  404. })
  405. </script>
  406. </body>
  407. </html>