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

Sortie de LDAP Tool Box Self Service Password 1.3

 -  15 juillet - 

Le logiciel Self Service Password est développé au sein du projet LDAP Tool Box. Il fournit une interface permettant aux utilisateurs de changer (...)


Educode : le numérique, le code, le partage à l’école

 -  13 juillet - 

Educode est la première édition d’un colloque annuel international dédié à l’éducation, aux pratiques et à la recherche dans les domaines liés au (...)


Gnuk, NeuG, FST-01 : entre cryptographie et matériel libre

 -  2 juillet - 

Depuis quelques années, la Free Software Initiative of Japan (FSIJ, association de promotion des logiciels libres au Japon) travaille sur un (...)


GNUMail et Pantomime 1.3.0

 -  1er juillet - 

Thunderbird vous épuise ? Kmail vous torture ? Evolution vous clone ? Sylpheed, Balsa ou Geary ne vous font pas planer, la tambouille qui fait (...)


RyDroid Web Proxy (1.0) : outil de capture de sessions Web

 -  1er juillet - 

Pendant l’année scolaire 2016-2017, j’étais en dernière année d’école d’ingénieurs (l’ENSICAEN). J’ai donc fait un stage de fin d’études (à Orange, en (...)