Présents à la réunion, en fonction de l'ordre d'arrivée, ce qui correspond
à la disposition autour de la table.
moi,
Théo,
Olivier,
Lionel (un copain d'Éric),
David (L),
Julien,
Éric (glb),
et Kai.
Nous avons mangé de la salade de gésiers, des entrecôtes et des pavés de boeuf
et du poulet au citron. Nous avons bu de la bière d'Orval, de la Pilsen, de la
Pelforth, du pastis et du Porto. Je suis parti alors que les autres commandaient
les desserts. Je sais donc que quelqu'un a pris des profiterolles.
La réunion a eu lieu au Maldoror. Compte tenu du faible nombre de participants,
nous avons pu nous placer tous autour de la même table, quittes à
déplacer légèrement les fauteuils.
Théo vient de changer de mission. Cela fait deux
semaines qu'il travaille à Vélizy et il a déjà
changé trois fois de bureau, donc de PC. Dans ces conditions,
à quoi cela sert-il d'installer Perl sur une machine
si l'on sait que l'on en changera dans trois ou quatre
jours ? Du coup, pour ses simples besoins de scripts,
il utilise
Lua.
L'interprêteur occupe 100 Ko, pas plus. C'est donc
très facile à installer.
Il y a une solution pour pouvoir installer Perl
facilement. Cela reste toujours volumineux,
mais l'installation se résume à une copie
de fichiers. C'est la distribution
Strawberry Perl
qu'Adam Kennedy
nous a présentée lors de sa visite
il y a deux mois.
Dans cette distribution, Perl a été configuré et
compilé de manière qu'il n'y ait jamais de
chemin absolu de fichier dans l'exécutable ni
dans les fichiers de configuration. Avec une simple
copie de l'arborescence, on peut donc installer
un Perl qui fonctionne.
À vrai dire, j'ai acheté une clé USB avec Strawberry Perl
à Adam lors de sa visite, mais je ne l'ai pas encore
installée sur une machine Windows.
La clé USB qu'Adam a vendue à certains est une
clé USB normale, un bâtonnet long d'une demi-douzaine
de centimètres et épais de quelques millimètres.
Le seul détail particulier est la mention de Perl
et le dessin d'un oignon. En revanche, Adam avait
une autre clé USB, qu'il a utilisée à
Copenhague.
C'était une clé USB en forme de fraise.
D'accord, cela impressionne, mais d'un autre
côté, ce n'est pas pratique. En général, sur un ordinateur,
on trouve plusieurs ports USB les uns à côté des autres
ou superposés. Avec une clé USB en forme de fraise bien
rebondie, les ports USB adjacents sont bloqués en pure
perte.
Lors de son exposé à Copenhague,
Adam a replacé
Strawberry Perl
dans un contexte
plus général. C'est une distribution pour un public
plutôt habitué à utiliser des interfaces en ligne de commande,
ce qui permet par exemple l'utilisation de
CPAN.pm
pour installer des modules.
Il a l'intention de diffuser également
Chocolate Perl,
une distribution destinée aux utilisateurs qui sont
habitués à cliquer sur des boutons et qui seraient
perdus devant une interface en ligne de commande.
À mon avis, ce projet est largement plus difficile
que le premier.
Cela fait bientôt deux ans que la dernière version de
Acme::MetaSyntactic
a été publiée sur
CPAN.
Normalement, BooK doit réorganiser le module pour le découper
en plusieurs distributions distinctes, mais que l'on peut
installer en un seul coup grâce à un module
de type bundle.
En attendant, certains contributeurs, trouvant le temps long,
ont décidé de diffuser
leur propre
module
méta-syntactique.
J'ai remarqué récemment l'apparition de
Acme::MetaSyntactic::daleks
dont l'origine est la suivante :
un jour, sur un canal Perl sous IRC, quelques
programmeurs Perl se sont payé un délire en adaptant des titres
de films pour y mettre des
Daleks.
Ian Langworth
a récupéré la session IRC et en a extrait la liste
des titres de film obtenus, qu'il a postée
sur son journal
dans Use Perl.
Et Sébastien
a repris cette liste pour en faire un module méta-syntactique.
Lorsque j'ai eu connaissance de ce module, je lui ai envoyé
quelques compléments, tirés de la
filmographie
d'AlfredHitchcock.
Parmi mes projets concernant Acme::MetaSyntactic,
il y en a un qui risque d'être volumineux et, par conséquent,
long à écrire, un module listant des
rétro-acronymes.
Il y a un problème, dans la mesure où Acme::MetaSyntactic
impose que les noms soient des identificateurs valides
pour Perl (ou C, ou la plupart des langages actuels), donc que
ces identificateurs doivent obligatoirement commencer par une lettre,
pas un chiffre. Or le fleuron de ma collection est l'acronyme
2GETHER, qui signifie
2nd Generation of European Tilting Highly Efficient Rotorcraft.
Impossible de transcrire convenablement le « 2 ».
Et pourtant, cet acronyme serait un nom de fichier parfaitement valide
sous Unix et sous Windows et serait également un identificateur
autorisé en Lisp et en Cobol.
Lionel ne fait quasiment pas de Perl, il utilise essentiellement
le shell à son travail. Il n'est donc pas au courant de ce qui se
passe au sein de la communauté Perl, notamment il ne sait pas
où en est
Perl 6.
Olivier résume donc à son intention les nouveautés attendues
de Perl 6, notamment le nouveau modèle objet (dont on peut
disposer dans
Moose
mais on sent un peu trop la « tuyauterie »
destinée à mettre en oeuvre le module),
ainsi que la possibilité de modifier le langage
selon ses besoins en redéfinissant la grammaire
du langage et finalement une nouvelle syntaxe pour passer les arguments
lors de l'appel d'un sous-programme. À propos de cette nouvelle
syntaxe, évitons de dire qu'elle est complexe. Disons plutôt
qu'elle est riche, cela élimine l'aspect légèrement péjoratif
du terme « complexe ».
David se fait l'écho d'un certain découragement dans le monde
du logiciel libre au sujet de Perl 6. Si l'on se réfère à
l'historique de Perl,
la version 5 de Perl a été diffusée en 1994 et on a commencé à parler
de Perl 6 en 2000. Si l'on fait le compte, il y a eu 6 ans
pendant lesquels il était question uniquement de Perl 5
et cela fait, pour l'instant, 8 ans que l'on parle de Perl 6
tout en utilisant Perl 5.
[ Pendant ces 8 ans, on a eu il est vrai
quelquesimplémentations
de Perl 6, mais ce sont des implémentations expérimentales.
En revanche, les nouvelles versions de Perl 5 diffusées
sont loin d'être expérimentales et ont apporté de nombreuses
améliorations.
]
Julien a évoqué les calculatrices
HP-48
dans lesquelles on peut définir une valeur physique,
constituée d'un nombre et d'une
unité physique
comme le mètre par seconde. Il regrette que cette idée n'ait
pas été reprise pour Perl 6.
Cela dit, je lui rétorque qu'il doit sûrement exister
quelques modules sur CPAN
qui traitent des unités physiques.
[ Et compte tenu de leurs documentations respectives,
il semblerait que
Data::Dimensions
et Math::Units::PhysicalValue
fassent quasiment ce qu'une HP-48 fait avec les unités de mesure.
Voici deux exemples pour calculer la vitesse de la Terre
sur son orbite, sachant que le rayon de cette orbite est
de 150 millions de kilomètres.
## Calcul de la vitesse de la Terre#useData::Dimensions;my$orbite = Data::Dimensions->new({m=>1});my$temps = Data::Dimensions->new({s=>1});$orbite->set = 1.5e11 * 2 * 3.141592;$temps->set = 365.25 * 24 * 60 * 60;my$vitesse = $orbite / $temps;printf"%g m / %g s = %g m/s\n",$orbite,$temps,$vitesse;
ou alors
## Calcul de la vitesse de la Terre#useMath::Units::PhysicalValue;my$orbite = 2 * 3.141592 * Math::Units::PhysicalValue->new('1.5e8 km');my$temps = Math::Units::PhysicalValue->new('365.25 day');my$vitesse = $orbite / $temps + '0 m/s';printf"%s / %s = %s\n",$orbite,$temps,$vitesse;
Le seul avantage restant de la HP-48 sur Math::Units::PhysicalValue,
c'est que j'aurais pu initialiser les valeurs en utilisant
l'unité astronomique à la place du kilomètre et l'année à la place du jour.
Attention, si vous souhaitez disposer d'unités dérivées comme l'année
ou l'unité astronomique, c'est à
Math::Units
qu'il faut envoyer votre lettre au Père Noël (en anglais, wishlist).
]
L'un des collègues de Théo a été confronté récemment au problème
suivant : il disposait dans un répertoire de nombreux fichiers,
fichiers textes et fichiers exécutables mélangés et parmi les fichiers
textes, les uns étaient des fichiers Windows avec CRLF, les autres
étaient des fichiers Unix avec LF. Et il voulait convertir les fichiers
textes Windows pour en faire des fichiers textes Unix.
La solution
perl -pi-e's/\r//' *
ne convient pas, il est quasiment certain qu'elle « abîmera »
les fichiers EXE en supprimant les \x0D qu'ils contiennent.
Et Théo souhaite faire la conversion avec un
uniligne
lancé par perl -pi, pour éviter d'avoir à ouvrir chaque fichier
tour à tour et à écrire une boucle avec un opérateur « diamant ».
Après avoir réfléchi sur la question, nous sommes arrivés à la solution :
tout en gardant bien à l'esprit que
le test -T
et son contraire -B
sont des tests heuristiques, qui lisent un seul bloc du fichier en entrée,
effectuent des statistiques sur les octets rencontrés et en déduisent
si le fichier est un fichier texte ou un fichier binaire.
Il a été question du filtrage du web sur le lieu de travail.
L'un des participants raconte qu'il travaillait sur un site
où il était possible de surfer sur le web, à condition que
ce soit dans les limites du raisonnable. Entre autres, il
était interdit de regarder de la vidéo en ligne.
Un jour, ce participant est tombé par hasard sur les
statistiques hebdomadaires du proxy qui servait
de passerelle vers le web. Ces statistiques comportaient
entre autres la liste des 20 sites ayant eu le plus de
trafic lors de la semaine en nombre d'octets. Conformément
au règlement intérieur,
YouTube
ne figurait pas dans ce palmarès. En revanche, on pouvait
y voir des noms comme
proxy-02.dailymotion.com
ou limelight-234.cdn.dailymotion.com.
Un autre participant est salarié d'une SSII et a été
prestataire chez une banque. Les conditions étaient
plus strictes et plus simples : aucun accès
à Internet à partir du lieu de travail.
Il n'avait même pas le droit d'envoyer ou de recevoir
du courrier personnel. Et par courrier personnel, on
entend « courrier administratif avec la SSII
qui l'emploie ».
David reprend un sujet
qu'il a déjà évoqué.
Il rappelle l'un des billets
du site de Jamie Zawinski
où ce dernier explique qu'il surfe sur le web
avec une vieille version de Netscape
(la 3.02 à l'époque où la dernière version était la 4.7).
Lorsqu'il accède à certaines pages, tout se passe bien,
Netscape 3.02 affiche quelque chose de correct. C'est soit
parce que la page a été écrite avec du HTML de base, sans
fioriture, soit parce que la page a été écrite avec
des fioritures, mais de façon que ces fioritures ne soient
pas indispensables à la lecture et à la navigation.
Lorsqu'il accède à d'autres pages web, rien ne s'affiche,
ou alors un message d'erreur genre 404 ou « veuillez installer une
version récente de votre navigateur ». Mais cela lui importe
peu, parce que quasiment systématiquement, il n'y a rien
d'intéressant à voir ou à lire dans ces sites.
Dans le même esprit que Jamie Zawinski, David surfe sur le
web en désactivant
JavaScript.
[ Cela vous explique peut-être également pourquoi les présents
comptes-rendus utilisent un HTML aussi dépouillé. C'est un peu enjolivé
par une CSS (que l'on doit à d'autres personnes, notamment Sébastien
si ma mémoire est bonne), mais si JWZ ou un de ses émules tentent de lire
les comptes-rendus avec Netscape 3.02 ou avec
Lynx, ils n'auront aucun
problème.
]
Parmi les sites vides de contenu, vous avez les sites qui
requièrent un afficheur
Flash.
Certains ont signalé que
le site de la FNAC
était entièrement en Flash.
[ Ce n'est pas tout-à-fait vrai. Il est possible de naviguer
avec des liens HTML. Mais l'absence de lecteur Flash
empêche une bonne partie de la navigation. ]
Éric va jusqu'à préférer voir des tableaux de données
incorporés dans un fichier HTML sous la forme d'un
pavé en police à espacement fixe, encadré par des balises
<pre>, chaque cellule étant alignée
« à la main » avec le bon nombre d'espaces, plutôt
qu'un tableau bâti à l'aide de balises <td>
et <tr>.
Julien peste contre le
W3,
ses règles de validation des documents HTML
et ses recommandations pour l'accessibilité.
La principale difficulté des personnes surfant sur le web n'est
pas due à un problème de santé catalogué comme un handicap
(cécité, déficience de motricité), mais à un problème de santé
qui affecte 16 % de la population, le
daltonisme.
En réalité, Julien peste plutôt contre le service
de validation HTML offert par le W3C, qui vérifie
que l'on a bien écrit <br /> au lieu
d'un simple <br> et qui vérifie la présence
d'un attribut alt à l'intérieur de chaque balise
<img />, mais qui ne signale pas
que tel ou tel passage est écrit en gris clair sur fond
bleu, ce qui posera des problèmes aux daltoniens.
Vous pouvez remarquer que les recommandations du W3C
évoquent le problème des couleurs.
Simplement, ce n'est pas commode à vérifier dans un valideur
de syntaxe, car le problème n'est pas réductible à une erreur de syntaxe.
[ Suite à la digression que j'ai faite ci-dessus, je complète en
signalant que si j'approuve l'utilisation d'une CSS pour le texte HTML,
en revanche, je n'aime pas le barbouillage syntaxique qui consiste à colorier
de diverses couleurs les différents éléments d'un extrait de code Perl.
Mais comme cela fait plaisir à d'autres Mongueurs, je laisse
Template Toolkit
colorier le code Perl en jaune, bleu-ciel ou vert pâle sur fond blanc...
]
Quelqu'un demande à
Olivier
s'il y a du nouveau sur son blog. Éh bien oui,
il y a du nouveau.
Il a écrit un
utilitaire
qui extrait le programme de la télévision au format XML.
Il l'a écrit en Python pour pouvoir utiliser
Google AppEngine.
Julien tente de nous faire deviner pourquoi
SQLite
est plus populaire que
MySQL.
C'est parce que la
licence de SQLite
est complètement libre, sans restriction, alors que
celle de MySQL
possède certaines restrictions.
[ J'avoue que je n'ai pas trouvé sur le site de MySQL où figuraient
ces exceptions. Il me semble que la licence est la GPL et que MySQL
propose des services supplémentaires et payants, néanmoins facultatifs.
Si quelqu'un veut se contenter de la GPL, il a tout-à-fait le droit.
]
Julien est l'heureux possesseur d'un
iPhone.
Il a montré le fichier qui contient les noms des contributeurs
aux différents logiciels installés. C'est un fichier texte
volumineux et Julien pense que ce fichier contient des
noms connus dans le monde du logiciel libre.
Si j'ai bien compris, il n'y a pas de recherche de texte
pour consulter ce fichier, seul le
visual grep
fonctionne.
Julien signale que
KDE
et GNOME
ont tendance à s'éloigner de la philosophie Unix,
qui consiste à permettre l'utilisation de la ligne de
commande pour chaque action accessible par la souris.
À l'inverse,
Apple
maintient cette philosophie avec
Mac OS.
Je lui fait remarquer que cela n'a pas toujours
été le cas. C'est peut-être vrai depuis 2000 ou 2001 avec
Mac OSX, qui est basé sur
Unix, mais ce n'était pas vrai de 1984 à 2000,
avec les précédentes versions de Mac OS.
Je ne sais plus comment nous en sommes venus à évoquer la
philosophie des mainframes.
Rien que pour créer un fichier, c'était la croix et
la bannière. Il fallait savoir quel format aurait
le fichier : enregistrements de longueur fixe,
enregistrements variables ou enregistrements indéfinis
(je n'ai jamais su la différence entre les deux derniers).
Il fallait aussi préciser quelle serait la taille des
blocs physiques du fichier, comme si le système n'était
pas capable de le calculer lui-même. Car le système était
capable de le calculer, étant donné qu'il vous renvoyait
une erreur si vous donniez une taille de bloc incompatible
(par exemple, dans le cas des enregistrements à taille fixe,
la taille du bloc devait être un multiple de la taille des
enregistrements ; une autre règle s'appliquait
pour les enregistrements de taille variable). Et le tout
avec une syntaxe alambiquée.
Lorsque l'on découvre le shell MS-DOS après
cela, on est admiratif devant la beauté, la puissance et la souplesse
de ce langage, c'est dire !
Et encore, je n'ai pas connu directement l'époque des cartes perforées.
J'ai travaillé dans une entreprise qui venait de remplacer
son mainframe Bull par un mainframe
IBM, avec pour les utilisateurs des écrans tout beaux tout neufs.
Le Bull, qui vivait ses derniers mois, n'était pas connecté
à des terminaux écrans, mais il fallait l'alimenter avec des cartes
perforées.
Il a été question d'un nouveau langage,
Objective-J.
On connaissait
Objective-C,
une évolution de C vers l'orientation objet, mais
résolument différente de
C++.
Quelqu'un a donc créé une variante de
JavaScript
dans laquelle sont implémentées les particularités syntaxiques
d'Objective-C.
Une autre émanation de JavaScript, c'est
jquery.
Malgré tout le mal que l'on pense que JavaScript comparé
à ce qui se fait ailleurs,
jquery
est très pratique, comme nous le dit Julien.
Pour ceux qui utilisent la machine virtuelle associée
à dot-net, il est possible d'utiliser les portages
IronRuby
et IronPython
mais il n'y a aucun portage de Perl sur .NET. Hélas.
J'espérais voir Laurent (B) lors de la réunion, car j'avais
un reproche à lui faire. Comme il n'était pas là, ce sont
Théo et Olivier qui ont eu vent de ma déconvenue.
Le mois dernier,
Laurent nous avait prédit que les scientifiques
du LHC, qui manipulent des phénomènes qu'ils maîtrisent mal,
allaient créer un trou noir qui engloutirait la Terre
dans une catastrophe sans précédent. Et qu'est-il arrivé
en fait ? Dans la réalité, les traders
de Wall Street, qui manipulent des phénomènes qu'ils maîtrisent mal,
sont sur le point de créer un trou noir qui va engloutir la Terre
dans une catastrophe sans précédent.
Julien nous donne un parallèle dans le même genre.
Pour décrire les phénomènes électromagnétiques,
il suffit de
quatre équations.
Pour décrire le fonctionnement des produits financiers,
il en faut 27.
Lionel ne travaille pas dans une banque. Il risque d'être touché
par la crise quand même, car son employeur, un gros éditeur
de logiciel, a plusieurs banques en faillite comme clients.
En fait, il est déjà touché par la crise. Lui et ses collègues
ont reçu pour consignes de réduire les dépenses. Par exemple,
éteindre la lumière lorsque l'on quitte un bureau et
ne plus prendre l'avion pour les déplacements professionnels.
Pour mieux appréhender certains phénomènes économiques,
Julien prend l'exemple d'une île déserte avec deux naufragés.
Supposons qu'un naufragé prête une somme de monnaie à l'autre
et que l'autre s'arrange pour ne jamais la lui rembourser.
Au final, tout se passe comme s'il y avait eu création de
monnaie. Étant donné que les banquiers mis en cause
dans la crise actuelle ont contracté des prêts qu'ils ne
vont pas rembourser, Julien en déduit qu'ils ont créé
de la monnaie et que ce sont donc des faux-monnayeurs.
Le premier contre-argument, que je n'ai pas donné en réunion,
c'est qu'à mon avis, le faux-monnayage concerne uniquement
la contrefaçon du support physique de la monnaie :
pièces et billets. Cela ne concerne donc pas les banquiers
qui créent de l'argent virtuel. Le second contre-argument,
que j'ai donné en réunion, est que l'échelle change tout.
En paraphrasant une réplique de
Monsieur Verdoux
de Charlie Chaplin :
Un meurtre fait de vous un criminel. Un million fait de vous un héros.
(Sauf que lors de la réunion, j'ai dit « politicien »
à la place de « héros ». Je prie les héros de m'excuser
pour cette méprise.)
Le plan du gouvernement américain pour juguler la crise consiste
à injecter 700 milliards de dollars pour assainir les
finances des banques américaines. David fait remarquer que ces
700 milliards de dollars sont juste une « erreur d'arrondi »
comparés au montant représenté par les subprimes
et autres produits dérivés de la bourse : 64 billions
de dollars. Éric tente de minimiser l'effroi que nous ressentons
en nous demandant combien cela fait en pétadollars.
[ Réponse : 0,06 pétadollar. Sans « s », car jusqu'à
1,999, on utilise le singulier. On aurait pu également faire appel
au nombre d'Avogadro (6E+23) et conclure que le montant est légèrement
supérieur à un centième de micromole de dollars. Pouquoi s'affoler
avec une somme microscopique ? ]
Cela nous ramène à Jérôme K, un « petit joueur »
qui a à son actif à peine 5 milliards d'euros.
Ce n'est rien comparé à ce que ses collègues américains
ont perdu ces derniers temps. Et je rappelle qu'il y a
déjà eu le cas de
Nick Leeson,
dont les pertes en bourse avaient provoqué la faillite
de la banque Barings et qui s'est vu attribuer pour cela
le prix Ig Nobel d'économie de 1995.
J'en profite pour rétablir la vérité sur deux erreurs
que j'ai dites en réunion, maintenant que j'ai
le livre sous
les yeux. Tout d'abord, la banqueroute de Barings a eu lieu en
1995 au lieu de 1987 comme je l'ai annoncé. D'autre part,
Nick Leeson a perdu moins d'argent que Jérôme K. :
1,4 milliards de dollars. Ce sont des dollars de 1995, c'est vrai,
mais malgré tout, je pense que cela fait moins que les 5 milliards
d'euros de Jérôme K.
Compte tenu de la chute des actions en bourse, est-ce le moment
idéal pour en acheter, sachant qu'elles vont forcément remonter ?
Peut-être que même les actions
d'Eurotunnel
vont remonter...
Je remarque que c'est assez curieux qu'il y ait des gens qui
aient voulu investir de l'argent dans un tunnel. Un tunnel,
c'est quoi ? C'est essentiellement un trou !
Donc pourquoi investir dans un trou ? On me fait remarquer
qu'un tunnel, c'est également un peu de béton pour étayer
le trou, donc il y avait quand même quelque chose de concret sur lequel
investir.
[ Au moment même où j'écris ces lignes, je note
un jeu de mots tout-à-fait involontaire : comment traduisez-vous
« béton » en anglais ?
]
Acheter des actions lorsque l'on est un particulier qui cherche à investir ses
économies, cela peut se concevoir. C'est comme un jeu de hasard tel que le loto,
le tiercé ou la roulette, on ne peut perdre que ce que l'on a misé. Une fois
que vous avez payé votre ticket de PMU au caissier du tabac ou que vous
avez payé vos plaques au caissier du casino, celui-ci ne viendra pas vous
réclamer de l'argent ultérieurement parce que vous avez perdu.
En revanche, il est très dangereux pour un simple particulier de s'aventurer sur le terrain
miné des produits financiers dérivés. Quelqu'un qui perd en bourse sur ces
produits financiers peut être amené à payer plusieurs fois la somme qu'il a
investie, par exemple vingt fois la somme de départ.