<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr-FR">
  <title>Thomas Parisot — Carnet Web</title>
  <subtitle>Écrits sous forme d'articles long et notes de journal.</subtitle>
  <icon>https://thom4.net/assets/favicon.svg</icon>
  <link href="https://thom4.net/feed/atom.xml" rel="self" />
  <link href="https://thom4.net/" />
  <updated>2026-05-14T10:30:00Z</updated>
  <id>https://thom4.net/</id>
  <author>
    <name>Thomas Parisot</name>
  </author>
  
  <entry xml:lang="fr-FR">
    <id>https://thom4.net/2026/05/14/belle-via-romans-grenoble/</id>
    <title>Trajet Romans-sur-Isère ↦ Grenoble</title>
    <link href="https://thom4.net/2026/05/14/belle-via-romans-grenoble/" hreflang="fr-FR" />
    <updated>2026-05-14T10:30:00Z</updated>
    <category term="Journal"/>
    <category term="Explorations"/>
    <category term="Vélo"/>
  </entry>
  <entry xml:lang="fr-FR">
    <id>https://thom4.net/2026/04/30/liens-externes/</id>
    <title>Liens externes accessibles</title>
    <link href="https://thom4.net/2026/04/30/liens-externes/" hreflang="fr-FR" />
    <updated>2026-04-30T13:25:00Z</updated>
    <content type="html"><![CDATA[<p>En recréant ce carnet de zéro, les liens s'ouvraient à même la page, sans créer de nouvel onglet/fenêtre.</p>
<p>Est-ce qu'ajouter un attribut <code>target=&quot;_blank&quot;</code> sur des liens hypertextes absolus suffit ? <em>Non</em>, l'exemple du module <a href="https://github.com/markdown-it/markdown-it-for-inline" hreflang="en" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="markdown-it-for-inline (ouvre un nouvel onglet)"><code>markdown-it-for-inline</code></a> ne suffit pas.</p>
<p>J'aimerais :</p>
<ul>
<li><strong>gérer la sécurité avec l'onglet ouvert</strong>. Il pourrait être utilisé par des pisteurs, sur la page nouvellement ouverte, par des extensions web verrolées ;</li>
<li><strong>informer de la destination aux lecteurs d'écran</strong>. La destination étant &quot;un nouvel onglet&quot;. Ça correspond au <a href="https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#6.1" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="critère 6.1.1 du RGAA (ouvre un nouvel onglet)">critère 6.1.1 du <abbr title="Référentiel Général d'Amélioration de l'Accessibilité">RGAA</abbr></a> ;</li>
<li><strong>distinguer visuellement les liens qui ouvrent un nouvel onglet</strong>. Même intention, visuelle cette fois.</li>
</ul>
<hr>
<p>La sécurité se gère à l'aide des valeurs <a href="https://developer.mozilla.org/fr/docs/Web/HTML/Reference/Attributes/rel/noopener" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="noopener (ouvre un nouvel onglet)"><code>noopener</code></a> et <a href="https://developer.mozilla.org/fr/docs/Web/HTML/Reference/Attributes/rel/noreferrer" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="noreferrer (ouvre un nouvel onglet)"><code>noreferrer</code></a> de l'<a href="https://developer.mozilla.org/fr/docs/Web/HTML/Reference/Attributes/rel" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="attribut rel (ouvre un nouvel onglet)">attribut <code>rel</code></a>.</p>
<p>Elles préviennent, respectivement, l'accès à la <a href="https://developer.mozilla.org/fr/docs/Web/API/Window/opener" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="propriété window.opener (ouvre un nouvel onglet)">propriété <code>window.opener</code></a> et à la diffusion de la provenance via l'<a href="https://developer.mozilla.org/fr/docs/Web/HTTP/Reference/Headers/Referer" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="entête HTTP Referrer (ouvre un nouvel onglet)">entête HTTP <code>Referrer</code></a>.</p>
<p>Ça aide à préserver notre vie privée numérique.</p>
<hr>
<p>On peut donner du contexte aux lecteurs d'écran dans un label <abbr title="Accessible Rich Internet Applications">ARIA</abbr> :</p>
<ol>
<li>qui repend l'intitulé du lien ;</li>
<li><em>et</em> qui spécifie l'ouverture dans un nouvel onglet.</li>
</ol>
<p>L'utilisation du <a href="https://support.apple.com/fr-fr/guide/voiceover/mchlp2719/mac" lang="en" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="rotor VoiceOver (ouvre un nouvel onglet)">rotor VoiceOver</a> est un bon exemple de cette visibilisation :</p>
<p><img src="https://thom4.net/images/2026/04/rotor-liens.webp" alt="Capture d'écran de la navigation par hyperliens dans le rotor VoiceOver"></p>
<p>L'<a href="https://fr.wiktionary.org/wiki/ant%C3%A9p%C3%A9nulti%C3%A8me" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="antépénultième (ouvre un nouvel onglet)">antépénultième</a> lien de cette capture d'écran rend explicite l'ouverture dans un nouvel onglet. Ça correspondrait au code HTML suivant :</p>
<pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>a</span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>...<span class="token punctuation">"</span></span> <span class="token attr-name">aria-label</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>critère 6.1.1 du RGAA (ouvre une nouvelle fenêtre)<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
  critère 6.1.1 du RGAA
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>a</span><span class="token punctuation">></span></span></code></pre>
<hr>
<p>Quelques lignes de CSS suffisent à ajouter un symbole visuel à la suite du lien :</p>
<pre class="language-css"><code class="language-css"><span class="token selector">a[target="_blank"]::after</span> <span class="token punctuation">{</span>
  <span class="token property">content</span><span class="token punctuation">:</span> <span class="token string">""</span><span class="token punctuation">;</span>
  <span class="token property">display</span><span class="token punctuation">:</span> inline-block<span class="token punctuation">;</span>
  <span class="token property">inline-size</span><span class="token punctuation">:</span> .8em<span class="token punctuation">;</span>
  <span class="token property">block-size</span><span class="token punctuation">:</span> .8em<span class="token punctuation">;</span>
  <span class="token comment">/* ... */</span>
  <span class="token property">background-color</span><span class="token punctuation">:</span> currentColor<span class="token punctuation">;</span>
  <span class="token property">mask-image</span><span class="token punctuation">:</span> <span class="token url"><span class="token function">url</span><span class="token punctuation">(</span><span class="token string url">"data:image/svg+xml;base64, …"</span><span class="token punctuation">)</span></span><span class="token punctuation">;</span>
  <span class="token property">mask-repeat</span><span class="token punctuation">:</span> no-repeat<span class="token punctuation">;</span>
  <span class="token property">mask-size</span><span class="token punctuation">:</span> contain<span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre>
<p>L'utilisation combinée des propriétés <code>background-color</code> et <code>mask-*</code> aident à respecter les proportions de l'image vectorielle <em>et</em> à la détourer aux couleurs du texte du lien.</p>
<p>L'image est encodée directement dans la feuille CSS pour éviter un temps de latence à l'affichage.</p>
<hr>
<p>C'est bon, nos liens externes sont désormais accessibles.
Le <a href="https://github.com/thom4parisot/thom4.net/blob/d1ff1b44ba0b28085478f4715175cc9427fe0f3e/config/markdown.js#L86-L106" hreflang="en" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="code source des liens externes accessibles pour markdown-it (ouvre un nouvel onglet)">code source des liens externes accessibles pour <code>markdown-it</code></a> (intégré à <span lang="en">Build Awesome</span>) est consultable dans le dépôt de ce carnet.</p>
]]></content>
    <category term="Journal"/>
    <category term="Explorations"/>
    <category term="Refonte 3.0"/>
  </entry>
  <entry xml:lang="fr-FR">
    <id>https://thom4.net/2026/04/27/crest-saou-via-col-chaudiere/</id>
    <title>Trajet Crest ↦ Saou ↦ Crest (via le col de la Chaudière)</title>
    <link href="https://thom4.net/2026/04/27/crest-saou-via-col-chaudiere/" hreflang="fr-FR" />
    <updated>2026-04-27T11:16:00Z</updated>
    <content type="html"><![CDATA[<p>Le col de la Chaudière est emblématique : au pied des sommets de trois becs. Un phare paysager quand on est à Crest et dans la vallée de la Drôme.</p>
<p>C'est une ascension de onze kilomètres sur une route empruntée par des voitures mais sans trop. On a opté pour des chemins de traverses entre Bourdeaux et Saoû : en passant par les très beau villages du Poët-Célard et de Francillon-sur-Roubion. Ça rallongeait et rajoutait du dénivelé (presque quatre-cent mètres) mais ça vallait le détour en cette saison.</p>
<p>On craignait le trafic important entre Saoû et Crest après 17h.
On a alors opté pour un autre chemin de traverse, par la Répara-Auriple.</p>
<p>C'était la balade avec le plus de dénivelé en une journée.
Je suis content de voir que j'avais encore de l'énergie en fin de journée.
Et surtout, quel régal visuel tout au long du périple.</p>
<p><img src="https://thom4.net/images/2026/04/crest-saou-via-col-chaudiere.webp" alt="" title="Vue vers le pays de Bourdeaux depuis le col de la Chaudière."></p>
]]></content>
    <category term="Journal"/>
    <category term="Explorations"/>
    <category term="Vélo"/>
  </entry>
  <entry xml:lang="fr-FR">
    <id>https://thom4.net/2026/04/25/emojis/</id>
    <title>Émojis accessibles</title>
    <link href="https://thom4.net/2026/04/25/emojis/" hreflang="fr-FR" />
    <updated>2026-04-25T20:38:00Z</updated>
    <content type="html"><![CDATA[<p>Je savais déjà que l'utilisation d'émojis dans le texte n'était pas accessible.
C'est leur texte alternatif qui est lu au lecteur d'écran. Comme &quot;mains rassemblées&quot; ou <em lang="en">folded hands</em> pour l'émoji utilisées pour symboliser un &quot;merci&quot; <span class="emoji emoji--pray" aria-hidden="true">🙏</span>.</p>
<p>La lecture de l'article <a href="https://blog.pope.tech/2026/04/01/making-emojis-and-icons-screen-reader-accessible/" lang="en" hreflang="en" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="making emojis and icons screen reader accessible (ouvre un nouvel onglet)">making emojis and icons screen reader accessible</a> m'a fait agir dessus sur ce blog avec l'extension <a href="https://github.com/markdown-it/markdown-it-emoji/" lang="en" hreflang="en" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="markdown-it-emoji (ouvre un nouvel onglet)">markdown-it-emoji</a>.</p>
<hr>
<p>J'ai suivi la documentation pour rendre l'affichage accessible.</p>
<p>Ainsi, le raccourci textuel <code>:pray:</code> est converti en :</p>
<pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>emoji emoji--pray<span class="token punctuation">"</span></span> <span class="token attr-name">aria-hidden</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>true<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>🙏<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span></code></pre>
<hr>
<p>Il a fallu plonger dans les entrailles du fonctionnement de <code lang="en">markdown-it</code> pour que chaque émoji existante soit elle aussi, convertie dans un code similaire.</p>
<p>J'ai créé une règle qui est insérée <em>avant</em> l'extension émojis pour convertir chaque émoji (unicode) en raccourci textuel d'émoji :</p>
<ol>
<li>on parcourt chaque <a href="https://github.com/markdown-it/markdown-it/blob/master/docs/architecture.md#token-stream" hreflang="en" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="jeton markdown (ouvre un nouvel onglet)">jeton markdown</a> ;\</li>
</ol>
<pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
  type<span class="token operator">:</span> 'inline'<span class="token punctuation">,</span>
  content<span class="token operator">:</span> 'Coucou 👋🏻'
<span class="token punctuation">}</span></code></pre>
<ol start="2">
<li>on vérifie la présence d'une émoji (via leur classe Unicode d'expression régulière) ;</li>
<li>on remplace chaque occurence par son raccourci textuel.\</li>
</ol>
<pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>
  type<span class="token operator">:</span> 'inline'<span class="token punctuation">,</span>
  content<span class="token operator">:</span> 'Coucou <span class="token operator">:</span>wave<span class="token operator">:</span>'
<span class="token punctuation">}</span></code></pre>
<ol start="4">
<li>qui a son tour rentre dans la moulinette expliquée précédemment\</li>
</ol>
<pre class="language-html"><code class="language-html">  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>p</span><span class="token punctuation">></span></span>Coucou <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>emoji emoji--wave<span class="token punctuation">"</span></span> <span class="token attr-name">aria-hidden</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>true<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>👋🏻<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>p</span><span class="token punctuation">></span></span></code></pre>
<p><a href="https://github.com/thom4parisot/thom4.net/blob/d1ff1b44ba0b28085478f4715175cc9427fe0f3e/config/markdown.js#L15-L47" hreflang="en" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="Le code complet est disponible sur GitHub (ouvre un nouvel onglet)">Le code complet est disponible sur GitHub</a>.</p>
<hr>
<p>Tout autre émoji <strong>décoratif</strong> (comme dans cette entrée de journal par exemple) est masquée aux lecteurs d'écran avec <code>aria-hidden=&quot;true&quot;</code> :</p>
<pre class="language-html"><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>h1</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>post-title<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>
  <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">aria-hidden</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>true<span class="token punctuation">"</span></span><span class="token punctuation">></span></span>☕️<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">></span></span>
  Journal : Émojis accessibles
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>h1</span><span class="token punctuation">></span></span></code></pre>
<hr>
<p>Je n'ai pas eu à reprendre les vingt années de contenus pour y arriver.
La lecture d'une <a href="https://github.com/markdown-it/markdown-it-emoji/issues/43" lang="en" hreflang="en" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="issue GitHub (ouvre un nouvel onglet)">issue GitHub</a>, d'une <a href="https://github.com/markdown-it/markdown-it-emoji/pull/53/changes" lang="en" hreflang="en" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="proposition de code (ouvre un nouvel onglet)">proposition de code</a> et le code d'autres extensions markdown m'ont aidé à mettre en place les mécanismes ci-dessus.</p>
]]></content>
    <category term="Journal"/>
    <category term="Explorations"/>
    <category term="Refonte 3.0"/>
  </entry>
  <entry xml:lang="fr-FR">
    <id>https://thom4.net/2026/04/20/valence-crest-via-col-cavalli/</id>
    <title>Trajet Valence ↦ Crest (via le col Cavalli)</title>
    <link href="https://thom4.net/2026/04/20/valence-crest-via-col-cavalli/" hreflang="fr-FR" />
    <updated>2026-04-20T12:30:00Z</updated>
    <content type="html"><![CDATA[<p>De retour de <a href="https://mixitconf.org/fr/2026" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="MiXiT 2026 (ouvre un nouvel onglet)">MiXiT 2026</a>, je ne voulais pas reprendre le <a href="https://thom4.net/2026/04/19/viarhona-valence-vienne/">même chemin qu'à l'aller</a>.</p>
<p>Un lieu m'intrigait depuis plusieurs années : le col Jérôme Cavalli. Je ne savais pas à quoi ressemblait le paysage d'un endroit dont je voyais la signalétique mais rien de plus.</p>
<p>Alors, c'est l'occasion d'un détour… et d'un bon et long dénivelé.</p>
<p>Le trajet était pastoral et fleuri depuis la sortie de Chabeuil par les petites routes. Avec des senteurs de glycines près des maisons et de bruyères dans la lente ascension.</p>
<p>La route était tranquille et peu fréquentée : j'y ai croisé davantage de cyclistes que de voitures.</p>
<p><img src="https://thom4.net/images/2026/04/combovin-col-cavalli.webp" alt="" title="Plus que 10 kilomètres de montée avant le sommet !"></p>
]]></content>
    <category term="Journal"/>
    <category term="Explorations"/>
    <category term="Vélo"/>
  </entry>
  <entry xml:lang="fr-FR">
    <id>https://thom4.net/2026/04/19/cartes-interactives/</id>
    <title>Cartes interatives</title>
    <link href="https://thom4.net/2026/04/19/cartes-interactives/" hreflang="fr-FR" />
    <updated>2026-04-19T11:30:00Z</updated>
    <content type="html"><![CDATA[<p>L'écriture du billet <a href="https://thom4.net/2026/04/19/viarhona-valence-vienne/">trajet Valence ↦ Vienne</a> m'a donné envie d'ajouter une carte interactive.</p>
<p>Et c'est une chose que j'adore avec cet apprentissage ouvert : on sait à peu près par où on commence, on a une petite idée d'où on veut aller mais le chemin est imprévisible.</p>
<p>Je tente un audit d'accessibilité après l'ajout d'une carte basée sur <a href="https://maplibre.org/projects/gl-js/" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="MapLibreGL (ouvre un nouvel onglet)">MapLibreGL</a> et :</p>
<ol>
<li>le titre par défaut du composant est en anglais : je souhaite le personnaliser en français ;</li>
<li><em>mais</em> il manque un <a href="https://developer.mozilla.org/fr/docs/Web/Accessibility/ARIA/Reference/Roles" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="rôle (ouvre un nouvel onglet)"><strong>rôle</strong></a> au composant (image, région ou application par exemple) ;</li>
<li><em>et</em> je découvre un <a href="https://github.com/maplibre/maplibre-gl-js/issues/53#issue-783551850" hreflang="en" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="audit d'accessibilité daté de 2021 (ouvre un nouvel onglet)">audit d'accessibilité daté de 2021</a> qui révèle d'<em>autres</em> points d'amélioration (structure hiérarchique, alternative textuelle à des symboles, taille minimale des zones de clic).</li>
</ol>
<p>Je me suis proposé pour prendre en charge ces corrections.<br>
De manière égoïste parce que j'aimerais que les cartes de mon carnet web soient accessibles (<a href="https://thom4.net/2026/04/10/a11y-first/">une des intentions de la refonte 3.0</a>).<br>
Et aussi pour que les cartes interactives basées sur MapLibreGL le deviennent, accessibles, sans grand effort supplémentaire.</p>
<hr>
<p>J'envisage une <a href="https://developer.mozilla.org/fr/docs/Glossary/Progressive_Enhancement" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="amélioration progressive (ouvre un nouvel onglet)">amélioration progressive</a> de ce composant en expérimentant avec le composant <a href="https://www.11ty.dev/docs/plugins/is-land/" hreflang="en" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="&lt;is-land&gt; (ouvre un nouvel onglet)"><code>&lt;is-land&gt;</code></a> :</p>
<ul>
<li>utilisation d'une image légère, statique pour représenter la carte ;</li>
<li>un bouton d'activation d'interactivité qui charge deux à trois cent kilo-octets d'interactivité.</li>
</ul>
<hr>
<p>J'envisage aussi de donner accès au <strong>téléchargement des tracés</strong>, pour le récupérer sur un autre appareil. C'est un des bénéfices des <strong>données interopérables</strong>.
Et de leur attribuer une licence, pour rendre explicite leur source/origine/conditions de réutilisations.</p>
]]></content>
    <category term="Journal"/>
    <category term="Explorations"/>
    <category term="Refonte 3.0"/>
  </entry>
  <entry xml:lang="fr-FR">
    <id>https://thom4.net/2026/04/19/viarhona-valence-vienne/</id>
    <title>Trajet Valence ↦ Vienne</title>
    <link href="https://thom4.net/2026/04/19/viarhona-valence-vienne/" hreflang="fr-FR" />
    <updated>2026-04-19T11:13:00Z</updated>
    <content type="html"><![CDATA[<p>Le beau temps était au rendez-vous de <a href="https://mixitconf.org/fr/2026" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="MiXiT 2026 (ouvre un nouvel onglet)">MiXiT 2026</a>.
J'en ai fait l'occasion/aventure de me rendre à Lyon en vélo.</p>
<p>J'en avais envie et besoin.<br>
Envie car ça faisait longtemps que je n'avais pas fait de vélo à la journée, sur une longue distance (cent kilomètres ça commence à faire long pour mon niveau).<br>
Besoin car il y a un genou à remuscler après une entorse en février.</p>
<p>J'aime bien les différents segments paysagers de ce parcours : des tunnels forestiers, de la loooooongue ligne droite en bord de Rhône (avec toutes ses infrastructures hydroélectriques — barrages et centrales nucléaires), des zones maraichères, des vis à vis industriels (pétrochimie, usines à papier, etc.).</p>
<p>Dans les deux sacoches :</p>
<ul>
<li>quelques vivres sucrées pour tenir la route ;</li>
<li>une poche à eau (vide) de trois litres ;</li>
<li>une gourde à eau de un litre ;</li>
<li>du rechange pour 4 jours (dans des cubes de rangement, comme ça c'est facile à sortir/ranger) ;</li>
<li>serviette de bain et trousse de toilette ;</li>
<li>un sac à dos léger de travail (ordinateur, pochettes à câbles, carnet, trousse) ;</li>
<li>de la place pour peut-être revenir avec quelques affaires en plus.</li>
</ul>
]]></content>
    <category term="Journal"/>
    <category term="Explorations"/>
    <category term="Vélo"/>
  </entry>
  <entry xml:lang="fr-FR">
    <id>https://thom4.net/2026/04/10/a11y-first/</id>
    <title>Accessibilité d&#39;abord</title>
    <link href="https://thom4.net/2026/04/10/a11y-first/" hreflang="fr-FR" />
    <updated>2026-04-10T12:00:00Z</updated>
    <summary type="html"><![CDATA[
Une des motivations à reprendre ce carnet, c'était de proposer une accessibilité exemplaire de tous les contenus.

]]></summary>
    <content type="html"><![CDATA[<p>Une des motivations à reprendre ce carnet, c'était de proposer une accessibilité exemplaire de tous les contenus.</p>
<p>Enlever les styles de présentation, c'est rendre visibles <strong>l'ordre de lecture</strong>, la <strong>structure de page</strong>, l'<strong>ordre de tabulation</strong> et les <strong>intitulés de liens</strong>.</p>
<p>Ça m'a aidé à corriger la hiérarchie des titres, éparses et inégales entre les textes produits en vingt ans (!). Mais aussi à sectionner et à étiqueter chacune des zones.</p>
<p><img src="https://thom4.net/images/2026/04/headings-map-billet.webp" alt="" title="Capture d'écran d'une hiérarchie de titres accessibles d'un billet de blog."></p>
<p>Eleventy / Build Awesome propose deux mécanismes pour se brancher sur le contenu :</p>
<ul>
<li><a href="https://www.11ty.dev/docs/languages/markdown/#optional-amend-the-library-instance" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="le parseur Markdown (ouvre un nouvel onglet)">le parseur Markdown</a></li>
<li><a href="https://www.11ty.dev/docs/transforms/" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="les transformations HTML (ouvre un nouvel onglet)">les transformations HTML</a></li>
</ul>
<p>De quoi ajouter automatiquement des attributs aux liens, images ou autre qui seraient fastidieux à faire à la main.</p>
]]></content>
    <category term="Journal"/>
    <category term="Explorations"/>
    <category term="Refonte 3.0"/>
    <category term="a11y"/>
    
  </entry>
  <entry xml:lang="fr-FR">
    <id>https://thom4.net/2026/04/10/eleventy/</id>
    <title>Migration vers Eleventy / Build Awesome</title>
    <link href="https://thom4.net/2026/04/10/eleventy/" hreflang="fr-FR" />
    <updated>2026-04-10T11:00:00Z</updated>
    <content type="html"><![CDATA[<p>Quelques détails sur le regroupement de trois sites aux contenus différents : texte, supports de présentation et photographies.</p>
<p>Le déplacement des répertoires et fichiers a été minimal. L'effort principal a été de séparer les entrées de journal des billets longs. C'était un travail manuel mais facile et rapide à distinguer.</p>
<p>Une paire de rechercher/remplacer ont suffi à actualiser les métadonnées des fichiers texte.</p>
<p>L'ajout de métadonnées dynamiques était facile grâce au système <a href="https://www.11ty.dev/docs/data-computed/" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="données calculées (ouvre un nouvel onglet)">données calculées</a>.</p>
<p>La génération de vignettes / images aux bonnes dimensions a été facilité avec le <a href="https://www.11ty.dev/docs/plugins/image/" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="module Image (ouvre un nouvel onglet)">module Image</a>. Chose que je faisais initialement en lançant un script maison.</p>
<p>L'organisation en collections rend très facile leur utilisation et ventilation en plusieurs pages. J'avais envie d'aller au-delà de &quot;simples&quot; pages de <span lang="en">listing</span>, de mettre en avant les séries d'article et de les regrouper quand et où je voulais.</p>
<p>Au final, au doigt mouillé, je dirais qu'il y a moins de bidouilles et moins de code pour aboutir à un résultat similaire. Et j'avoue, qui renouvelle mon enthousiasme à écrire/publier sur ce carnet.</p>
<p>Comme quoi, un bon <s>stylo</s> outil contribue au plaisir de l'utiliser.</p>
]]></content>
    <category term="Journal"/>
    <category term="Explorations"/>
    <category term="Refonte 3.0"/>
  </entry>
  <entry xml:lang="fr-FR">
    <id>https://thom4.net/2026/04/09/refonte/</id>
    <title>Refonte</title>
    <link href="https://thom4.net/2026/04/09/refonte/" hreflang="fr-FR" />
    <updated>2026-04-09T15:00:00Z</updated>
    <content type="html"><![CDATA[<p>La dernière refonte de ce site remonte à 2018.
L'intention était alors d'avoir un même site pour <em>tout</em> : écrits, photos et présentations à des conférences. D'utiliser le même outil pour tout.<br>
Sous le capot, il s'agissait en réalité de trois sites différents qui réutilisaient le même thème graphique.</p>
<p>En 2026 j'ai la même intention : avoir un même site pour <em>tout</em>.
Et une seule base <s>de code</s> d'écrits et de photographies.</p>
<p>C'est fait. En remplaçant <a href="https://hexo.io/" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="Hexo (ouvre un nouvel onglet)">Hexo</a>
par <s>Eleventy</s> <a href="https://www.11ty.dev/" class="external-link" rel="noopener noreferrer" target="_blank" aria-label="Build Awesome (ouvre un nouvel onglet)">Build Awesome</a>.</p>
<p>Les autres écrits viendront souligner les aspects de la refonte au fur et à mesure qu'elle se produit sous vos yeux ébahis.</p>
]]></content>
    <category term="Journal"/>
    <category term="Explorations"/>
    <category term="Refonte 3.0"/>
  </entry>
</feed>