+++
title = "Comment c'est fait ? La technique derrière ce log"
date = 2023-08-19
authors = []
template = "blog-page.html"
+++

⚠️ Ce billet n'est plus valable aujourd'hui, mon setup est très différent

## Comment j'écris

C'est très simple, j'écris avec n'importe quel éiteur de texte (et non pas traitement de texte), habituellement j'utilise VSCode, mais je pourrais aussi utiliser le Bloc Note Windows ou n'importe quoi !  
Actuellement j'écris avec Runestone (une app légère et indépendante d'édition de texte orienté programmation) sur mon iPad avec un clavier Logitech Combo Touch qui fait aussi coque de protection  
[Donc, j'utilise Runestone sur ma tablette car je suis dans mon lit et que j'ai envie de tester cette app avant d'éventuellement l'acheter [Lien Web]](https://runestone.app/)  

[J'utilise la syntaxe Gemtext par défaut [Lien Web et Gemini]](//gemini.circumlunar.space/docs/fr/gemtext.gmi)  
J'aime avoir peu de choix quand j'écris, ça évite de me perdre dans les possibilités de formatage et de ne pas avancer dans ma rédaction !  
J'aime aussi écrire pour un réseau frugal comme Gemini avant tout, et dont la culture des petites capsules (petits espaces personnels sans grande ambition) fait que peu importe que je ne sois pas très fière d'un texte, je saurai qu'il y trouvera quand même sa place et ne sera pas jugé  
C'est un peu comme le Web des années 90 ou tout début 2000, quand c'était pas rare d'avoir son site perso sans prétention où on racontait ce qu'on voulait sans chercher la visibilité  
Peu de gens connaissent mon site, encore moins s'y rendent régulièrement, et ça me va  
C'est en premier lieu un jardin personnel, où je dépose des pensées que j'ai ainsi que des texte que j'ai envie de conserver  

## Comment j'enregistre et je stocke

Ensuite je pousse mes fichiers textes, organisés dans des dossiers, sur un dépôt Git hébergé quelque part  
[À l'heure actuelle, vous pourrez le trouver chez Codeberg, mais ça peut changer à tout moment [Lien Web]](https://codeberg.org/OniriCorpe/log)  
J'utilise Git pour garder une trace de chaque modification, mais aussi comme un cloud que je peux facilement synchroniser entre les différents appareils ammenés à utiliser les données de ce log, soit pour la rédaction (mon PC, mon téléphone ou ma tablette), soit pour la publication (mon serveur et son système de traitement automatisé, j'y reviendrai)

[Sur mon téléphone et ma tablette, de marque Apple, j'utilise Working Copy comme client Git (il me sert aussi pour d'autres dépôts que celui de mon log) [Lien Web]](https://workingcopy.app/)  

## Comment je publie pour Gemini

C'est très simple, j'ai un serveur Gemini qui tourne sur mon serveur que j'auto-héberge chez moi, dans mon atelier  
Ce serveur Gemini pointe (notamment) vers un dossier dédié à ma capsule, qui contient ma homepage ainsi que ce log  
[Ma homepage est distincte du log, elle est aussi hébergé sur un serveur Git, toujours Codeberg [Lien Web]](https://codeberg.org/OniriCorpe/homepage)  
Dans le dossier de ma homepage, il y a un sous dossier pour le log, éponyme  
Et ce dossier contient un clone du dépôt Git du log, synchronisé automatiquement chaque jour vers 5 heures, donc mes modifications arrivent automatiquement sur Gemini  
Tout ce que j'ai à faire c'est écrire, enregistrer et pousser les changement ou les nouvelles pages sur le dépôt Git  
Et si j'ai envie je peux synchroniser le serveur manuellement si je ne veux pas attendre qu'il soit 5 heures pour que mes modifications soient disponibles  

## Comment je publie pour le Web

Là c'est un peu plusse complexe, car il faut convertir le format Gemtext (Gemini) vers du HTML (Web)  

J'utilise un petit programme pour le faire automatiquement, mais il formate bêtement juste le contenu de la page, sans faire de header avec du CSS et tout ce qui rend une page Web jolie  

[J'ai donc écris mon propre script pour réaliser cela : Genlog (pour Générateur du Log) ^w^ [Lien Web]](https://codeberg.org/OniriCorpe/genlog)  
C'est un petit script bash qui ajoute un header avec tout ce qu'il faut et le personnalise un peu pour chaque page, notamment pour ajouter le titre dans une balise 'title' pour qu'il s'affiche sur les onglets du navigateur Web  

J'avais réalisé un peu de CSS pour embellir les pages, mais il était bancal :  

- Le rendu était mauvais sur mobile (textes trop gros par rapport à la norme alors que c'était OK sur PC)  
- Il y avait seulement un mode sombre, ce qui est inaccessible pour certaines personnes  
- Les blocs préformatés pouvaient dépasser sur la droite de la page sur mobile à cause de la faible largeur d'écran  

J'ai récemment décidé de retravailler tout ça et d'utiliser un CSS déjà fait par quelqu'un qui sait mieux faire que moi, parce que je n'ai pas l'énergie de corriger ces problèmes  
[Mon choix s'est porté sur Water.css, qui supporte la bascule automatique entre thème clair et sombre selon la configuration de l'utilisateurice sur son navigateur ou système d'exploitation [Lien Web]](https://watercss.kognise.dev/)  

Finalement j'ai réglé moi même le bug des blocs préformatés qui dépassaient avec un peu de recherche, puis j'ai fait le ménage dans le code CSS que j'avais écrit pour retirer ce qui était devenu inutile avec Water.css  
Et enfin, j'ai amélioré un peu mon code CSS afin de rendre mieux les blocs de citation et les blocs préformatés et que ça soit OK en mode clair comme en mode sombre  

Pour revenir à Genlog, ce script regarde dans chacun des sous-dossiers du dossier qu'on lui a donné, voir s'il y a des fichier .gmi (le format dans lequel j'écris) et si c'est le cas il le convertir en page Web toute propre et l'enregistre dans le même dossier, puis il continue sa recherche jusqu'à ce qu'il ait regardé partout  
Il peut donc convertir automatiquement un log entier en quelques secondes, c'est parfait pour du travail automatisé (ou pour des tests) !  

Ensuite il suffit de dire à mon serveur Web (nginx) de servir les fichier générés lorsqu'on visite l'adresse Web de mon log, et voilà !  

Donc, à l'aide de cron, chaque jour vers 5 heures, ce script travaille après la récupération éventuelle des nouveaux textes, afin de tout convertir en Web, ainsi tout est facilement accessible pour tout le monde sans que j'ai à faire quoi que ce soit d'autre que d'écrire et de pousser mes modifications dans mon dépôt  

## Pour terminer

Pouvoir écrire depuis n'importe quel appareil grace à Git me permet vraiment de me sentir libre et d'écrire dès que j'en ai l'envie  
Et l'automatisation me permet d'etre sereine et de ne pas me préocuper de si c'est à jour ou non : chaque jour les fichiers du dépôt sont récupérés et servis sur Gemini, puis convertis en HTML et servis sur le Web  
Tout est en fichiers statiques donc c'est économe en ressources et facile à gérer  
Je voulais un système frugal et low-tech, je l'ai fait ^w^  

À plusse !

Le 19 août 2023,  
Typhen
