Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

samedi 2 juin 2018

Chercher dans des fichiers de log avec lnav

Quand on développe, on passe beaucoup de temps à consulter et à chercher des informations dans les fichiers de logs des produits ou du système.

J'ai longtemps utilisé glogg et maintenant il me parait lourd et peu efficace.

lnav que je vais vous présenter maintenant est plus léger et s'avère très performant grâce à de nombreux raccourcis clavier.

Au lancement, on obtient le résultat suivant:

lnav.png

Vous constatez qu'on est au début du fichier. Pour naviguer dans le fichier, on peut utiliser:

  • g pour aller au début
  • G pour aller à la fin
  • Page up ou Backspace/ Page down ou Espace pour naviguer de page en page

Mais ce qu'il y a de commode, c'est que lnav permet d'aller à la prochaine erreur, en tappant 'e' ou au prochain warning en tappant 'w'.

De la même façon, 'E' vous positionne sur l'erreur précédente et 'W' sur le warning précédent.

On peut également naviguer dans le temps, c'est à dire que la touche 'o' vous fait avancer de 24h dans le fichier et 'O' le fait dans le sens inverse. Si l'intervalle recherché est de 24h, il faut utiliser respectivement 'd' ou 'D'.

lnav vous autorise aussi à rechercher un motif en tappant /<regexp>, les regular expressions acceptées étant les PCRE (Perl-Compatible Regular Expressions).

Autre fonctionnalité intéressante, on peut marquer une ligne pour la retrouver plus tard avec la touche 'm'. Ensuite l'appui sur les touches 'u' et 'U' permet de naviguer d'une ligne marquée à l'autre. C'est très utile pour débugger.

Bref, lnav devient rapidement un outil indispensable du quotidien du développeur, et le fait qu'il soit utilisable directement dans un terminal est un atout non négligeable.

Je n'ai évidemment pas décrit ici tout ce qu'on faire avec, pour découvrir d'autres fonctionnalités, vous pouvez utiliser la touche '?' au démarrage de lnav.

samedi 22 février 2014

Obtenir les URL des playlists et chaines YouTube avec umph

Tant que Free bridera le débit en provenance de YouTube, ses abonnés (ceux qui ne sont pas encore passés à la fibre optique chez Numéricable) seront amenés à trouver des solutions de contournement pour visionner des vidéos qui ne passent pas en pause toutes les 5 secondes.

youtube-dl et clive sont des utilitaires en ligne de commande qui permettent de télécharger une vidéo YouTube (entre autres parce qu'énormément de sites de vidéos sont supportés) pour la visionner ensuite.

Cela permet de regarder la vidéo tranquillement, sans publicité et sans pause incessante.

youtube-dl est un script Python qui permet de télécharger les vidéos dans les différents formats vidéos proposés, d'en extraire les pistes audio, etc ...

Par contre, si youtube-dl permet de télécharger une playlist entière ou de télécharger en mode batch l'ensemble des URL présentes dans un fichier, rien n'est prévu pour obtenir la liste des URL de la playlist.

Pour cela il faut installer umph qui est disponible sur Google Code (umph).

Ce script Perl permet lui d'obtenir:

  • Les URL d'une playlist
  • Les URL des vidéos d'un utilisateur donné
  • Les URL des vidéos d'une liste de favoris

Seul défaut, umph n'est pas dans le repository Debian et il faut suivre les instructions d'installation données sur Google Code et installer manuellement les librairies Perl qui pourraient vous manquer. Il faut au moins celles-ci:

  • libgetopt-argvfile-perl
  • libxml-dom-perl

mercredi 29 janvier 2014

Convertir un fichier markdown en html avec pandoc

On ne présente plus le langage Markdown très utilisé notamment par les développeurs pour écrire les fichiers ReadMe ou les Release Notes des produits.

L'intérêt majeur de Markdown, outre le fait d'être aussi facile à lire qu'à écrire, est de pouvoir créer de "jolis" fichiers html très facilement.

Justement, comment fait-on sous Linux pour convertir un fichier .md en .html ?

Une première solution consiste à utiliser la commande markdown de John Gruber, qui est un script Perl prenant comme premier paramètre le fichier Markdown et renvoyant sur la sortie standard le fichier converti en html.

Si le fichier Markdown est en Anglais ou en ASCII 7 bits, aucun problème. Par contre si le fichier source comporte des accents et est encodé en UTF-8, l'affichage du fichier html dans un navigateur risque de poser problème en raison de l'absence de la balise suivante dans le fichier html généré:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

On peut évidemment ajouter la balise à la main mais bon ...

Une solution plus propre revient à installer la commande pandoc qui est une librairie Haskell permettant la conversion entre différents langages de markup.

En effet la commande pandoc dispose du flag --ascii qui permet de transformer chaque accent en la séquence d'échappement HTML équivalente. Du coup plus besoin de s'embêter avec le Content-Type puisque le fichier de sortie est en ASCII !

On procède comme suit:

pandoc --ascii \
--from=markdown \
--to=html \
input.md

Si vous avez le temps vous verrez que pandoc est un outil de conversion très puissant permettant de traiter beaucoup de formats en entrée (LaTeX, MediaWiki markup, HTML ...) et en sortie (EPUB, PDF, ...) en plus du Markdown.