Voilà, ce premier billet va donc présenter le moteur de blog utilisé: Chronicle. En effet, je souhaitait un moteur de blog assez simple et qui génère du contenu statique (comme nanoblogger, utilisé par heaumer), et après de nombreuses recherches je suis resté sur Chronicle qui était le seul, excepté nanoblogger, à générer un blog statique (en plus y a même un script cgi si jamais je veux activer les commentaires).
Le principe est donc simple: vous écrivez vos billets dans un des langages de formattage disponibles, c'est-à-dire Markdown, Textile, ou directement du HTML. Une fois votre article écrit, vous lancez chronicle avec les options kivonbien, et votre blog est généré en html statique, et il ne reste plus qu'à le rendre accessible via n'importe que serveur web.
Néanmoins, il a fallu modifier quelques petites choses pour avoir le fonctionnement voulu. Heureusement c'est du perl et ça se laisse tripoter facilement.
Le thème
Les cinq thèmes fournis avec Chronicle ne sont pas parfait, en fait ils sont tous moches, sauf le thème « simple », mais qui a certains défauts (les liens en jaune clair quand on passe dessus, c'est immonde). Je suis donc parti de ce thème que j'ai légèrement modifié. La modification se fait très facilement, quelques valeurs à changer dans les CSS, quelques modifications dans les .templates utilisés pour générer l'html et le travail est fait. Le thème final est disponible ici.
Coloration syntaxique
Ensuite vient le problème de la coloration syntaxique, qui est assez indispensable au niveau esthétique pour un blog qui est destiné à parler programmation. Hélas, il n'y a pas de coloration syntaxique dans Chronicle, mais ça peut s'ajouter facilement.
Au niveau du logiciel utilisé pour la coloration, mon choix s'est d'abord porté
vers Pygments via XML-RPC (le serveur XML-RPC doit
avoir une fonction highlight_code qui prends en premier paramètre le code à
colorer et en second paramètre le langage, ce qui est par exemple le cas du
script écrit par
delroth), mais finalement j'utilise la
coloration syntaxique de Vim (via
Text::VimColor),
que j'avais d'abord éliminé car dans mes souvenirs ça ne convenait pas, ce qui
était le cas pour paste.pl, qui devait
éxécuter Vim pour colorer le texte (ce qui n'est pas génial niveau sécu pour un
script CGI), mais dans ce cas-ci, le script étant éxécuté par l'utilisateur
uniquement à la génération, ça ne pose aucun problème.
J'ai aussi ajouté la possibilitée d'utiliser
Kate,
un autre module de coloration syntaxique directement implémenté en Perl.
L'utilisateur peut donc choisir la méthode qu'il préfère en l'indiquant dans le
fichier de configuration (paramètre highlight qui est mis soit à kate,
vim ou pygments).
Pour ma part, j'utilise donc la coloration avec Vim, car plus de langages sont
supportés (520 fichiers dans /usr/local/share/vim/vim72/syntax/), et dans le
cas de langages peu utilisés, il y a peu de chances d'avoir une coloration dans
Pygments ou avec Kate, tandis que dans Vim, oui (c'est par exemple le cas de
arc).
Pour spécifier du code à colorer, il doit commencer par "highlight:langage",
avec langage qui est un langage supporté par la méthode de coloration que vous
avez choisie.
Je mets à votre disposition le diff, pour que vous puissiez patcher Chronicle si jamais vous avez envie d'avoir une coloration syntaxique de dingue, et voilà le résultat:
(defun hello (who)
(format t "Hello, ~a!~%" who))
Autres améliorations possibles
On pourrait aussi ajouter un paramètre qui permettrait à l'utilisateur d'utiliser une commande shell de son choix pour formatter le code (un script python pour utiliser Pygments par exemple, c'est plus simple que d'utiliser XML-RPC), et on pourrait faire de même pour le formattage du texte (pour utiliser mdown ou d'autres logiciels). Je le ferait peut être un jour si l'envie me vient.
