Greboca  

Les tutoriels et les astuces

Les tutoriels et les astuces

Cette page regroupe les tutoriels ou les astuces.

 

Comment configurer facilement ses comptes e-mails dans Thunderbird (Icedove).

La configuration d’un compte de messagerie électronique dans un logiciel spécialisé tel que Thunderbird est facile et à la portée de tous.

Ces différentes pages vont vous permettre de comprendre et bien configurer vos comptes e-mails dans Thunderbird.

 

Modifier l’avatar dans Pidgin (Gaim)

Ce tutoriel a pour objectif de vous montrer comment modifier l’avatar dans Pidgin (anciennement Gaim).

 

Pourquoi bloquer la publicité et les traqueurs ?

Nous expliquons pourquoi il est nécessaire de bloquer la publicité et les traqueurs, pour améliorer le confort de navigation sur Internet et la sécurité

 

Mastodon - Le réseau social qui vous veut du bien

Présentation de Mastodon, le réseau social créé en 2016. Un aperçu en vidéo avec les fonctionnalités clefs.

Geek Canal Historique  -  Éditer des fichiers XML en ligne de commande : xmlstarlet

 -  Mai 2015 - 

Présentation

XML!!!!

De nos jours, nous sommes cernés de fichiers XML. Ils sont présents partout que ce soit pour les préférences des applications (gconf pour Gnome) les fichiers en rapport avec les GPS (GPX, KML), les descriptions d'interface graphiques (Qt UI, GTK Glade, Mozilla XUL), les documents (OpenOffice ODF Microsoft OOXML) etc... La liste serait sans fin.

Je ne rentrerai pas ici dans les considérations polémiques sur le bien fondé de ces choix, mais les faits sont la : nous devons faire avec. Il est relativement facile d'écrire une application capable de travailler avec ces fichiers, les langages de haut niveau proposent tous des API dédiées plus ou moins simples. Même en C la libxml2 rend cela relativement facile.

Mais la complication vient lorsque l'on veux travailler en shell. La ou des fichiers à  plat étaient faciles à  utiliser avec sed/grep/awk et quelques regex bien senties, le XML est une horreur sans nom. Sortir le Python ou le Perl n'est pas toujours possible (disponibilité sur la plateforme, versions datant de Mathusalem ...). Dans ces moments, on se rabat souvent sur bash[1]. Et c'est la que xmlstarlet va vous venir en aide. Il s'agit d'un programme en ligne de commande qui va se charger du parsing XML et vous permettre de lire et modifier facilement[2] vos fichiers.

Installation

xmlstarlet devrait être disponible dans toutes les bonnes crémeries[3].

Par exemple pour ArchLinux, il est dans AUR

yaourt -S xmlstarlet

Ou bien pour debian et dérivées

aptitude install xmlstarlet

Sinon, il est fourni dans une version portable compilée statiquement avec la libxml2 et la libxslt. Téléchargez le rpm xmlstarlet-1.0.1-1.i586.rpm sur SourceForge. Il suffit alors de le décompresser dans un répertoire temporaire avec la commande[4] :

rpm2cpio xmlstarlet-1.0.1-1.i586.rpm | cpio -idmv

et de récupérer le binaire présent dans ./usr/bin/xml

Utilisation

hello

Nous allons nous contenter de lire et de modifier des valeurs et des attributs. Pour une utilisation plus avancée, allez lire la documentation.

Comme exemple, nous allons utiliser un fichier UI de Qt très simple. Une boà®te de dialogue avec un bouton sans layout ni rien.

<?xml version="1.0" encoding="UTF-8"?>

 Dialog
 
  
   Dialog
  
  
   
    Hello
   
  
 
 
 

Lecture

Commençons par regarder la structure :

$ xml el hello.ui
ui
ui/class
ui/widget
ui/widget/property
ui/widget/property/string
ui/widget/widget
ui/widget/widget/property
ui/widget/widget/property/string
ui/resources
ui/connections

Nous retrouvons ici tous les champs de notre fichier XML. Ce sont ces chaines de caractères qui vont nous permettre d'accéder aux valeurs à  lire et modifier.

On peut aussi regarder les paramètres '-a' et '-v' qui donnent plus d'infos sur la structure. (attributs et valeurs). Par exemple pour le bouton :

$ xml el -v hello.ui
...
ui/widget/widget[@class='QPushButton' and @name='pushButton']
ui/widget/widget/property[@name='text']
ui/widget/widget/property/string

Maintenant, si nous voulons voir le texte du bouton, on va utiliser la commande 'sel' :

$ xml sel -t -v "/ui/widget/widget/property/string" hello.ui
Hello
  • sel: pour selectionner un chemin (xpath)
  • -t: requête dans le document
  • -v: on veux la valeur
  • /ui/widget/widget/property/string : c'est le chemin que nous cherchons.

Alors bien sur ici, nous n'avons qu'un seul bouton. Mais il faut pouvoir caractériser plus finement a chaine recherchée. C'est à  dire la property text du widget dont le nom est pushButton. Cela donne donc :

$ xml sel -t -v "/ui/widget/widget[@name='pushButton']/property[@name='text']/string" hello.ui
Hello
  • widget[@name='pushButton'] nous permet de dire que l'on cherche le widget dont l'attribut name est pushButton
  • idem pour property[@name='text']

On peut aussi chercher les valeurs des attributs. Quelle est la classe de ma fenêtre principale ?

$ xml sel -t -v "/ui/widget/@class" hello.ui
QDialog
  • @class: nous cherchons l'attribut class de widget

Modification

Maintenant, nous allons utiliser la commande 'ed' pour modifier notre fichier XML.

$ xml ed -u "/ui/widget/widget[@name='pushButton']/property[@name='text']/string" -v GoodBye hello.ui
...
      
        GoodBye
      
...
  • -u: update
  • -v: nouvelle valeur

De même pour changer un attribut, par exemple, le nom de notre bouton :

$ xml ed -u "/ui/widget/widget[@name='pushButton']/@name" -v btn hello.ui
...
    

Voyez aussi les options :

  • -i: pour insérer un élément
  • -d: pour effacer un élément
  • ...

Voila, avec ces quelques commandes simple, on peut déjà  sortir quelque chose de ces fichiers XML à  partir d'un petit scrip shell. xmlstarlet permet d'en faire beaucoup plus, je vous renvoi donc une nouvelle fois vers la documentation

Notes

[1] ou pire csh :(

[2] enfin, relativement, on parle quand même d'XML la !

[3] votre gestionnaire de paquet favoris

[4] Sous ArchLinux, il existe un script rpmextract.sh qui fait le boulot

par Anonymous

Geek Canal Historique

Si tu travailles avec un marteau-piqueur pendant un tremblement deterre, désynchronise-toi, sinon tu travailles pour rien. Pierre Légaré

Contrôler le chauffage par fil pilote (1er épisode)

 -  Février 2017 - 

Note: le 2ème épisode est aussi disponible.Si vous avez déjà regardé le branchement d'un chauffage électrique, vous avez sûrement remarqué la présence (...)


Une table de nuit suspendue en chêne

 -  Juin 2016 - 

J'avais depuis quelques temps, besoin d'une nouvelle table de nuit qui s'accroche au mur et qui ne prenne pas trop de place. ie: qui loge entre (...)


Fabriquer une poulie en bois

 -  Novembre 2015 - 

Aujourd'hui, pas de domotique ni même de "doigt robotisé", mais du bois.Quand on a pas beaucoup de place et un peu de hauteur sous plafond, l'idée (...)


Contrôler le chauffage par fil pilote (épisode 2)

 -  Novembre 2015 - 

Previously in Fil Pilote épisode 1:Un passage à l’échelle étant nécessaire pour commander tous les radiateurs de la maison, Jean-Robert (pseudonyme) (...)


Programmateur de machine à laver

 -  Septembre 2015 - 

Le besoin Notre machine à laver, un peu ancienne, ne dispose pas de fonction retardateur. Il est donc impossible de la programmer pour qu'elle (...)