LBSNDD : le blog sans nom de dimitri

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

mercredi 26 avril 2006

Éteins ta télé !

Êtes-vous plutôt accroc, consommateur occasionnel ou vous tenez-vous à bonne distance de cet appareil de propagation d'images et d'idées qu'est la télévision ?

Depuis sept ans déjà le collectif Casseurs de pub invite les téléspectateurs à laisser reposer leur téléviseur pendant une semaine, afin de faire travailler leur cerveaux. La semaine sans télé 2006 a débuté lundi 24 jusqu'à dimanche 30, et plus si affinités bien sûr.

Allez, sors de cette boîte ! Tu y es enfermé en moyenne 3 h 30 par jour. Tu ne vas passer ta vie dans cette prison mentale. Tu vas pas laisser tous ces animateurs débiles t'avilir. La semaine sans télé, c'est l'occasion de briser la glace, de se libérer de cette machine à abrutir. Allez viens, on a une vie à vivre et un monde à transformer.

L'étape suivante étant l'abandon pur et simple de la boîte à images. Une fois que vous aurez redécouvert la vie sans télé, vous n'aurez plus envie d'y revenir. Abandonner la télé ne revient pas à se couper du monde. Cela revient à se couper d'une certaine vision du monde largement formatée et biaisée. Personnellement je préfère voir le monde de mes propres yeux, m'informer auprès de sources alternatives et diverses, ne plus être pollué par les paillettes et la publicité.

jeudi 20 avril 2006

Incrémenter lors d'un copier-coller

Petite astuce brute de décoffrage que je viens de mettre en place et qu'il me faudra intégrer dans la prochaine version de spip.vim.

Je voulais pouvoir, d'une simple touche (donc avec macro derrière) insérer un tag <imgXX|center> à l'endroit où se trouve le curseur. Sachant que XX est le numéro de l'image et que je voudrais en prime que le XX inséré soit celui de l'image qui précède dans le fichier incrémenté de 1.

Attention, c'est vraiment du brut. J'utilise la fonction d'incrémentation [Ctrl] + A (notez le pendant [Ctrl] + X pour décrémenter). Pour l'utiliser, placez-vous en mode commande, à proximité (avant) d'une valeur numérique et pressez [Ctrl] + A. Le curseur se déplace automatiquement sur la prochaine valeur et incrémente de 1. Notez que si vous tapez 10[Ctrl] + A, vous incrémentez de 10. S'il y a un tiret devant la valeur, cela sera interprété comme un nombre négatif.

Voici maintenant mes macros (modes commande et insertion) :

map <F8> mz?<img<CR>Y'zP0<C-A>
imap <F8> <ESC>mz?<img<CR>Y'zP0<C-A>o

Détails :

  • mz place un marqueur nommé z à la ligne courante (utile pour y revenir) ;
  • ?<img<CR> recherche le motif « <img » en remontant le fichier ;
  • Y copie toute la ligne ;
  • 'z on revient sur la ligne marquée z ;
  • 0 on se place en début de ligne ;
  • <C-A> on incrémente la valeur numérique la plus proche (celle que l'on veut évidemment).

mercredi 19 avril 2006

Wikipédia dans ton éditeur de texte favori

Où comment arriver à ce que les gens pensent que Vim est plus un OS qu'un éditeur de texte (à non, la place est déjà prise...).

Vous connaissiez peut-être le greffon OOoWikipedia qui permet de rechercher un mot dans Wikipédia, l'encyclopédie libre, depuis OpenOffice.org. Voici comment faire avec Vim.

Cet exemple, assez simple, est également très modulable. En effet, il s'agit d'exécuter une commande externe avec pour argument le mot sous le curseur. Donc, vous pouvez choisir votre navigateur, mais également votre moteur de recherche. Les possibilités s'étendent donc à l'infini (enfin, presque...). Mais limitons-nous à un cas particulier : interroger Wikipédia et afficher le résultat dans Lynx (le site est à l'image du navigateur, très sobre). Oui, je choisis Lynx, car je trouve très classe de pouvoir ouvrir Wikipédia dans la même fenêtre que le texte que je suis en train de taper dans Vim (non, je ne suis pas faché avec ma souris !).

Et hop, la commande :

map <C-W> :!lynx http://fr.wikipedia.org/wiki/<cword><CR><CR>

Ici j'ai choisi de mapper la combinaison [Ctrl] + W sur cette commande. Détails :

  • ! introduit l'appel à une commande externe à Vim
  • <cword> mot-clé désignant le mot situé sous le curseur (je l'ai cherché longtemps, merci à G de me l'avoir souflé)
  • <CR> retour chariot ; deux sont nécessaires pour valider.

La commande précédemment citée est utilisable en mode commande. Voici celle pour le mode insertion.

imap <C-W> <ESC>:!lynx http://fr.wikipedia.org/wiki/<cword><CR><CR>i

La seule différence : on passe en mode commande au début (<ESC>) et on revient en mode insertion à la fin, ni vu ni connu (i).

Une piste de réflexion pour la suite : comment rechercher un groupe de mots (évidemment séparés par des espaces), à priori sélectionnés en mode visuel ?

Un début de troll (?) : on pourrait aisément se servir de Vim comme gestionnaire de fichiers et appeler des commandes externes suivant l'extension (mouais) ou le type Mime. On pourrait aussi afficher la météo de la ville dont le nom se trouve sous le curseur.

samedi 15 avril 2006

Template pour un header

Bonne résolution, je me remets à coder. Arriverais-je à pondre quelque chose de sympa ? Bien sûr que je vous montrerai !

Partir de zéro est toujours difficile. Le fameux syndrome de la page l'écran blanc (ou terminal noir dans mon cas...). Commençons par choisir de bons outils (tout en restant relatif et non trollesque) : Vim pour saisir le code en C.

J'ai vite remarqué que mes headers (fichiers inclus au moyen de la directive #include) avaient tous la même forme de base que voici (ici pour le fichier time.h) :

#ifndef __TIME_H__
#define __TIME_H__
 
#endif 

Vim propose un système de templates ou modèles. Lorsque vous créez un nouveau fichier, il peut ainsi être pré-remplit. Pour cela on utilise le système des autocommandes. Ajoutez cette ligne dans votre fichier .vimrc

au BufNewFile *.h 0r~/.vim/templates/h.h

au est l'abbréviation d'autocmd. On définit ici une commande à exécuter automatiquement lorsque l'événement BufNewFile se produit pour un fichier dont le nom correspondant au motif *.h. Ici, la commande 0r~/.vim/templates/h.h place le curseur au début de la ligne (0) puis lit et copie (r) le fichier ~/.vim/templates/h.h. C'est donc dans ce fichier sobrement nommé h.h (appelez-le comme vous voulez, mais gardez quand même l'extension pour la coloration syntaxique) que l'on va inscrire notre squelette.

Cependant nous n'avons ici qu'un contenu statique, c'est-à-dire que le fichier template est copié dans le nouveau fichier et c'est tout. Or, on aimerait bien, dans le cas des fichiers headers (et c'est d'ailleurs indispensable), pouvoir utiliser le nom du fichier pour nommer la constante qui nous sert à limiter à une l'inclusion dudit fichier. En gros, je voudrais, lorsque je crée toto.h, avoir automatiquement la constante __TOTO_H__ dans mon fichier.

Voici donc le fichier modèle h.h

#ifndef pipo
#define pipo
 
#endif 

On y inscrit un mot quelconque à l'endroit où devra se trouver le nom définitif de la constante. Puis, on complète l'autocommande :

au BufNewFile *.h 0r~/.vim/templates/h.h|exe "%s/pipo/__".substitute(toupper(expand("%")),'\.',"_","")."__/"

Ne partez pas tout de suite, je vous explique !

Le pipe | permet d'enchainer plusieurs commandes. Après avoir recopié le contenu du modèle nous exécutons la commande ci-dessus (tout ce qu'il y a après exe). Cette commande est constituée d'une substitution sur tout le fichier (%s/ancien motif/nouveau motif/). Nous remplaçons donc pipo par une chaîne commençant et finissant par __. Au milieu sera inscrit le résultat des appels imbriqués de trois fonctions.

  • % représente le nom du nouveau fichier.
  • expand("%") est nécessaire pour lire le contenu de la variable %.
  • toupper(str) convertit la chaîne str en majuscules.
  • substitute(str, motif, new, flag) remplace motif par new dans la chaîne str. Ici, on remplace le point (attention, le point est un caractère spécial, il faut le déspécialiser avec '\.') par un underscore.

Ceci devrait vous permettre de faire vos propres modèles interactifs !

mardi 11 avril 2006

Authentifiez/chiffrez vos e-mails

En ces temps de vache maigre, d'inspiration un peu molle, autant ressortir de vieux articles afin d'en faire profiter ceux qui les avaient ratés à leur sortie en kiosque. Voici donc pour commencer, un article sur le chiffrement et la signature numérique, directement appliqué au mail (c'est l'usage le plus courant, mais pas le seul). Cet article fut publié dans Linux Pratique n°26 en novembre 2004. À cette époque Thunderbird n'était pas encore en version 1.0 et je ne l'utilisais pas encore. Aussi, l'article est focalisé sur Mozilla. Si vous êtes utilisateur de Thunderbird sachez que c'est pareil sauf l'installation qui est plus simple. Dans les deux cas, l'utilisation d'Enigmail et de GnuPG est incontournable.

Lisez l'article : Authentifiez, chiffrez vos mails.

Note : pas la peine de m'écrire à l'adresse mentionnée sur les captures, elle ne fonctionne plus. En revanche, le fingerprint est le bon. D'ailleurs, je le reproduis ici.

09CF D59D B491 1876 2364 A046 23FD 1463 0C1B DCF7