2008 January Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Archive for January, 2008

Aujourd'hui, franchement à la bourre, pour rester dans le thème je vais vous parler rapidement de la célèbre technique dite de la rache

Cette technique est connue pour être la plus efficace pour votre travail. À expérimenter dès que le temps vous manque, vous verrez ça fonctionne à tous les coups. Si votre patron vous a rendu complètement inITIL, sachez que la rache ne respecte pas du tout ITIL. Par contre la rache est suffisamment flexible pour s'adapter à tous les types de projet, du plus grand au plus petit, du plus court au plus long. La rache c'est bon mangez-en.

Et pour les impatients, un aperçu du prochain article. J'ai écrit un patch à netfilter/iptables pour permettre de donner une durée de vie limitée à vos règles de firewall. Petit exemple :

# Une règle qui ne matchera plus dans 1h
$ iptables -A INPUT -s 127.0.0.1 -m timeout --timeout 3600 -J DROP

# Les règles ne matchant plus restant en mémoire, il faut les nettoyer de temps en temps
$ iptables -C INPUT

Niveau :      
Résumé :

Si vous voulez enregistrer tout ce que vous faites dans une session screen, le tout est ajouté à la fin du fichier screenlog.0

$ screen -L

Pour faire la même chose en cours de route, utilisez le raccourci Ctrl-a H
Attention, c'est un 'H' et non un 'h'. Pour info Ctrl-a h effectue une simple capture d'écran.

Un alias sympa pour supprimer les commentaire quand vous faites des grep dans des fichiers de configuration

$ alias vgrep='egrep -v "^$|^#"'

Interroger un virtualhost dont le dns ne pointe pas sur la bonne machine (par exemple avant une migration)

$ curl --header "Host: toto.fr" http://localhost
$ wget --header="Host: toto.fr" http://localhost

Vérifier qu'un virtualhost utilise mod_gzip (ou mod_deflate)

$ curl --compressed --output /dev/null --dump-header - http://toto.fr
$ wget -O /dev/null --header="Accept-Encoding: deflate, gzip" http://toto.fr

Niveau :      
Résumé : alsa ; oss

On me demandait récemment quelle interface choisir pour le son des applications sous linux. Du point de vue du noyau vous avez le choix entre alsa et oss, qui sont deux séries de driver. Et du point de vue des application vous avez encore d'autres choix.

OSS (Open Sound System) est un système de driver son développé pour linux il y a quelque temps. Son auteur principal a comblé un manque car il n'en avait jamais existé avant. Mais son objectif était de vendre des drivers propriétaires et le développement des versions libres s'en est ressenti.

Après quelque temps des développeurs ont décidé d'écrire une nouvelle api pour le développement de driver son : alsa (Advanced Linux Sound Architecture). Du coup le noyau propose les deux dans sa configuration.

Le problème est que la plupart des applications ont été développées pour supporter oss. Heureusement, alsa fournit une couche de compatibilité oss et donc supporte les anciens logiciels. Alsa fournit aussi une nouvelle api permettant de mieux exploiter certaines cartes.

Maintenant du point de vue des api, les clients peuvent vous proposer d'utiliser esd, arts ou jack. Ce sont tous des démons qui essaient de fournir une api générique que tout le monde peut utiliser, et ils cachent derrière l'api qu'ils utilisent. En général ils se basent sur alsa, mais peuvent aussi utiliser oss voire parfois un autre démon (pratique pour faire tourner des applications conçues pour un seul démon). Un démon peut être bien utile si votre carte ne supporte pas plusieurs canaux, il le fera à votre place.

esd (Enlightenment Sound Daemon) est le démon privilégié des applications gnome.

arts est le démon privilégié des application kde (ce qui changera pour kde 4).

jack est un démon dédié à la faible latence et à l'utilisation à travers le réseau.

PS : on m'indique que j'oublie Pulse Audio qui cherche à être le remplaçant de esd.

Un chercheur c'est quelqu'un à qui ont pose un problème hypothétique et qui passe sa vie (ou presque) à y chercher une solution. Pour cela il va lire le grand tableau noir des connaissances humaines, se creuse la tête et lorsqu'il trouve une solution il est heureux d'aller mettre son nom sur le grand tableau avec la solution du problème. Un chercheur travaille (du chapeau) autant la nuit que le jour et son boulot étant dans sa tête, il le rapporte toujours chez lui. Maintenant vous savez pourquoi ils sont autistes. Un chercheur est motivé par la reconnaissance reconnue grâce à des publications, il est en général moins bien payé qu'un étudiant chez macdo. Un chercheur a en général pour supérieur direct un chercheur qui a trouvé une solution et qui peut l'orienter dans sa quête du graal.

Un ingénieur c'est quelqu'un qui rencontre des problèmes pratiques et qui ne passe pas sa vie à en chercher la solution. Il va simplement réutiliser les résultats des chercheurs (qu'il est le seul a comprendre) et les appliquer à son cas particulier. Il sera ainsi heureux de savoir qu'il a contribué au bien être de l'humanité grâce à son mixer, sa fusée ou son épluche patate. Un ingénieur est en motivé par la reconnaissance, l'utilité de son travail et une paye plus élevée que celle de l'étudiant macdo. Un ingénieur a en général pour supérieur direct un ex ingénieur fatigué.

Un informaticien c'est quelqu'un qui se pose des problèmes qui pourraient survenir si Paris était en bouteille et qui va chercher à les résoudre. Pour cela il se pose la question à lui même et parfois à son ami google quand il est futé. N'ayant jamais entendu des mots comme "état de l'art", il finira par développer un nouvel outil qui ne sera utile qu'à lui-même. La reconnaissance qui le motive est a peu près la même que celle de l'étudiant macdo, ce qui explique le développement gigantesque du monde opensource ou il tentera de se faire un nom. Un informaticien a en général pour supérieur direct une personne qui a déjà envoyé un mail.

Maintenant une petit fable à raconter à vos amis.

On pose le même problème à un chercheur, un ingénieur et un informaticien, "Combien font 1+1 ?".

  • Le chercheur se gratte la tête, sort ses axiomes et dit : "On suppose qu'on est dans Z, on peut prouver que +1 équivaut au successeur, 2 est le successeur de 1, donc 1+1=2".
  • L'ingénieur montre du doigt le chercheur : "On est dans Z, je pique son résultat, ça fait 2".
  • L'informaticien sort son cray, fait un programme qui fait la soustraction, la multiplication, la division et l'addition en virgule flottante sur n chiffres. Il lance le tout, tape 1+1 et le programme répond : "erreur, division par 0". Et donc l'informaticien demande un budget supplémentaire pour terminer un projet qui avait été mal estimé.

(Et pour ceux qui veulent la vraie démo, c'est dans les cours de second cycle)

Niveau :      
Résumé : kdmctl

Un chanteur me faisait justement remarquer hier que j'oubliais la population kdeiste au profit des gnominés (et encore on peut très bien utiliser kdm avec gnome). Comme je ne suis pas sectaire je vais de ce pas réparer cette injustice.

Nous cherchons donc une commande permettant de commander kdm, et comme par hasard, elle existe. Commençons par lancer un ouvel écran de connexion :

$ kdmctl reserve

Tout comme gdmflexiserver, kdmctl locke l'écran en cours. Par contre, il ne permet pas de lancer la nouvelle connexion sur un Xnest, à la place il propose une option permettant de fermer cet écran automatiquement au bout d'un timeout.

Le manuel de kdmtcl nous révèle d'autres commandes :

# Change le serveur en cours d'affichage
$ kdmctl activate :2

Vous trouverez aussi une commande pour éteindre proprement la machine ou pour connecter automatiquement un utilisateur après un timeout donné.

Voila, vous pouvez maintenant scripter kdm aussi bien que gdm.

Niveau :      
Résumé : gdmflexiserver

Il existe une commande bien sympathique qui permet de lancer une nouvelle session gdm sans couper la dernière. En effet, lorsque vous avez une session ouverte avec gdm, le serveur X est occupé et ne vous permet donc pas de vous connecter sous un autre utilisateur. Ceux qui ont une distribution bien léchée ont déjà un bouton changer d'utilisateur qui permet ce genre de chose. Comment se fait-ce ?

Celles-ci utilisent la commande gdmflexiserver. Cette commande demande directement à gdm de lancer un nouveau serveur X et d'y ouvrir un nouvel écran de connexion.

$ gdmflexiserver

Notez au passage que gdm locke le serveur d'origine, ce qui empêchera le nouveau venu de faire un petit ctrl-alt-Fx pour se faire passer pour vous sans votre mot de passe.

Petite option utile, gdmflexiserver permet d'ouvrir la nouvelle session dans une fenêtre à l'intérieur de la première en utilisant Xnest. Grâce à quoi vous pourrez par exemple lancer une session gnome propre plutôt que de vous embêter à gérer le lancement de votre Xnest à la main.

$ gdmflexiserver -n

En pratique gdmflexiserver implémente une communication générique avec le démon gdm, ce qui veut dire qu'il peut être utilisé pour d'autres choses. Par exemple, récupérer la version de gdm qui tourne :

gdmflexiserver -c VERSION

La liste des commandes disponibles ne se trouve que dans le source de gdm, mais elles sont tout de même documentées. Pour les trouver, cherchez les constantes commençant par GDM_SUP_ dans gdm.h. Notez que certaines commandes nécessitent une authentification préalable (avec l'option -a) :

$ gdmflexiserver -a -c QUERY_VT

Grâce à cette commande, vous pourrez scripter ce qui vous intéresse. Essayez par exemple changer la configuration de gdm en direct.

Aujourd'hui, rien.
--- Louis XVI