Introduction
Introduction Statistics Contact Development Disclaimer Help
Title: [FR] Méthodes de publication de mon blog sur plusieurs médias
Author: Solène
Date: 03 January 2021
Tags: life blog francais
Description:
On me pose souvent la question sur la façon dont je publie mon blog,
comment j'écris mes textes et comment ils sont publiés sur trois
médias différents. Cet article est l'occasion pour moi de répondre
à ces questions.
Pour mes publications j'utilise le générateur de site statique
"cl-yag" que j'ai développé. Son principal travail est de générer
les fichiers d'index d'accueil et de chaque tags pour chacun des
médias de diffusion, HTML pour http, gophermap pour gopher et gemtext
pour gemini. Après la génération des indexs, pour chaque article
publié en HTML, un convertisseur va être appelé pour transformer le
fichier d'origine en HTML afin de permettre sa consultation avec un
navigateur internet. Pour gemini et gopher, l'article source est
simplement copié avec quelques méta-données ajoutées en haut du
fichier comme le titre, la date, l'auteur et les mots-clés.
Publier sur ces trois format en même temps avec un seul fichier source
est un défi qui requiert malheureusement de faire des sacrifices sur
le rendu si on ne veut pas écrire trois versions du même texte. Pour
gopher, j'ai choisi de distribuer les textes tel quel, en tant que
fichier texte, le contenu peut être du markdown, org-mode, mandoc ou
autre mais gopher ne permet pas de le déterminer. Pour gémini, les
textes sont distribués comme .gmi qui correspondent au type gemtext
même si les anciennes publications sont du markdown pour le contenu.
Pour le http, c'est simplement du HTML obtenu via une commande en
fonction du type de données en entrée.
J'ai récemment décidé d'utiliser le format gemtext par défaut
plutôt que le markdown pour écrire mes articles. Il a certes moins de
possibilités que le markdown, mais le rendu ne contient aucune
ambiguïté, tandis que le rendu d'un markdown peut varier selon
l'implémentation et le type de markdown (tableaux, pas tableaux ?
Syntaxe pour les images ? etc...)
Lors de l'exécution du générateur de site, tous les indexs sont
régénérées, pour les fichiers publiés, la date de modification de
celui-ci est comparée au fichier source, si la source est plus
récente alors le fichier publié est généré à nouveau car il y a
eu un changement. Cela permet de gagner énormément de temps puisque
mon site atteint bientôt les 200 articles et copier 200 fichiers pour
gopher, 200 pour gemini et lancer 200 programmes de conversion pour le
HTML rendrait la génération extrêmement longue.
Après la génération de tous les fichiers, la commande rsync est
utilisée pour mettre à jour les dossiers de sortie pour chaque
protocole vers le serveur correspondant. J'utilise un serveur pour le
http, deux serveurs pour gopher (le principal n'était pas
spécialement stable à l'époque), un serveur pour gemini.
J'ai ajouté un système d'annonce sur Mastodon en appelant le
programme local "toot" configuré sur un compte dédié. Ces
changements n'ont pas été déployé dans cl-yag car il s'agit de
changements très spécifiques pour mon utilisation personnelle. Ce
genre de modification me fait penser qu'un générateur de site
statique peut être un outil très personnel que l'on configure
vraiment pour un besoin hyper spécifique et qu'il peut être difficile
pour quelqu'un d'autre de s'en servir. J'avais décidé de le publier
à l'époque, je ne sais pas si quelqu'un l'utilise activement, mais au
moins le code est là pour les plus téméraires qui voudraient y jeter
un oeil.
Mon générateur de blog peut supporter le mélange de différents
types de fichiers sources pour être convertis en HTML. Cela me permet
d'utiliser le type de formatage que je veux sans avoir à tout refaire.
Voici quelques commandes utilisées pour convertir les fichiers
d'entrées (les articles bruts tels que je les écrits) en HTML. On
constate que la conversion org-mode vers HTML n'est pas la plus simple.
Le fichier de configuration de cl-yag est du code LISP chargé lors de
l'exécution, je peux y mettre des commentaires mais aussi du code si
je le souhaite, cela se révèle pratique parfois.
```Code Common-lisp pour la déclaration des convertisseurs texte vers html
(converter :name :gemini :extension ".gmi" :command "gmi2html/gmi2html data/…
(converter :name :markdown :extension ".md" :command "peg-markdown -t html -o…
(converter :name :markdown2 :extension ".md" :command "multimarkdown -t html -…
(converter :name :mmd :extension ".mmd" :command "cat data/%IN | awk -f m…
(converter :name :mandoc :extension ".man"
:command "cat data/%IN | mandoc -T markdown | sed -e '1,2d' -e '$d'…
(converter :name :org-mode :extension ".org"
:command (concatenate 'string
"emacs data/%IN --batch --eval '(with-temp-buf…
"(insert-file \"%IN\") (org-html-export-as-htm…
"(princ (buffer-string)))' --kill | tee %OUT"))
```
Quand je déclare un nouvel article dans le fichier de configuration
qui détient les méta-données de toutes les publications, j'ai la
possibilité de choisir le convertisseur HTML à utiliser si ce n'est
pas celui par défaut.
```Exemple de déclaration d'un nouveau texte à publier avec ses métadonnées
;; utilisation du convertisseur par défaut
(post :title "Minimalistic markdown subset to html converter using awk"
:id "minimal-markdown" :tag "unix awk" :date "20190826")
;; utilisation du convertisseur mmd, un script awk très simple que j'ai fait p…
(post :title "Life with an offline laptop"
:id "offline-laptop" :tag "openbsd life disconnected" :date "20190823" :c…
```
Quelques statistiques concernant la syntaxe de mes différentes
publications, via http vous ne voyez que le HTML, mais en gopher ou
gemini vous verrez la source telle quelle.
* markdown :: 183
* gemini :: 12
* mandoc :: 4
* mmd :: 2
* org-mode :: 1
You are viewing proxied material from dataswamp.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.