Admin   |   Photos   |   Projets   |   Github   |   Wishlist   |   CV

Fous ta cagoule


Je regarde une rediffusion de l’intervention d’Elisabeth Badinter devant la mission d’information sur le port de la burqa. Elle est clairement contre, et elle avance des arguments intéressants en faveur d’une “interdiction” (pas forcément contraignante réglementairement ?). En particulier elle commence par discuter la liberté de se vêtir, en argumentant le fait “qu’il n’y a pas de vêtement du visage”.

Une phrase hors discours m’a interpellé lorsqu’elle évoquait la question du port du voile “pour se cacher des regards impurs d’autres hommes” :
Entre vous et moi, drôle de vision des choses de penser que tous les hommes qui regardent une femme ne rêvent que de la violer

Pom pom pom. Non ?

Enfin, comme elle le dit bien (et ça serait cool qu’un ou deux politiques se mettent au diapason), elle n’est pas spécialiste de l’Islam, ni spécialiste des lois ou de la politique, la question reste donc entière. On va voir à quel point l’UMP devient un parti populiste :-)

Vroum


Tristan Nitot a fait un billet qui m’a beaucoup intéressé hier, Quelques notes sur la culture et Internet.

Déjà ça fait des pistes de réflexion pour imaginer ce que sera la société de demain. On va nettement plus loin que les bêtises du gouvernement actuel (Christine is watching you :-)). Notamment sur le paradoxe de la disparition de la rareté avec Internet : toute l’écontomie actuelle repose sur le fait que les produits sont “rares” : si je m’achète un CD, je paye toute une ribambelle de parasites (ce n’est pas péjoratif dans cette phrase) qui ont packagé, transporté, mis en rayon, etc. la musique que je veux écouter au final. C’est là que l’informatique arrive : le transport, la duplication, voire la pub sont quasi gratuites. Comment bâtir une économie là-dessus ? Et comment les non-parasites (les créateurs pour la musique) peuvent vivre dans un tel modèle ? Le sujet mérite qu’on y réfléchisse en tout cas :)

Ensuite, à titre professionnel, je ne suis jamais aussi content que lorsque j’utilise de jolis outils libres, voire que je les adapte à mes besoins (redmine et nagios sont de parfaits exemples du genre d’errements que je peux avoir au boulot). A titre personnel, je développe un peu sur mon temps libre (voir mon espace sur Github), je n’utilise que des PCs sous des systèmes libres (ce n’est pas vrai pour mon téléphone j’admets) et j’évangélise à l’occasion autour de moi. Bref, je baigne dans cette communauté.

L’article de Tristan met un peu en lumière le moteur qui m’agite lorsque je mets à disposition des sources de mes programmes sur Internet, sans toutefois être complet. En dehors des aspects relationnels, communautaires, qui m’intéressent, je dirais que j’ai 3 moteurs dans ce genre de démarche. Dans le désordre :

  1. la reconnaissance des pairs ou des gens qui utiliseront mon code
  2. la satisfaction de penser que des gens utiliseront mon code et en seront contents : c’est proche mais tout de même différent, je n’espère pas forcément une boite de chocolat, mais je suis content de penser que ce que j’ai fait sera utile à d’autres (je pense par exemple à Teamscript 4)
  3. l’amélioration continue : mettre mon code à disposition sous une licence qui va bien, c’est laisser la porte ouverte à ce que d’autres gens (potentiellement bien plus compétents que moi) améliorent ce que j’ai commencé à faire ; c’est comme ça que se construisent les meilleurs produits informatiques de nos jours (à commencer par les OS)

Je trouve ces deux sujets vraiment passionnants. Dommage qu’on entende jamais ce genre de thèse à plus haut niveau, et qu’on s’arrête à la bête défense d’intérêts privés. Je suis complètement dépassé par la course folle aux profits qu’on peut soupçonner chez de nombreux parasites des milieux culturels. La motivation devrait être de faire partager ce qu’on aime, ce qui sort de notre tête ou de nous. La gloire éternelle, l’exposition médiatique, l’argent qui coule à flot… bof.

Rien ne nous survivra


Quand je vois les conneries que vient de sortir Jacques Séguéla dans l’émission de Ruquier, le roman de Maïa Mazaurette que je suis en train de lire, Rien ne nous survivra – Le pire est avenir est tout de suite plus clair : il y a des vieux qu’il vaudrait mieux tuer.

Ce monsieur vient d’expliquer que le Net est la pire saloperie que l’homme ait jamais inventé, parce qu’on pouvait descendre une réputation en quelques minutes. Il parlait en l’occurrence pendant l’interview de Julien Dray, qui venait expliquer son livre, la cabale médiatique contre lui, les informations non vérifiées, mais qui dit tout de même autre chose du Net, heureusement. J’ai l’impression que ce raisonnement est en vogue chez tout un tas de vieux débris inadaptés, dont pas mal de politicons effrayés par le monde qui les entoure.

J’aime Internet, j’aime vraiment Internet. J’aime qu’Internet soit neutre, et j’espère qu’il le restera malgré la volonté de certains gouvernements dont le nôtre. J’aime échapper aux medias centralisés, avoir accès à différentes opinions sur les sujets qui m’intéressent, et je me méfie de tous ceux qui veulent en faire un minitel 2.0.

Par les temps qui courrent, ce n’est pas la Déclaration des Droits de l’Homme qui garantit les libertés d’expression ou d’opinion. C’est par exemple Twitter qui permet d’informer sur les élections en Iran, où les medias traditionnels se seraient faits tuer. Ce sont des blogueurs qui s’escriment à rendre moins lisse les informations des medias traditionnels et des agences de presse. C’est aussi les chaines que m’envoie ma mère, qui sont tantot droles tantot sérieuses, mais qui font réfléchir les gens. Cette diabolisation du Net n’a pas lieu d’être. Les gens comme Jacques Séguéla redoutent les informations non contrôlées, je veux leur dire qu’ils ont raison d’avoir peur.

Pour me remettre de bonne humeur, je finirai sur une phrase de Desproges au Tribunal des Flagrants Délires :
Jacques Séguéla est-il un con ? De deux choses l’une : ou bien Jacques Séguéla est un con, et ça m’étonnerait quand même un peu ; ou bien Jacques Séguéla n’est pas un con, et ça m’étonnerait quand même beaucoup !

Souffrance telecom


*25!!!!! * ; comme ils disaient avant, bienvenue dans la vie point com.

Et c’est Pingoo qui régale :


LIP DUB Souffrance Telecom
envoyé par Les_Graves_Infos. – Cliquez pour voir plus de vidéos marrantes.

(ahahah)

Une jolie définition de l'Europe


L’Irlande a voté OUI au traité de constitution européenne à 67%. Gascogne écrit sur le blog de Maitre Eolas tout le bien qu’il en pense. Ce qui m’a fait marrer, c’est un des commentaires de l’article qu’il pointe :

L’UE, c’est simple à comprendre
Si c’est OUI, c’est OUI. Si c’est NON, tu dois revoter jusqu’à la victoire du OUI. Dès que c’est OUI, c’est définitif.
Cela s’appelle la “démocratie version UE”. A gerber…

Mais ça n’a l’air de choquer personne. Vive la politique, vive l’Europe, et vive le dimanche !

De la démago, des sciences, et des maths


Cette semaine :

  • Claude Allègre traite Nicolas Hulot d’imbécile : un article sympa à propos de ça ; rappelons tout de même que Claude Allègre pète les plombs régulièrement, et qu’on peut tout à fait être un bilogiste très doué sur des sujets particuliers, et un parfait ignorant sur d’autres thèmes. Le discours qui range tous les scientifiques dans le même panier me gonfle au plus au point, et Luc Ferry a perdu toute mon estime à ce sujet lors d’une émission de LCPAN. Au passage, il ressort la super-comparaison d’Allègre entre météorologie et climatologie, youpi. Comme quoi les imbéciles sortent tous du bois en même temps…
  • les journalistes et les politiques se donnent le mot pour casser les couilles à tout le monde avec 24 abrutis qui se sont suicidés chez France Telecom ; c’est drôle, ça coincide curieusement avec le taux de suicide moyen en France vu le personnel de FT (voir par exemple ici, le chiffre est sourcé et détaillé sur Wikipedia). Certes c’est triste et le problème n’est pas que mathématique, encore qu’en éliminant les biais cités dans les commentaires de l’article on ne doit pas être bien loin de la moyenne. Mais de là à en faire LE problème du moment… Si c’est tellement l’enfer la positive generation, la porte est grande ouverte, isn’t it ?

You win !


Depuis hier je suis certifié RHCE (Red Hat Certified Engineer) :-) Ce n’est pas grand chose, mais ça fait plaisir de constater qu’après quelques années d’auto-formation et un peu de passion, je finis par avoir un niveau minimal en administration système. That’s all !

Très en vrac


En super-vrac même :

  • je me suis enfin sorti du Rhume A, la variante non-mortelle de la Grippe A
  • en ce moment je deviens un gros adepte de Chrome/Chromium ; Chrome est le navigateur web made in Google. C’est tellement rapide que j’étais presque sur le point de désinstaller Firefox de mon netbook. Vivement que Firefox 3.6 sorte (et surtout que les plugins soient mis à jour), ou que Chromium voit arriver tous mes plugins préférés.
  • UNIX a 40 ans cet été ! (via)
  • je vais bientôt pouvoir comprendre mes chats grâce à ce merveilleux bijou technologique
  • j’étais un peu mort de rire en lisant cet article de Tristan Nitot : S’attaquer aux tabous pour devenir écolo. Où l’on souligne en particulier qu’utiliser des ampoules basse conso, c’est bien moins efficace que limiter le nombre d’enfants (la croissance de la population mondiale étant suicidaire à long terme)
  • un joli fake qui donne envie de faire plouf (dans 2 jours !!)
  • des robots qui jouent, des robots qui courent, et encore des jolis robots. On est a un tournant, même si c’est encore certainement très compliqué à produire et à rentabiliser, la robotique devient extrêmement performante, Asimov n’est pas loin !
  • une chouette initiative pour trouver des équivalents libres aux logiciels propriétaires ; mais le problème reste entier, il n’y a toujours pas (à mon sens) d’équivalent sérieux à .. Visio par exemple.
  • ahah, merci la liste railsfrance, qui m’a fait découvrir ce site à envoyer aux imbéciles qui polluent les forums/groupes sans même chercher eux-mêmes auparavant
  • Korben nous montre la première voiture volante grand public, wOw !!
  • ruby-istes, web developpers, allez voir ça :)))
  • quelques liens, à froid, sur les déboires du jeune rappeur énervé Orelsan : poum, poum, et poum. Et un autre pour la route, plouf : j’ai envie de pleurer quand je vois ce qu’on fait de la liberté d’expression en France, j’éprouve une haine féroce contre tous ces penseurs indulgents qui victimisent les gens et les dispensent de penser (ça me rappelle mes cours de philo sur la religion…). On devrait être libre de tout dire, punto.
  • les choses à dire pendant l’amour chez Maïa, ahahah
  • toujours chez Maïa, les vieux me gonflent < pareillement, quand on lit ce genre de stupidité on espère que l’euthanasie se généralise rapidement :)
  • CSS progresse, et html 5 aussi ; vous ne profiterez de ce dernier lien qu’avec Firefox 3.5 minimum, ça n’impressionnera que les développeurs web, mais wouhouh quand mêm :)

Bon, ayé, ma liste ReadItLater est enfin vide (tu parles Charles, j’ai passé au moins 50 liens sur mon compte Delicious…), je peux partir en vacances ! Ahem.

Silence, on dort


Il est minuit et demi, elle s’est endormie doucement, je l’écoute respirer, je la regarde se débattre avec ses rêves quelques secondes, puis je la vois changer d’ennemi, se battre contre cette stupide couette qui ne veut pas la suivre pendant son demi-tour. Heureusement qu’il fait chaud, ce soir encore je n’aurai pas un cm² de tissu !

Pendant qu’elle s’enfonçait dans son doux sommeil, j’ai décidé de redémarrer un serveur du boulot à distance, j’ai sursauté, j’ai ensuite angoissé, puis j’ai commencé à me voir demain matin y aller à 7 heures, histoire que les collègues ne sachent rien de ma bête tentative de mise à jour. J’ai repris du poil de la bête, j’ai imaginé des moyens de m’approprier la console à distance, mais ça ne fonctionnait pas, de nouveau l’angoisse, et puis son visage m’a rassuré. Tout est reparti. Ce visage, si calme, à croquer, il me fascine, ça fait des mois que ça dure, plus d’un an même, et impossible de s’en lasser.

Le calme avant la tempête, demain ce sera plus tendu, grand oral de l’année, une soeurette qui fait coucou avant de partir outre Manche, une visite au consulat, une jolie course de métro en perspective quoi :)

Il est vraiment temps que je dorme.

Hello CouchDB


On me titille de part et d’autre : Nicolas, Linux Mag (deux fois en 6 mois!), Damien et Damien, et des discussions par-ci par-là.

Donc c’est parti, j’essaie de me faire une appli sur CouchDB. Avec plein d’arrière pensées :

  • mieux maitriser l’outil et les concepts sous-jacents pour mieux comprendre (et pourquoi pas contribuer à) Chef
  • comparer ça à MongoDB (voir le railscast) ; si je bute trop, j’essaierai peut-être Mongo
  • en finir avec le gouffre conceptuel objet/relationnel ; j’espère que ça sera concluant de ce côté :)

Je me fais une petite base de connaissances parce que le besoin commence à être vraiment trop criant. J’ai des tonnes d’items non-lus et/ou à garder dans mon reader RSS, et j’ai vraiment besoin d’un outil pour organiser ça sous forme de tags (et si possible garder des copies locales des articles).

Pour simplifier le tout, je commence à partir sur du Rails 3 :

echo 'gem "couchrest"' >> Gemfile
bundle install

Des nouvelles dans les prochaines semaines, le projet sera comme d’hab’ sur github

Rails 3.0 beta is out !


Here we go :

gem install tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n
gem install rails --pre

Let’s give it a try ;)

Pense-bête sur l'utilisation de LUKS


Voir la doc Ubuntu

Créer un volume encrypté :

sudo cryptsetup luksFormat -c aes -h sha256 /dev/sdb

Ajouter une clé :

sudo cryptsetup luksAddKey /dev/sdb

Voir les clés :

sudo cryptsetup luksDump /dev/sdb

Ouverture et formatage manuel :

sudo cryptsetup luksOpen /dev/sdb disk
sudo mkfs.ext3 /dev/mapper/disk

Voir ses requêtes dans un db/console Rails


ActiveRecord::Base.logger = Logger.new(STDOUT)

(thanks)

Final countdown


Remise à plat de mon Postfix


Sur mon serveur perso, j’ai des besoins simples en terme de mails :
1- envoyer des mails (relai local) n’importe où
2- recevoir des mails sur mes domaines (jbbarth.com et autres)

Seulement voilà, à force de suivre des tutos à droite à gauche, de piquer des conseils d’un côté et de l’autre, et surtout de me référer à la doc officielle Postfix, impossible de s’y retrouver. Je relayais des centaines de spams par jour sans savoir pourquoi, de quoi s’arracher les cheveux.

Premier coupable, Postfix : je ne me suis pas paluché tous les MAN ni toute la doc officielle dans la longueur, mais après en avoir lu une bonne partie, ce truc est d’une complexité e-ffra-yante. OK, c’est puissant, mais après ? En 1 ligne mal placée on fout toute une conf par terre, génial.

Enfin en regardant autour, Exim n’a pas l’air beaucoup plus simple bien qu’il m’attire nettement plus (ça m’a l’air souple, sympa, c’est le choix Debian par défaut, etc.).

Vient le second coupable, moi : j’ai édité les confs à la main, en tatonnant. Là, je décide de rester sous Postfix, mais de chercher une doc bien foutue. Et là hourra, merci Debian encore (<3), je trouve cette page de wiki ; voici donc :

tar cvzf /home/salvor/postfix.tgz /etc/aliases* /etc/postfix/
wajig remove —purge postfix
wajig install postfix
sudo -s
tail /var/log/mail.log
postconf -e "myorigin = chanmasters.com"
postconf -e "myhostname=$(hostname)"
postconf -e "relay_domains = chanmasters.com, vds171.sivit.org, jbbarth.com, trollsports-trial.com"
postfix reload
vi /etc/postfix/main.cf
#ajout des restrictions proposées sur le debian wiki
vi /etc/aliases
#on vérifie que les aliases sont toujours en place
#au besoin, un petit coup de "newaliases"
postconf -e "alias_maps = hash:/etc/aliases"
postfix reload
echo "test" | mail -s "1. Mail test to root" root
echo "test" | mail -s "2. Mail test to webmaster@chanmasters.com" webmaster@chanmasters.com
echo "test" | mail -s "3. Mail test to jeanbaptiste.barth@gmail.com" jeanbaptiste.barth@gmail.com
tail /var/log/mail.log
#les trois mails semblent bien passer
#ils sont bien arrivés où il faut
#mêmes tests de l'extérieur
tail /var/log/mail.log
#idem, ça roule \o/

:-)

EDIT: petit oopsie, j’ai rajouté l’option permit_mynetworks à la liste smtpd_recipient_restrictions (en premier), et pour des raisons pratiques (liées au comportement par défaut de Rails), j’ai désactivé le TLS pour le moment. Et là, ça marche !

Supervision CPU via SNMP


Récemment nous avons rencontré divers problèmes au boulot concernant la supervision du CPU : remontées à 100% alors que “top” indiquait 0%, parfois des remontées en “UNKNOWN” sans raison évidente, etc.

Modes de supervision de la charge CPU

J’écourte l’intro faite sur le wiki du boulot : on peut en gros compter sur 2 sources d’information pour superviser le CPU d’une machine Linux/Unix :

  • des commandes système : top (top -b -n 1 + grep/head/sed), vmstat, voire si vous avez de la chance procinfo ou autres.
  • via SNMP, qui propose deux types de compteurs : les compteurs moyennés (ssCpu*) et bruts (ssCpuRaw*). Pour des raisons pratiques, on va se concentrer sur ce mode.

Il y a aussi la charge CPU calculée directement par le système, bien sûr. Mais son calcul comme son interprétation sont complexes, varient en fonction du nombre de processeurs, et, accessoirement, la définition varie d’un Unix-like à un autre. Cela dit si ça vous intéresse, il existe plusieurs plugins (peut-être ça aussi, indirectement).

Je viens de trouver ce plugin qui m’a bien pu, et qui gère apparemment le multi-processeur. Mais ça gâche la suite de l’article alors… revenons donc à la terre ferme.

A. Les compteurs ssCpu

Référence: http://net-snmp.sourceforge.net/docs/mibs/ucdavis.html#ssCpuIdle

Le démon snmpd fournit en standard des compteurs ssCpuIdle, ssCpuUser, etc., directement exprimés en pourcentages, qui devraient permettre de superviser l’occupation du CPU sur une période récente. D’ailleurs on ne sait pas exactement laquelle, je n’ai pas trouvé de référence à ce sujet. Mais ces compteurs sont dépréciés, considérés comme non fiables, et inutilisables en l’état sur une plateforme multi-processeurs ou multi-coeurs (le total arrive, selon les implémentations, à 100% ou N*100%). Le script check_snmp_load.pl, utilisé avec l’option “netsc”, utilise un de ces compteurs, le ssCpuIdle. Ce script est fourni en standard avec le bundle Nagios3 que j’ai au boulot.

Mais il semble notamment que ce compteur n’est pas fiable au-delà de 62 jours d’uptime sur les RHEL5 (tickets sur le bugtracker RedHat ici et ici). Ce genre de bêtise, ça donne quand même envie de se flinguer, merci RedHat…

B. Compteurs ssCpuRaw

Référence: http://net-snmp.sourceforge.net/docs/mibs/ucdavis.html#ssCpuRawIdle

Les compteurs ssCpuRaw* fonctionnent sur un mode différent :

$ snmpwalk -v 2c -c public myserver.domain.tld 1.3.6.1.4.1.2021.11 |grep CpuRaw
UCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 7184735
UCD-SNMP-MIB::ssCpuRawNice.0 = Counter32: 3142
UCD-SNMP-MIB::ssCpuRawSystem.0 = Counter32: 7208896
UCD-SNMP-MIB::ssCpuRawIdle.0 = Counter32: 1116976279
UCD-SNMP-MIB::ssCpuRawWait.0 = Counter32: 4329138
UCD-SNMP-MIB::ssCpuRawKernel.0 = Counter32: 6038492
UCD-SNMP-MIB::ssCpuRawInterrupt.0 = Counter32: 53534
UCD-SNMP-MIB::ssCpuRawSoftIRQ.0 = Counter32: 1116870

Il s’agit de compteurs permettant de jauger l’utilisation du Cpu depuis l’initialisation du compteur. Pour connaitre l’utilisation du Cpu sur une période récente, il faut donc prendre les valeurs à un instant t, prendre les valeurs à un instant t+1, et faire la soustraction. C’est ce que faisait notre script au boulot, “check_net-snmp_cpu_usage.pl”, récupéré d’une instance Nagios1.3/Oreon.

Seulement ce script fait les choses “bêtement”, il prévoit une intervalle fixe entre les deux checks pour faire la différence. Or ces compteurs ne sont pas mis à jour en temps réel, mais à intervalles plus ou moins réguliers, en général 2 secondes, mais ça peut monter à 10 ou 15 secondes en cas de forte charge du serveur (à la louche). Résultat, soit on règle l’attente à 15 secondes et dans la majorité des cas on attendra 15 secondes inutilement, soit on règle ça a des valeurs moindres, et de temps en temps le script sortira en UNKNOWN.

Comment faire ? premier essai : check_cpu_load.rb

Voir mon espace Github

Ce script fait la même chose que check_net-snmp_cpu_usage.pl mais de façon un peu plus intelligente : il récupère une première série de valeurs. Puis chaque seconde il en récupère une nouvelle, et il attend que le nombre de cycles CPU total écoulé entre sa mesure en cours et la première série soit suffisamment important. Ensuite (ou au bout de 15 secondes par sécurité), il fait le calcul et sort. Si les compteurs sont mis à jour rapidement et que le delta est représentatif, il peut sortir la mesure au bout d’1 ou 2 secondes. Sinon, il attend d’avoir une mesure plus représentative, au cas où le serveur travaille peu (peu de cycles CPU), ou si les compteurs ne sont pas mis à jour (serveur saturé).

Deuxième essai : check_cpu_avg.rb

Voir mon espace Github

Mais cette mesure n’est pas très pertinente : vérifier toutes les 5 minutes ce que fait le CPU d’une machine sur les 3,4,5 dernières secondes n’est pas représentatif. Il suffit de lancer la commande à la main plusieurs fois de suite pour s’en convaincre, admirez les écarts en quelques secondes sur mon serveur de supervision :

CPU Used OK: 10.17% | Wait=1.52%, System=0.99%, User=6.67%, Nice=0.00%, Idle=89.83%
CPU Used OK: 23.66% | Wait=2.49%, System=1.77%, User=17.63%, Nice=0.00%, Idle=76.34%
CPU Used OK: 11.39% | Wait=1.84%, System=1.12%, User=7.31%, Nice=0.00%, Idle=88.61%
CPU Used OK: 42.97% | Wait=1.59%, System=3.43%, User=34.52%, Nice=0.00%, Idle=57.03%
CPU Used CRITICAL: 99.01% > 90 | Wait=1.64%, System=13.64%, User=70.09%, Nice=0.00%, Idle=0.99%
CPU Used CRITICAL: 92.06% > 90 | Wait=1.02%, System=4.76%, User=16.44%, Nice=65.08%, Idle=7.94%
CPU Used CRITICAL: 100.00% > 90 | Wait=0.00%, System=3.41%, User=6.31%, Nice=86.86%, Idle=0.00%
CPU Used OK: 41.59% | Wait=4.00%, System=3.16%, User=8.58%, Nice=22.70%, Idle=58.41%
CPU Used OK: 30.33% | Wait=19.17%, System=1.51%, User=8.14%, Nice=0.00%, Idle=69.67%
CPU Used CRITICAL: 94.22% > 90 | Wait=0.35%, System=11.70%, User=70.46%, Nice=0.00%, Idle=5.78%

=> ça ne varie pas toujours autant certes, mais lorsque c’est le cas, ça bouge autant que dans un top, ce qui n’est pas le but recherché. A la limite on se moque (?) des pics de charge instantanés. L’objectif est plutôt de détecter si une machine reste à 100% de CPU trop longtemps, auquel cas une application a peut-être un problème, ou la machine est peut-être sous-dimensionnée.

L’idée consiste à ne faire qu’un “passage” de la commande SNMP, de stocker les résultats dans un fichier, et de regarder le delta au check Nagios suivant. C’est ce que fait check_cpu_avg.rb. Il sort en UNKNOWN s’il ne trouve pas de fichier stockant un check précédent, et sinon, il fait la différence (qui devient donc une moyenne sur la période entre les deux checks, 5 minutes environ pour nous), stocke les nouvelles valeurs dans le fichier et renvoie le résultat de la différence.

Peut-être qu’il est plus pertinent de superviser à la fois ce genre d’indicateur et le LOAD au sens Linux. Il faudrait en creuser la définition du load précédemment cité). C’est un peu obscur pour moi pour le moment, mais si un lecteur a un avis, défoulez-vous !

Ubuntu is good for U


Ca marche aussi avec Debian, ou n’importe quel projet libre avec une communauté vraiment active.

Le problème: ayant raté une update vers Karmic (la prochaine version d’Ubuntu) récemment, j’ai tenté un downgrade, un peu sporty, et finalement je me suis réinstallé une Jaunty flambant neuve. Et depuis, j’avais perdu le bootsplash, vous savez, le logo Ubuntu au démarrage avec la barre de progression orange qui se remplit. A la place, cette barre commençait à peine et j’obtenais la liste des messages de démarrage de tous les outils Linux.. Bof.

Recherche de soluce: Google, je cherche :

jaunty usplash "Reading files needed to boot"

Et donc tout de suite, je tombe sur ça, qui me redirige sur ce rapport de bug sur Launchpad, la plateforme de développement et remontées de bug collaborative de Canonical, utilisée notamment par Ubuntu.

Je suis le petit pas-à-pas pour résoudre le souci, et en effet, au boot suivant, le splash screen s’affiche bien. Pouah, j’adore le libre dans ces moments là.

(je dis ça parce que le dernier message d’erreur (blocante) que j’ai eu au boulot sur un OS de Redmond, m’a amené à 10 ou 15 réponses différentes, des "sometimes it does that but we don’t know why, let’s reboot, put one finger in your neighboor’s nose and say some abracadabra, it might work).

Hihi :)))

Xchat : whois en fenêtre active


/set irc_whois_front on

Here we go !

zsh & wajig


Passé récemment sous zsh comme shell par défaut (merci Laurent), je trouve la complétion automatique de mes commandes wajig très lente. Pour mémoire, wajig est une surcouche plutôt sympa des apt* écrite en Python, et il me sert de gestionnaire de package principal sur mes Debian et Ubuntu depuis plus d’un an. La complétion automatique étant relativement rapide avec les commandes apt-get et compagnie, j’ai décidé de jeter un oeil aux scripts de complétion zsh pour wajig en particulier. J’en ai profité pour rajouter le switch -y/—yes qui manque à la complétion bien qu’étant une option parfaitement valide et documentée.

Les scripts de complétion se trouvent dans /usr/share/zsh/functions/Completion/Debian. J’ai repris le script _apt pour adapter la section install dans le script _wajig. Les deux se servent d’un 3e script commun nommé _deb_packages au cas où ça vous intéresse. Le bonheur c’est que sans connaître vraiment le langage ou les structures utilisées, comme c’est du script relativement lisible on peut tenter par des essais/erreurs de modifier ça… et on y arrive !

Voici le résultat sous forme de patch :

% diff _wajig.orig _wajig
11a12
>   '(-y —yes)'{-y,—yes}'[assume yes for any questions asked]' \
44,45c45,46
<         _alternative \
<           'packages:package:_deb_packages uninstalled' \
—-
>         _wanted \
>           'packages:package:_deb_packages "$expl_packages[@]" avail' \

Et les complétions sont redevenues rapides ; le fait de changer _alternative par _wanted m’indique d’abord une liste quand j’appuie sur TAB, plutôt qu’enchainer directement sur les options possibles.

EDIT: une simple recherche Google montre que certains poussent pour que le “framework” de complétion apt pour zsh soit aussi utilisé pour wajig ; à creuser, j’éditerai ce billet si je trouve quelque chose d’intéressant…

Connaître sa RAM


J’apprendrai la prochaine fois à tourner 7 fois ma langue dans ma bouche avant de dire une bêtise ; non, le nombre de /dev/ram* ce n’est pas le nombre de barettes de RAM sur un Linux. Pour connaitre ce genre d’info, lshw ou dmidecode sont plus adaptés. En reformattant la sortie avec ruby, on obtient quelque chose de ce genre :

sudo dmidecode | ruby -ne '( a=[]; 12.times{a << gets.scan(/(?:Size|Speed|Type):\s*(.*)/).first }; puts a.compact.join("/") ) if $_.match /Memory Device$/' | uniq -c

Par charité, je vous fais la même en lisible :

sudo dmidecode | \
  ruby -ne '\
    ( a=[]; \
      12.times {
        a << gets.scan(/(?:Size|Speed|Type):\s*(.*)/).first \
      }; \
      puts a.compact.join("/") \
    ) if $_.match /Memory Device$/\
  ' | uniq -c

Sur mon NC10:

      1 2048 MB/DDR2/533 MHz (1.9 ns)
      1 No Module Installed/DDR2/533 MHz (1.9 ns)

Et sur un serveur du boulot:

      8 4096 MB/<OUT OF SPEC>/667 MHz (1.5 ns)
     24 No Module Installed/<OUT OF SPEC>/Unknown

(3615 Jmelapète)

Hope this helps..