Blog Haypo

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

dimanche 27 décembre 2009

Cette grosse plaie de PulseAudio

PulseAudio est un serveur sonore visant à simplifier la lecture de son sur le bureau. Il remplace le vieux Esound (ESD). Il permet d'envoyer le son sur les hauts parleurs d'un autre ordinateur, d'utiliser plusieurs cartes son, prend en charge les oreilettes bluetooth, gère la consommation d'énergie, etc. Sur le papier, ça semble super : relire Why you should care about PulseAudio (and how to start doing it) pour s'en convaincre. Par contre, en pratique c'est une grosse plaie : PulseAudio rajoute une couche entre les applications et ALSA qui consomme du temps processeur, de la mémoire, et (dans mon cas) dégrade la qualité du son (rajoute des petits pics sonores).

Problèmes liés à PulseAudio sur un Eee PC (Fedora 11)

En particulier, sur mon Eee PC (1101 HA) équipé de Fedora 11 : mplayer est incapable de lire une vidéo (le film Sympathy for Lady Vengeance) bien que mon processeur graphique (la célèbre puce Poulsbo) accélère grandement le décodage de l'image. Dans les logs noyaux (/var/log/messages), j'ai pu voir que PulseAudio tente de rattraper la situation :

Nov 15 23:07:57 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 1,00 ms
Nov 15 23:16:27 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 2,00 ms
Nov 15 23:16:50 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 4,00 ms
Nov 15 23:20:43 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 8,00 ms
Nov 15 23:20:48 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 16,00 ms
Nov 15 23:21:19 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 26,00 ms
Nov 15 23:22:03 maggie pulseaudio[6894]: alsa-sink.c: Increasing wakeup watermark to 15,99 ms
Nov 15 23:37:22 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 36,00 ms
Nov 15 23:37:37 maggie pulseaudio[6894]: alsa-sink.c: Increasing wakeup watermark to 25,99 ms
Nov 15 23:43:03 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 46,00 ms

Toutes à 5 à 10 minutes, le son finit par sauter et mplayer se fige. J'ai trouvé un contournement : revenir un peu en arrière puis aller un peu en avant (touches gauche puis droite).

Solution : passer directement par ALSA

Après trois coupures dans mon film (c'est-à-dire après un quart d'heure), j'ai fini par me décider à le couper et à chercher à résoudre ce problème énervant. J'ai vu que Mplayer utilisait PulseAudio. J'ai alors essayé l'option « -ao alsa » (-ao : Audio Output), mais mplayer utilisait quand même PulseAudio. Bizarre.

En regardant la configuration ALSA, j'ai vu dans le fichier /etc/alsa/pulse-default.conf :

# Let's make it the default!
pcm.!default {
    type pulse
    ...
}

Donc PulseAudio est configuré pour être le pilote par défaut. J'ai supprimé ce fichier et j'ai redémarré la machine (vu que PulseAudio a trituré ALSA, j'ai préféré tout réinitialiser).

Après le redémarrage, j'ai relancé mon film et j'ai pu le voir jusqu'au bout sans la moindre coupure !

Utilisation du processeur

  • mplayer -ao pulse : le processus pulseaudio utilise 20% du CPU, et au total 20 à 25% du CPU est utilisé
  • mplayer -ao alsa : le processus pulseaudio n'est plus solicité (et n'est donc plus visible dans top), et au total 5 à 10% du CPU est utilisé

Réglage du volume

Avec PulseAudio, alsamixer (et autres mixeurs de sons) n'affiche qu'une seule sortie. Il faut utiliser « alsamixer -c 0 » pour que je puisse avoir accès à toutes les sorties. En particulier, ça me permet de régler le volume du casque, chose nécessaire car le volume est insuffisant.

Problèmes liés à PulseAudio qu'ont d'autres utilisateurs

Lors de la migration à PulseAudio, pas mal d'applications ne fonctionnaient plus (le son en tout cas). Flash et Skype supportent aujourd'hui PulseAudio (Flash 10+ et Skype 2.1+), par contre Audacity ne le supporte toujours pas. Les jeux utilisant la bibliothèque SDL (ex: l'excellent xmoto) ont également des problèmes. Correction : SDL 1.2.12 a un pilote natif pour PulseAudio.

Complaintes :

Le démon PulseAudio a besoin de tourner en priorité temps réel (SCHED_FIFO). Or il faut être root pour cela. Une faille de sécurité dans PulseAudio a déjà servi pour exploiter des failles du noyau Linux (2.6.30, 2.6.31, 2.6.32), notamment via la boîte à outils de Brad Spengler.

Conclusion

Sympathy for Lady Vengeance est un excellent film ! Il fait parti de trilogie sur la vengeance du sud-coréen Park Chan-wook. La fin est bien gore, j'adore :-)

Pour PulseAudio, c'est plutôt mauvais signe étant donné qu'il est activé par défaut sur Ubuntu, Fedora et Mandriva. Bien que j'ai du mal à voir l'intérêt de PulseAudio, il doit bien en avoir un pour que les distributions bureaux majeures l'activent par défaut. Par contre, il serait bon de donner le choix de désactiver complètement PulseAudio le temps que le code soit stabilisé.

dimanche 6 décembre 2009

Nettoyage de clavier

Pour nettoyer un clavier, la méthode la plus simple est de secouer le clavier à l'envers :

(Alternate method: convince them to pretend it's an Etch-a-Sketch and try to erase it.)

Ça marche pas trop mal, mais quand le clavier est maltraité pendant plusieurs années, il en faut un peu plus. J'ai complètement démonté mon clavier pour tenter de débloquer la touche S qui s'était coincée durant le nettoyage. La quinzaine de vis de la coque en plastique était cachées derrière des bouts de caoutchouc (sûrement un message pour me dire « non, ne le fait pas ! »). Et à l'intérieur il y a encore un grand nombre de vis.

J'ai trouvé une grosse touffe de cheveux et une poignée de miettes (miam !). Malheureusement, vu l'état du clavier, je me suis dit qu'il serait plus rapide d'en racheter un autre ...

En même temps, pas mal de des lettres étaient effacées, ce qui ne facilitait pas la frappe à une main (ex : avec un bébé dans les bras). Peut être que ça va enfin me motiver à apprendre à utiliser mon clavier bépo !

vendredi 4 décembre 2009

Compiler PyPy trunk en activant le compilateur à la volée (JIT)

PyPy est une interprète Python écrit en Python. Il implémente Python 2.5 et offre quelques fonctionnalités supplémentaires. Je m'intéresse surtout au compilateur à la volée, car il laisse espérer une vitesse d'exécution des programmes Python bien meilleure. Lire ces benchmarks du blog PyPy pour se faire une idée :

Prérequis

  • Linux
  • Processeur 32 bits (le compilateur à la volée ne gère pas encore le 64 bits)
  • 2 Go de mémoire (1,5 Go semblent suffisant selon ce que j'ai lu)
  • Une bonne heure pour la compilation

Téléchargement

svn co http://codespeak.net/svn/pypy/trunk/ pypy-trunk

Installer les dépendances

Sous Debian / Ubuntu :

sudo apt-get install libffi-dev libbz2-dev libexpat1-dev libexpat1-dev

La compilation proprement dite

cd pypy-trunk/pypy/translate/goal
python translate.py -Ojit

Prévoir 60 minutes sur un CPU Intel @ 3 GHz et 2 Go de mémoire. Pour faire patienter, PyPy dessine de jolies fractales : C

Le résultat est le programme testing-1 (environ 18 Mo) dans le dossier /tmp/usession-trunk-0/testing_1/. Je vous conseille de le déplacer le fichier testing-1 à la racine du projet PyPy sous le nom pypy-c-jit.

C'est prêt !

Voilà, vous avez un PyPy prêt à l'emploi. Vous pouvez jouer avec l'option --jit :

$ ./pypy-c-jit --help
usage: /home/haypo/prog/SVN/pypy-trunk/pypy-c-jit [options]

options:
 (...)
 --jit debug=N              low-level JIT parameter (default 2)
 --jit hash_bits=N          low-level JIT parameter (default 14)
 --jit inlining=N           low-level JIT parameter (default False)
 --jit optimizer=N          low-level JIT parameter (default 1)
 --jit threshold=N          low-level JIT parameter (default 1000)
 --jit trace_eagerness=N    low-level JIT parameter (default 200)
 --jit trace_limit=N        low-level JIT parameter (default 10000)

Un sprint PyPy est prévu fin janvier 2010 (dans un chalet en Suisse) pour finaliser la version 1.2 qui devrait donc sortir peu après (je l'espère).

Unladen Swallow

J'attend aussi beaucoup d'Unladen Swallow qui a pris une autre voie. C'est un fork de CPython 2.6 qui utilise LLVM pour la boucle d'évaluation du bytecode Python. LLVM intègre notamment un compilateur à la volée. Contrairement à PyPy qui redéveloppe tout depuis zéro dans leur coin, LLVM est un projet très populaire utilisé par Apple pour ses effets graphiques, dans les pilotes 3D Xorg récents (Gallium), pour compiler des programmes en C, etc. Non pas que les développeurs de PyPy soient moins bons, j'ai plus confiance dans un projet (LLVM) utilisé par un grand nombre des personnes pour des usages très différents. C'est un gage de pérénité, et LLVM semble plus actif.

D'ailleurs, PyPy avait un backend LLVM pendant un temps, mais ils l'ont abandonné. Il me semble que la raison avancée par les auteurs de PyPy était que LLVM n'était pas adapté à Python, langage trop dynamique.

Unladen Swallow a aussi l'avantage d'être 100% compatible avec CPython... vu que c'est un fork de CPython, notamment au niveau des modules tiers écrits en C (utilisant l'API C de Python) comme PyQt ou numpy.

jeudi 3 décembre 2009

Installer Fedora 11 et 12 depuis une clé USB

Ce bref article explique le minimum pour installer Fedora 12 sur un Eee PC blanc à partir d'une clé USB (vu qu'un Eee PC blanc ne dispose pas de lecteur de CD-Rom). Mais vu les galères que j'ai eu avec Fedora 12 et Poulsbo, j'ai fini par installer Fedora 11. Cet article explique donc aussi une procédure pour installer Fedora 11 à partir d'une clé USB. Les deux installations se basent sur la méthode « Netinstall » qui utilise un petit média pour le boot, puis télécharge les paquets depuis Internet.

Prérequis

  1. Un Eee PC blanc modèle 1101HA, chipset Poulsbo, sinon ça marche pas (mais non je déconne !)
  2. Une clé USB d'au moins 200 Mo que vous pouvez formatter (perdre toutes les données écrites sur la clé)
    • N'importe quel média de stockage USB devrait faire l'affaire. Évitez tout de même de formatter la partition FAT de votre appareil photo numérique : une clé USB 4 Go coûte 8€ en supermarché (voir moins) !
  3. Choisir un miroir Fedora près de chez vous
    • ATTENTION : si vous choisissez un miroir FTP, assurez-vous qu'il supporte le téléchargement partiel (commande FTP "REST") : Fedora 12 l'exige (j'ai ouvert un rapport de bug pour Fedora 12 Beta, mais il n'a pas pu être corrigé avant la version 12 finale)
  4. Une bonne heure devant vous

Création puis boot de la clé USB

  1. Télécharger Fedora-12-Beta-i386-netinst.iso depuis votre miroir ou depuis le site principal
  2. Taper la commande dd if=Fedora-12-Beta-i386-netinst.iso of=/dev/sdX où sdX est le périphérique de votre clé USB. Vérifiez trois fois que sdX est bien votre clé USB, avec fdisk ou cfdisk par exemple, sous peine de perdre tous les données de votre disque dur !
  3. Au démarrage de l'Eee PC blanc, taper la touche Echappe sans arrêt pour afficher le menu de sélection du média sur lequel booter (disque dur, clé USB, ...) : choisir USB:
  4. Le menu de boot Fedora s'affiche : choisir Install or upgrade

Installation Fedora

  1. Choix de la langue : French
  2. Choix du clavier : fr-latin9
  3. Choix du média d'installation : ne pas choisir /dev/sdXY, faire précédent (sûrement une blague des développeurs de Fedora pour empêcher les débutants d'installer Fedora), puis :
    1. Choisir la méthode "URL"
    2. Interface réseau : prendre eth0 (carte ethernet)
    3. [x] Activer le support IPv4 (*) Dynamic IP configuration (DHCP)
    4. Pour l'URL, chercher dans votre miroir Fedora le chemin vers le dossier "os" de l'architecture et de la version de votre choix : (...)/releases/test/12-Beta/Fedora/i386/os/. Exemple avec le miroir Free :
ftp://ftp.free.fr/mirrors/fedora.redhat.com/fedora/linux/releases/test/12-Beta/Fedora/i386/os/
  1. À partir de là, c'est l'installeur Fedora classique qui est bien foutu et explique bien ce qu'il y a à faire. Si vous êtes perdus, consultez la documentation Fedora (en anglais pour le moment)

Note : le miroir Free ne gère que FTP et ne supporte pas le téléchargement partiel. Il n'est donc pas utilisable pour installer Fedora !

Échecs successifs

Comme j'ai pas de bol, j'ai du m'y reprendre à dix fois (au moins) pour arriver à installer Fedora 12...

  • Je n'arrivais pas à booter sur la clé USB : j'ai mis du temps à deviner qu'il fallait utiliser la touche Echappe au boot. J'avais tenté de changer la configuration du BIOS : j'ai mis le média "Removable device" en premier, mais ça ne fonctionne pas pour l'USB !?
  • J'ai tenté de lire le contenu de l'image ISO, en extraire install.img, et écrire install.img sur la clé USB (dd if=install.img of=/dev/sdX)... Mais ça ne fonctionne pas, ce n'est pas la bonne méthode. Conseil : ne pas lire de vieux billets de blogs.
  • À l'installation, j'ai choisi le média /dev/sda1 comme source d'installion. Or pour une Netinstall, il faut faire précédent et choisir "URL"... La vieille feinte de l'ours !
  • J'ai pris le miroir Free, or le serveur FTP de Free ne supporte pas l'extension "téléchargement partiel" (commande FTP "REST"). Du coup, l'installeur graphique a échoué lors qu'il a téléchargé le 1er paquet RPM...

Créer une clé USB bootable pour installer Fedora 11

Créer une clé USB bootable pour Fedora 11 n'est pas possible depuis Debian (pas facilement). Il vaut mieux avoir une Fedora sous la main pour créer la clé USB.

  1. Télécharger Fedora-11-i386-netinst.iso
  2. Sous Fedora, installer les paquets livecd-tools et syslinux (sudo yum install livecd-tools syslinux)
  3. Créer une partition ext3 (/dev/sdXY) de 300 Mo sur la clé USB (ex: avec gparted)
  4. Marquer la partition /dev/sdXY bootable. Exemple avec parted :
$ sudo parted /dev/sdX
(parted) toggle Y boot
(parted) quit
  1. Enfin, taper la commande : sudo livecd-iso-to-disk Fedora-11-i386-netinst.iso /dev/sdXY

Note : Remplacez X et Y par le nom et le numéro de partition de votre choix.

--

Lire aussi Installer Ubuntu Ibex depuis un disque dur USB externe.

samedi 21 novembre 2009

Analyse de spam (commentaires de ce blog) : sites chermou.org et denjala.com

Avec mon antispam maison (NIH powa !), je filtre une grosse partie du spam (dans les commentaires), mais quelques uns passent à travers le filtre. La plupart sont ponctuels, mais un spam persiste dans la durée : chermou. Cet article tente de comprendre l'insistance de ces spams (qui visent à amener du trafic vers certains sites précis), notamment en analysant le contenu et la stratégie commerciale (ahem) de ces sites.

Analyse des spams

Le mardi 29 septembre 2009 à 02:40
Email : 
Site : http://www.denjala.com
@IP : 41.249.40.88
mais pourquoi les americains sont si fort et dans tout les domaines!!!

L'auteur des messages est différent pour chaque message (bomi41, s3aidia, tafrawte, windman, ...). Par contre, la même adresse de courriel est utilisée pour plusieurs messages durant plusieurs semaines (mais sur plusieurs mois, il y a donc plusieurs adresses différentes). Le contenu des messages est en français (plutôt correct) et semble avoir un rapport avec l'article (peuvent passer inaperçu si on n'est pas attentif).

Le plus intéressant reste les noms de domaine (les sites vers lesquels ces spams tentent d'amener du trafic) :

  • www.jeseraimillionnaire.com
    • Crée en juin 2008 (voir plutôt en 2006 ?)
    • Registrar: ENOM, INC.
    • (autres informations : cachées)
  • www.twinibila.com
    • Crée le 16 août 2007
    • Propriétaire : Leblanc SARAH
    • Registrar : ONLINE SAS
  • www.chermou.org
    • Propriétaire : Mourad Chermou
    • Registar : Gandi
    • Crée le 24 décembre 2008
  • www.lannuairegrand.com
    • Crée le 26 février 2009
    • Propriétaire : Mourad Chermou
    • Registar : Espace 2001
    • Adresse postale : Mohammedia, Maroc
  • www.lannuairesport.com
    • Propriétaire : Mourad Chermou
    • Adresse postale : Mohammedia, Maroc
    • Registar : Espace 2001
    • Crée le 25 février 2009
  • www.denjala.com
    • Propriétaire : Mourad Chermou
    • Registar : Gandi
    • Crée le 21 mai 2009

Sur mon blog, c'est essentiellement chermou.org et denjala.com que j'ai croisé. Bon mais sinon, que vendent ces sites ?

Présentations des différents sites

Denjala.com ressemble à un annuaire très généraliste de sites webs : 2000 thèmes divers allant de Dictionnaire à Tissage en passant par Perruque (je serai curieux de savoir comment ces mots ont été choisi !). Il propose d'acheter une « page » pour 50€. Le contenu pornographie est interdit. Si j'ai bien compris, une « page » est une annonce publicitaire. La page d'accueil contient un emplacement Google Ads, et chaque page contient deux emplacements Google Ads : un bandeau textuel (en espagnol !) et une image (bannière horizontale).

C'est là que je ne comprend pas. Le seul contenu proposé par denjala.com est de la publicité ? Quel est le public visé : des annonceurs, des internautes égarés, voir carrément des fans de publicité sur Internet ? En tout cas Mourad espère gagner 100.000€ avec son affaire. L'annuaire contient quelques entrées, mais je ne sais pas si les webmestres de ces sites ont payé pour être enregistrés.

Lannuairesport.com est également un annuaire, dédié au sport. Il comporte un emplacement de publicité Google Ads.

Lannuairegrand.com est un « annuaire de tous les meilleurs sites du web francophone », rien que ça. L'inscription d'un site est manuelle et gratuite. Il y a un bandeau (image) Google Ads sur la page d'accueil, et deux bandeaux textuels sur chaque page.

chermou.org est un site de question/réponse. La page d'accueil contient des liens vers les questions résolus et non résolues, et un lien pour poser une question. Juste sous le menu, il y a une ligne d'annonces Google sous forme textuelle sur une seule ligne « Annonces Google Reponse Question Eau Poser Loisirs 92 Loisirs En » (les mots clés me semblent assez étonnants). Cliquer sur un des mots amène à une page qui liste des publicités Google (textuelles avec un grand bandeau en bas). Il semble que des personnes utilisent ce site pour poser des questions, et répondent aux autres questions. Le concept de site question/réponse n'est pas nouveau, il existe par exemple Yahoo! Questions/Réponses ou l'oracle Wikipédia.

Google Ads

Si j'ai bien compris, les sites chermou visent à faire gagner de l'argent à son auteur, grâce à la publicité (Google). La question que je me pose donc est « Google Ads, combien est-ce que ça rapporte ? ». Problème : La charte interdit de dire combien on gagne... Les mots clés sont vendus aux enchères chaque jour, de 2 cents à plusieurs dollars par clic. Une rémunération est perçue à chaque clic sur une annonce. Les annonces sont choisies selon le contenu de la page web où les annonces sont placées. Par contre, il faut gagner au moins 100$ pour avoir le premier versement : « Les gains vous sont reversés tous les mois par chèque ou virement bancaire à partir du moment où vos gains dépassent la somme de 100$. Sinon, ils sont reportés au mois suivant et ainsi de suite. » Pour en savoir plus, lire par exemple googlecash.

Mourad Chermou achète également des mots clés vers son site. Du coup, cliquer sur un pub menant vers son site va donc lui coûter des sous. Ça me donne envie de cliquer sur ces publicités !

Ce qui m'étonne surtout, c'est les formes que prennent les publicités sur les sites que j'ai cités. Publicités pas très attirantes, parfois en espagnol, parfois uniquement sous forme de quelques mots qui me semblent aléatoires... La logique est difficile à suivre.

jeseraimillionnaire.com

En juin 2008 (ou 2006 ? j'ai pas trouvé de date exact), Mourad avait également lancé le site jeseraimillionnaire.com : Comment devenir millionnaire sans bouger... (novembre 2006). Exemple de spam pour ce site : « Paris 28 juin 2008. Je m'appelle chermou mourad, j'ai 31 ans je suis marocain je vie depuis 5 ans en france sans papiers, je suis venu en france pour terminer mais études mais j'ai pas terminé... J'ai créé ce site pour être millionnaire et retourner chez moi pour mettre fin à cette mésaventure! La france, je l'aime mais je dois la quitter » (source). Il y a 2000 mots et si vous voulez que votre site apparaisse dans la page d'un mot, vous devez payer 100 €.

Quand on voit la piètre qualité des sites, je doute que quiconque veuille payer 100€ alors que Google référence gratuitement.

Twinibila.com

Dans cet ensemble de sites vieillots, farfelus, et ne présentant que peu, voir aucun, d'intérêt (en tout cas pour moi), Twinibila.com se détache du lot. C'est un site d'annonces gratuites pour vendre des voitures au Maroc. Ce site semble actif et pas mal utilisé par des particuliers. Alors que les autres sites sont essentiellement statiques, celui là comporte (attention !) avec moteur de recherche (tada !). Il héberge également un forum phpBB. Le site est plutôt bien foutu. L'enregistrement DNS indique le nom « Sarah Leblanc ». Je suppose que le site a été conçu par une personne différente de tous les autres sites.

Conclusion

Je suis étonné que Mourad persiste depuis juin 2008 (voir depuis 2006 ?) à monter des sites web en espérant s'en servir comme salaire. Soit il est borné et continue bien qu'il n'ait pas encore gagné son million d'euros, soit c'est moi qui suis complètement à la masse et bien sûr que ces sites lui font gagner un fric dingue !

J'ai un peu honte d'accorder autant de mon temps aux spammeurs, mais je suis de nature curieuse. Et avec chermou, je ne suis pas déçu du voyage :-)

mardi 10 novembre 2009

sudo adduser elisa

$ date
mar. nov. 10 04:17:00 CET 2009

$ sudo adduser elisa
Adding user `elisa' ...
Adding new group `elisa' (1002) ...
Adding new user `elisa' (1002) with group `elisa' ...
Creating home directory `/home/elisa' ...
Copying files from `/etc/skel' ...
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès
Changing the user information for elisa
Enter the new value, or press ENTER for the default
        Full Name : Élisa Stinner
        Room Number :
        Work Phone :
        Home Phone :
        Other : 3,540 Kg, 50 cm
Is the information correct? [Y/n] y

samedi 12 septembre 2009

git : supprimer un commit, rééditer le dernier changelog

Le gestionnaire de code source git a été lancé en 2005. Depuis sa création, de nombreuses extensions et patchs ont été écrits. Du coup, je tombe régulièrement sur des informations contradictoires lors que je cherche comment faire tel ou tel truc dans Google. Quand j'arrive enfin à faire ce que je veux, je le note pour pas l'oublier :-)

Aujourd'hui, les astuces permettent de modifier les commits précédents. Je m'en suis servi sur un dépôt git-svn pour corriger des soucis avant d'envoyer (git svn dcommit) mes modifications upstream. Attention à ne pas modifier des commits déjà envoyés upstream par contre, sous peine d'avoir de gros conflits.

Supprimer un commit git

Si on réalise après coup qu'un commit est foireux, il peut être utile de le supprimer pour éviter de l'envoyer upstream. Dans mon cas, je devais supprimer un commit et non pas l'annuler (revert) car un script svn en pré-commit me bloquait.

La commande pour supprimer le commit numéro XXX :

git rebase --onto XXX~1 XXX

Rééditer le changelog du dernier commit git

Ça arrive de faire une faute de typo, mais de s'en rendre compte qu'après avoir fait le commit. J'ai toujours voulu pouvoir éditer un changelog à posteriori. C'est possible avec svn (sur le serveur), mais c'est très compliqué. Avec git, on peut facilement éditer un changelog, mais uniquement celui du dernier commit.

La commande pour éditer le changelog du dernier commit :

git commit --amend

Il exite également « git commit -c XXX » et « git commit -C XXX » mais je n'ai pas réussi à m'en servir :-(

mercredi 2 septembre 2009

Réparer un dépôt git après l'échec de git svn dcommit

git-svn est bien pratique pour travailler en local (déconnecté) sur un dépôt Subversion. Le plus gros défaut de cet outil est que lorsque la commande "git svn dcommit" échoue, il laisse le dépôt dans un état assez chaotique. Heureusement l'outil git est conservateur : il est toujours possible de revenir en arrière, sauf que l'opération est très technique et délicate.

Récupérer le numéro de commit

La première étape est de retrouver le numéro du commit qui a échoué en ouvrant le fichier .git/logs/HEAD (j'ai mis des "..." pour votre santé mentale, les logs sont assez illisibles sinon) :

...
eb85fa... e72f83... Victor <haypo@bart> 1251220925 +0000 rebase: access: move calls to network/status from frontend to backend
e72f83... 5112b1... Victor <haypo@bart> 1251220965 +0000 refs/remotes/git-svn: updating HEAD
5112b1... 0f86ea... Victor <haypo@bart> 1251220979 +0000 refs/remotes/git-svn: updating HEAD

Le format du fichier est « uid avant | uid après | nom | timestamp | message ». Disons que c'est la dernière opération (la dernière ligne) qui a merdé. Il faut donc revenir à la version précédente (avant dernière ligne) :

e72f83... 5112b1... (...) 1251220965 (...): updating HEAD

Il faut l'ancien numéro de commit (première colonne donc) : e72f83....

Récupérer ses commits

La commande pour revenir à la version précédente (avant le chao laissé par git svn dcommit) est :

git reset --hard e72f83...

Tada ! Pour comprendre ce qui s'est passé, on peut jetter un oeil à .git/logs/HEAD :

...
eb85fa... e72f83... Victor <haypo@bart> 1251220925 +0000 rebase: access: move calls to network/status from frontend to backend
e72f83... 5112b1... Victor <haypo@bart> 1251220965 +0000 refs/remotes/git-svn: updating HEAD
5112b1... 0f86ea... Victor <haypo@bart> 1251220979 +0000 refs/remotes/git-svn: updating HEAD
0f86ea... e72f83... Victor <haypo@bart> 1251221469 +0200 e73f83...: updating HEAD

Articles similaires

Autres articles (en anglais) qui décrivent cette « astuce » :

apt-get install ...

Voici une liste mise à jour des paquets que j'installe sur une Debian vierge. Lire aussi ma liste de l'année dernière. Cette liste vise à obtenir une machine de développement sous KDE4 avant quelques outils réseaux et multimédias.

Administration du système

  • sudo : passer temporaire root pour exécuter une commande
  • screen : terminal qu'on peut détacher / rattacher pour pouvoir conserver des programmes quand on ferme le terminal (typiquement le client IRC irssi)

Environnement de bureau KDE

  • KDE minimal :
    • kde-minimal
    • kde-standard
    • kde-l10n-fr : Traduction française
  • Courrier et RSS :
    • kaddressbook : Carnet d'adresse
    • akregator : chouette client RSS
    • kmail : mon client mail favori
  • kdeplasma-addons : Plasmoïdes KDE4
  • Groupes d'applications KDE :
    • kdegraphics : Appliactions graphiques
    • kdegames : Jeux
    • kdemultimedia : Applications multimédia
    • kdetoys : Gadgets
    • kdenetwork : Outils réseaux
    • kdeutils : Utilitaires
    • kdeedu : Applications éducatives
    • kdeadmin : Outils d'administration
    • kdeartwork : thèmes et styles

Applications graphiques

  • iceweasel iceweasel-l10n-fr : Firefox et sa traduction française
  • flashplugin-nonfree : Plugin officiel Flash

Développement

  • Compilation :
    • gcc : Compilateur C
    • autoconf automake libtool : autotools
    • make
    • cmake
  • Édition de code :
    • exuberant-ctags : ctags, indexeur de code source permettant de retrouver un symbole (variable / fonction) dans un projet
    • manpages-dev manpages-fr : Pages de manuel
    • vim-gtk : Éditeur vim dans sa version Gtk
  • Gestionnaire de source :
    • git-core
    • git-svn
    • mercurial
    • subversion
  • Débogage :
    • gdb : Débogueur C / C++
    • strace : Tracer les appels systèmes
    • ltrace : Tracer les appels aux bibliothèques
    • lsof : Lister les fichiers ouverts
  • valgrind : Recherche les fuites mémoires et accès invalides à la mémoire
  • diffstat : Statistiques sur un patch (différences)
  • Analyseur statique/dynamique de code Python :
    • pychecker
    • pyflakes
    • pylint

Multimédia

  • gimp : Manipulation de photo
  • gqview : Affichage rapide de photos
  • mplayer : Lecteur audio/vidéo
  • vlc : Lecteur audio/vidéo

Réseau

  • nmap : Scanneur de ports
  • tcpdump : Sniffeur réseau (dumpe le trafic)
  • wireshark : Parseur de paquets et sniffeur réseau
  • netcat netcat6 : client et serveur TCP et UDP générique permettant de s'envoyer du texte ou des fichiers

SSH

  • openssh-server : Serveur SSH
  • sshfs : Monter un dossier distant via SSH (utilise FUSE)
  • keychain : Mémoriser la passphrase SSH (Gnome ne semble pas avoir besoin de keychain, il intègre son propre outil)
  • ssh-askpass : Saisie de la passphrase SSH

Compilation de paquets Debian

  • dpkg-dev : outils de base pour compiler un paquet
  • fakeroot : Permet de compiler un paquet sans être root

La commande "apt-get build-dep paquet" permet d'installer toutes les dépendences pour compiler le paquet spécifié.

mardi 1 septembre 2009

Fuseau horaire français, heure d'été et heure d'hiver

Alors que j'essayais d'implémenter une nouvelle fonction Python liée à la gestion du temps, j'ai buté sur un bug. Le but était de supporter les dates avant 1970 (epoch négatif). Le résultat pour les dates entre 1946 et 1969 étaient corrects, par contre pour les dates antérieures il y avait un « trou » incompréhensible de quelques heures.

Fuseaux horaires

En me documentant sur les fuseaux horaires, j'ai appris que la France est passée d'UTC+0 à UTC+2 en 1940, suite à l'invasion allemande. Ah ! C'était donc ça.

La France est le pays du monde qui couvre le plus de fuseaux horaire (12) :

  1. UTC-10 : Polynésie française (Îles de la Société, Archipel des Tuamotu, Archipel des Tubuai)
  2. UTC-9:30 : Polynésie française (Îles Marquises)
  3. UTC-9 : Polynésie française (Îles Gambier)
  4. UTC-8 : Clipperton
  5. UTC-4 : Guadeloupe, Martinique
  6. UTC-3 : Guyane française, Saint-Pierre-et-Miquelon
  7. UTC+1 : France métropolitaine
  8. UTC+3 : Îles éparses de l'océan Indien, Mayotte
  9. UTC+4 : Îles Crozet, La Réunion
  10. UTC+5 : Îles Kerguelen, Îles Saint-Paul et Amsterdam
  11. UTC+11 : Nouvelle-Calédonie
  12. UTC+12 : Wallis-et-Futuna

Heure d'été, heure d'hiver

Déjà, les fuseaux horaires, c'est compliqué. Mais il y a pire : l'heure d'été et l'heure d'hiver ! En juin 1916, la France adopte l'heure d'été et l'heure d'hiver, suite à la proposition du député André Honnorat. À la fin de la 2e guerre mondiale, l'heure d'été est abandonné en 1946 (ouf !), avec une certaine confusion entre zone libre et occupée.

Mais en 1975, l'heure d'été et l'heure d'hiver (UTC+1 et UTC+2) font leur grand retour suite au choc pétrolier de 1974. Depuis 2002, les dates des changements sont fixées par l'Union Européenne.

Selon une étude de la Commission européenne de 2007, « les économies effectivement réalisées sont difficiles à déterminer, et, en tout cas, "relativement limitées" »... Je vois pas pourquoi on s'emmerde à conserver cet héritage idiot qui sert juste à perturber tout le monde (y compris les vaches qui font du mauvais lait pour se venger).

tzdata

Au niveau informatique, sous Linux c'est tzdata qui est utilisé : paquet qui contient les informations sur les fuseaux horaires, heure d'été/d'hiver et les secondes intercalaires. C'est une archive qui est maintenue par Arthur David Olson et disponible sur le serveur FTP du ''National Institutes of Health''. L'archive compressée du 17 août 2009, tzdata2009l.tar.gz, pèse 176 Ko, taille qui montre bien la complexité de la gestion du temps...

Remarques

  • Le changement d'heure estival a été introduit dans l'ensemble des pays de l'Union européenne au début des années 1980.
  • En traversant la frontière depuis l'Afghanistan pour aller en Chine, on passe d'un fuseau horaire UTC+4:30 à un fuseau UTC+8.
  • Un fuseau horaire n'est pas forcément un nombre entier d'heures. Il existe par exemple les fuseaux UTC-9:30 et UTC+12:45

Sources : le calendrier du changement d'heure d'été, heure d'hiver, service public français, heure d'été (Wikipédia)

Je trouve surtout que c'est un grand bordel et qu'il serait plus simple qu'on utilise tous l'heure UTC. D'ailleurs, la Chine n'a qu'un seul fuseau horaire malgré sa superficie !

mercredi 5 août 2009

Migration vers Bitbucket, fin de l'hébergement à la maison (ADSL)

Hébergement à la maison

Fier de ma connexion ADSL Free à Strasbourg (1 à 2 Mo/sec en download, 80 à 100 Ko/sec en upload), j'ai hébergé durant 3 ans mes projets personnels à la maison. L'administration du serveur qui héberge Subversion, Apache et Trac était un peu laborieuse (pour moi) et surtout chronophage. L'administration consiste à créer manuellement une nouvelle instance de Trac, un nouveau dépôt Subversion, et la configuration Apache qui va bien, pour chaque nouveau projet. Mais également à surveiller un peu les logs Apache pour détecter des problèmes et les tentatives de compromission. Il n'y en a eu aucune compromission du serveur bien que je n'ai mis aucune protection en place. Soit les bots automatiques sont idiots, soit les logiciels libres sont sûrs par défaut :-)

Migration sur mon nouveau serveur

J'ai mis 6 mois à me décider à migrer les services de l'ancien serveur au nouveau (pourtant très largement plus rapide) tant je savais que la migration allait être longue. Après la migration, j'ai eu des soucis avec les « VirtualHost » Apache. Virtual Host est la fonction qui permet d'héberger plusieurs sites Internet sous des noms de domaines différents mais sur la même adresse IPv4 (et IPv6). Quand on surfait sur un des sites fusil.hachoir.org, hachoir.org, python-ptrace.hachoir.org ou haypo.hachoir.org : on se retrouvait aléatoirement sur l'un ou l'autre des sites. Je ne sais pas si le problème venait de ma configuration Apache, de Python, de Trac ou encore de WSGI.

Migration du projet Hasard

J'ai d'abord migré mon projet Hasard sur le site Bitbucket. Je suis très content de leurs services (gratuit et sans pub, mais le dépôt Mercurial est limité à 150 Mo) :

  • Code source stocké dans un dépôt Mercurial. Comme Mercurial réalise les commits en local, je ne suis pas dépendant de ma connectivité à Internet pour faire des commits (ex: dans le train). Et les commits instantanés m'incitent à faire plus de petits commits, donc plus faciles à relire.
  • Wiki éditable en ligne et via Mercurial (dépôt Mercurial séparé)
  • Gestion des tickets similaire à Trac
  • Dépôts Mercurial accessibles en HTTP, HTTPS et SSH

Migration des tous mes projets

Finalement, j'ai profité de mon déménagement pour migrer tous mes projets personnels sur Bitbucket. Nouvelles adresses de mes projets :

Je suis plutôt content que la disponibilité de mes projets personnels ne dépendent plus de l'état de mon réseau électrique (de la météo) ou de l'état de ma connexion à Internet.

samedi 4 avril 2009

Projet de loi Hadopi : un nouveau succès de la démocratie !

Les tentatives de contrôler la diffusion des œuvres par l'industrie musicale et du cinéma sont vraiment navrantes. Malgré les moyens considérables déployées depuis une dizaine d'année (disons que Napster marque l'année zéro du P2P : 1999) dans cette croisade contre les réseaux pair à pair (P2P), ces réseaux existent toujours et au contraire gagnent en popularité chaque année.

Brêve histoire des réseaux pas tout à fait pair à pair

Les premiers réseaux P2P (années 2000) dépendaient de quelques nœuds centraux. Il suffisait de trouver les responsables de ces nœuds pour couper tout le réseau. Comme ils étaient américains, les maisons de disque (Internet était trop lent pour télécharger des films) n'ont pas eu de mal obtenir gain de cause.

Les réseaux évoluèrent pour ne plus dépendre de nœuds centraux, et la solution du procès ne fonctionnait plus. Il y a eu des procès d'internautes, aux États-Unis comme en France, mais l'impact sur les consciences semble peu efficace.

Tentative d'éradication du P2P par des moyens techniques

Une autre approche est la déception : tenter de polluer les réseaux en injectant des fichiers corrompus. Bien que des sociétés soient payées pour diffuser continuellement des chansons tronquées ou des vidéos pornographiques portant le nom de dessins animés pour enfant (ou du dernier film à succès), cette technique ne semble pas non plus porter ses fruits. Les internautes s'organisent, montent des forums, et la technologie évolue (BitTorrent ?).

Il existe aussi le tatouage numérique (watermarking) : technologie de pointe mais extrêmement coûteuse et pénible pour l'éditeur de contenu. Effectivement, les éditeurs de solution de tatouage sont paranoïaques car leur technologie repose sur le secret. Ils surveillent donc leurs clients (pas les internautes, les éditeurs de contenu) de très près (l'arroseur arrosé ?).

Bon bref, pas besoin d'en écrire des tas, il semble clair que ce n'est pas une solution technique qui va sauter l'industrie du disque et du cinéma.

Faire voter une loi, une solution de dernier recours ?

L'industrie attaque donc sur un nouveau front : la législation à grand coup de lobbyistes. Il y a d'abord eu une tentative en 2006 avec la « réponse graduée » dans la loi DADVSI, mais le conseil constitutionnel a censuré cette proposition.

Pendant ce temps (23 février) à l'autre bout du monde, la Nouvelle Zélande a suspendu un projet de loi similaire à Hadopi.

Plus récemment (le 26 mars), le parlement européen a adopté à 481 voix contre 25 (et 21 abstentions) un rapport intitulé « Renforcement de la sécurité et des libertés fondamentales sur Internet » qui dit justement que l'accès à Internet ne peut être refusé comme une sanction par des gouvernements ou des sociétés privées.

Qu'importe, le projet Hadopi est maintenu à l'assemblé nationale. Ça a fonctionné car la la loi a été acceptée à 23h. Elle a été votée par 16 députés : 10 pour, 4 contre, 2 abstentions, et hum... 528 absents (ils étaient tous à la piscine).

C'est marrant quand même, notre ministre de la culture se justifiait en disant qu'il n'y avait que « 5 gus dans un garage » opposés au projet de loi Hadopi. Alors que le mouvement « Blackout » lancé fin février a été suivi par plus de 12.200 sites Internet et que la pétition lancé par la magazine SVM a collecté 47.903 signatures (députés européens, associations, chefs d'entreprise, et même des artistes !).

L'industrie de la musique et du cinéma se porte bien

Bizzarement, j'apprend que le chiffre d'affaire global de la musique, en incluant les concerts, est en augmentation. Le cinéma a quant à lui battu des records d'entrées en 2008 (en France, aux USA et en Suède). Les jeux vidéo ont augmenté leur chiffre d'affaire de 22% en 2008 par rapport à 2007, qui était déjà une année exceptionnelle.

Résumé

Pour ceux qui n'ont rien suivi à Hadopi (comme moi), je vais tenter de résumer (maladroitement donc). C'est un projet de loi liberticide (donne le droit à des sociétés privées d'obtenir votre nom et adresse selon votre adresse IP) qui va provoquer une vague de censure (fermeture des points d'accès wifi, filtrage par liste blanche dans les écoles et bibliothèques, etc.), mais ne va pas éradiquer le P2P (au mieux, ça va se calmer pendant quelques mois). Les techniques est toujours la même : la déception (rendre le P2P plus difficile : réseaux anonymes chiffrés, plus lent) et la peur (bloquer par mesure préventive).

Je pense que la meilleure lutte contre Hadopi est d'informer les internautes. Quelques pointeurs : l'excellent résumé d'Hadopi (une page A4) par la Quadrature du Net et l'article Wikipédia.

MISE À JOUR : J'ai corrigé la phrase « acceptée à 23h par 16 députés, 1 contre (Lionel Tardy, merci à lui !), et hum... 560 absents (ils étaient tous à la piscine) ». Merci à Arcaik de m'avoir indiqué le bon nombre de votants.

vendredi 20 février 2009

Bibliothèque mathématique avec arrondi correct : crlibm

L'INRIA développe actuellement une bibliothèque mathématique avec arrondi correct : crlibm. Il existe déjà des bibliothèques similaires comme libultim, libmcr ou MPFR, mais elles sont peu performantes. Un arrondi correct signifie que tous les chiffres du résultat sont exacts, alors que les bibliothèques mathématiques standards ne calculent qu'un résultat approché (chiffres les moins significatifs). En l'occurrence, il s'agit des fonctions cos(x), sqrt(x), log(x), etc.

libultim

Abraham Ziv est l'auteur du premier algorithme de calcul avec arrondi correct : la stratégie de l'oignon. Elle consiste à calculer avec une certaine précision : si on peut déterminer l'arrondi correct on s'arrête, sinon on recalcule avec une précision plus importante. On recommence jusqu'à ce qu'on puisse arrondir correctement. Ziv a implémenté cette technique dans la bibliothèque libultim (Accurate Portable Mathlib) pour IBM. La méthode a été publiée en 1991 : Fast evaluation of elementary mathematical functions with correctly rounded last bit.

libultim souffre de plusieurs défauts : le calcul est lent (particulièrement dans les « pires cas »), les algorithmes ne sont pas prouvés, et seul l'arrondi au plus près (nearest) est implémenté (il existe 3 autres modes : zéro, -inf, +inf).

libultim est distribué sous licence LGPL, mais je n'ai pas réussi à retrouver sa trace. Son site web est accessible par les archives du web : http://oss.software.ibm.com/mathlib/ (archives de 2005).

MPFR

La bibliothèque MPFR permet de faire des calculs sur des nombres flottants multi précision. Elle contient les fonctions trigonométriques, la fonction exponentielle, etc. avec arrondi correct. Les calculs utilisent des nombres entiers multi précision (bibliothèque GMP).

MPFR est développé par l'INRIA et distribué sous licence LGPL. La dernière version date de janvier 2009.

scslib

Les processeurs récents ont des unités de calcul en nombre flottant très rapides, parfois plus rapides que les calculs en nombres entiers. La bibliothèque scslib (The Software Carry-Save Multiple-Precision Library) permet de faire des calculs (a + b, a × b, etc.) multi précision sur des nombres flottants en stockant chaque valeur dans plusieurs nombres flottants. La conversion entre un nombre multi précision et un flottant IEEE 754 est très rapide, en comparaison de MPFR (qui utilise des nombres entiers) par exemple. L'article Software carry-save for fast multiple-precision algorithms (2002) présente en détail les concepts et astuces utilisées.

scslib est distribué sous licence LGPL. La dernière version date de 2003.

crlibm

Le travail sur crlibm (correctly rounded mathematical library) a débuté par l'étude des pires cas par Jean-Michel Muller et Vincent Lefèvre. Ils ont par exemple calculé que l'arrondi arrondi correct en double précision (53 bits) nécessite au maximum un calcul sur 118 bits pour le logarithme. crlibm utilise la bibliothèque scslib pour le calcul multi précision sur les nombres flottants. Les algorithmes sont prouvés, un logiciel de génération de preuve a été écrit pour l'occasion. Les performances sont bonnes en comparaison des autres bibliothèques de calcul en arrondi correct, mais restent plus faibles que celles des bibliothèques mathématiques standards (arrondi inexact).

Publications liées à crlibm :

Fin 2007, crlibm a été proposé pour l'inclusion dans GCC, mais a été refusé : Using crlibm as the default math library in GCC sources.

crlibm est distribué sous licence LGPL. La dernière version date d'octobre 2008. Voir aussi la page du projet sur LipForge.

vendredi 13 février 2009

FOSDEM, Fusil, bières, python-ptrace et conférences

Triple Carmelite Le week-end dernier se tenait à Bruxelles l'édition 2009 de FOSDEM, LA rencontre européenne des développeurs de logiciel libre. J'y ai présenté Fusil le fuzzer qui a été inclus dans le Main track. La vidéo de la conférence devrait être bientôt disponible. En attendant, j'ai mis le diaporama en ligne : fosdem_2009.pdf (je me suis remis à Beamer !).

Pour l'occasion, j'ai publié Fusil 1.2 avant l'événement (suivi rapidement par Fusil 1.2.1), et python-ptrace 0.6 aujourd'hui. La nouvelle version de Fusil arrive avec une meilleure documentation, en particulier avec un guide d'utilisation et un index des documentations, de nombreuses corrections de bugs, des améliorations des agents réseaux, etc. Du côté de python-ptrace, strace.py peut maintenant afficher le pointeur d'instruction, Mark Seaborn a écrit une extension (itrace.py) à strace.py (pour déboguer la libc dans le bac à sable de Google Chrome), PtraceSignal donne des informations plus précises, etc..

À FOSDEM, j'ai essentiellement bu des bières et travaillé sur ma présentation (je déconne ! elle était prête depuis des semaines !). Je vous conseille d'ailleurs la Triple Carmélite (que m'a conseillée Jean) et la Rochefort niveau 8 (découverte par hasard, la 10 est trop forte).

Rochefort

Niveau conférences, j'ai retenu les présentations :

  • LLVM et Gallium3D par Stéphane Marchesin : utilisation du compilateur LLVM dans les pilotes 3D d'Xorg pour optimiser les shaders (micro-programmes utilisés dans les GPU de nos cartes graphiques)
  • Nemiver par Dodji Seketeli : jolie interface graphique à GDB en Gtk+ avec une vue du code orientée debug (ex: survoler une variable affiche sa valeur) qui semble très fonctionnelle
  • L'introduction à XMPP (Jabber) par Remko Tronçon et Peter Saint-Andre était jolie, fluide et bien préparée. Par contre, je n'ai pas appris grand chose. Ça confirme juste que Jabber est vraiment bien conçu (Peter est l'un des auteurs des spécifications XMPP) et très largement extensible.

Le « petit » monde du logiciel libre est de plus en plus actif. La fréquentation et la taille de FOSDEM ne cesse d'augmenter. D'ailleurs, Debian Lenny devrait sortir ce week-end, en même temps que Python 2.6.2 et 3.0.1.

mardi 27 janvier 2009

Hors-série Linux Mag : Explorez les richesses du langage Python

Depuis un an, Philippe Biondi parcourait la France sans relâche à la recherche d'auteurs pour écrire un hors-série dédié à Python. Grâce à sa persévérance, le hors-série dédié à Python est enfin en vente dans toutes les librairies (en France) !

J'ai écrit quatre articles dans ce hors-série.

Nouveautés de Python 2.6

Version améliorée, corrigée et illustrée (d'exemples) de ma dépêche linuxfr.org (elle-même basé sur What’s New in Python 2.6 que j'ai traduit).

Nouveautés de Python 3.0

Article écrit avant la sortie de Python 3 par ma propre expérience, et avant que la documentation What’s New In Python 3.0 ne soit écrite par Guido van Rossum (... mais finalement publié après).

Trucs et astuces

Article écrit co-écrit par Philippe Biondi même s'il est trop humble pour l'avouer !

Ctypes et Python

Guide pratique pour écrire un binding C en Python avec ctypes. C'est aussi un retour d'expérience sur mes bindings pynetfilter_conntrack et python-ptrace.

--

Ruez-vous en librairie, il n'y en aura pas pour tout le monde ! Je me suis déjà empressé d'acheter mon exemplaire. J'ai particulièrement apprécié l'article de Gaël Varoquaux : Python comme langage scientifique, article qui sent le vécu et l'utilisation concrète de Python.