samedi 18 mai 2013

Passer à l'anglais

Lançant skype depuis un émulateur de terminal, nous obtenons l'avertissement suivant:
(skype:2618): Gtk-WARNING **: Impossible de trouver le moteur de thème dans module_path : « adwaita »
Bien sûr, il s'agit simplement d'un avertissement, mais nous aimerions qu'il n'apparaisse pas.
Une recherche dans google basée sur ce message donne des résultats qui ne permettent pas de trouver une solution au problème.
Peut-être avec comme critère de recherche le même message, mais en anglais, obtiendra-t-on plus de résultats pertinents?
Comment obtenir la version anglaise de ce message?
Voici une solution: dans notre terminal, avant le lancement de skype, exécutons la commande
export LC_ALL=C
Maintenant, nous recevons en retour les messages en anglais:
(skype:2720): Gtk-WARNING **: Unable to locate theme engine in module_path: "adwaita",
Illustration:


Cette manipulation n'est pas seulement utile dans le cas de figure évoqué ci-dessus (recherche basée sur des messages).
Elle permet par exemple d'avoir des pages "man" en anglais: en effet dans le cas où la traduction en français n'est pas très claire, il peut être utile de se rapporter à la langue originale.
Nous pouvons également depuis le terminal lancer la version anglaise des applications.
Par exemple pour libreoffice, on procédera en exécutant la commande soffice.
Afin de revenir à la localisation initiale, il suffit de faire:
unset LC_ALL
Une autre solution pour obtenir les messages de skype en anglais aurait été de taper:
LC_ALL=C skype
ce qui a pour avantage de ne rien changer au niveau du terminal (en fait du shell bash). Il n'est donc plus nécessaire d'utiliser unset.
Enfin, signalons à ceux qui ont atterri ici à partir d'une recherche sur le message d'erreur, la solution au problème était pour notre système fedora 18 64 bits, d'installer adwaita-gtk2-theme.i686.

jeudi 9 mai 2013

Formater une requête avec sed

Dans libreoffice base, nous créons une requête en mode SQL en veillant à la bonne lisibilité du code grâce à un formatage judicieux, comme illustré ci-dessous:


Cependant lorsque plus tard nous sommes amené à éditer cette requête, nous constatons (avec horreur) que notre magnifique formatage a disparu:

Qu'à cela ne tienne, introduisons dans un (émulateur de) terminal (virtuel) la commande

sed -r 's/\,|AND|WHERE|FROM|CASE|WHEN|END/\n&/g'

suivie d'un appui sur la touche ENTER:


Aucun nom de fichier ne lui ayant été fourni, sed est en attente des données qu'il doit traiter et qui vont lui être communiquées via l'entrée standard (stdin).
Dans libreoffice, nous sélectionnons puis coupons l'instruction SQL avant de la coller dans le terminal:


Un appui sur ENTER envoie les données vers sed et nous terminons avec CTRL-D:


Il reste à effectuer un copier-coller de la requête formatée vers la fenêtre d'édition de libreoffice:


Et voilà: nous pouvons maintenant travailler de manière plus agréable.
Si nous sommes intéressé par le procédé, il peut être utile de définir un alias:

alias fq="sed -r 's/AND|WHERE|FROM|CASE|END/\n&/g;s/WHEN/\n  &/g'"

dont la définition sera permanente si elle est ajoutée au fichier ~/.bashrc

(fq est mis pour format query)

Cette fois nous ne considérons pas les virgules car si les traiter était, dans notre exemple,  justifié (pour une meilleure lisibilité), ce ne serait plus le cas en de présence de fonctions dont les arguments sont séparés par des virgules