Une thèse d'histoire en LaTeX

Ma bien-aimée Nausicaa a soutenu aujourd’hui sa thèse d’histoire médiévale.

Pendant les quatre ans qu’ont pris son travail, j’ai été à ses côtés pour l’aider sur le plan technique de deux façons. D’abord en développant pour elle les outils informatiques lui permettant d’effectuer des études statistiques sur des affaires judiciaires médiévales. Mais aussi en la convaincant de rédiger sa thèse avec LaTeX.

Ce logiciel, qu’on ne présente plus depuis des décennies dans les univers des mathématiques, de la physique ou de l’informatique, est un choix beaucoup plus atypique dans le milieu des sciences humaines. Néanmoins, le bilan est positif car elle pense que LaTeX lui a fait gagner un an sur une phase de rédaction qui lui a pris un an et demi.

Je vous propose donc un retour d’expérience de la rédaction de sa thèse, de mon propre point de vue, que je scinde en deux billets. Dans ce billet, nous verrons les motivations, le choix des outils. Dans un billet suivant, je traiterai de quelques astuces que j’ai découvertes au fil de l’eau.

Ce qui l’a amenée à utiliser LaTeX

Le choix des outils est peut-être un des aspects les plus effrayants de ce type de projet. Ces choix sont difficiles et il faut les assumer pour au moins trois ou quatre ans, voire jusqu’à six ans en histoire. Plusieurs facteurs ont fini par amener Nausicaa à adopter LaTeX pour sa thèse.

Les outils WYSIWYG sont inadaptés pour les documents de cette envergure

D’une part, les outils dits WYSIWYG (What You See Is What You Get) qu’elle a connus jusque-là montraient clairement leurs limites pour un projet comme le sien.

Beaucoup de ces logiciels, comme Microsoft Office ou Scrivener, sont payants. Or elle n’était pas disposée à payer quoi que ce soit, surtout qu’elle avait l’habitude de LibreOffice. Quant au modèle d’abonnement que propose Office 365, c’était hors de question.

LibreOffice, ensuite, s’est disqualifié tout seul. Alors qu’elle n’en était qu’à la moitié de la rédaction de son mémoire de stage, LibreOffice s’est mis soudainement à planter systématiquement à l’ouverture de son document. Sueurs froides garanties ! Il a fallu que j’ouvre son fichier sur ma machine, qui avait une version différente de LibreOffice, et que je le sauvegarde à nouveau pour qu’elle puisse y retrouver l’accès. Donc si LibreOffice avait eu autant de mal à gérer un mémoire de 100 pages, impossible de prédire ce qui allait se passer avec un document six fois plus long…

De manière plus générale, les logiciels WYSIWYG essayent tous d’être les plus complets possibles, pour finir par être le seul logiciel utilisé du début à la fin du processus rédactionnel. Ils ouvrent le document de travail en lecture-écriture, ce qui introduit un risque de corruption des données, et utilisent des formats obscurs et parfois horriblement complexes. Par exemple, saviez-vous que la norme ISO/IEC 29500, qui codifie entre autres le format .docx, est composée de quatre volumes totalisant 6 766 pages ?

Le moindre problème avec l’outil, ou la moindre mise à jour, apporte donc avec lui le risque de perdre l’accès à son texte. Même le découpage de son document en autant de fichiers par chapitre n’éliminera pas entièrement ce danger.

Ensuite, il faut y ajouter un bon outil de gestion de bibliographie, comme Endnote, payant et propriétaire ou Zotero, gratuit et libre. Mais là encore, le risque de perdre sa bibliographie est tout aussi inacceptable que celui de perdre le reste de son travail. D’autant plus quand ladite bibliographie se compte en centaines d’entrées, comme toute bonne thèse d’histoire qui se respecte…

Elle connaissait déjà le principe d’un langage de « markup » comme HTML

En revanche, les outils qu’on oppose généralement aux WYSIWYG n’ont pas ce problème car le workflow est différent. Le principe est en effet le suivant : composer un fichier texte brut, structuré en suivant les règles d’un langage informatique, dans un premier logiciel ; puis utiliser un second programme qui interprète ce fichier, pour obtenir un rendu final (généralement sous forme de PDF).

Même si on ne voit pas tout de suite le résultat final de son travail à l’écran, l’avantage majeur est qu’un problème avec un logiciel comme LaTeX ou biblatex ne font pas perdre son travail ; juste la faculté de prévisualiser le résultat final. Et un problème avec un éditeur de texte, en plus d’être extrêmement rare, n’est pas une fatalité non plus : dans les cas les plus extrêmes, on peut changer d’éditeur.

Nausicaa avait déjà fait beaucoup de HTML et de CSS dans le passé. Ainsi, non seulement elle connaît bien le principe de rédiger un texte dans un langage source avec un autre outil que celui utilisé pour visualiser le résultat, mais elle maîtrise également l’idée d’une stricte séparation du fond et de la forme. Rédiger un document en LaTeX lui demandait donc juste de se familiariser avec le langage.

Je lui ai beaucoup parlé de LaTeX

Je dois ensuite admettre que j’ai fait un peu de « lobbying » de mon côté pour la convaincre d’utiliser LaTeX plutôt qu’un cliquodrome.

J’utilise en effet LaTeX depuis plus de douze ans. En prépa, je l’utilisais pour préparer la quasi-totalité de mes devoirs maison, ce qui ne manquait jamais de surprendre mes enseignants. En école d’ingénieurs, je m’en servais pour mes rapports de projet et de stage mais aussi pour mes notes de cours. Plus tard, j’ai composé mes CV et mes lettres de motivation, toujours avec LaTeX. Et j’ai eu de multiples occasions, chez différents employeurs, de faire de la rétro-ingénierie de chartes graphiques d’entreprise en Word pour générer des documents respectant cette même charte mais en LaTeX. Maintenant, je l’utilise encore, principalement pour mes courriers.

Ces douze ans d’expérience m’ont donc permis d’assurer le support technique LaTeX pour Nausicaa et de l’aider pour les choses plus compliquées à faire dans ce langage, comme une couverture personnalisée ou les aspects plus délicats de la mise en forme.

Enfin, peu avant le début de sa thèse, je lui avais également offert le livre LaTeX appliqué aux sciences humaines, de Maïeul Rouquette et que je recommande vivement. L’ouvrage est complété par le blog de l’auteur, qui sert aussi d’erratum sur certains sujets évoqués dans son ouvrage (comme l’indexation).

Elle a pratiqué LaTeX à l’université

Mais c’est une formation LaTeX qui l’a vraiment séduite. Il s’agissait d’une formation doctorale à la Sorbonne, dispensée par un maître de conférences en musicologie. Non seulement parce qu’elle pratiquait directement le langage LaTeX sur une machine, mais aussi parce que la formation était plutôt exhaustive et, visant un public de chercheurs, traitait de biblatex.

Cette formation était plutôt bienvenue pour elle, parce que je n’aurais jamais eu le temps de tout lui montrer moi-même (c’est aussi pour ça que je lui avais acheté un livre, après tout). Et je pense que voir une démonstration de LaTeX par quelqu’un d’autre que moi a été déterminant dans son choix final.

LaTeX lui sert aussi pour ses présentations

Pour finir, LaTeX a aussi l’avantage de ne pas être qu’un concurrent à Word.

En 2016, pour une communication scientifique, Nausicaa avait préparé des planches sur Microsoft PowerPoint. Le moment venu de la présentation, elle ouvre le fichier sur le PC à sa disposition et patatras ! les couleurs n’étaient pas bonnes, le rendu était horrible et la présentation défigurée. Elle avait en effet préparé ses planches sur un PowerPoint plus récent que celui du PC de la salle. Il va de soi qu’elle a mal vécu cet incident.

Depuis, elle a pris l’habitude de préparer ses présentations sur Overleaf, en utilisant beamer. Avec le raisonnement que puisque le format de sortie est un PDF, ça marchera partout. Et elle m’a dit avoir gagné beaucoup de temps avec cette solution par rapport à PowerPoint, car elle peut se concentrer davantage sur le contenu.

LaTeX lui a donc servi non seulement pour sa thèse, mais aussi pour les « slides » de sa soutenance. Il ne manquerait plus que LaTeX fasse le café !

Choix d’outils

Choisir LaTeX plutôt que des traitements de texte traditionnels implique de faire plusieurs choix tout aussi importants : la distribution et le moteur TeX, l’éditeur dans lequel on prépare le texte source, le système de gestion de versions, la « documentclass » et les autres aides à la préparation de documents.

Installer ShareLaTeX sur mon serveur : un échec

À l’origine, puisqu’elle utilisait déjà ShareLaTeX (actuellement Overleaf) pour ses présentations et que cet outil est open source, je m’étais mis en tête de déployer localement ShareLaTeX sur mon serveur domestique.

Malheureusement, la seule méthode de déploiement prise en charge est Docker. Or Docker sur FreeBSD, ça ne marche pas très bien. J’ai d’abord essayé de déployer Overleaf dans une « jail » tout en me passant de Docker, mais j’ai abandonné devant le nombre ahurissant de dépendances qu’il fallait installer et gérer à la main. Je suis même allé jusqu’à installer une Ubuntu Server sur une VM bhyve (dont j’ai déjà parlé dans ce billet), pour installer cette image Docker dedans. Le tout sans succès non plus.

J’ai donc abandonné cette idée, et j’ai choisi de déployer une distribution LaTeX et un éditeur adapté sur le PC de Nausicaa.

TeX Live comme distribution LaTeX, même sous Windows

Tout d’abord, plutôt que MiKTeX, qui semble être la distribution recommandée sous Windows, j’ai préféré installer TeX Live pour qu’elle ait la même chose que moi et mes PC sous Linux. TeX Live fonctionne en effet très bien sous Windows et est déjà la distribution de choix pour les dérivés d’UNIX.

Quant au moteur LaTeX, plutôt que le moteur TeX d’origine, nous avons préféré partir sur XeTeX pour plusieurs raisons :

  • c’est à la fois ma préférence personnelle et celle de Maïeul Rouquette ;
  • ce moteur gère nativement l’Unicode et accepte par défaut des fichiers source en UTF-8 ;
  • et enfin, ce moteur gère les polices TrueType (TTF) et OpenType (OTF) et leurs fonctions avancées nativement, comme les ligatures. Le moteur TeX, en revanche, fonctionne avec les polices au format MetaFont, qui ne sont pas aussi répandues.

Gnuplot, pour de jolis graphiques

La portée de son travail allait amener Nausicaa à générer des graphiques tirées de séries statistiques. Je lui ai donc proposé d’utiliser Gnuplot, parce que je connaissais déjà ce logiciel, parce que le résultat est joli et surtout parce que les graphiques sont produits à l’aide de scripts. Ce qui permet donc aux figures d’avoir une apparence cohérente, mais aussi d’être gérées comme du code source.

Éditeur LaTeX : en privilégier un conçu pour la programmation

Avant le début de sa thèse, j’ai passé beaucoup de temps à essayer plusieurs éditeurs de texte orientés LaTeX comme TeXmaker, TeXstudio ou TeXworks. À l’époque où j’avais fait ces tests, c’est-à-dire en 2015, je n’étais satisfait par aucun de ces outils car j’y percevais d’importantes lacunes (ça a peut-être changé depuis).

Même si latexmk simplifie énormément la compilation de documents LaTeX, le fait qu’elle utilise Gnuplot signifiait que j’allais tout de même avoir besoin de personnaliser facilement l’ensemble des étapes nécessaires pour compiler le document PDF à partir des fichiers source. Or, aucun de ces éditeurs ne me permettait de paramétrer cette chaîne de compilation d’une manière satisfaisante.

Je lui ai donc proposé d’utiliser l’éditeur Visual Studio Code de Microsoft. À l’époque, c’était relativement nouveau, donc le choix était risqué. Mais il m’a donné une très bonne première impression néanmoins. Après avoir installé l’extension LaTeX Workshop (qui elle, était vraiment toute nouvelle à l’époque), Code devient un éditeur LaTeX avec une ergonomie agréable. La prévisualisation PDF a le bon goût de s’ouvrir dans une nouvelle fenêtre, contrairement aux éditeurs LaTeX qui l’affichent généralement dans la même fenêtre que le code. Étant donné qu’elle a muni son PC d’un second écran en mode portrait, elle peut donc facilement afficher côte à côte le code et le résultat, chacun ayant son moniteur dédié.

Le point faible de cette solution est que LaTeX Workshop était assez bugué à l’époque. Si bien qu’il fallait, de temps en temps, redémarrer VS Code et supprimer l’intégralité des fichiers auxiliaires générés par LaTeX pour remettre les choses d’aplomb. Par ailleurs, Nausicaa était très réticente à installer les mises à jour de VS Code ou de LaTeX Workshop, parce qu’une de ces mises à jour lui avait causé des problèmes.

Les problèmes se manifestaient généralement par des fichiers .aux tronqués ou corrompus. Une fois, j’avais dû aller dans le Gestionnaire des tâches pour arrêter des processus LaTeX qui traînaient. Mais je pense avoir l’explication : je crois que sa version de LaTeX Workshop omettait de bloquer la commande de compilation quand une tâche de génération est déjà en cours, si bien qu’on peut lancer accidentellement plusieurs tâches concurrentes sur le même projet. Et comme LaTeX est plus lent sous Windows que sous Linux et qu’il fallait plusieurs minutes pour générer son document, cela pouvait survenir plus d’une fois par jour.

En conclusion, privilégier un éditeur de code plus générique et plutôt orienté vers le développement logiciel n’est pas une mauvaise solution quand il s’agit de préparer une thèse en LaTeX, et je le recommande à quiconque voulant se lancer dans pareil projet.

Pas de Git : une erreur ?

Le choix technique que je regrette toutefois est celui de ne pas avoir utilisé Git.

Je n’ai pas insisté, parce que je pensais qu’elle allait de toute façon écrire sa thèse seule et je ne voulais pas introduire trop d’outils nouveaux en même temps.

Mais en raisonnant ainsi, j’ai oublié les personnes qui relisent le texte à la recherche de fautes : son professeur, ses parents… Et vers la fin, j’intervenais également sur la mise en forme, car c’était plus simple si je m’en chargeais.

En somme, nous étions deux à toucher directement au code LaTeX. Même si j’avais réussi à isoler toutes les commandes portant sur la mise en forme dans un fichier .sty qu’elle pouvait importer avec un simple \usepackage, certaines modifications nécessitaient tout de même des modifications dans le corps du document. Par ailleurs, je trouvais parfois des coquilles que personne n’avait relevé et que je voulais corriger sur-le-champ. Dans ces cas-là, il est important de se synchroniser.

Toute thèse est donc, qu’on le veuille ou non, un travail à plusieurs et c’est pourquoi il est important de traiter le texte de la thèse comme un projet collaboratif.

Git apporte aussi la faculté d’avoir un historique de son travail. Ce qui est très utile pour suivre son avancement, mais aussi pour pouvoir revenir en arrière en cas de besoin. C’est un filet de sécurité que j’apprécie beaucoup sur mes projets personnels de programmation.

Enfin, Git apporte une sauvegarde hors site « gratuite », car il est très facile d’héberger son dépôt maître sur une machine distante.

De fait, pendant les dernières phases où j’intervenais sur la mise en forme, j’avais mon dépôt Git local qui me servait de bac à sable. La branche master était celle dans laquelle j’importais son travail, et d’où partaient mes branches qui représentaient mes contributions. Après une nouvelle importation dans la branche master, j’utilisais git rebase sur toutes mes autres branches pour actualiser mon travail avec le sien ; mais dans l’autre sens, un simple git merge de ma branche dans master suffisait.

Tant pis, donc, si on n’a intégré Git que très tardivement dans ce travail. Les quelques dernières retouches ont certes été source de crispation, mais globalement, Git n’a été vraiment utile qu’à partir du moment où je modifiais moi aussi le code LaTeX de sa thèse. Et Nausicaa n’aurait peut-être pas vu l’intérêt de committer régulièrement son travail tant qu’elle travaillait toute seule dessus.

Documentclass : memoir, largement supérieur à book

Un choix technique qui s’avérait être mauvais, c’était celui d’avoir commencé à rédiger quasiment toute la thèse sous la \documentclass{book}. C’est une documentclass de base qui fait bien le travail, jusqu’à ce qu’on ait besoin d’apporter des modifications importantes sur la mise en forme, comme :

  • remplacer la page de garde par défaut par une autre, personnalisée, et utilisant des champs de métadonnées personnalisées ;
  • modifier l’apparence des titres des parties, chapitres et sections ;
  • modifier l’apparence des parties, chapitres et sections dans le sommaire et la table de matière ;
  • prévoir en début de thèse un sommaire qui s’arrête aux chapitres, en plus d’une table des matières détaillée en fin de thèse ;
  • modifier les en-têtes et pieds de page…

Pour cela, la documentclass memoir est beaucoup plus adaptée : ses possibilités de personnalisation sont à la fois puissantes et plus faciles d’accès (comparé au fait de redéfinir des commandes LaTeX de base soi-même, en tout cas) et on sent vraiment que la classe a été conçue pour des projets de grande envergure comme… des thèses.

Une chose à laquelle il faut faire particulièrement attention, ce sont les conflits avec les autres packages LaTeX, comme sectsty. Ces packages altèrent la mise en forme du document en redéfinissant des commandes internes (comme \part, \section, etc.), en supposant qu’on part d’une documentclass de base, comme book. Il ne faut surtout pas les charger avec memoir, sinon ça ne marchera pas ! À la place, il est indispensable de privilégier les fonctions de personnalisation intégrées à memoir, même si elles sont parfois un peu plus guindées. La plupart des astuces de mise en forme qu’on peut trouver sur StackOverflow ne s’appliquent plus à partir du moment où on substitue memoir à book, mais le manuel est plutôt complet.

La migration de book vers memoir n’a pas eu trop de répercussions, mais c’est une décision que j’avais prise tardivement, alors que j’avais déjà mis en place de nombreuses bidouilles intéressant la mise en forme de sa thèse. C’est donc un travail que j’ai dû reprendre en partie.

Malgré tout, si c’était à refaire, je préconise d’utiliser la classe « memoir » dès le début du projet, sans aucune hésitation.

La question de la correction orthographique

Il n’y a rien de plus désagréable que de publier un texte, de lire la forme publiée papier et de trouver des coquilles qu’on a ratées.

La question du correcteur orthographique finit donc inévitablement par se poser. Que ce soit pour un article de 12 pages ou une thèse de 600 pages, c’est un allié indispensable qui permet de rattraper des coquilles que même des relecteurs en chair et en os auraient pu rater.

Cependant, il n’existe à ma connaissance aucune solution commerciale (comme Antidote) qui soit conçu pour fonctionner directement sur le code LaTeX.

On se retrouve donc avec deux possibilités :

  • utiliser le correcteur orthographique intégré à son éditeur de texte, pourvu que la fonction existe et qu’un dictionnaire français soit disponible ;
  • ou lancer la correction orthographique sur le PDF final, ce qui nécessite cependant quelques bidouilles pour que ce soit efficace.

Dans notre cas, j’ai relu le code LaTeX sous Emacs avec flyspell-mode, ce qui m’a permis de rattraper pas mal d’erreurs. Ce mode utilise ispell, ce qui suffit à mon avis largement. Nous ne ressentions pas le besoin d’un correcteur grammatical, même si un tel correcteur peut trouver encore plus de coquilles (des fautes d’accord, par exemple).

La relecture est donc une affaire de machines et d’hommes : une machine ne s’ennuie jamais et repèrera sans faillir la moindre petite inversion de lettres noyée dans un océan de centaines de milliers de mots (comme « cyclimse » au lieu de « cyclisme »), mais un relecteur en chair et en os est capable d’identifier d’autres problèmes que juste ceux de pure forme.

Le moment du rendu

Le rendu de la thèse à la Sorbonne est électronique : il faut soumettre à la fois un fichier PDF qui respecte un certain nombre de contraintes, mais aussi les fichiers « source ».

Entre autres, le PDF doit utiliser une première et une quatrième de couverture imposées par la faculté de lettres. Le gabarit est bien évidemment fourni… sous format Word (sinon, ce ne serait pas drôle). Et tout le travail que j’avais fait pour redéfinir la commande \maketitle dans le code source de sa thèse était bon pour la poubelle.

Heureusement, quelques coups de LibreOffice pour remplir le modèle, puis une petite commande pdftk plus tard (qu’elle a trouvée elle-même alors qu’elle abhorre généralement la ligne de commande !) et le PDF de la thèse était prêt.

En revanche, du côté du format source, il faut dire que la dame du bureau de dépôt des thèses ne s’attendait pas du tout à un répertoire rempli d’images au format PDF (ben oui, c’est un format de dessin vectoriel comme un autre après tout). Et elle ne savait encore moins quoi faire de ces mystérieux fichiers .tex. Il est clair qu’il n’y a que peu d’informaticiens à la Sorbonne.

Conclusion : « La présentation du volume est soignée »

Parmi les rapports préliminaires qu’elle a reçues avant de soutenir sa thèse, une des membres du jury a écrit que « la présentation du volume est soignée ».

Et je dois dire que LaTeX permet, en effet, d’obtenir d’emblée un très bon résultat du point de vue visuel. Un PDF généré par LaTeX dégage une aura bien particulière, que Word ou LibreOffice seraient incapables d’égaler (ce que décrit bien ce billet de blog). Les algorithmes de calcul de la meilleure mise en page d’un paragraphe, de césure des mots, de placement d’éléments « flottants » comme les tables et les figures et d’autres encore, utilisent comme critère d’optimisation de nombreux petits détails subtils qui participent à créer cette aura. En typographie tout particulièrement, le diable est en effet dans les détails.

Chaque jour, quand je rentrais du travail et que je la voyais travailler sur sa thèse, je prenais toujours un peu de temps pour admirer la prévisualisation PDF et son apparence visuelle suffisait pour me donner envie de le lire, même si c’était loin d’être fini. Sa thèse est comme une cathédrale qu’on admire alors même qu’elle est loin d’être terminée.

Le seul bémol, c’est que personnaliser l’aspect visuel de son document pour lui donner une touche personnelle demande beaucoup de travail. Pour cela, j’ai lu enter autres le TeXbook de Donald Knuth, le mode d’emploi (et le code) du documentclass « book » avec, en guise de référence, le code source annoté du cœur de LaTeX. Heureusement, la documentclass memoir m’a épargné pas mal de tracas.

Maintenant que la thèse a été soutenue, il ne reste plus qu’une chose à faire, et pas des moindres : la publier.

Posté par x0r à 0 commentaire • Tags : latex histoire thèse

pass : un gestionnaire de mots de passe simple et efficace

De nos jours, l’explosion du nombre de comptes que l’on doit créer et maintenir auprès de services en ligne constitue en effet autant de mots de passe qu’il faut inventer et retenir. Entre le compte mail, souvent plusieurs comptes chez des sites marchands en ligne, les démarches administratives (comme les impôts ou le compte personnel de formation, dont j’avais cassé le site Web dans le passé) voire les mots de passe dont on peut être amené à se souvenir au travail, on finit rapidement à plusieurs dizaines de mots de passe à retenir. Si pour bien faire les choses, on vous prie de choisir des mots de passe à la fois forts (longs et puisant dans les lettres, les chiffres et les symboles) et uniques, la gymnastique mentale devient vite fastidieuse.

Il y a beaucoup de mauvaises méthodes pour gérer plusieurs dizaines de mots de passe forts dans sa tête : on est vite tenté d’utiliser le même mot de passe sur au moins deux services différents. Guère mieux est le fait de construire ses mots de passe à partir d’un préfixe et d’un suffixe identiques tout en dérivant le reste du mot de passe du nom du service.

La dernière méthode consiste à mettre en œuvre un gestionnaire de mots de passe : un utilitaire qui retient chaque mot de passe à la place de l’utilisateur en les stockant dans un stockage chiffré, déverrouillable uniquement à l’aide d’un mot de passe maître.

Je savais depuis un moment qu’il me fallait un gestionnaire de mots de passe, moi aussi, simplement pour me prémunir des risques que constitueraient la compromission de la base de données de mots de passe d’un des nombreux services Web chez qui j’ai un compte. J’ai pris le temps d’étudier de nombreuses alternatives sans en trouver une qui me plaise.

Depuis quelques mois, j’utilise un petit gestionnaire de mots de passe qui s’appelle pass et que j’aime beaucoup. Il est gratuit et libre et va à l’essentiel de ce qu’est un gestionnaire de mots de passe : un système de stockage de secrets dans une base de données chiffrée. Je vous propose un petit tour d’horizon de cet outil et de ses possibilités.

Présentation

Pass est sans doute le gestionnaire de mots de passe le plus simple que j’ai pu voir : il s’agit en effet d’un script shell d’environ sept cents lignes. Les mots de passe en eux-mêmes sont stockés dans des fichiers texte, chiffrés avec GPG avant d’être placés dans une arborescence arbitraire de fichiers et de répertoires, ce qui permet de les sauvegarder sans peine et de les partager entre plusieurs machines avec Git par exemple. L’outil est par ailleurs extensible et bénéficie déjà d’intégrations avec les navigateurs Web les plus répandus.

Premiers pas

Installation

Votre système d’exploitation *nix fournit vraisemblablement déjà un paquet. Il suffit donc d’installer le paquet pass (ou password-store sous FreeBSD) pour installer le logiciel en lui-même.

Initialisation du stockage des mots de passe

Cependant, une fois installé, le logiciel n’est pas encore prêt à l’emploi. Il faut d’abord initialiser la base de données de mots de passe. Pour cela, nous allons d’abord créer une clef GPG dédiée au chiffrement de mots de passe et qu’on gardera distincte des autres. De manière générale, c’est toujours une bonne pratique d’utiliser des clefs distinctes pour des usages distincts.

Pour cela, un simple gpg --full-generate-key suffit dans un terminal. Pour mon propre usage, je n’ai pas donné de nom ni d’adresse e-mail, mais seulement un commentaire indiquant que la clef sert uniquement de clef de chiffrement pour des mots de passe.

Prenez note de l’identifiant de la clef nouvellement créée, puis initialisez Pass avec pass --init <ID de clef GPG>.

La dernière étape, facultative, est d’initialiser le dépôt Git dans la base de données de mots de passe. Pour cela, pass git init fera l’affaire. Dans la plupart des cas, vous voudrez alors pousser votre base de mots de passe sur une machine distante ; il faudra alors renseigner le distant avec une commande de la forme pass git remote add origin ssh://utilisateur@example.com/home/utilisateur/.pass.git.

Générer un nouveau mot de passe aléatoire

Lorsqu’on crée un nouveau compte ou qu’on change pour la première fois le mot de passe d’un service, la commande pass generate fait tout le travail :

pass generate Sites\ Web/Social/Diaspora

Par défaut, pass affiche le mot de passe qu’il a généré sur le terminal. Veillez donc à ce que personne ne regarde par-dessus votre épaule au moment où vous lancez cette commande ! Alternativement, pass peut aussi copier le nouveau mot de passe dans le presse-papiers si vous donnez l’option =-c= ; vous avez alors 45 secondes pour le coller dans la page Web avant qu’il soit supprimé du presse-papiers. À ce stade, le mot de passe est stocké dans la base de données et si vous utilisez Git, un commit aura été fait.

Quand ça ne marche pas

Pass génère par défaut des mots de passe de 24 caractères en puisant dans les 94 caractères imprimables du jeu de caractères ASCII. Il arrive parfois que certains sites aient du mal avec les mots de passe contenant certains caractères que les développeurs n’ont pas prévu dans leur code ; il arrive aussi que des sites rejettent des mots de passe trop longs. Dans les deux cas, ce sont des bugs et dans le second cas, cela peut aussi suggérer que le site stocke en fait ses mots de passe en mépris de l’état de l’art (en clair, par exemple).

Dans ces cas, pass generate accepte l’option -n pour générer un mot de passe sans symboles et il est possible de paramétrer au cas par cas la longueur du mot de passe à générer.

Retrouver un mot de passe préalablement stocké

Pour retrouver le mot de passe qu’on vient de stocker et le copier dans le presse-papiers, taper pass -c <nom du compte>. Après avoir tapé le mot de passe de la clef de chiffrement, le mot de passe en question est déchiffré et copié dans le presse-papiers (puis effacé du presse-papiers après 45 secondes).

Cette manipulation est un peu fastidieuse si on n’a pas déjà un terminal ouvert à côté de son navigateur. Heureusement, des extensions pour Firefox et Chrome existent. Puisque j’utilise Firefox, je parlerai seulement de Firefox ici, mais il me semble que l’intégration avec Chrome fonctionne de la même manière.

Intégration avec Firefox

L’intégration Firefox de pass nécessite l’installation de deux composants : passff-host d’une part, qui est un petit « wrapper » autour de pass et passff d’autre part, l’extension Firefox en lui-même.

En installant ces deux composants, le navigateur remplit automatiquement les identifiants et mots de passe des sites Web renseignés dans la base de données, comme la majorité des gestionnaires de mots de passe.

Installation de l’application hôte

On peut installer l’application hôte de plusieurs façons. Ils proposent de télécharger un script shell depuis la rubrique « /Releases/ » de la page GitHub et l’exécuter. Ce script télécharge et installe l’application hôte.

Une autre alternative est de télécharger tous les fichiers localement puis d’exécuter le même script shell avec l’option --local.

Dans tous les cas, les droits root ne sont pas nécessaires pour installer l’application hôte.

Installation de l’extension Firefox

Pour l’extension Firefox, il suffit de se rendre sur la page de l’extension passff sur addons.mozilla.org et de suivre la même procédure que pour installer n’importe quelle autre extension Firefox.

Format des fichiers de mot de passe

Pour que le remplissage automatique fonctionne, il faut modifier ses fichiers de mot de passe existants pour y ajouter quelques métadonnées. Pour cela, taper :

pass edit <nom_du_service>

Ceci déchiffre et ouvre le fichier de mot de passe dans un éditeur de texte, avec le mot de passe en première ligne. Modifier ensuite le fichier pour qu’il ait la forme suivante :

<mot de passe>
URL: https://*.example.com/* (à adapter selon les URL des pages de connexion)
Username: votre_identifiant

Sauvegardez et quittez. Si vous vous rendez sur la page de connexion du service, le formulaire n’est pas automatiquement rempli mais si vous cliquez sur l’icône en forme de « p » dans la barre d’outils de Firefox, passff vous proposera de remplir le formulaire avec les informations que vous avez stockées dans pass.

Remplissage automatique des champs

Par défaut, passff ne remplit pas automatiquement les champs des formulaires de connexion. Si vous voulez activer ce comportement, il vous faut aller dans les préférences de l’extension.

Notez cependant que vous n’êtes jamais complètement à l’abri du risque de fuite de vos mots de passe si vous activez cette fonction : certaines attaques visant des gestionnaires de mots de passe exploitent justement la fonction de remplissage et d’envoi automatique d’identifiants. Ce genre de fonctions est donc à activer à vos risques et périls.

Conclusion

Je n’ai donné qu’un aperçu très superficiel des fonctionnalités de pass ; néanmoins, l’outil est suffisamment souple pour permettre des usages avancés que je ne détaillerai pas dans ce billet.

En tout cas, mon passage à un gestionnaire de mots de passe apporte un confort certain. Je profite la plupart des temps de l’occasion de me connecter à un service que je n’ai pas encore converti à pass pour le faire.

L’usage d’un gestionnaire de mots de passe peut pousser certains sites Web dans ses retranchements. Hormis les problèmes que j’ai détaillés ci-dessus, j’ai aussi eu droit aux sites qui m’interdisaient le copier-coller dans le champ « Confirmer le mot de passe ». D’autres sites interdisent carrément le copier-coller d’identifiants sur leurs pages de connexion (une très mauvaise idée). Néanmoins, l’idée de pouvoir utiliser des mots de passe extrêmement complexes sans avoir besoin de s’en souvenir me plaît beaucoup et, dans le cas de pass, il me semble tout à fait faisable de sécuriser davantage ses secrets en investissant dans une YubiKey ou une authentification par carte à puce.

Posté par x0r à 0 commentaire • Tags : linux pass gpg sécurité password

Utiliser une imprimante Canon Pixma TR8550 sous Linux

Suite à la mort inopinée de ma précédente imprimante, une HP OfficeJet 6700 Premium qui m’avait inspiré, il y a longtemps, à écrire un billet de blog coup de gueule à propos des pilotes d’imprimante, j’ai été obligé de racheter en catastrophe une nouvelle imprimante multifonction.

Canon Pixma TR8550
Mon imprimante Canon Pixma TR8550.

J’ai jeté mon dévolu sur une Canon Pixma TR8550, qui est une imprimante plutôt compacte et adaptée à mon usage : des impressions occasionnelles de documents, mais surtout beaucoup de scans.

Puisque faire fonctionner cette machine sous Linux était un peu plus compliqué que prévu, je vous propose donc ce petit retour d’expérience, dans lequel je décris ce qu’il a fallu que je fasse pour profiter pleinement de cette imprimante sous Gentoo.

Installer le pilote d’impression, cnijfilter

Il s’agit malheureusement d’un de ces appareils qui nécessite la compilation et l’installation, depuis les sources, de son pilote, qui est de plus fourni avec une collection de bibliothèques sous forme de « blob » binaire. Bref, donc pour ceux qui abhorrent l’idée de faire tourner des logiciels propriétaires sur leur poste libre, cette imprimante n’est pas pour vous.

Sous Gentoo, le pilote est heureusement déjà disponible dans l’arbre Portage. Pour l’installer, il suffit en théorie de taper :

# emerge cnijfilter2

Sauf qu’au jour où j’écris ces lignes, la version de cnijfilter2 dans l’arbre Portage est trop ancienne : il faut la version 5.50 alors que Portage propose la version 5.40. Cependant, un ebuild à jour a déjà été soumis à Gentoo, donc il suffit en théorie de le télécharger et l’installer :

# mkdir -p /usr/local/portage/net-print
# cd /usr/local/portage/net-print
# cp -r /usr/portage/net-print/cnijfilter2 .
# cd cnijfilter2

Placez ensuite le fichier cnijfilter2-5.50.ebuild que vous avez préalablement téléchargé dans /usr/portage/net-print/cnijfilter2. Puis tapez la commande :

# ebuild cnijfilter2-5.50.ebuild manifest

Ajoutez dans votre /etc/portage/package.keywords la ligne suivante :

net-print/cnijfilter2

Enfin, ajoutez /usr/local/portage à votre PORTDIR_OVERLAY si ce n’est pas déjà le cas. Vous pourrez alors installer le pilote avec :

# emerge cnijfilter2

Ajout de l’imprimante dans CUPS

Pour ajouter l’imprimante dans CUPS, c’est heureusement plus facile. Il suffit de visiter l’URL http://localhost:631. Dans l’onglet « Administration », cliquez sur « Add printer » ; si l’imprimante est allumée, elle devrait alors immédiatement apparaître dans la section « Discovered network printers ».

Lorsque CUPS demande le pilote à utiliser, il faudra choisir le pilote « Canon TR8500 series Ver.5.50 » (ils n’ont pas fait de fichier PPD pour le modèle exact, ce qui est étonnant). Le reste est suffisamment simple et pour ma part, la page de test est sortie du premier coup.

Pour scanner, ça se complique

En revanche, ce qui m’a donné de loin le plus de fil à retordre était la partie scanner. Pour l’utiliser, Il faut passer par l’utilitaire propre à Canon, baptisée « ScanGear MP » ; je n’ai pas réussi à faire fonctionner SANE.

La principale raison est qu’un bug s’est glissé dans ScanGear. Après avoir pas mal lutté pour l’installer sur ma machine, j’ai voulu scanner une page de test. Las ! l’outil segfaulte juste après avoir sélectionné l’emplacement lequel écrire le PDF.

Il s’avérait donc que c’était tout simplement la faute d’un pointeur non initialisé à NULL avant sa première utilisation. Il m’a fallu corriger ce petit bug avant que ça marche.

Pour le reste, j’ai écrit un ebuild, que j’ai soumis à Gentoo. Il m’a fallu environ une soirée pour le mettre au point, et une petite heure de plus pour le mettre au propre. Mais un jour, peut-être, vous pourrez installer l’utilitaire de scan avec la commande emerge scangearmp2.

Pour le reste, rien de vraiment folichon : l’outil se lance avec la commande scangearmp2, propose quelques réglages élémentaires et un bouton pour scanner. La résolution du scan est fixée ; à combien, je l’ignore, mais elle est égale ou supérieure à 300 ppp, ce qui suffit largement pour mon utilisation.

Capture d’écran de ScanGear MP
La fenêtre principale de ScanGear MP.

Conclusion

Je peux m’estimer heureux que le bug de ScanGear se résumait à un simple pointeur non initialisé, parce qu’en activant les avertissements de compilation (-Wall), le résultat fait un peu peur.

Quoi qu’il en soit, je me suis rapproché du service client de Canon, et je leur ai transmis le patch en leur expliquant le problème que j’ai corrigé. J’espère donc que ce correctif finisse par être intégré officiellement.

Bien que je trouve légèrement frustrante la nécessité d’installer des logiciels propriétaires de Canon, je saurai m’en accommoder si cette imprimante s’avère être fiable. On verra bien dans combien de temps il me faudra la changer, mais en attendant, croisons les doigts.

Posté par x0r à 5 commentaires • Tags : linux canon retour expérience pixma imprimante scanner

Elektronika MK-52 et MK-61 : deux curieuses calculatrices de l'ère soviétique

Dans ce billet, je propose de vous montrer une addition récente et inhabituelle à ma collection de calculatrices : les Elektronika MK-52 et MK-61, remontant à l’époque de l’URSS des années 1980.

(Figure)
Deux curiosités de l’ère soviétique.

Ce sont des calculatrices fascinantes puisque malgré leurs limitations, il était possible d’exploiter une pléthore de fonctions non documentées grâce à une multitude de bugs et de choix techniques étranges de la part des concepteurs. Il était en effet possible de fabriquer des programmes optimisés à l’aide d’une technique plus communément appelée « programmation synthétique » et d’effectuer des calculs sur des messages d’erreur, entraînant des effets de bord intéressants, entre autres choses. J’en donnerai un aperçu dans ce billet ainsi que des liens vers des pages approfondissant le sujet.

Tour d’horizon

Les MK-52 et MK-61 sont similaires en fonctionnalités et en capacités : il s’agit de calculatrices scientifiques programmables, dotées d’une mémoire (volatile) pour 105 pas de programme et 15 registres. La MK-52 ajoute à cela la possibilité de sauvegarder des données dans une mémoire EEPROM et la prise en charge de modules ROM enfichables.

Les deux modèles ont été introduits presque simultanément, entre 1983 et 1985. Pourtant, à l’aune de leur afficheur fluorescent et de leur taille relativement imposante, on serait plutôt tenté de les comparer avec des calculatrices des années 1970.

La MK-61 est alimentée avec quatre piles LR6 et la MK-52 avec trois ; il était également possible de les alimenter à l’aide du bloc d’alimentation fourni. Cependant, il ne faut jamais utiliser ces machines sur secteur sans y avoir mis des piles ; c’est un détail que m’a aussi rappelé le vendeur de ces deux machines sur eBay.

(Figure)
Elektronika MK-61 avec ses accessoires

La MK-61, tout d’abord, est une calculatrice de poche qui est un descendant direct de la vénérable Elektronika B3-34, elle aussi programmable. Elle hérite par ailleurs d’une architecture matérielle similaire, si bien que les techniques diverses et variées que j’exposerai dans ce billet fonctionnent parfois aussi avec cet ancien modèle.

Sa taille est à peu près équivalente à celle d’une HP-41C à laquelle on aurait ajouté un lecteur de bandes. En revanche, le confort d’utilisation n’est guère au rendez-vous. Ce confort spartiate se ressent dans la façon dont elle tient dans la main, mais le clavier est particulièrement horrible. Sur mon exemplaire, les touches n’ont aucune course : il suffit de les effleurer du doigt pour les actionner et il arrive parfois de les déclencher deux fois en n’appuyant qu’une seule fois dessus, comme si elles souffraient de rebond. L’ensemble paraît assez fragile.

Cela dit, il se peut que la qualité de construction soit très variable en fonction de l’usine qui l’a fabriqué. Je n’en ai qu’une seule dans ma collection, donc je me garderai de généraliser. J’ai aussi pu lire que la qualité de fabrication est allé en décroissant au fil du temps et notamment après la chute de l’URSS. Mon exemplaire a été fabriqué en décembre 1992, donc c’est peut-être une explication.

Le prix de vente de l’époque est censé être gravé à l’arrière du boîtier : 85 roubles. Mon exemplaire est dépourvu de prix, cependant. Il est par ailleurs assez difficile de calculer un équivalent en euros d’aujourd’hui puisque les données d’inflation du rouble soviétique, devenu rouble russe après la dissolution de l’URSS, ne remontent pas plus loin que 1991.

(Figure)
Elektronika MK-52 avec ses accessoires.

La MK-52 était vendue 115 roubles. Contrairement à la MK-61, celle-ci adopte une disposition au format « paysage » (horizontal). On serait tenté de la manipuler en la tenant à deux mains comme s’il s’agissait d’une HP-15C ou d’une autre calculatrice du même acabit. Avec celle-ci, c’est fort peu pratique : puisqu’elle fait environ 20 cm de large et entre 1 et 3 cm d’épaisseur, aucune touche du clavier n’est accessible avec le pouce gauche si on la tient ainsi. Ce qui la destine plutôt à un usage sur un bureau.

En tout cas, sur mon exemplaire, le clavier est bien plus agréable que la MK-61. Elle est dotée de deux touches supplémentaires par rapport à cette dernière : la touche A↑ sert à charger un couple adresse-taille pour une opération d’effacement, de lecture ou d’écriture de l’EEPROM (sélectionnée par un interrupteur sous l’afficheur) et la touche ↑↓ effectue ladite opération.

Dans la boîte

Outre la machine elle-même, un mode d’emploi (en deux tomes pour la MK-52) et un adaptateur secteur, les deux calculatrices sont également livrées avec leur schéma électrique. C’est inhabituel pour nous, mais apparemment monnaie courante en URSS à l’époque.

La documentation est (évidemment) en langue russe. Il s’agit de manuels entièrement dactylographiés. Mais l’habit ne fait pas le moine : bien que donnant une piètre apparence, la documentation semble très complète et rédigée avec soin.

Le mode d’emploi comporte entre autres un tableau qui donne, pour chaque fonction transcendante (trigonométriques, exponentielles, puissance…) la précision de celle-ci. Par exemple, les fonctions trigonométriques ont une précision de 10−7. On peut le vérifier en pratique en faisant un petit test, en calculant

Sur les deux machines, on obtient le nombre 9,088 145 4. Ce résultat, qui est correct avec une précision de 10−2, traduit donc bien une précision de l’ordre de 10−7, ce qui est tout à fait honorable.

Par ailleurs, la MK-61 telle que je l’ai reçue était également dotée d’une version imprimée d’une traduction du mode d’emploi en anglais contribuée par Jose Mesquita. Une bonne chose, parce que je comprends pas le russe. J’ai également reçu un « overlay » en caractères latins pour le clavier de celui-ci, qui reprend les noms des fonctions équivalentes des calculatrices HP (comme SST, BST…).

(Figure)
Ces deux éléments sont indispensables pour les non-russophones. Même si j’arrive à déchiffrer le cyrillique, l’« overlay » reste pratique.

Premiers pas

Sur les Elektronika MK-61 et MK-52, les calculs sont saisis en notation polonaise inverse, en séparant chaque nombre par un appui sur la touche marquée « V↑ » (en cyrillique : В↑).

Il s’agit du même système que celui qu’on trouve sur des calculatrices HP : quatre registres forment la pile opérationnelle (X, Y, Z et T) et à chaque calcul, l’ancienne valeur du registre X est sauvegardée dans un registre nommé X1 qui fonctionne de la même manière que le registre « LASTx » sur une HP.

Ce qui est plus étonnant, en revanche, c’est que la documentation n’évoque nulle part la notion de notation polonaise inverse.

Pour les lecteurs curieux des fonctions des autres touches, je vous renvoie vers le tableau des fonctions du MK-61 sur thimet.de.

Sans garde-fous

La famille de fonctions la plus bizarrement mise en œuvre est celle des opérations booléennes (ou bit-à-bit) sur un nombre. Elles n’existaient pas sur leur prédécesseur, la B3-34, et je me demande bien comment diable elles ont pu faire leur apparition sur celles-ci.

Ce ne sont pas des opérations triviales à ajouter sur une calculatrice. On y représente en général les nombres en BCD (Binary Coded Decimal ou décimal codé binaire) en interne, une forme qui rend leur affichage plus aisé.

Donc pour faire fonctionner ce type d’opérations correctement sur une calculatrice, il faudrait d’abord convertir les deux opérandes en entiers en représentation binaire naturelle, effectuer l’opération demandée, puis convertir le résultat en décimal codé binaire pour l’affichage.

Il n’en est rien sur les Elektronika MK-61 et MK-52 : sur ces deux machines, les opérateurs booléens agissent en effet directement sur les représentations en décimal codé binaire des deux nombres. Ce qui signifie donc qu’il est possible de fabriquer des « nombres » BCD avec des « chiffres » allant de A16 (10) à F16 (15), qui ne sont normalement pas admis dans une forme décimale codée binaire.

Le manuel précise toutefois que pour utiliser ces fonctions, il faut préfixer chaque opérande par un chiffre non nul, qui ne sera pas pris en compte par la calculatrice. Prenons un exemple : si on veut calculer

alors il faut entrer les deux nombres comme 14878 et 18286. Le résultat s’affiche alors sous la forme 8,C− E

La calculatrice affiche aussi les chiffres A16 à E16 de sa propre manière : respectivement -, L, C, Г, E. Le chiffre F16, quant à lui, est représenté sous la forme d’un blanc. Ceci pour plusieurs raisons, dont celui de pouvoir afficher le message « Error ».

L’autre indice qui montre que cette fonction a été ajoutée à la va-vite et sans chercher à remettre en cause l’architecture interne de la calculatrice, c’est que les résultats de ces opérations sont placées dans la partie fractionnaire d’un nombre. Apparemment, le quartet F16 est utilisé comme une sorte de sentinelle pour certaines opérations. Puisque jusqu’alors, toutes les opérations supposent que les opérandes ont au moins un chiffre (fût-ce 0), il serait potentiellement dangereux de laisser à l’utilisateur la possibilité de fabriquer un « nombre » qui commencerait par le quartet F16. Les concepteurs de ces calculatrices ont donc préféré mettre le résultat d’une opération booléenne dans un nombre qui commence par autre chose que la sentinelle.

On peut continuer à faire des opérations sur ces nombres sans risquer de « planter » la calculatrice, mais les résultats trahissent le fait qu’elle ne sache pas officiellement faire des calculs dans des bases autres que 10.  Par exemple, ajouter zéro au nombre 8,CAFE donne 9,3164. Pourquoi ? Parce que pour une addition en BCD, il suffit d’additionner (avec retenue) les valeurs numériques de chaque quartet, puis de réajuster chaque quartet de valeur numérique strictement supérieure à 9 pour qu’ils soient tous compris entre 0 et 9. Et c’est exactement ce qui s’est passé ici.

Yéggogologie

En cas d’opération non valable (division par zéro, logarithme ou racine carrée d’un nombre négatif) ou en cas de dépassement de capacité (i.e. lorsqu’un résultat dépasse 10100), la calculatrice s’efforce tout de même d’afficher « Error » sur son afficheur.

Du moins, c’était l’intention. En pratique, beaucoup de gens voyaient ce message comme le mot ЕГГОГ (yéggog) exprimé en cyrillique, qui n’a aucune signification en russe.

(Figure)
« Error » ou « ЕГГОГ » ?

Cependant, même le traitement d’erreurs est dépourvu de garde-fous. Par exemple, il est possible de faire des opérations sur les messages d’erreur provoqués par un dépassement de capacité comme s’il s’agissaient de nombres normaux.

En guise de démonstration, effectuons le calcul

En utilisant la séquence de frappe 1 VP 50 F x2, on obtient « Error ». Mais on peut poursuivre le calcul en frappant : 1 VP 99 + 10 ÷. Et là, comme par magie, apparaît le résultat 1,1 × 1099.

Ainsi, la calculatrice donne en réalité accès à des nombres jusqu’à ±9,9999999 × 10199, mais en refusant d’afficher les nombres dont l’exposant est trop grand. Il suffit alors de les diviser par un nombre suffisamment grand pour obtenir la mantisse et en déduire l’exposant.

On peut également continuer dans la plage de 10200 à 10299, auquel cas le ЕГГОГ se transforme mystérieusement en ЗГГОГ (« zggog ») sans autre effet de bord.

À partir de 10300 en revanche, la calculatrice commence à faire des choses bizarres, comme tenter d’exécuter le programme en mémoire au lieu d’afficher le nombre (en corrompant une ou deux instructions du programme au passage), corrompre le registre C et d’autres choses encore.

De nombreuses personnes se sont lancés, à l’époque, dans un grand effort d’exploration de ces effets de bord étranges dûs à des bugs, de recherche de fonctions non documentées et de techniques diverses d’optimisation de programmes sur cette génération de calculatrices. La discipline, baptisée « yéggogologie » (en russe : еггогология, yeggogologiya) par ses adeptes, faisait même l’objet d’une rubrique récurrente dans le magazine Nauka i Zhizn (Science et Vie).

Il était également possible de s’adonner à la programmation dite « synthétique » sur ces machines : une certaine manipulation de touches amenait la calculatrice dans un mode bizarre où il était possible d’écraser certaines positions dans son programme avec des instructions fabriquées à la main, de manière analogue à ce qui a été fait sur la HP-41C.

Conclusion

Il est difficile de rendre justice à ces calculatrices soviétiques avec seulement un billet de blog. Les bugs, les effets de bord étranges et les fonctions non documentées sont pourtant une des raisons de l’attrait que suscitent ces étranges machines.

C’est pourquoi j’invite les lecteurs curieux à jeter un œil aux liens ci-dessous s’ils souhaitent en savoir davantage et approfondir le sujet. Certains de ces liens sont des liens vers web.archive.org, puisque certaines pages ont malheureusement disparu entre temps.

Cela dit, on retrouve encore de nombreux exemplaires de ces calculatrices d’occasion, provenant pour la grande partie de pays de l’ancien bloc soviétique. Cela étant, le fait que ces calculatrices fonctionnent encore après tout ce temps est déjà impressionnant en soi.

Par ailleurs, les Elektronika MK-61 et MK-52 ont laissé un héritage sous la forme des Elektronika MK-161 et MK-152. Il est donc possible, aujourd’hui encore, de faire fonctionner les nombreux programmes et jeux qui avaient été écrits pour les modèles les plus anciens, y compris le vénérable B3-34.

Pour en savoir plus

Posté par x0r à 0 commentaire • Tags : rpn calculatrice elektronika mk-52 mk-61

Avant-première de la SwissMicros DM42

Remarque importante : ce billet porte sur un prototype en préproduction. Certains détails aussi bien d’ordre logiciel que matériel pourraient changer lorsque celui-ci sera commercialisé pour de vrai. La qualité de construction sera très probablement meilleure que sur l’exemplaire que j’ai testé. Le firmware est également amené à évoluer rapidement ; je la teste ici avec la version 2.10.17 du micrologiciel.

Mise à jour du 1er janvier 2018 : cette calculatrice est désormais disponible à la vente sur le site de SwissMicros. Le firmware a considérablement changé entretemps.

Dans mon premier billet portant sur les calculatrices vintage de Hewlett-Packard, certains d’entre vous déploraient la baisse de la qualité de construction des HP qui sont fabriquées après les années 1980 ou 1990.

Heureusement, une entreprise suisse nommée SwissMicros propose des clones de certaines des calculatrices HP des années 1980 qui ont marqué le plus les esprits ; nul besoin, donc, de trouver un modèle d’occasion pour s’essayer à la notation polonaise inverse.

SwissMicros est actuellement en train de mettre au point la DM42 qui, comme son nom l’indique, est une réinterprétation de la très fameuse et convoitée HP-42S. Moyennant la modique somme de 149 CHF (environ 140 €), j’ai pu mettre la main sur un des quatre-vingts modèles de préproduction. Je l’ai utilisé régulièrement depuis plus de deux mois. Le projet, très ambitieux et se voulant aller largement au-delà du simple clone, est déjà très abouti.

SwissMicros DM42
La SwissMicros DM42 et la sacoche fournie.

Je vous propose donc un petit tour d’horizon de la SwissMicros DM42. Je commencerai par un bref historique de la HP-42S, puis je passerai en revue les similitudes et les différences entre la DM42 et la HP-42S tout en mettant l’accent sur les nouveautés qu’apporte la DM42.

La HP-42S et ses origines : la HP-41C

La HP-42S est une machine assez particulière, en partie puisqu’elle devait reprendre le flambeau de son prédécesseur, la série des HP-41C (bien que HP l’ait seulement vendue comme un successeur de la HP-15C).

Cette ancienne série, introduite en 1979, se voulait être plus qu’une simple calculatrice scientifique programmable (ce qui était déjà pas mal pour l’époque) : le manuel parlait même d’un « système informatique personnel » plutôt que d’un « calculateur ».

HP-41CV
Une HP-41CV avec sa sacoche. La série HP-41C était la seule à être dotée d’un afficheur à 14 segments.

La HP-41C disposait de connecteurs à l’avant pour y relier moult modules et autres accessoires : extensions de mémoire, bibliothèques de fonctions supplémentaires, crayons optiques pour lire des code barres, imprimantes thermiques, voire même des instruments de mesure de laboratoire…

Son affichage alphanumérique était un autre aspect « révolutionnaire » parmi les calculatrices HP : la programmation était plus confortable, on pouvait nommer ses programmes et la calculatrice offrait en outre une série de fonctions de manipulation de chaînes de caractères.

Enfin, la HP-41C disposait de plus de fonctions qu’il n’était possible d’en mettre sur le clavier. Pour pallier à cela, on pouvait redéfinir les touches du clavier pour exécuter d’autres fonctions internes ou même des programmes utilisateur ; la touche USER permet de basculer entre le clavier « de base » et le clavier ainsi redéfini. On peut aussi utiliser la touche « XEQ » (pour execute, exécuter) pour taper en toutes lettres le nom de la fonction ou du programme qu’on souhaitait activer. Ainsi, pour jouer un bip, il fallait taper « XEQ ALPHA T O N E ALPHA » pour exécuter la fonction TONE.

La HP-41C a connu deux autres modèles apparentés : la HP-41CV (à lire comme « C cinq » et non pas « cévé »), intégrant l’équivalent de quatre extensions de mémoire, et la HP-41CX (« C dix »), intégrant en outre un module de temps avec une horloge temps réel et des fonctions de calcul sur les dates.

Onze ans plus tard, il était temps de remplacer ce modèle : le CPU commençait à faire pâle figure par rapport à ce qui se faisait et il en allait de même pour la capacité de sa mémoire.

HP a donc introduit la HP-42S en 1988 et l’a commercialisée jusqu’en 1995. La HP-42S est plus rapide, dispose de 8 kilooctets de mémoire (ce qui offrait nettement plus de place pour des programmes) et possède un afficheur LCD matriciel de 132 × 16 pixels (2 lignes de 22 caractères). Elle savait faire les mêmes choses que la HP-41C ; elle était même conçue pour être compatible avec les nombreux programmes écrits pour celle-ci (à l’exception des fonctions exclusives à la HP-41CX).

Les fonctions absentes du clavier de la HP-42S sont cette fois accessibles par des menus et les choix sont faits par les six touches de la rangée supérieure si un menu est ouvert. Le clavier n’est donc plus redéfinissable, mais la HP-42S propose à la place un menu redéfinissable. On gagne en confort, mais le gain en efficacité est discutable : parmi les plus de 600 fonctions, il faut s’y retrouver !

La HP-42S a abandonné le système de modules (à tort ou à raison, là aussi ça se discute) pour ne garder que la possibilité d’imprimer par infrarouge sur une imprimante thermique HP-82240A ou B. Mais en échange, on découvre une machine tout à fait polyvalente, dotée d’un solveur d’équations, d’une intégration numérique, de possibilités sommaires de dessin (évidemment exploitées par les jeux), de calcul matriciel et de calcul dans C. Le calcul formel est laissé à des machines plus sophistiquées comme la HP-28S, de la même époque.

Un hommage à la HP-42S

Jusqu’à maintenant, la seule manière d’avoir une HP-42S dans sa poche sans acheter un modèle d’occasion hors de prix était d’installer l’émulateur Free42 sur son appareil mobile préféré. Sa version Palm OS était d’ailleurs la raison pour laquelle j’ai fini par craquer pour une HP 50g pendant mes études.

Cet émulateur est le fruit d’un travail de rétroingénierie méticuleux et ne contient aucune propriété intellectuelle de HP. Néanmoins, c’est un logiciel libre (sous licence GPL) et est réputé pour être d’une fidélité très proche de la HP-42S d’origine. Il ne restait donc plus qu’à la mettre dans une vraie calculatrice ; c’est désormais chose faite avec la SwissMicros DM42.

Ma première impression est que la DM42 a tout d’un hommage à la HP-42S. Tout d’abord, elle reprend la même présentation sobre de la HP. Elle est fournie avec une housse de conception similaire à la HP, quoique très serrée (cela semble s’arranger un peu avec le temps).

Les touches du clavier reprennent la forme biseautée qu’on retrouvait sur les calculatrices HP plus anciennes, au lieu de la forme ronde des touches de la HP-42S ou d’autres de la série Pioneer. Le ressenti est donc plutôt agréable quoiqu’un peu inégal, puisque certaines touches nécessitent davantage de force que d’autres pour être enclenchées. Cela est dû au procédé de fabrication du clavier : l’arrière des touches en plastique est dotée d’un petit ergot qui s’enfonce dans un trou de la même taille dans le dôme correspondant du circuit imprimé. Cela nécessite un alignement très difficile qui n’admet presque aucune marge d’erreur. Le marquage sur les touches paraît un peu plus brouillon puisque les symboles mathé­matiques semblent mal s’intégrer avec la police de caractères utilisée pour les inscriptions.

En outre, la plaque de plastique sur laquelle sont imprimées les légendes a tendance à se décoller, mais il s’agit là d’un problème connu et commun à de nombreux autres exemplaires de préproduction et pour lequel SwissMicros a promis un correctif.

Le boîtier, de même longueur et largeur que la HP-42S mais plus fin que celui-ci, est en aluminium et donne l’impression d’être plus solide que la HP-42S.

SwissMicros DM42
La SwissMicros DM42 est plutôt fine par rapport à la HP-42S.

Heureusement, la DM42 est conçue pour être facile à démonter. Il suffit de déposer les quatre vis cruciformes à l’arrière pour avoir accès à ses entrailles (et à la pile). J’ai pu désassembler entièrement la calculatrice en seulement cinq à dix minutes, moyennant un peu de doigté.

Globalement, le prototype de DM42 que j’ai entre les mains est plutôt de bonne facture, malgré quelques défauts çà et là qui seront j’espère résolus une fois les premiers modèles de série commercialisés. SwissMicros a d’ailleurs fait de nombreuses révisions matérielles sur ses autres calculatrices, ce qui prouve à mes yeux qu’ils prennent la qualité matérielle au sérieux.

Une HP-42S du XXIe siècle

Qualifier la DM42 de « clone » ne saurait lui rendre justice, car l’objet se permet quelques ajouts par rapport à la HP-42S, et pas des moindres.

HP-42S et DM42 côte à côte
Vingt-sept ans d’écart : à gauche, une HP-42S de 1990 et à droite, une SwissMicros DM42 de préproduction.

L’affichage

On remarque d’abord que l’écran est beaucoup plus grand que celui de la HP-42S ; sa résolution est en effet portée à 400 × 240 pixels comparés aux 132 × 16 de sa consœur. L’affichage est réalisé par un module LCD de Sharp de 2,7 pouces. Cet afficheur LCD a un excellent contraste ; on dirait presque un module « e-ink ». Il est en outre capable de conserver un affichage constant moyennant seulement quelques microampères. D’où une possibilité d’afficher l’image de son choix en plein écran alors que la calculatrice est éteinte.

Lorsque la calculatrice est allumée, l’écran se divise en deux régions : en bas, on a le même affichage qu’une HP-42S, de deux lignes de 22 caractères. En haut, on voit les quatre registres formant la pile (X, Y, Z et T) et le registre L (pour « Last X ») changer en temps réel au gré des appuis sur les touches. Enfin, tout en haut, on a un affichage de la date, de l’heure et un indicateur de charge de la pile.

Capture d’écran
Affichage de la DM42.

Un clavier amélioré

Le clavier de la DM42 a quant à lui gagné une rangée de touches juste sous l’écran, ce qui est plus que bienvenu lorsqu’on sait comment les menus fonctionnent sur la HP-42S. Lorsqu’on active un menu (comme sur cette capture d’écran, le menu « BASE »), l’affichage change pour afficher seulement le registre X et le menu concerné.

Capture d’écran
Exemple de menu sur la HP-42S et la DM42.

Pour sélectionner un élément du menu, il faut appuyer sur la touche immédiatement en-dessous. Ainsi, pour sélectionner « OCTM » sur la HP-42S, il faut appuyer sur la touche « LOG », qui perd alors sa fonction de base pour devenir une touche de sélection. Sur la DM42, il faut appuyer sur la quatrième touche de la rangée supplémentaire, qui est de ce fait uniquement dédiée aux sélections dans le menu ; la touche « LOG » conserve sa fonction normale, qu’un menu soit ouvert ou non.

C’est là un changement d’ergonomie plutôt bienvenu, d’autant plus en mode programmation où on a souvent besoin des fonctions GTO (saut inconditionnel) ou XEQ (exécution d’un sous-programme) et où il est fort désagréable de devoir sortir du menu avant de retrouver l’accès à ces touches.

La deuxième différence entre les clavier de la DM42 et de la HP-42S est dans la fonction shiftée sur la touche 0. Sur la HP-42S, cela ouvrait le menu « TOP.FCN » reprenant les fonctions de la première rangée du clavier. En revanche, sur la DM42, c’est le menu « SETUP » qui est activé, donnant accès aux paramètres système propres à la machine de SwissMicros.

SwissMicros DM42
La fonction « shiftée » de la touche 0 est différente sur la DM42. La calculatrice de SwissMicros ajoute aussi une lettre à droite de chaque touche.

Un mode ALPHA amélioré

Une autre différence majeure entre les deux machines réside dans le fonctionnement du mode « ALPHA », utilisé pour la saisie de chaînes de caractères, de noms de programmes ou de noms de variables.

Sur la HP-42S, activer le mode « ALPHA » ouvre un menu à deux niveaux : le premier niveau est « ABCDE », « FGHI », « JKLM », « NOPQ », « RSTUV », « WXYZ ». Sélectionner un de ces éléments donne ensuite accès au sous-menu proposant chaque lettre. Les autres touches, comme les chiffres, insèrent le symbole en accès direct. Par conséquent, chaque caractère alphabétique demandait deux pressions de touches, ce qui devient vite frustrant et fastidieux.

La DM42, en revanche, améliore le mode ALPHA de la HP-42S en proposant des lettres en accès direct sur le clavier. Les firmwares plus anciens fonctionnent différemment, mais ce que j’explique ci-après semble être la mise en œuvre définitive de ce qu’on pourrait appeler le « nouveau mode ALPHA ».

Cela se matérialise par l’apparition d’un nouvel indicateur, ayant la forme de deux crochets [ ], lorsque le mode ALPHA est activé. Par défaut, la DM42 adopte le même comportement que la HP-42S : taper des chiffres ou des symboles les insèrent directement et les lettres sont saisies à l’aide des menus. Mais en tapant SHIFT puis la flèche vers le haut, l’indicateur devient « [A] » ; ainsi, frapper une lettre insère la lettre majuscule correspondante. Par exemple, un appui sur « COS » insère directement un K. Avec un autre appui sur SHIFT puis flèche haut, l’indicateur devient « [a] » ; on tape alors en minuscules. Les trois modes sont cycliques, et on peut aussi utiliser SHIFT puis flèche bas pour changer de mode de saisie dans l’ordre inverse.

Captures d’écran
Les trois états du mode « ALPHA » de la DM42 : mode HP-42S, direct majuscules et direct minuscules. Adieu les deux frappes de touches par lettre !

Je regrette juste qu’on ne puisse pas utiliser la touche SHIFT en mode « direct majuscules » pour taper la prochaine lettre en minuscule, ou vice-versa. Mais comme je le disais, au moment où j’écris ces lignes, ce mode de saisie est encore en train d’être développé et certains détails seront sûrement amenés à changer.

Une connectivité USB

Ensuite, sur la tranche supérieure, la DM42 est dotée du port infrarouge déjà présent sur la HP-42S pour imprimer (et qui fonctionne !) et y ajoute un connecteur micro-USB type B. Ce port USB sert à plusieurs choses :

  • tout d’abord, à alimenter la calculatrice (sans la recharger cependant, puisqu’elle est alimentée par une pile CR2032) ;
  • ensuite, l’horloge du CPU passe de 24 à 80 MHz lorsqu’elle est alimentée en USB, ce qui rend les programmes encore plus rapides qu’elles ne l’étaient déjà ;
  • ensuite, à transférer des fichiers entre un ordinateur et la calculatrice à l’aide d’un système de fichiers FAT32 monté en mode « stockage de masse USB », comme s’il s’agissait d’une clef USB ;
  • enfin, à installer des mises à jour du micrologiciel, régulièrement annoncées sur le forum et proposés au téléchargement sur le site de SwissMicros.

SwissMicros DM42
Tranche supérieure de la SwissMicros DM42.

La capacité de stockage de la calculatrice exposée à l’utilisateur est d’environ 6 Mo. Dit comme ça, ça semble peu, mais d’un autre côté, les programmes sont minuscules et il est improbable de saturer le stockage de cette calculatrice en usage normal. En tout cas, ce système a l’avantage d’être multiplateformes.

Lorsqu’on branche un câble USB, le mode transfert de fichiers n’est pas automatiquement activé : il faut aller dans le menu « SETUP », sélectionner « File » puis « Activate USB Disk ». C’est une bonne chose pour deux raisons : d’abord parce qu’il n’est pas possible d’utiliser la calculatrice tant que ce mode est actif, ensuite puisque cela permet d’éviter de transformer sa DM42 en vecteur de logiciels malveillants lorsqu’on la branche sur un poste vérolé juste pour l’alimenter par USB.

Les programmes sont transférés sous forme de fichiers .raw. Une fois placés sur la calculatrice, il faut les charger en mémoire à l’aide du menu File > Load Program. Et après, il ne reste plus qu’à le lancer avec la touche « XEQ ». La DM42 est d’ailleurs préchargée avec un ensemble de programmes tirés du site de Thomas Okken, dont des jeux et de quoi transformer la DM42 en calculatrice financière. Il est aussi possible de sauvegarder ses programmes avec File > Save Program.

C’est un système qui permet d’adjoindre assez simplement un mécanisme de stockage en mémoire non volatile à une calculatrice qui en était dépourvue à la base, puisque la HP-42S stockait tout en RAM. Le processus de chargement et de sauvegarde se contente donc de manipuler la RAM de la HP-42S émulée au sein de la DM42. Par conséquent, une réinitialisation totale de la calculatrice (l’équivalent d’un « Memory Clear » sur une HP-42S) n’affecte pas les .raw stockés sur la Flash ; il suffit alors juste de recharger ses programmes via le menu « SETUP ». Il y a donc beaucoup moins de risques de perdre un programme qu’on a passé des heures à mettre au point.

On peut d’ailleurs aussi sauvegarder l’état de la calculatrice en utilisant l’option Save Calculator State du menu File, ce que SwissMicros préconise de faire avant toute mise à jour de micrologiciel pour éviter toute perte de données.

La DM42 propose ainsi une connectivité avec un ordinateur qui manquait cruellement sur la HP-42S, puisque sur cette calculatrice-là, le seul moyen d’y rentrer un programme était de le taper sur la calculatrice…

Une calculatrice personnalisable et « hackable » (dans un futur proche)

Étant donné que le micrologiciel de la DM42 embarque une version modifiée de Free42, et comme Free42 est sous licence GPL, SwissMicros est normalement tenu de distribuer le code source du Free42 ainsi adapté. Ce n’est pas encore le cas au moment où j’écris ce billet, mais SwissMicros compte bien publier le code source de Free42. À terme, on devrait pouvoir générer ses propres micrologiciels pour la DM42 l’aide de la chaîne de compilation adéquate, du code source de Free42 et en « linkant » avec une bibliothèque statique binaire contenant du code propriétaire de SwissMicros (pour les fonctionnalités hors Free42). Cela permettra au moins de modifier Free42, ce qui est déjà très intéressant.

Autre petit détail amusant : si on place des images au format BMP 1 bit (Windows NT) dans le répertoire OFFIMG, la calculatrice en choisit une au hasard pour l’afficher lorsqu’elle est éteinte.

SwissMicros DM42
De gauche à droite : l’image par défaut lorsque la DM42 est éteinte, et deux autres « OFFIMG » téléchargées depuis le forum SwissMicros.

Pour ces raisons, qualifier la DM42 de « clone » ne lui rend pas du tout justice, puisque la dernière-née de SwissMicros parvient à combler les quelques lacunes de la HP-42S.

Conclusion

Nous avons vu que la future DM42 de SwissMicros est au stade de préproduction et que l’exemplaire dont je dispose s’en sort très bien.

Il lui manque seulement une chose, et non des moindres : un mode d’emploi. Une documentation existe déjà, mais elle est très sommaire et ne couvre en détail que le procédé de mise à jour du micrologiciel. Pour vraiment apprendre à s’en servir, il faut impérativement suivre le mode d’emploi de la HP-42S. Sans cela, on passe à côté de tout ce qui rend la HP-42S (et donc la DM42) aussi puissante.

Cela dit, la DM42 vise les fans inconditionnels de la HP-42S et des calculatrices HP de manière générale, donc certains ne verraient pas d’inconvénient particulier à l’absence de mode d’emploi. Malgré tout, et bien qu’il s’agirait d’un travail colossal, j’estime qu’un bon mode d’emploi exhaustif mériterait d’être écrit pour la DM42.

Le public visé est aussi un public qui a déjà passé ses examens (du moins en France), puisqu’une calculatrice comme celle-ci a besoin d’un « mode examen » pour pouvoir être autorisé aux examens en France à partir de la prochaine session de 2018. Elle n’est donc (hélas) pas à mettre entre toutes les mains.

En somme, j’en suis très content et à mes yeux, la DM42 pourrait être un excellent compagnon de bureau.

Liens divers

Posté par x0r à 6 commentaires • Tags : rpn swissmicros dm42 hp-42s calculatrice