Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

9 місяці тому
9 місяці тому
8 місяці тому
9 місяці тому
9 місяці тому
9 місяці тому
9 місяці тому
9 місяці тому
9 місяці тому
8 місяці тому
8 місяці тому
8 місяці тому
8 місяці тому
8 місяці тому
8 місяці тому
8 місяці тому
8 місяці тому
8 місяці тому
9 місяці тому
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451
  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. Licence
  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="Title: WTFPL Submission: http://crynwr.com/cgi-bin/ezmlm-cgi?17:mss:634:200902:aglgcgbhmfcheffmdgon License: http://sam.zoy.org/wtfpl/ Comments: It’s no different from dedication to the public domain. Author has submitted license approval request — author is free to make public domain dedication. Although he agrees with the recommendation, Mr. Michlmayr notes that public domain doesn’t exist in Europe. Recommend: Reject">
  71. <!-- That good ol' feed, subscribe :). -->
  72. <link rel="alternate"
  73. type="application/atom+xml"
  74. title="Feed"
  75. href="/david/log/">
  76. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  77. <link rel="apple-touch-icon"
  78. sizes="180x180"
  79. href="/static/david/icons2/apple-touch-icon.png">
  80. <link rel="icon"
  81. type="image/png"
  82. sizes="32x32"
  83. href="/static/david/icons2/favicon-32x32.png">
  84. <link rel="icon"
  85. type="image/png"
  86. sizes="16x16"
  87. href="/static/david/icons2/favicon-16x16.png">
  88. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  89. <link rel="mask-icon"
  90. href="/static/david/icons2/safari-pinned-tab.svg"
  91. color="#07486c">
  92. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  93. <meta name="msapplication-TileColor" content="#f7f7f7">
  94. <meta name="msapplication-config"
  95. content="/static/david/icons2/browserconfig.xml">
  96. <meta name="theme-color"
  97. content="#f7f7f7"
  98. media="(prefers-color-scheme: light)">
  99. <meta name="theme-color"
  100. content="#272727"
  101. media="(prefers-color-scheme: dark)">
  102. <!-- Is that even respected? Retrospectively? What a shAItshow…
  103. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  104. <meta name="robots" content="noai, noimageai">
  105. <style type="text/css">
  106. .tippy-content {
  107. min-width: 280px;
  108. padding: .5rem;
  109. font-size: calc(var(--fluid-0) * 0.8);
  110. font-family: var(--labor-font);
  111. letter-spacing: initial;
  112. text-align: left;
  113. }
  114. .tippy-content h3 {
  115. margin-top: 0;
  116. }
  117. .tippy-content h3 img {
  118. max-width: 2rem;
  119. max-height: 2rem;
  120. display: inline-block;
  121. }
  122. .tippy-content .tippy-links {
  123. display: flex;
  124. justify-content: space-around;
  125. }
  126. .tippy-content a {
  127. padding: .4rem;
  128. color: #F06048;
  129. }
  130. </style>
  131. <body data-instant-intensity="viewport-all">
  132. <article>
  133. <header>
  134. <hgroup>
  135. <h1>Licence</h1>
  136. <p>Le <time datetime="2024-02-15">15 février 2024</time></p>
  137. </hgroup>
  138. </header>
  139. <nav>
  140. <p>
  141. <a rel="prev"
  142. href="/david/2024/02/14/"
  143. title="Publication précédente : GéoCodage">← Précédent</a> •
  144. <a href="/david/" title="Aller à l’accueil" rel="up">Accueil</a>
  145. <a href="/david/recherche/"
  146. title="Aller à la page de recherche"
  147. rel="search" data-no-instant>Recherche</a>
  148. • <a rel="next"
  149. href="/david/2024/02/16/"
  150. title="Publication suivante : uMap&nbsp;2">Suivant →</a>
  151. </p>
  152. </nav>
  153. <blockquote lang="en">
  154. <p>Title: WTFPL Submission: http://crynwr.com/cgi-bin/ezmlm-cgi?17:mss:634:200902:aglgcgbhmfcheffmdgon License: http://sam.zoy.org/wtfpl/ Comments: It’s no different from dedication to the public domain. Author has submitted license approval request — author is free to make public domain dedication. Although he agrees with the recommendation, Mr. Michlmayr notes that <mark>public domain doesn’t exist in Europe.</mark> Recommend: Reject</p>
  155. <p><cite><em><a data-link-domain="opensource.org" href="https://opensource.org/meeting-minutes/minutes20090304/" hreflang="en"
  156. title="Consultation de l’article (anglais)">OSI Board Meeting Minutes, Wednesday, March 4, 2009</a>
  157. <a href="/david/cache/2024/90e6434dbda21f9d18ad8fa53c822b47/" hreflang="en"
  158. data-tippy data-description="Quorum reached and meeting called to order 08:10 am PST. Attendees Mr. Michael Tiemann, President Ms. Danese Cooper, Secretary and Treasurer Mr. Harshad Gune, Director Mr. Martin Michlmayr, Directo…"
  159. data-source="https://opensource.org/meeting-minutes/minutes20090304/"
  160. data-date="2024-02-17"
  161. data-favicon="https://i0.wp.com/opensource.org/wp-content/uploads/2023/01/cropped-cropped-OSI_Horizontal_Logo_0-e1674081292667.png?fit=32%2C32&ssl=1"
  162. data-domain="opensource.org"
  163. ><svg xmlns="http://www.w3.org/2000/svg"
  164. width="24" height="24" viewBox="0 0 24 24" fill="none"
  165. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  166. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  167. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  168. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  169. </svg>
  170. <span class="sr-only">[archive]</span></a></em></cite></p>
  171. </blockquote>
  172. <p>Nous sommes <a data-link-domain="github.com" href="https://github.com/umap-project/umap/pull/1605">passés</a> de la licence <a data-link-domain="wtfpl.net" href="http://www.wtfpl.net/">WTFPL</a> à <a data-link-domain="gnu.org" href="https://www.gnu.org/licenses/agpl-3.0.en.html">AGPLv3</a> pour uMap à partir de la version&nbsp;2 (à venir). Notamment car elle n’était pas acceptable pour l’<a data-link-domain="opensource.org" href="https://opensource.org/">OSI</a> ce qui nous posait des problèmes pour obtenir des financements européen ou pour bénéficier des plans <em>open-source</em> de services comme <a data-link-domain="browserstack.com" href="https://www.browserstack.com/open-source">BrowserStack</a>.</p>
  173. <p>Le seul service qui a accepté la licence WTFPL sans broncher est <a data-link-domain="sentry.io" href="https://sentry.io/for/open-source/">Sentry</a>, ceci en un temps&nbsp;record.</p>
  174. <blockquote lang="en">
  175. <p>Simply put, the AGPLv3 is effectively the GPLv3, but with an additional licensing term that ensures that users who interact <mark>over a network</mark> with modified versions of the program can receive the source code for that&nbsp;program.</p>
  176. <p><cite><em><a data-link-domain="fsf.org" href="https://www.fsf.org/bulletin/2021/fall/the-fundamentals-of-the-agplv3" hreflang="en"
  177. title="Consultation de l’article (anglais)">The fundamentals of the AGPLv3</a>
  178. <a href="/david/cache/2024/036789c955419215be9d88c6823b55aa/" hreflang="en"
  179. data-tippy data-description="The GNU Affero General Public License version 3 (AGPLv3) is the most protective of computer user freedom, yet it remains the most misunderstood of the GNU family of licenses."
  180. data-source="https://www.fsf.org/bulletin/2021/fall/the-fundamentals-of-the-agplv3"
  181. data-date="2024-02-17"
  182. data-favicon="https://www.fsf.org/favicon.ico"
  183. data-domain="fsf.org"
  184. ><svg xmlns="http://www.w3.org/2000/svg"
  185. width="24" height="24" viewBox="0 0 24 24" fill="none"
  186. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  187. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  188. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  189. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  190. </svg>
  191. <span class="sr-only">[archive]</span></a></em></cite></p>
  192. </blockquote>
  193. <a href="#hr-72" title="Lien vers cette section de la page"><hr id="hr-72" /></a>
  194. <blockquote>
  195. <p>La prévalence des drogues chinoises, et synthétiques en général, sur le marché a eu des conséquences au Mexique voisin. Dans une vidéo de fin 2020, The Intercept montre que la baisse drastique de demande en héroïne au profit du fentanyl a des conséquences humaines considérables. «&nbsp;Les cultivateurs de pavot au Mexique doivent se résoudre à migrer pour travailler ou se tourner vers le crime organisé&nbsp;», raconte le média, partageant des témoignages de personnes précaires encore appauvries par la&nbsp;situation.</p>
  196. <p><cite><em><a data-link-domain="basta.media" href="https://basta.media/crise-des-opioides-pourquoi-il-ne-faut-ni-oublier-ni-ignorer" hreflang="fr"
  197. title="Consultation de l’article">Crise des opioïdes&nbsp;: pourquoi il ne faut ni l’oublier ni l’ignorer</a>
  198. <a href="/david/cache/2024/1929f7183f694c7abeafeddb891fcf50/" hreflang="fr"
  199. data-tippy data-description="Aux États-Unis, le nombre de morts par overdose dépasse celui des décès sur la route. La crise des opioïdes, déclarée dans les années 2010, touche aussi de plein fouet le Canada. Et le phénomène dépasse les frontières nord-américaines."
  200. data-source="https://basta.media/crise-des-opioides-pourquoi-il-ne-faut-ni-oublier-ni-ignorer"
  201. data-date="2024-02-17"
  202. data-favicon="https://basta.media/squelettes/basta/favicon/favicon.svg?1634019699"
  203. data-domain="basta.media"
  204. ><svg xmlns="http://www.w3.org/2000/svg"
  205. width="24" height="24" viewBox="0 0 24 24" fill="none"
  206. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  207. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  208. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  209. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  210. </svg>
  211. <span class="sr-only">[archive]</span></a></em></cite></p>
  212. </blockquote>
  213. <p>Je n’avais pas encore pris conscience de tous les enjeux socio-économico-géopolitiques de ces nouvelles drogues. Il y a des guerres qui sont moins médiatisées que&nbsp;d’autres.</p>
  214. <nav>
  215. <p>
  216. <a href="/david/2024/commun/"
  217. title="Liste de tous les articles 2024 associés à cette étiquette"
  218. rel="tag">#commun</a>
  219. <a href="/david/2024/decision/"
  220. title="Liste de tous les articles 2024 associés à cette étiquette"
  221. rel="tag">#décision</a>
  222. <a href="/david/2024/opensource/"
  223. title="Liste de tous les articles 2024 associés à cette étiquette"
  224. rel="tag">#opensource</a>
  225. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  226. </p>
  227. </nav>
  228. <nav>
  229. <p>
  230. <a rel="prev"
  231. href="/david/2024/02/14/"
  232. title="Publication précédente : GéoCodage">← Précédent</a> •
  233. <a href="/david/2024/" title="Liste des publications récentes">↑ En 2024</a>
  234. • <a rel="next"
  235. href="/david/2024/02/16/"
  236. title="Publication suivante : uMap&nbsp;2">Suivant →</a>
  237. </p>
  238. </nav>
  239. <form action="/david/recherche/" method="get">
  240. <fieldset>
  241. <legend>Recherche</legend>
  242. <label for="input-search">Termes de votre recherche :</label>
  243. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  244. <input type="submit" value="Chercher">
  245. <p id="indexation-infos">
  246. <small>
  247. Seuls les contenus de ces 8 dernières années sont indexés.
  248. </small>
  249. </p>
  250. </fieldset>
  251. </form>
  252. <aside>
  253. <theme-toggle></theme-toggle>
  254. </aside>
  255. </article>
  256. <hr>
  257. <footer>
  258. <p>
  259. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  260. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  261. <a href="http://larlet.com"
  262. title="Go to my English profile"
  263. data-instant>Pro</a>
  264. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  265. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  266. </p>
  267. <template id="theme-selector">
  268. <form>
  269. <style type="text/css">
  270. fieldset div {
  271. text-align: center;
  272. }
  273. </style>
  274. <fieldset>
  275. <legend>Thème</legend>
  276. <div>
  277. <label>
  278. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  279. Auto
  280. </label>
  281. <label>
  282. <input type="radio" value="dark" name="chosen-color-scheme">
  283. Foncé
  284. </label>
  285. <label>
  286. <input type="radio" value="light" name="chosen-color-scheme">
  287. Clair
  288. </label>
  289. </div>
  290. </fieldset>
  291. </form>
  292. </template>
  293. </footer>
  294. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  295. <script>
  296. class ThemeToggle extends HTMLElement {
  297. constructor() {
  298. super()
  299. const themeSelectorTemplate = document.querySelector('#theme-selector')
  300. const form = themeSelectorTemplate.content.firstElementChild
  301. this.attachShadow({ mode: 'open' })
  302. this.shadowRoot.appendChild(form.cloneNode(true))
  303. }
  304. connectedCallback() {
  305. const form = this.shadowRoot.querySelector('form')
  306. form.addEventListener('change', (e) => {
  307. const chosenColorScheme = e.target.value
  308. localStorage.setItem('theme', chosenColorScheme)
  309. toggleTheme(chosenColorScheme)
  310. })
  311. const selectedTheme = localStorage.getItem('theme')
  312. if (selectedTheme && selectedTheme !== 'undefined') {
  313. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  314. }
  315. }
  316. }
  317. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  318. window.addEventListener('load', () => {
  319. let colorsLayer = undefined
  320. let hasDarkRules = false
  321. for (const styleSheet of Array.from(document.styleSheets)) {
  322. let mediaRules = []
  323. for (const layerRule of styleSheet.cssRules) {
  324. if (!(layerRule instanceof CSSLayerBlockRule)) {
  325. continue
  326. }
  327. if (layerRule.name === 'colors') {
  328. colorsLayer = layerRule
  329. }
  330. for (const cssRule of layerRule.cssRules) {
  331. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  332. continue
  333. }
  334. // WARNING: Safari does not have/supports `conditionText`.
  335. if (cssRule.conditionText) {
  336. if (cssRule.conditionText !== prefersColorSchemeDark) {
  337. continue
  338. }
  339. } else {
  340. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  341. continue
  342. }
  343. }
  344. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  345. }
  346. }
  347. // WARNING: do not try to insert a Rule to a styleSheet you are
  348. // currently iterating on, otherwise the browser will be stuck
  349. // in a infinite loop…
  350. for (const mediaRule of mediaRules) {
  351. // Safari requires the `0` second parameter (even if default).
  352. colorsLayer.insertRule(mediaRule.cssText, 0)
  353. hasDarkRules = true
  354. }
  355. }
  356. if (hasDarkRules) {
  357. if ('customElements' in window && !customElements.get('theme-toggle')) {
  358. customElements.define('theme-toggle', ThemeToggle)
  359. }
  360. }
  361. })
  362. </script>
  363. <script src="/static/david/js/popper-2.11.8.min.js"></script>
  364. <script src="/static/david/js/tippy-bundle-6.3.7.umd.min.js"></script>
  365. <script>
  366. tippy('[data-tippy]', {
  367. content(reference) {
  368. reference.addEventListener('click', (e) => e.preventDefault())
  369. return `
  370. <h3 lang="fr">
  371. <img src="${reference.dataset.favicon}" loading="lazy">
  372. <a href="${reference.dataset.source}"
  373. >Article sur ${reference.dataset.domain}</a></h3>
  374. <p lang="${reference.hreflang}"><em>${reference.dataset.description}</em></p>
  375. <div class="tippy-links" lang="fr">
  376. <a href="${reference.href}">Archive au ${reference.dataset.date}</a>
  377. </div>
  378. `
  379. },
  380. allowHTML: true,
  381. interactive: true,
  382. delay: [150, 700],
  383. hideOnClick: false
  384. })
  385. </script>
  386. <script type="module">
  387. import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js'
  388. const markObserver = new IntersectionObserver((entries, observer) => {
  389. const computedStyle = getComputedStyle(document.documentElement)
  390. const markBackground = computedStyle.getPropertyValue('--mark-background')
  391. for (const entry of entries) {
  392. if (entry.intersectionRatio === 0) continue
  393. const markElement = entry.target
  394. const annotation = annotate(
  395. markElement, {
  396. type: 'highlight',
  397. multiline: true,
  398. color: markBackground,
  399. animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches
  400. }
  401. )
  402. annotation.show()
  403. observer.unobserve(markElement)
  404. }
  405. }, {threshold: 1.0})
  406. for (const markElement of document.querySelectorAll('mark')) {
  407. markElement.style.backgroundColor = 'inherit'
  408. markObserver.observe(markElement)
  409. }
  410. </script>
  411. </body>
  412. </html>