Greboca  

Suport technique et veille technologique

DLFP - Dépêches  -  Trois outils pour développeur : MailHog, Tokei et Pandoc

 -  9 avril - 

Dans cette dépêche, je vais vous présenter trois outils que j’utilise de temps en temps et qui pourraient servir à d’autres développeurs :

  • MailHog permet d’attraper des courriels pour les examiner ;
  • Tokei compte les lignes de code d’un projet ;
  • Pandoc est un couteau suisse pour manipuler des fichiers et les transformer d’un langage de balisage à un autre.

MailHog

MailHog (sous licence MIT) permet d’attraper des courriels envoyés par une plate‐forme de développement et de les afficher dans une interface Web. Pour cela, il fournit un serveur SMTP et un remplaçant au binaire sendmail, libre à vous de choisir le moyen qui vous convient le mieux. Il offre également, en option, la possibilité de transférer vers un vrai serveur SMTP les courriels et un outil de type chaos-monkey pour tester les cas d’erreurs d’envoi de courriels.

L’interface Web de MailHog avec trois courriels capturés

Je m’en sers quand je développe sur la partie serveur de Cozy Cloud. Cela permet de tester des fonctionnalités qui nécessitent l’envoi de courriels sans avoir à se compliquer la vie à configurer un vrai serveur d’envoi de courriels. En bonus, on évite de prendre le risque d’envoyer des courriels vers de vrais comptes d’autres personnes et on ne perd pas de temps à attendre que le courriel arrive, en attente d’un traitement anti‐pourriel.


Tokei

Pour estimer la taille d’un projet, le nombre de lignes de code peut être une métrique intéressante. Il existe plusieurs projets pour faire ça, celui que je trouve le plus pratique est Tokei (sous licence Apache ou MIT). Voici ce qu’il affiche pour le dépôt principal de code de LinuxFr.org :

-------------------------------------------------------------------------------
 Language            Files        Lines         Code     Comments       Blanks
-------------------------------------------------------------------------------
 CoffeeScript           10          770          642           31           97
 Dockerfile              1           70           49            4           17
 HTML                   24         2660         2161            4          495
 JavaScript             11         2686         2025          394          267
 Markdown                1          187          187            0            0
 Rakefile                2           33           24            3            6
 Ruby                  262        11593         8338         1500         1755
 Ruby HTML               1           47           46            0            1
 Sass                   47        27317        23467         1583         2267
 Shell                   4           68           50            4           14
 SVG                    41        10886        10865           17            4
 TeX                     1           53           43            0           10
 Plain Text             44          531          531            0            0
 XML                     1           11           11            0            0
 YAML                    4          173          160            4            9
-------------------------------------------------------------------------------
 Total                 454        57085        48599         3544         4942
-------------------------------------------------------------------------------

Par rapport à cloc, Tokei a plusieurs avantages :

  • il est beaucoup plus rapide (0,03 seconde pour Tokei contre 3,2 secondes pour cloc sur le dépôt principal de LinuxFr.org) ;
  • il est plus précis : cloc utilise des expressions rationnelles, alors que Tokei a de vrais analyseurs (en particulier, un début de commentaire dans une chaîne de caractères comme printf("/*") peut bien induire en erreur cloc) ;
  • il ignore par défaut les fichiers listés dans .gitignore (par exemple, quand j’ai lancé cloc sur l’exemple ci‐dessus, il a compté les fichiers dans tmp/cache et j’ai dû le relancer avec des options pour qu’il fasse ce que j’en attendais).

Pandoc

Il existe de nombreux langages de balisage : HTML, Markdown, reStructuredText, textile, DocBook, <img style="display: inline; max-height: 1em;" class="mathjax" src="data:image/svg+xml;base64,PHN2ZyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu%0AayIgc3R5bGU9IndpZHRoOiA1LjE0M2V4OyBoZWlnaHQ6IDIuMTQzZXg7IHZl%0AcnRpY2FsLWFsaWduOiAtMC41NzFleDsgbWFyZ2luLXRvcDogMXB4OyBtYXJn%0AaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRvbTogMXB4OyBtYXJnaW4tbGVm%0AdDogMHB4OyBwb3NpdGlvbjogc3RhdGljOyAiIHZpZXdCb3g9Ii0zIC03MDUu%0ANjc2NTIwODk5NjM0MiAyMTg5LjU3Nzc3NzIxMDkxMyA5NDcuMjExNjQ0MTU0%0ANzg5MyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVm%0AcyBpZD0iTWF0aEpheF9TVkdfZ2x5cGhzIj48cGF0aCBpZD0iU1RJWFdFQk1B%0ASU5JLTRDIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNTU5IDE4MGwtNTggLTE4%0AMGgtNTA5djE2YzU2IDYgNjQgMTUgODIgNzhsMTIyIDQzOGM4IDI3IDExIDQ3%0AIDExIDYyYzAgMjkgLTE1IDM5IC03NyA0M3YxNmgyNzN2LTE2Yy02MCAtNCAt%0AODUgLTIwIC0xMDEgLTc3bC0xMjAgLTQyOWMtNiAtMjMgLTEwIC00MCAtMTAg%0ALTU0YzAgLTMxIDIzIC00MSAxMDUgLTQxYzEwMCAwIDEzMSA1IDE4MCAzOGMz%0AMiAyMSA1NCA1NCA4MiAxMTJaIj48L3BhdGg+PHBhdGggaWQ9IlNUSVhXRUJN%0AQUlOSS00MSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTU2NCAwaC0yNDV2MTZj%0ANjMgMyA3NyAxOSA3NyA1M2MwIDggLTEgMTcgLTIgMjZsLTIwIDEzMWgtMjIw%0AbC01OSAtMTExYy0xNCAtMjYgLTIyIC01MCAtMjIgLTY2YzAgLTE5IDE1IC0z%0AMSA2MiAtMzN2LTE2aC0xODZ2MTZjNDYgOSA1OSAyNiAxMzQgMTU2bDI4NSA0%0AOTZoMjZsOTIgLTU1M2MxNCAtODQgMjUgLTk1IDc4IC05OXYtMTZ6TTM2OSAy%0ANjJsLTQ1IDI2M2wtMTQ5IC0yNjNoMTk0WiI+PC9wYXRoPjxwYXRoIGlkPSJT%0AVElYV0VCTUFJTkktNTQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MzMgNjUz%0AbC00NCAtMTY0bC0xNyAyYzIgMTcgMyAzMyAzIDQ2YzAgNTMgLTM2IDgxIC0x%0AMDEgODFoLTU4bC0xMzcgLTQ5MGMtNiAtMjEgLTE0IC00NCAtMTQgLTY2YzAg%0ALTMxIDEyIC0zOSA1MyAtNDNsMzUgLTN2LTE2aC0yODh2MTZjNjkgNiA5MiAy%0AMSAxMDcgNzVsMTQzIDUyN2MtMTU4IDAgLTE5MCAtMTYgLTIzOCAtMTI0bC0x%0AOCA0bDQyIDE1NWg1MzJaIj48L3BhdGg+PHBhdGggaWQ9IlNUSVhXRUJNQUlO%0ASS00NSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNCA2NTNsLTMxIC0xNTRs%0ALTIyIDJjMiAxNyAzIDMzIDMgNDZjMCA2MCAtMzUgNzMgLTE5MiA3M2MtNTcg%0AMCAtNjcgLTQgLTczIC0yNmwtNjYgLTIzM2g3OGM5MCAwIDEwMSAxMiAxMzkg%0AOTdsMTggLTRsLTY4IC0yMzJsLTIwIDVjNSAyMiA3IDM0IDcgNTJjMCAxNyAt%0AMiAyNiAtNyAzMWMtMTEgMTAgLTM4IDE1IC03OCAxNWgtNzhsLTMyIC0xMTJj%0ALTI1IC04OCAtMzYgLTEzNCAtMzYgLTE0NmMwIC0yNCAyMyAtMzQgNzkgLTM0%0AIGM5OCAwIDE1MiAxMiAyMDMgMzljMzIgMTcgNTYgNDUgOTQgOThsMTYgLThs%0ALTYyIC0xNjJoLTUwN3YxNmM1NiAxMCA2NSAxNiA4MSA3NGwxMjMgNDQyYzYg%0AMjAgMTEgNTIgMTEgNjRjMCAyNyAtMTUgMzUgLTc3IDQxdjE2aDQ5N1oiPjwv%0AcGF0aD48cGF0aCBpZD0iU1RJWFdFQk1BSU5JLTU4IiBzdHJva2Utd2lkdGg9%0AIjEwIiBkPSJNNjU1IDY1M3YtMTZjLTQzIC0xNCAtNzUgLTM3IC0xMjUgLTk1%0AbC0xNjkgLTE5NGwxMDEgLTI1NWMyNCAtNjAgMzcgLTY5IDEwNSAtNzd2LTE2%0AaC0yNzF2MTZjNjAgMSA3NyAxMyA3NyAzN2MwIDEzIC02IDMxIC0xNCA1MWwt%0ANjcgMTY1bC0xNTEgLTE3MmMtMTQgLTE2IC0yMyAtMzQgLTIzIC00OGMwIC0y%0AMiAxOCAtMzMgNjYgLTMzdi0xNmgtMjEzdjE2YzU2IDEwIDgzIDQwIDIyMCAy%0AMDBsODMgOTdsLTEwMyAyNTUgYy0xOSA0OCAtMzcgNjQgLTk1IDY5djE2aDI2%0AM3YtMTZjLTU1IC03IC03MSAtMTYgLTcxIC00MWMwIC0xMyA1IC0yOSAxNiAt%0ANTZsNTkgLTE0N2wxNDUgMTY3YzE0IDE2IDIxIDMxIDIxIDQzYzAgMTkgLTE4%0AIDMyIC02MSAzNHYxNmgyMDdaIj48L3BhdGg+PC9kZWZzPjxnIHN0cm9rZT0i%0AYmxhY2siIGZpbGw9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9y%0AbT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjx1c2UgaHJlZj0iI1NUSVhXRUJN%0AQUlOSS00QyIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS00QyI+PC91c2U+%0APGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjM5LDApIj48dXNlIHRyYW5zZm9y%0AbT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgaHJlZj0iI1NUSVhXRUJN%0AQUlOSS00MSIgeD0iMCIgeT0iMjk2IiB4bGluazpocmVmPSIjU1RJWFdFQk1B%0ASU5JLTQxIj48L3VzZT48L2c+PHVzZSBocmVmPSIjU1RJWFdFQk1BSU5JLTU0%0AIiB4PSI1MDQiIHk9IjAiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNTQi%0APjwvdXNlPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMDIsMCkiPjx1c2Ug%0AaHJlZj0iI1NUSVhXRUJNQUlOSS00NSIgeD0iMCIgeT0iLTIxNiIgeGxpbms6%0AaHJlZj0iI1NUSVhXRUJNQUlOSS00NSI+PC91c2U+PC9nPjx1c2UgaHJlZj0i%0AI1NUSVhXRUJNQUlOSS01OCIgeD0iMTUyNiIgeT0iMCIgeGxpbms6aHJlZj0i%0AI1NUSVhXRUJNQUlOSS01OCI+PC91c2U+PC9nPjwvc3ZnPg==%0A" alt="\LaTeX">, MediaWiki markup, OrgMode, EPUB, etc. Et ces langages ont parfois plusieurs variantes (exemple : CommonMark et GitHub Flavored Markdown pour le Markdown). Bref, ce n’est pas toujours facile de connaître les différents langages et de passer de l’un à l’autre. Pandoc (sous licence GPL v2 ou plus) permet de convertir un texte de la plupart de ces langages vers un autre langage, ou d’autres choses comme du PDF ou de l’OpenDocument.

Je m’en sers, par exemple, pour écrire des présentations en Markdown et en générer une version PDF via la classe Beamer pour <img style="display: inline; max-height: 1em;" class="mathjax" src="data:image/svg+xml;base64,PHN2ZyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu%0AayIgc3R5bGU9IndpZHRoOiA1LjE0M2V4OyBoZWlnaHQ6IDIuMTQzZXg7IHZl%0AcnRpY2FsLWFsaWduOiAtMC41NzFleDsgbWFyZ2luLXRvcDogMXB4OyBtYXJn%0AaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRvbTogMXB4OyBtYXJnaW4tbGVm%0AdDogMHB4OyBwb3NpdGlvbjogc3RhdGljOyAiIHZpZXdCb3g9Ii0zIC03MDUu%0ANjc2NTIwODk5NjM0MiAyMTg5LjU3Nzc3NzIxMDkxMyA5NDcuMjExNjQ0MTU0%0ANzg5MyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZGVm%0AcyBpZD0iTWF0aEpheF9TVkdfZ2x5cGhzIj48cGF0aCBpZD0iU1RJWFdFQk1B%0ASU5JLTRDIiBzdHJva2Utd2lkdGg9IjEwIiBkPSJNNTU5IDE4MGwtNTggLTE4%0AMGgtNTA5djE2YzU2IDYgNjQgMTUgODIgNzhsMTIyIDQzOGM4IDI3IDExIDQ3%0AIDExIDYyYzAgMjkgLTE1IDM5IC03NyA0M3YxNmgyNzN2LTE2Yy02MCAtNCAt%0AODUgLTIwIC0xMDEgLTc3bC0xMjAgLTQyOWMtNiAtMjMgLTEwIC00MCAtMTAg%0ALTU0YzAgLTMxIDIzIC00MSAxMDUgLTQxYzEwMCAwIDEzMSA1IDE4MCAzOGMz%0AMiAyMSA1NCA1NCA4MiAxMTJaIj48L3BhdGg+PHBhdGggaWQ9IlNUSVhXRUJN%0AQUlOSS00MSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTU2NCAwaC0yNDV2MTZj%0ANjMgMyA3NyAxOSA3NyA1M2MwIDggLTEgMTcgLTIgMjZsLTIwIDEzMWgtMjIw%0AbC01OSAtMTExYy0xNCAtMjYgLTIyIC01MCAtMjIgLTY2YzAgLTE5IDE1IC0z%0AMSA2MiAtMzN2LTE2aC0xODZ2MTZjNDYgOSA1OSAyNiAxMzQgMTU2bDI4NSA0%0AOTZoMjZsOTIgLTU1M2MxNCAtODQgMjUgLTk1IDc4IC05OXYtMTZ6TTM2OSAy%0ANjJsLTQ1IDI2M2wtMTQ5IC0yNjNoMTk0WiI+PC9wYXRoPjxwYXRoIGlkPSJT%0AVElYV0VCTUFJTkktNTQiIHN0cm9rZS13aWR0aD0iMTAiIGQ9Ik02MzMgNjUz%0AbC00NCAtMTY0bC0xNyAyYzIgMTcgMyAzMyAzIDQ2YzAgNTMgLTM2IDgxIC0x%0AMDEgODFoLTU4bC0xMzcgLTQ5MGMtNiAtMjEgLTE0IC00NCAtMTQgLTY2YzAg%0ALTMxIDEyIC0zOSA1MyAtNDNsMzUgLTN2LTE2aC0yODh2MTZjNjkgNiA5MiAy%0AMSAxMDcgNzVsMTQzIDUyN2MtMTU4IDAgLTE5MCAtMTYgLTIzOCAtMTI0bC0x%0AOCA0bDQyIDE1NWg1MzJaIj48L3BhdGg+PHBhdGggaWQ9IlNUSVhXRUJNQUlO%0ASS00NSIgc3Ryb2tlLXdpZHRoPSIxMCIgZD0iTTYzNCA2NTNsLTMxIC0xNTRs%0ALTIyIDJjMiAxNyAzIDMzIDMgNDZjMCA2MCAtMzUgNzMgLTE5MiA3M2MtNTcg%0AMCAtNjcgLTQgLTczIC0yNmwtNjYgLTIzM2g3OGM5MCAwIDEwMSAxMiAxMzkg%0AOTdsMTggLTRsLTY4IC0yMzJsLTIwIDVjNSAyMiA3IDM0IDcgNTJjMCAxNyAt%0AMiAyNiAtNyAzMWMtMTEgMTAgLTM4IDE1IC03OCAxNWgtNzhsLTMyIC0xMTJj%0ALTI1IC04OCAtMzYgLTEzNCAtMzYgLTE0NmMwIC0yNCAyMyAtMzQgNzkgLTM0%0AIGM5OCAwIDE1MiAxMiAyMDMgMzljMzIgMTcgNTYgNDUgOTQgOThsMTYgLThs%0ALTYyIC0xNjJoLTUwN3YxNmM1NiAxMCA2NSAxNiA4MSA3NGwxMjMgNDQyYzYg%0AMjAgMTEgNTIgMTEgNjRjMCAyNyAtMTUgMzUgLTc3IDQxdjE2aDQ5N1oiPjwv%0AcGF0aD48cGF0aCBpZD0iU1RJWFdFQk1BSU5JLTU4IiBzdHJva2Utd2lkdGg9%0AIjEwIiBkPSJNNjU1IDY1M3YtMTZjLTQzIC0xNCAtNzUgLTM3IC0xMjUgLTk1%0AbC0xNjkgLTE5NGwxMDEgLTI1NWMyNCAtNjAgMzcgLTY5IDEwNSAtNzd2LTE2%0AaC0yNzF2MTZjNjAgMSA3NyAxMyA3NyAzN2MwIDEzIC02IDMxIC0xNCA1MWwt%0ANjcgMTY1bC0xNTEgLTE3MmMtMTQgLTE2IC0yMyAtMzQgLTIzIC00OGMwIC0y%0AMiAxOCAtMzMgNjYgLTMzdi0xNmgtMjEzdjE2YzU2IDEwIDgzIDQwIDIyMCAy%0AMDBsODMgOTdsLTEwMyAyNTUgYy0xOSA0OCAtMzcgNjQgLTk1IDY5djE2aDI2%0AM3YtMTZjLTU1IC03IC03MSAtMTYgLTcxIC00MWMwIC0xMyA1IC0yOSAxNiAt%0ANTZsNTkgLTE0N2wxNDUgMTY3YzE0IDE2IDIxIDMxIDIxIDQzYzAgMTkgLTE4%0AIDMyIC02MSAzNHYxNmgyMDdaIj48L3BhdGg+PC9kZWZzPjxnIHN0cm9rZT0i%0AYmxhY2siIGZpbGw9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjAiIHRyYW5zZm9y%0AbT0ibWF0cml4KDEgMCAwIC0xIDAgMCkiPjx1c2UgaHJlZj0iI1NUSVhXRUJN%0AQUlOSS00QyIgeGxpbms6aHJlZj0iI1NUSVhXRUJNQUlOSS00QyI+PC91c2U+%0APGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjM5LDApIj48dXNlIHRyYW5zZm9y%0AbT0ic2NhbGUoMC43MDcxMDY3ODExODY1NDc2KSIgaHJlZj0iI1NUSVhXRUJN%0AQUlOSS00MSIgeD0iMCIgeT0iMjk2IiB4bGluazpocmVmPSIjU1RJWFdFQk1B%0ASU5JLTQxIj48L3VzZT48L2c+PHVzZSBocmVmPSIjU1RJWFdFQk1BSU5JLTU0%0AIiB4PSI1MDQiIHk9IjAiIHhsaW5rOmhyZWY9IiNTVElYV0VCTUFJTkktNTQi%0APjwvdXNlPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMDIsMCkiPjx1c2Ug%0AaHJlZj0iI1NUSVhXRUJNQUlOSS00NSIgeD0iMCIgeT0iLTIxNiIgeGxpbms6%0AaHJlZj0iI1NUSVhXRUJNQUlOSS00NSI+PC91c2U+PC9nPjx1c2UgaHJlZj0i%0AI1NUSVhXRUJNQUlOSS01OCIgeD0iMTUyNiIgeT0iMCIgeGxpbms6aHJlZj0i%0AI1NUSVhXRUJNQUlOSS01OCI+PC91c2U+PC9nPjwvc3ZnPg==%0A" alt="\LaTeX">. Ça m’a également servi, par le passé, pour convertir un wiki d’un format à un autre.

Commentaires : voir le flux atom ouvrir dans le navigateur

par Bruno Michel, Davy Defaud, Nils Ratusznik, patrick_g

DLFP - Dépêches

LinuxFr.org

En Bretagne Debian a le vent en poupe dans le milieu scolaire

 -  19 avril - 

L’association infothema intervient pour le déploiement complet de Debian dans une école primaire. Le conseil municipal de la commune de Bégard (...)


GnuPG, OpenPGP.js & cie : quoi de neuf ?

 -  17 avril - 

Le 8 mars 2018, la version 3.0.0 de la bibliothèque OpenPGP.js sortait. Elle implémente le format OpenPGP en JavaScript et est disponible sous (...)


Adoption des sinogrammes pour les options courtes des programmes GNU

 -  3 avril - 

C’est une petite révolution du côté des coreutils, des built‐ins Bash et de tous ces petits programmes du projet GNU qu’on utilise sans même y penser (...)


Du rififi dans ta cartouche d’encre

 -  1er avril - 

Cette dépêche fait suite à un reportage diffusé sur France 2, intitulé Imprimante : le coût de la panne. Il est question de la problématique de (...)


2018, curl a vingt ans

 -  30 mars - 

Curl est l’exemple du logiciel utilisé partout, tellement omniprésent que l’on oublie d’en parler. Aucune dépêche ou journal LinuxFr.org dédié à ce (...)