Introduction à DocBook sous Linux
Parce qu’il n’y a pas que le LaTeX pour écrire de bons documents, je vais vous présenter rapidement les bases de DocBook 5.0. Mais d’abord, qu’est-ce que DocBook?
DocBook
DocBook peut se résumer dans un premier temps à un schéma XML définissant un standard de création de documents (concrètement un DTD, un XSD, …). Il offre un grand nombre de balises pour écrire un document. C’est un « format » très utilisé pour les documentations de projets open-source par exemple. Par abus de langage, nous parlerons de « fichier DocBook » durant le reste de cet article pour parler d’un fichier XML écrit en suivant le schéma DocBook.
Du fait qu’il soit standardisé, un même fichier DocBook peut servir de base à plein de rendu différents (HTML, PDF, …).
Enfin, à la base de DocBook, il y a le célèbre éditeur d’ouvrages consacrés à l’informatique : O’Reilly (qui a malheureusement mis la clé sous la porte…).
Créer son premier document
Nous allons donc créer notre premier document à base de DocBook. Pour commencer, il faut installer le paquet suivant :
$ sudo apt-get install docbook-xsl-ns
Ce paquet ajoute des fichiers XSL qui sont des feuilles de style pour document XML. Elles permettent, à partir d’un fichier basé sur DocBook, de lui appliquer un style pour un rendu spécifique. C’est en quelque sorte le même principe que le CSS appliqué au HTML.
Dans un premier temps, nous allons écrire un fichier XML, essai.xml, basé sur le schéma DocBook.
<?xml version="1.0" encoding="UTF-8"?> <article version="5.0" xmlns="http://docbook.org/ns/docbook"> <title>Premier document DocBook</title> <articleinfo> <author> <firstname>John</firstname> <surname>Doe</surname> </author> <copyright> <year>2010</year> <holder>One More Blog</holder> </copyright> </articleinfo> <sect1> <title>Section de premier niveau</title> <para> Ce texte est dans un paragraphe. </para> <itemizedlist> <listitem> premier item d'une liste; </listitem> <listitem> et le second item. </listitem> </itemizedlist> </sect1> </article>
Les noms des balises font que le code est très compréhensible et, du coup, rapide à intégrer. Ce petit morceau de code n’est qu’un aperçu minime de ce qu’il est possible de faire avec DocBook. Bref, nous allons maintenant appliquer à ce fichier un style afin de créer un rendu. En HTML d’abord, puis en PDF.
$ xsltproc -o essai.html /usr/share/xml/docbook/stylesheet/docbook-xsl-ns/xhtml/docbook.xsl essai.xml
La syntaxe est très simple. On spécifie le nom du fichier en sortie grâce à l’option -o. On donne ensuite une feuille de style XSL et le fichier XML en entrée. Le résultat est le suivant :

Exemple DocBook en HTML
Un peu comme en LaTeX, tout est géré. Une table des matières est générée en fonction des sections et sous-sections avec les liens qui vont bien. Des id et class sont ajoutés à toutes les balises HTML de façon à éventuellement rajouter une feuille de style, …
Nous allons maintenant, à partir du même code XML, générer une version PDF de ce DocBook. Cependant, cela nécessite l’installation de quelques outils supplémentaires. Dans un premier temps, nous allons ajouter les feuilles de styles prévue pour le PDF :
$ sudo apt-get install docbook-xsl-doc-pdf
Il nous faut ensuite récupérer l’utilitaire FOP (Formatting Objects Processor). Il s’agit d’un programme écrit en Java qui permet de générer entre autres des fichiers PDF à partir de XML et XSD. Cet utilitaire est présent dans les dépôts d’Ubuntu – et des autres distributions j’imagine – mais dans sa version 0.95. Or, est sortie depuis quelques mois une version 1.0 plus aboutie. Nous allons donc récupérer cette version et y ajouter une librairie, Offo, qui gère les découpages de mot (hyphenation ou trait d’union si fin de ligne) et qui évitera des erreurs lors de la génération du document.
$ wget http://apache.crihan.fr/dist//xmlgraphics/fop/binaries/fop-1.0-bin.tar.gz $ tar -xvzf fop-1.0-bin.tar.gz $ cd fop-1.0/ $ wget http://freefr.dl.sourceforge.net/project/offo/offo-hyphenation/1.2/offo-hyphenation-fop-stable_v1.2.zip $ unzip offo-hyphenation-fop-stable_v1.2.zip $ cp offo-hyphenation-fop-stable/fop-hyph.jar lib/
Lançons maintenant la création de notre document PDF :
$ ./fop -xml ../essai.xml -xsl /usr/share/xml/docbook/stylesheet/docbook-xsl-ns/fo/docbook.xsl -pdf ../essai.pdf
Là encore c’est très simple. L’option -xml doit être suivie du fichier DocBook, l’option -xsl d’une feuille de style spécifique au PDF et enfin la dernière option défini le fichier en sortie. Le résultat est très satisfaisant : ![]()
Ce n’est là qu’un tout petit aperçu de ce qu’il est possible de faire avec DocBook. Comme pour LaTeX, il existe plusieurs classes (ici nous avons testé la classe article) pour différents usages. Je vous laisse fouiller un peu et trouver votre bonheur dans la documentation. Je vous propose quelques sites intéressants qui d’une part m’ont aidé à écrire ce premier article sur le sujet et qui d’autre part proposent de la documentation de qualité pour approfondir tout ça :
Téléchargement en torrent de contenu libre
Aujourd’hui, j’aimerai vous faire découvrir un projet très intéressant : Free Torrent.
Free Torrent est un projet de partage de contenu sous licence libre (logiciels, distributions linux, documents, musiques, vidéos, …) utilisant le protocole Bittorrent. Il commence à y avoir pas mal de torrents et ceux-ci sont très souvent de qualité. Certain reprocheront à Free Torrent de proposer des fichiers souvent accessibles plus rapidement en téléchargement direct depuis le net mais il ne faut pas oublier la notion de partage et c’est là tout l’intérêt du projet. Bref, je vous invite à regarder si du contenu vous intéresse. N’hésitez pas à en abuser et à seeder autant que possible! Enfin, si vous avez du contenu libre de droit qui pourrait intéresser la communauté, vous pouvez bien entendu suivre les instructions pour créer un .torrent et le soumettre.
Quelques exemples de fichier que l’on peut trouver sur Free Torrent :
Fortune et Kaamelott
La commande fortune permet d’afficher dans son terminal des citations en tout genre (extraits de livres, théorèmes, citations d’hommes politiques, etc…). Bien que ce ne soit pas d’une utilité flagrante, voire même carrément chronophage, une petite citation à chaque ouverture de terminal, par exemple, ajoute un peu de gaîté à une journée de travail pas toujours reluisante.
Pour l’installer et ajouter des citations françaises :
$ sudo apt-get install fortune fortunes-fr
Ensuite l’exécution se fait simplement en tapant la commande fortune éventuellement suivie d’un des thèmes présent dans la liste issue de fortune -f.
Seulement voilà… Les citations incluses dans le paquet ne sont pas toujours fantastiques et parfois même incompréhensibles. Bref, suite à un journal posté sur LinuxFr concernant une fortune sur La Classe Américaine, je me suis lancé dans l’écriture d’un fichier contenant des citations de Kaamelott. Pour avoir une bonne base, je suis parti sur celles proposées sur Wikiquote. Après avoir ajoutées les extraits de la page principale et des pages dérivées (Arthur, Léodagan, Perceval, Karadoc, etc…) j’arrive à un total de 505 entrées ce qui commence à être suffisamment correct pour le partager! Le fichier texte se trouve ici. Une fois que vous l’aurez enregistrer, ouvrez un terminal et allez dans le répertoire contenant ce fichier texte puis :
$ mv kaamelott.txt kaamelott $ strfile kaamelott "kaamelott.dat" created There were 505 strings Longest string: 2166 bytes Shortest string: 50 bytes
La comamnde strfile va générer un fichier .dat lisible par fortune. Il suffit ensuite de copier ces deux fichier dans le répertoire approprié :
$sudo cp kaamelott kaamelott.dat /usr/share/games/fortunes/
Le tour est joué! La preuve :
$ fortune kaamelott Un village assailli de brigands, une femme qui se fait tabasser, une poule qui boîte, c est pas les opprimés qui manquent ! Et là au moins, j aurais l impression de servir à quelque chose. [Lancelot, Livre III, 1 : Le chevalier errant] $
Enfin, pour avoir une citation au lancement de son terminal il suffit d’ajouter cette commande dans son fichier ~/.bashrc.
Le manuel de la commande fortune se trouve là. Un explication détaillé est également disponible ici.
Si vous avez des suggestions de citations à ajouter, ce sera avec plaisir! Postez les dans les commentaires et je me chargerai du reste. Si vous pouvez en plus fournir le nom et le numéro de l’épisode, alors là c’est parfait!
Agrégateur de flux RSS : rssLounge
L’un des intérêts à avoir son serveur personnel (ou même un hébergement chez un prestataire) c’est qu’on a alors un choix important d’applications web open source pour tout type d’utilisation et qu’on peut ainsi se détacher des solutions propriétaires grand public avec lesquelles le contrôle de ses données personnelles est complexe pour ne pas dire impossible. Pour qui a quelques notions de base sur l’administration d’un serveur et sait suivre un tutoriel ou lire un README, il devient très facile de propulser un CMS, un blog ou encore un webmail.
Afin de poursuivre mon but de fuir Google, j’ai souhaité remplacer l’agrégateur de flux RSS Google Reader que j’utilisais par une solution open source hébergée sur mon serveur. Malheureusement, ce genre d’application ne court pas les rues. Mon premier choix s’est porté sur Gregarius qui semble être l’agrégateur web open source le plus populaire. Problème : le projet n’est plus maintenu. Bref, en cherchant un peu, je suis tombé sur rssLounge. Il s’agit d’un agrégateur de flux dont le style est bien travaillé et qui utilise PHP/MySQL (et de l’AJAX pour la navigation). Le traitement des flux est basé sur la bibliothèque Simple Pie, une des plus abouties.
Actuellement dans sa version 1.3, rssLounge propose presque tout ce qu’on attend d’un agrégateur :
- classement des flux par catégorie
- champ de recherche
- paramètres d’affichage « non-lu / tous / publié à telle date »
- affichage spécifique pour les flux ne contenant que des images
- marquage de flux en favoris
- import/export en OPML (compatible Google Reader)
- mise à jour des flux par AJAX ou crontab
Les deux seules fonctionnalités qu’il lui font vraiment défaut selon moi sont la lecture des médias (vidéo ou audio) et l’interprétation des balises spéciales permettant d’afficher du code par exemple mais ceci semble plus lié à une limitation de Simple Pie. Hormis ces deux choses qui imposent parfois d’ouvrir l’article dans son site original, cette application est très efficace. Quelques détails supplémentaires : rssLounge peut (doit?) être protégé par un identifiant et un mot de passe mais ne gère pas le multi-compte. Ah! Et j’oubliais, il est compatible avec les navigateurs basés sur Webkit et Gecko (Firefox, Safari, Opéra, Chrome, …) donc pas IE !!
Vous pouvez le tester sur la page de démo mise en place par l’auteur de rssLounge.
Erreur WordPress
Lors de l’installation de ce blog WordPress sur mon serveur sous Ubuntu Server 9.10, j’ai eu droit dans l’interface d’administration à plusieurs messages de ce genre dans les widgets du tableau de bord :
Fatal error: Allowed memory size of 33554432 bytes exhausted
Pour corriger ça, il suffit d’éditer la ligne suivante du fichier /etc/php5/apache2/php.ini :
memory_limit: 16M
Et la remplacer par :
memory_limit: 64M
Un redémarrage d’apache2 plus tard et c’est réglé!






