Démarrer X avec le damier et la croix

Entrain de me battre avec le support du touchscreen d’un Shuttle X50 et en particulier avec l’outil de calibration très gruikesque les démarrage de X oldschool avec le damier (checkboard, grille de fond, trame  qui pique les yeux) et le curseur en croix me manque. Donc, pour info, c’est :

% X -retro

Et puis, tant qu’à faire, autant remettre les choses au propre en réactivant Ctrl+Alt+BackSpace via :

Section "ServerFlags"
  Option "DontZap""false"
EndSection

Parce que : «Accessibility shortcuts (for both KDE and Gnome) are enabled by holding the shift-key for 8 seconds. As a result, it’s easy to inadvertently enable « Sticky Keys ». Now, if you press Ctrl and then release it, and a bit later, you press Alt-Bksp (the shortcut to delete a whole word), then Boom !» (comme dit ici), moi ça me fait penser au sketch de la chauve souris enragée de Bigard. A ce jeu là, on peu aussi désactiver les touches séquences SysRq, le Maj+Numlock, et pourquoi pas souder directement le câble d’alimentation de la machine sur la prise murale. C’est vrai, on ne sait jamais, si quelqu’un trébuche et débranche…

MOD vers MP3, la scène Amiga représente grave !

Coup de nostalgie ! Bien avant MP3, bien avant GNU/Linux… il y avait des machines de rêve comme l’Amiga, le ST… et pour mal part le C64 (mais rien à voir). En ce temps là, il y avait un format : le MOD.

Pour faire revenir les sons du passé dans le présent, sur mon iPod Nano, il me fallait convertir ces MODs en MP3. Après 5mn de recherches infructueuses, j’ai décider d’utiliser la méthode bouts-de-ficelles :
#!/bin/bash
MIKMOD=/usr/bin/mikmod
LAME=/usr/bin/toolame
SOX=/usr/bin/sox
ID3V2=/usr/bin/id3v2
HEAD=/usr/bin/head

SONGNAME=`basename $1 .mod`

$MIKMOD  -p 0 $1
mv music.raw $SONGNAME.raw

$SOX -r 44100 -c 2 -w -s $SONGNAME.raw $SONGNAME.wav
rm $SONGNAME.raw

$LAME $SONGNAME.wav $SONGNAME.mp3
rm $SONGNAME.wav

$ID3V2 -t « `$HEAD -c 20 $1` » -A « MODFILES » -a « MODlovers » $SONGNAME.mp3
mikmod, par défaut produit un fichier RAW, stéréo, 16bits, 44100Hz. Sur la base de ces informations, on peut utiliser sox pour en faire un WAV qui sera, ensuite compresser en MP3 avec toolame.

Enfin, le format MOD permet d’inclure un titre au morceau sous la forme des 20 premiers octets du fichier (avec un padding avec des espaces). On peut donc utiliser head pour récupérer ces infos et en faire le tag « titre » ID3v2 du MP3 avec id3v2.

Embarquer une image dans HTML

Bon, clairement, je ne sais pas trop à quoi cela pourrait servir mais c’est possible. Donc, bon.

En faisant quelques recherche avec Google, j’ai remarqué que l’indicateur de popularité du site (à gauche de l’URL en vert) dans les résultats de recherches n’était pas un fichier PNG mais des données PNG embarquées directement dans le HTML. En creusant un peu, voici…

On fait un petit script PHP pour simplifier les choses :
#!/usr/bin/php
<?php
while($line=fgets(STDIN)){
  echo (rawurlencode($line));
}
?>
Puis on utiliser tout simplement cat pour dumper les données et les envoyer sur STDIN du script et rediriger le tout dans un fichier :
% cat ~/deblogo.png | ./rawurlencode > /tmp/index.html
On ajoute ensuite les balises HTML qui vont bien :
<html>
<body>
<img src= »data:image/png,%89PNG%0D%0A%1A[…]%AEB%60%82″ width= »48″ height= »48″>
</body>
</html>
Et voilà ! Ça peut toujours servir pour une interface HTML d’un système embarqué…

Ah oui ! Il est aussi possible d’encoder en base64, ce qui évite d’utiliser PHP :
% base64 -w 0 ~/deblogo.png > index.html
La syntaxe du tag précise alors l’encodage en question :
<img src= »data:image/png;base64,iVBORw0KGgoAA[…]FTkSuQmC » width= »48″ height= »48″>

Dokuwiki et unison

Le wiki c’est le bien(tm), même pour soi tout seul. Ça permet de noter plein de chose, de rédiger, de faire des TODO, lister des idées… Mais voilà, la 3G dans le TGV c’est la misère alors forcément on install un petit Dokuwiki sur son lovethinkpad qu’il faut ensuite synchroniser avec le Dokuwiki sur le serveur. Et là, c’est le drame !

Les fichiers créés par le wiki appartiennent à www-data:www-data (sur Debian) mais il n’est pas question d’utiliser ce compte sans shell pour une synchro Unison over SSH même over OpenVPN. C’est mal(tm).

Solution : la voie du milieu.

Config Dokuwiki, /var/www/[chemin]/conf/dokuwiki.php :
$conf[‘fmode’] = 0664;   //set file creation mode
$conf[‘dmode’]  = 0775;   //set directory creation mode
On ajoute l’utilisateur d’Unison/SSH dans le groupe www-data et on fait un petit coup de sudo chmod g+w dans le répertoire du wiki.

On créé ensuite un profile Unison :
root = ssh://vpnserver//var/www/[chemin]/doku
root = /var/www/[chemin]/doku
ignore = Name .*.swp
ignore = Name *~
group = true
Ainsi les fichiers et répertoire créés d’un côté comme de l’autre sont la propriété de www-data:www-data mais en cas de copie via Unison ils sont créés sous utilisateur:www-data. Pas de problème c’est g+w. Ca marche.

Vous faites quoi le 14 février à minuit et demi ?

Moi, je bois un coup à la santé d’UNIX :
% date -d « @1234567890 » +%c   
sam 14 fév 2009 00:31:30 CET
Allez, la même en UTC :
% date -u -d « @1234567890 » +%c
ven 13 fév 2009 23:31:30 UTC
Hé oui. C’est grand, c’est rond, c’est beau. 1234567890 !!! CELEBRATE !!!!!

Update : un petit convi-link qui va bien, http://coolepochcountdown.com/

D'autres couleurs pour Midnight Commander

J’adore Midnight Commander, ce gestionnaire de fichiers curses inspiré de Norton Commander. Mais les couleurs bleu/cyan par défaut ne sont vraiment pas dans le ton que j’aime. Changer cela n’est pas difficile, il suffit d’éditer le fichier ~/.mc/ini et ajouter une section [Colors] avec les définitions de son choix.

Pour avoir ceci :

On utilise cela :
[Colors]
base_color=lightgray,default:normal=lightgray,default:selected=black,lightgray:marked=yellow,default:markselect=yellow,lightgray:directory=brightblue,default:executable=brightwhite,default:link=brightcyan,default:device=yellow,default:special=lightgray,default:errors=red,default:reverse=red,default:gauge=black,lightgray:input=black,lightgray:dnormal=lightgray,default:dfocus=white,gray:dhotnormal=red,gray:dhotfocus=brightred,gray:menu=black,lightgray:menuhot=red,lightgray:menusel=white,default:menuhotsel=red,default:helpnormal=cyan,default:editnormal=lightgray,default:editbold=blue,default:editmarked=gray,blue:stalelink=red,defaul

Hilighting de mot-clefs dans Vim

J’écris mes articles pour GLMF directement en HTML/CSS avec Vim. Seulement voilà, la colorisation syntaxique c’est bien beau mais c’est encore mieux lorsque c’est adapté à ce qu’on fait. Pour ma part, en écrivant, j’ai pour habitude de lâcher de ci de là des TODO et autres FIXME. Ces mot-clefs sont mis en valeur dans un commentaire d’un source en C par exemple mais pas dans du HTML.

La solution consiste alors à se créer un ~/.vim/syntax puis d’y copier le fichier html.vim d’origine depuis /usr/share/vim.

Enfin, on y ajoute une simple petite ligne :
syn keyword Todo FIXME TODO
Et vala…

Retrouver les machines du réseau avec ARP

Bon, parfois on configure un réseau un peu à la hache. On donne des adresses de ci de là. Certaines machines ont des adresses statiques. D’autres utilisent le serveur DHCP. Et puis un beau jour, même pas au printemps, on se dit qu’il faudrait finalement retirer cette ligne qui traîne dans la TODO depuis 3 ans et qui dit «Utiliser le serveur DHCP et ranger le LAN»… Mais voilà, comment retrouver ses petits sans courir dans toutes les bureaux ? La réponse c’est ARP.

Simple, il suffit d’utiliser les outils adéquates, dont netdiscover :
Currently scanning: 192.168.50.0/16 | Our Mac is: **:**:**:**:**:** – 0

18 Captured ARP Req/Rep packets, from 17 hosts. Total size: 1080
_____________________________________________________________________________
IP At MAC Address Count Len MAC Vendor
—————————————————————————–
192.168.0.*** 00:19:**:**:**:** 02 120 Unknown vendor
192.168.*** 00:c0:**:**:**:** 01 060 LANS TECHNOLOGY CO., LTD.
192.168.*** 00:e0:**:**:**:** 01 060 REALTEK SEMICONDUCTOR CORP.
192.168.0.*** 00:10:**:**:**:** 01 060 UNEX TECHNOLOGY CORPORATION
192.168.0.*** 00:0c:**:**:**:** 01 060 MICRO-STAR INTERNATIONAL CO., LTD.
192.168.0.*** 00:1b:**:**:**:** 01 060 Unknown vendor
192.168.0.*** 00:03:**:**:**:** 01 060 Apple Computer, Inc.
192.168.0.*** 00:50:**:**:**:** 01 060 MOTOTECH INC.
192.168.0.*** 00:00:**:**:**:** 01 060 SUREMAN COMP. & COMMUN.
192.168.0.*** 00:40:**:**:**:** 01 060 ANI COMMUNICATIONS INC.
192.168.0.*** 00:00:**:**:**:** 01 060 CANON INC.
192.168.0.*** 00:19:**:**:**:** 01 060 Unknown vendor
192.168.0.*** 00:80:**:**:**:** 01 060 BROTHER INDUSTRIES, LTD.
192.168.0.*** 00:0e:**:**:**:** 01 060 Intel Corporation
192.168.0.*** 00:0e:**:**:**:** 01 060 Intel Corporation
192.168.0.*** 00:19:**:**:**:** 01 060 Unknown vendor