Présents à la réunion, en fonction de la disposition autour des tables
Dam's,
Olivier,
Laurent (B),
Nils,
moi,
Adam, notre invité d'Australie,
Éric (« echo »),
Kai,
Martin, un Suédois,
Kees, un Hollandais,
Jean-Bernard (si j'ai bien noté son nom),
Stéphane,
Théo,
Vincent,
et Éric (glb).
Nous avons mangé de la salade de lardons, des andouillettes
et du boudin.
Nous avons bu de la Leffe, de la Pilsen, de l'Orval
de la Badoit et une vodka.
La réunion a eu lieu au Maldoror. Compte tenu de la disposition
de la salle, nous n'avons pas pu avoir des tables adjacentes
et donc la réunion s'est retrouvée scindée en deux groupes.
Certains sont allés passer quelques minutes avec l'autre
groupe, mais les contacts ont été hélas assez limités.
Il a été question d'installer des modules Perl sur une machine
Windows.
Si l'archive
PPM
existe, pas de problème. Sinon... Pour un module pur Perl, il y a la
possibilité de faire la copie à la main des fichiers .pm
vers le répertoire adéquat. Si c'est un module
Perl-XS,
la copie « à la main » ne suffit pas.
Olivier a signalé
un site web
où l'on peut faire
la demande de génération d'une archive PPM
et où on pourrait la récupérer un peu plus tard.
Heureusement, il y a une autre solution depuis peu, grâce
à notre hôte australien,
Adam Kennedy.
Il s'est occupé du projet
Perl on a Stick
et de la distribution
Strawberry Perl
pour Windows.
Il a rassemblé tout ce dont on pouvait avoir
besoin pour travailler avec Perl, y compris pour
charger des modules de
CPAN
et pour les installer, c'est-à-dire entre
autres un compilateur C pour l'installation
des modules utilisant XS.
Le tout fait un peu moins de 200 Mo
et Adam diffuse cela sur une clé USB de 1 Go,
ce qui laisse de la place pour y stocker quelques fichiers
personnels de travail. Il nous en a vendu quelques
exemplaires, au prix de 10 euros.
[ Peut-être aurez-vous droit un jour à la
vidéo
ou aux transparents
de la présentation
d'Adam quelques jours plus tard à
Copenhague.
]
On dit que
CPAN
est la grande force de
Perl.
Il y a un revers à la médaille. Puisque toutes les solutions
sont déjà disponibles, c'est qu'il n'y a plus de problème
intéressant à résoudre, ni d'application intéressante
à développer. En revanche, pour
Python,
tout reste à développer. L'un des participants a
suggéré de prendre tous les modules orientés objet
et d'en donner la version suffixée par
::Moose.
Sans avoir recours à cet artifice, à mon avis, il y aura toujours
des problèmes à résoudre ou des programmes à inventer.
C'est ainsi que j'ai vu récemment que
Jérôme Quelin,
l'auteur déjà connu de
Inline::Befunge,
a créé un
module permettant de jouer au petit train.
[ J'ai essayé de chercher des exemples de problèmes qui ne seraient pas
encore résolu dans CPAN. Mes brèves recherches m'ont montré qu'il n'existe
pas de module simulant un
tamagotchi.
Il y a peut-être quelques ajouts à effectuer dans la
catégorie des algorithmes.
Il doit bien y avoir d'autres sujets, mais ils ne me sont pas
venus à l'esprit.
]
Il y a eu une discussion sur comment « slurper » un
fichier. Il faut alimenter la variable
$/
à undef avant de lire le fichier, ou bien
lancer le script avec l'option
-0777.
Dans Programming Perl, Second Edition
(alias Fido), l'explication était que le nombre octal 777
ne correspondait à aucun caractère ASCII valide, donc on ne risquait
pas de le trouver dans le fichier et l'opération de lecture allait
donc jusqu'au bout du fichier. Dans
Programming Perl, Third Edition
(alias Amelia), les auteurs reprennent cette explication, tout
en ajoutant entre parenthèses qu'il existe cependant un caractère
Unicode valide avec cette valeur,
LATIN SMALL LETTER O WITH STROKE AND ACUTE,
mais que cela ne viendrait à l'idée de personne d'utiliser
ce caractère pour délimiter des enregistrements.
Laurent a tenté de relancer la discussion sur l'organisation
des Journées Perl 2009. Est-il préférable d'organiser
la conférence en semaine, en week-end ou à cheval sur
les deux, soit un vendredi et un samedi ?
Faut-il prévoir des exposés en anglais et inviter
des participants étrangers ? Pour les sponsors,
c'est simple, on prend les mêmes que les fois précédentes
et on recommence. Sauf que, fais-je remarquer,
O'Reilly France n'existe plus.
Il a été aussi question d'OSDC, mais je ne me souviens plus
s'il en était sorti quelque chose de concret.
Laurent évoque également la rédaction du compte-rendu de
l'assemblée en ligne
qui a eu lieu l'avant-veille.
Cela lui a pris deux heures pour rédiger ce compte-rendu,
quasiment autant que l'assemblée elle-même. Autant
mettre en ligne la transcription de la réunion.
On me demande combien de temps je mets à rédiger les
comptes-rendus des réunions mensuelles. J'avoue
que je ne sais pas combien de temps cela me prend, mais
cela doit être encore plus long.
Aux dernières nouvelles,
Audrey Tang
se porte mieux et elle aurait repris le
développement
de Pugs.
Nous avons pu constater la présence à la réunion de
Dam's.
Il n'est pas là en visite, il est là parce qu'il a
décidé de quitter Londres et de revenir en France.
Il n'a pas encore trouvé de logement, il est donc provisoirement
hébergé par Guillaume Rousse.
Dam's nous signale qu'il existe sur CPAN un module très pratique,
RT::Client::Console,
qui permet d'accéder à
Request Tracker
avec une interface
Curses.
Bon, d'accord, Dam's fait de la pub pour
un de ses propres modules.
[ Et alors ? Il n'y a rien de mal à cela, haro sur la fausse
modestie ! Et en mon temps, je n'ai pas hésité moi non plus
à faire de la pub pour le
calendrierrépublicain.
]
Nils raconte que l'un de ses collègues n'utilise pas
les hachages pour construire la programmation orientée objet.
Il préfère utiliser un tableau,
en déclarant les indices numériques sous forme de
constantes symboliques. Cela rappelle à certains les
pseudo-hachages,
qui ont été introduits dans Perl 5.005 et supprimés
de Perl 5.10. L'idée était de pouvoir utiliser à la fois
de la lisibilité de l'accès par clé alphabétique et
de la rapidité de l'accès par numéro dans un tableau.
Un autre avantage était que les accès pouvaient être contrôlés
lors de la phase de compilation, donc cela facilitait le
débuggage et la correction.
Tous les accès par clé alphabétique au pseudo-hachage
étaient contrôlés à la compilation et transcrits en un accès
sur un tableau. Mais on s'est rendu compte que cette
fonctionnalité entraînait des pénalités dans d'autres
domaines et donc que le jeu n'en valait pas la chandelle,
surtout qu'il existe
d'autres façons
pour contrôler les clés.
Et pour revenir au collègue qui fait des pseudo-hachages
« à la main », on ne sait pas si les gains
en vitesse prévalent sur la perte en lisibilité.
Il est question d'une société qui développe un logiciel
analysant les sites web 2.0 pour en extraire les relations
sociales entre les internautes. Mais quel est le
business model de cette société ?
Réponse : c'est une start-up.
Cela explique tout...
Laurent raconte que son
Nokia N810
possédait en standard un logiciel de messagerie assez basique.
Il a donc décidé d'installer
Claws,
un logiciel un peu plus évolué
sur son Nokia. À la réflexion, les fonctionnalités plus
avancées ne lui apportaient pas grand-chose de plus et
le logiciel de base suffisait. Il a donc désinstallé
Claws, mais alors la messagerie ne fonctionnait
plus, même en utilisant le logiciel standard. Laurent
a donc été obligé de réinstaller Claws
pour pouvoir utiliser le logiciel de base.
Les partisans de Python aiment signaler que leur langage
possède un opérateur
lambda,
ce qui permet
de faire de la programmation fonctionnelle et que,
par conséquent, Python est meilleur
que Perl qui ne possède pas d'opérateur lambda.
C'est du buzz ! Perl ne possède
peut-être pas d'opérateur lambda, mais il
permet de définir des fonctions anonymes, accessibles
par référence. De plus, Perl possède
map
et grep,
alors que Python ne possède que
map
(ou l'équivalent).
Pour faire un grep, il faut faire des acrobaties
de programmation.
[ Après avoir lu la documentation du lien ci-dessus, j'ai l'impression
que filter en Python permet de faire la même chose que
grep en Perl. Un simple changement de mot-clé, ce n'est donc
pas si acrobatique que cela.
]
Olivier signale que, quand même, Python permet de définir des
listes
de façon un peu plus lisible que Perl.
Par exemple, pour la liste des n premiers carrés, on aurait en Perl :
@carres = map{$_ * $_}1..10;
et en Python
carres = [ n * n for n = 1..10 ];
Avec les crochets caractéristiques des listes, on voit
tout de suite que l'opération permet de définir une liste.
Il ne reste plus qu'à lire l'intérieur des crochets pour savoir
de quoi est constituée la liste.
Laurent nous raconte qu'à son travail, il est chargé de
rebooter un serveur tous les soirs, puis de se reconnecter
sur ce serveur avant de partir. S'il ne se reconnecte pas,
les traitements de la nuit ne s'exécuteront pas !
Évidemment, il s'est fait avoir une fois (pas content le
chef le matin suivant !).
Il trouve surprenant pour un serveur avec une telle
responsabilité que cela nécessite ce genre de manip... Mais la raison
de ce montage se perd dans l'Histoire.
Peut-être que la commande
runas
pourrait permettre de résoudre le problème.
Nils nous raconte une anecdote qu'il
a lue quelque part. Dans un service informatique, il y avait
un serveur sur lequel des traitements s'exécutaient
tous les soirs. Or, de temps en temps, le serveur se bloquait,
pour une raison indéterminée, vraisemblablement une fuite de mémoire.
Dans ce cas, il suffisait juste de redémarrer la machine, les traitements
se relançaient automatiquement. Mais en pleine nuit, il n'y avait
personne en salle machine pour vérifier le fonctionnement du serveur
et appuyer sur le bouton RESET. Quelqu'un a alors trouvé l'astuce
suivante : il a pris une vieille machine, sans se préoccuper
des caractéristiques (vitesse du processeur,
capacité mémoire,
version de l'OS), il suffisait juste que la machine ait un lecteur
de CD-ROM et une connexion au réseau. Puis il a écrit un petit script qui, toutes les minutes,
envoie un ping au serveur à problème. S'il obtient la réponse, tant
mieux, c'est que le serveur est toujours actif. S'il n'obtient pas
de réponse, alors le serveur est bloqué et dans ce cas le script
de la vieille machine ouvre le tiroir du CD-ROM. L'admin a placé
la vieille machine en face du serveur à problème, puis il l'a positionnée
avec soin, pour que l'ouverture du tiroir du CD-ROM provoque l'appui
du bouton RESET de la machine en face. Une fois ce réglage accompli,
l'admin a placé une feuille de papier sur la vieille machine, avec
les deux avertissements :
NE PAS ETEINDRE !
NE PAS DEPLACER !
Et depuis, les traitements passent sans problème, car si le besoin
s'en fait sentir, le serveur redémarre sans intervention humaine.
L'histoire ne s'arrête pas là.
Compte tenu de l'évolution du matériel, le serveur principal
est devenu lui aussi dépassé. Il a donc été remplacé.
Et lorsqu'il a été retiré de la salle informatique,
le nouvel admin a bien pris soin de ne pas déplacer le PC
qui se trouvait juste en face. Et depuis l'arrêt du serveur
principal, tous les ping de la vieille machine
échouent. Donc, quelque part au fond d'une salle informatique,
existe un vieux PC qui, toutes les minutes, ouvre le tiroir
du CD-ROM et le referme...
Cela rappelle à Olivier qu'il a remporté un concours
de programmation lors d'une
démopartie
(la « LTP V »).
L'épreuve consistait à faire une chorégraphie
pour PC sur une chanson de Britney Spears. Les PC participant
au concours devaient ouvrir et fermer leur tiroir à CD-ROM
en rythme avec la chanson. Olivier disposait d'un avantage
certain sur ses adversaires : son PC possédait le lecteur
de CD-ROM monté dans la configuration d'origine, plus un graveur ajouté par la suite.
Il pouvait donc ouvrir les deux tiroirs ensemble, ou l'un après
l'autre avec un délai bien calculé, ou bien fermer un tiroir
pendant que l'autre s'ouvrait.
[
Pas d'information sur Internet pour cette démopartie. En revanche,
Olivier a participé à la précédente LTP IV et les solutions sont
disponibles sur FTP.
]
La compagne de Nils a étudié la comptabilité
et elle s'en sert à la maison. Du coup, lorsque Nils
achète un nouveau matériel informatique pour ses besoins
personnels, sa compagne lui fait un plan d'amortissement
pour déterminer le moment où la machine ne vaudra plus un clou.
Ce n'est pas la première fois que j'entends ce genre d'anecdote.
Une ancienne collègue m'avait raconté que notre chef commun de l'époque
faisait lui aussi de la comptabilité à la maison.
Mais il ne se contentait pas de faire des plans d'amortissement,
il faisait aussi de la comptabilité analytique. D'où le
genre de question qu'il se posait, comme me l'avait raconté
à l'époque mon ancienne collègue :
Dimanche dernier, nous étions invités chez des
amis. Nous leur avons apporté un bouquet de fleurs.
Ce sont des amis de ma femme, qu'elle a rencontrés avant
que je l'épouse, mais comme nous nous voyons souvent, ce
sont devenus un peu mes amis également. Du coup, est-ce qu'il
faut que j'impute le prix du bouquet entièrement sur le
compte analytique de ma femme, ou bien faut-il que j'en impute
la moitié sur son compte et la moitié sur le mien ?
Ou une répartition intermédiaire ?
Parfois, certains bugs sont incompréhensibles.
Par exemple, votre machine Unix prétend que :
/bin/sh not found
Alors que le fichier existe.
Tout simplement, la partition où se trouve /bin
est montée en noexec. Ou bien, elle refuse
d'exécuter un script Perl commençant par la ligne
« shebang » habituelle #!/usr/bin/perl.
C'est tout simplement un script écrit et sauvegardé sur
une machine Windows, puis transféré tel quel sur une machine
Unix, en conservant les séparateurs CRLF de Windows.
Alors évidemment, la machine cherche un interpréteur
perl\x0d et ne le trouve pas.
Il a été question de
Visual Basic.
Il existe en fait trois langages différents, qu'il ne
faut pas confondre. Il y a
Visual Basic
tout court. Il y a
VBA,
alias « Visual Basic for Applications ». Et il y a enfin
VBScriptpour le Web.
Laurent s'est plaint du mauvais tour que lui a joué son chat.
Le chat est monté sur le meuble où se trouvait le clavier de son ordinateur
et s'est promené sur le clavier. La première touche sur laquelle
il a posé une patte était la flèche vers le haut. Sous bash,
cela rappelle la dernière commande tapée, soit dans ce cas
un shutdown. Puis il a posé une deuxième patte sur
la touche RETURN, ce qui a exécuté la commande.
À toutes fins utiles, je signale qu'il existe
un logiciel
qui permet de détecter si c'est un humain ou un chat qui
tape sur le clavier d'un ordinateur. Ce logiciel a remporté
un prix IG Nobel en 2000.
Notre hôte néerlandais
a participé le jour même au tournage d'un film,
la Blonde aux seins nus.
Il ne s'agit pas d'un film porno (donc vous pouvez cliquer
sur le lien précédent sans crainte), mais d'une histoire
à propos du vol d'un
tableau de Manet.
La scène qu'il vient de tourner se passe sur une
péniche qui en croise une autre. Elle a été tournée à
Conflans-Sainte-Honorine,
bien sûr, haut lieu de la
batellerie.
L'une des raisons pour lesquelles notre hôte a
été engagé comme second, voire troisième rôle dans ce film,
c'est que sa compagne est russe et que, par conséquent,
il peut mettre en relation l'équipe du film avec
des Russes qui pourraient tenir le rôle de mafieux
dans ce film.