Nous nous étions donné rendez-vous vers 18h15 sur le quai de la Gare du Nord.
En fait, la "réunion" a commencé plus tôt, car c'est sur le quai
de la gare de Bécon-les-Bruyères que Sniper et moi nous sommes
retrouvés (coïncidence, synchronicité ?).
- Sniper vient de rentrer de vacances à Annecy, et il repart immédiatement
pour Amsterdam, sans passer par son boulot. Pour savoir ce qui s'est
passé dans le monde pendant son absence, il a voulu voir ce qui s'était passé
sur
Perl Monks
pendant son absence. Le problème, c'est qu'il a noté son mot de
passe Perl Monks sur la machine de son travail, pas sur celle de son
domicile. Il a tenté de récupérer son mot de passe, en expliquant les
circonstances. L'un des commentaires provient de David (le
président-fondateur), bloqué pour des raisons professionnelles. Il a dit :
"Heureux ceux qui ne peuvent pas être à leur travail !".
- Philippe avait déjà parlé du
golf Perl,
qui consiste à écrire un programme
faisant une tâche précise avec le moins de caractères possible. Briac
évoque le méta-golf, qui consiste à utiliser le moins de pixels possible.
Tout dépend évidemment de la police utilisée à l'écran, mais cela ne devrait
pas trop varier d'une police à l'autre. Cela dit, si le programme
commence par
use ACME::Bleach;...
- Il a été question de la différence entre une substitution s///e et une
substitution s///ee. La première évaluation a lieu lors de la phase
de compilation, laquelle produit le bytecode
correspondant. Avec un deuxième e, la deuxième évaluation a lieu lors de la
passe d'exécution. J'en ai eu besoin dans
mon module de date,
car je voulais remplacer une chaîne par la valeur retournée par une
méthode. Or, la recherche de la méthode ne peut s'effectuer que pendant la
phase d'exécution (problème de la classe de l'objet, connue uniquement à
l'exécution, et de la recherche récursive dans @ISA). Donc,
j'ai utilisé des apostrophes, et le modificateur /ee. Le premier
modificateur /e et les apostrophes équivalent à un no-op
pendant la phase de compilation, et le deuxième /e permet d'évaluer
l'expression au moment où l'on connaît la classe de l'objet.
s/bla-bla-bla/'$self->field($1)'/eegx;
- Philippe est parvenu à pondre une
regexp avec un modificateur e
répété une cinquantaine de fois. Le fonctionnement rappelle celui d'une
machine à pile. Le programme commence par créer un tableau où figurent des
instructions, dans l'ordre inverse de celui où elles seront exécutées. Puis,
chacune de ces instructions est complétée par un pop. Enfin, le
programme exécute la substitution, et chaque fois qu'il interprête la chaîne
de substitution, il exécute l'instruction courante, puis va chercher la suivante.
- Existe-t-il un débuggueur pour Perl ? Oui, il suffit
d'utiliser l'option -d sur la ligne de commande. Mais ce
n'est pas très plaisant à utiliser. Ou bien, si vous avez
Perl/Tk,
il suffit d'installer le module
ptkdb.pm.
Ou encore, si vous avez
Emacs,
il suffit de taper
ESC-x perldb.
- Sniper a eu un gros problème. Il était en train d'installer Linux
sur une machine, quand KDE2 a planté.
Et ce plantage a vérolé quelques fichiers, dont vraisemblablement
/etc/passwd. Du coup, il lui était impossible d'ouvrir une session,
même avec le code root. Deux solutions, dans le cas où cela se
reproduirait : se créer une disquette de démarrage (en mode dégradé, mais
tant pis), ou bien partitionner le disque plus finement, pour mettre d'un côté
les fichiers indispensables au système, et de l'autre les fichiers de KDE2.
- Sniper a également évoqué le numéro hors-série sécurité de
Linux Magazine.
Il y a, comme d'habitude, les piques à l'encontre de
Windows : "Si vous n'avez pas la chance d'avoir un véritable OS".
Lorsque c'est utilisé avec modération,
cela fait sourire, mais à force cela devient
lassant. D'autre part, l'un des articles se terminait par un
paragraphe ressemblant à :
Si vous êtes sous Windows, faites Démarrer, puis
Paramètres... et après je ne sais plus. N'importe comment, ce
n'est pas le genre d'OS que j'ai sur ma machine.
Bon, si l'auteur n'a pas Windows sur sa machine, et s'il n'est pas
capable de trouver les informations associées, pourquoi fait-il
semblant de s'intéresser à Windows ? S'il ne donne aucune
information valable, autant ne pas aborder ce sujet.
- D@vid, (l'autre, celui qui n'a pas mis sa cravate habituelle) m'a signalé que
j'avais commis une erreur dans le
compte-rendu précédent.
J'ai écrit
qu'il utilisait knotepad, alors qu'il s'agit en fait de
gnotepad. Non, David n'aime pas du tout KDE, c'est trop
gros. Il préfère
Gnome.
Cela dit, certains lui font remarquer que KDE1
n'est pas si lourd que cela. C'est KDE2 qui est énorme. Et puis, une
fois que l'on a démarré une application KDE, les suivantes ne
consomment pas énormément de resources, puisque le processus KDE-init
tourne déjà.
- À propos des interfaces graphiques pour Unix, BooK évoque
the moaning goat meter.
C'est un logiciel qui permet de surveiller
l'activité du système. Mais au lieu d'afficher des valeurs numériques,
comme top, ou des histogrammes, il affiche des images
différentes pour représenter la charge du système.
- [ Jean-Christophe,
prépare-toi à faire du copier-coller ! ]
Philippe nous évoque son boulot de traducteur, et notamment comment il
économise ses forces pour taper son texte sous vi. Il s'est créé un fichier
.exrc spécial pour la traduction. Ce fichier contient, entre
autres,
ab var variable
ab vars variables
ab qqch quelque chose
ab psg Pacific Software Gurus, Inc.
" non, en fait, cette dernière ligne ne vient pas de BooK,
" elle est inspirée du tutorial
" Perl for the Impatient, mais je n'ai pas résisté...
Donc, lorsqu'il écrit
Une var est qqch où l'on stocke une valeur
automatiquement, vi remplace par :
Une variable est quelque chose où l'on stocke une valeur
À noter que seuls les caractères \w sont autorisés, et qu'il
y a implicitement des \b de part et d'autre des
abréviations. Ainsi, variante ne sera pas métamorphosé en
variableiante. Il reste un problème si l'on veut écrire par
exemple use vars ('$toto'); sans que l'abréviation vars soit
étendue. Il suffit de passer du mode saisie au mode commande par
ESC, et d'y revenir par a, en plein milieu de
l'abréviation.
- Je connais une autre façon de s'économiser de la peine. Cette
façon utilise les touches de fonction (au sens large : F1 à F12,
mais aussi Inser, Pg-Down, flèches, etc). De plus, il existe un paramétrage
pour le mode commande, et un autre pour le mode saisie. Par exemple,
pour que la touche fonction F10 en mode commande convertisse les 25
caractères suivants de majuscule en minuscule ou vice-versa, et pour
que la même touche fonction donne le nom complet du PSG en mode
saisie, il suffit de mettre dans le fichier .exrc
map ^[[21~ 25~
map! ^[[21~ Pacific Software Gurus, Inc
Mais d'habitude le caractère Escape (représenté par ^[) fait quitter le
mode saisie. Alors comment le saisir dans le texte ? Simple, il
suffit de taper CTRL-v juste avant. Et comment se souvenir que F10
correspond à ^[[21~ et que F11 correspond à
^[[35~ ? Il n'y a pas besoin de s'en souvenir. En fait,
juste après avoir tapé CTRL-v, il suffit de taper la touche fonction
elle-même, et de ne pas toucher à votre clavier principal. vi recevra le CTRL-v,
puis le caractère ESCAPE qu'il insérera tel quel à cause du CTRL-v,
puis les autres caractères, qu'il insérera car ce sont des caractères
"normaux". Pour résumer, vous devez donc taper :
m a p ESP ESP ESP CTRL-v F10 ESP ESP ESP d d p RET
(ajustez le nombre d'espaces à votre goût). Votre console envoie à vi
la séquence de caractères :
m a p ESP ESP ESP CTRL-v ESC [ 2 1 ~ ESP ESP ESP d d p RET
et vi insère dans le fichier la ligne
m a p ESP ESP ESP ESC [ 2 1 ~ ESP ESP ESP d d p \n
Il est possible d'utiliser map pour des séquences de
touches autres que celles générées par les touches fonction, à
condition que cela ne produise pas de conflit avec les commandes
standards. Par exemple, on peut utiliser éé, avec :
map éé 25~
map! éé Pacific Software Gurus, Inc
mais il faut alors taper assez vite pour obtenir la séquence
demandée. Si vous attendez trop longtemps entre les deux touches, vous
n'obtenez rien de spécial. Il est impossible de mapper des séquences
comme de ou c$ avec map pour le mode
commande. En revanche, ces séquences sont autorisées avec
map! pour le mode saisie.
[ Bon, lors de la réunion, ce n'était pas aussi détaillé, surtout
la partie sur map. Mais j'ai détaillé pour les besoins du quart
d'heure éducatif.
Que vous retrouverez assurément chez Jicé.
D'autre part, tout ceci s'applique à la version de base de vi. Si vous avez
vim,
il y a d'autres possibilités, beaucoup d'autres, mais ce que je viens
d'exposer est valide et, à mon avis, suffisant. ]
- Un peu moins éducatif (ou bien tout aussi éducatif à condition de le prendre
au second degré) : quelqu'un a écrit un programme pour prédire
les tirages du loto, ou de n'importe quelle loterie. Le principe
utilisé (je n'ose pas dire la méthode) est le suivant. À chaque
itération, le programme tire 6 numéros de 1 à 49. Si le tirage ne
correspond pas au tirage de la veille, le programme itère le processus. Si
le tirage correspond, le programme effectue un n+1ème tirage,
et ce tirage correspondra forcément aux numéros tirés le mercredi ou
le samedi suivant.
- Au travail, Briac est le seul à utiliser Linux. Un de ses
collègues a voulu lui aussi installer Linux sur sa machine. Briac lui
a proposé de l'aider, mais le collègue lui a répondu qu'il connaissait
bien Linux, et qu'il pourrait se débrouiller tout seul. Ensuite, à
plusieurs reprises Briac a sorti son collègue d'une impasse, et a
réitéré sa proposition d'aide, toujours avec la même réponse négative. En fin
de compte, le gars a abandonné l'installation de Linux sur sa machine.
- BooK a lu un
livre
qui explique les principes de fonctionnement des
ordinateurs. Le point de départ consiste à transmettre des
informations d'un point à un autre en utilisant une lampe
électrique. On peut dessiner les lettres, mais ce n'est pas très
pratique. D'où l'idée du code Morse. Par extension, on arrive à l'idée
du codage binaire des informations. Puis le livre décrit les
transistors, comment on peut les combiner pour obtenir des bascules,
des portes logiques et des multiplexeurs, puis comment on combine tout
cela pour faire un processeur et un ordinateur. D@vid se demande
comment BooK a pu trouver un intérêt à lire ce livre. Un ordinateur,
c'est quelque chose de très simple, on envoie des commandes, et
l'ordinateur répond, c'est une simple machine, qu'est-ce qu'il y a de
compliqué là-dedans ? En fait, j'ai l'impression qu'ils n'étaient
pas sur la même longueur d'onde.
- Nous avons également parlé des différents modes d'adressage en
programmation assembleur. Si je me souviens bien, il y a l'adressage
immédiat, dans lequel la donnée se trouve dans l'octet ou les quelques
octets qui suivent le code opération (ce qui correspond aux valeurs
littérales dans un langage de haut niveau). Il y a l'adressage direct,
ou peut-être absolu, où les octets qui suivent le code opération donne
l'adresse de la valeur. Il y a l'adressage relatif, où l'on indique
que la donnée se trouve "42 octets plus loin que le compteur de
programme". Il y a l'adressage indexé, où l'adresse est le résultat de
l'addition d'une valeur fixe et du contenu d'un registre. Et tous ces
adressages peuvent en plus subir une indirection, c'est-à-dire que la
valeur récupérée n'est pas utilisée telle quelle, mais elle sert
d'adresse pour obtenir la valeur finale.
- Philippe nous a présenté l'un des sujets sur lesquels travaille sa
compagne. Il est question d'arbres et de produits cartésiens, mais à
part cela... Philippe a essayé de nous représenter le sujet avec des
bouts de papier pliés à angle droit, et assemblés de diverses
manières, mais cela ne nous a pas plus éclairé la question. Il
semblerait qu'il manque une ou deux dimensions à notre espace pour
pouvoir obtenir une représentation correcte du problème. Cela me
rappelle deux choses.
- la bande dessinée le Topologicon, de Jean-Pierre Petit
(avec Sophie, Anselme Lanturlu, l'escargot Tirésias, et le pélican Léon),
dans laquelle les personnages exploraient la surface de Boy, et où
l'auteur proposait un découpage pour simuler cette surface dans notre
espace à 3 dimensions,
- et l'histoire suivante.
Un mathématicien et un ingénieur assistent
à la conférence d'un physicien, qui parle de théorie quantique, de
super-cordes, et d'espaces à 17 dimensions. Au bout d'un certain
temps, l'ingénieur se penche vers le mathématicien et lui dit :
"Je ne comprends rien à ces histoires de 17 dimensions. Vous arrivez à
y comprendre quelque chose, vous ?" Et le mathématicien lui
répond : "C'est simple, je me représente cela dans un espace à
n dimensions, et ensuite, je fait n = 17."
Lorsqu'ils ont voulu me demander des précisions sur la mécanique
quantique et les super-cordes, je leur ai fait remarquer que j'étais
un ingénieur [ J'aurais dû répondre
"Dammit, BooK,
I'm an
engineer
not a
doctor!, ".
D'autre part, j'ai retrouvé la version originale de l'histoire. Elle est
quelque part là-dedans,
et en réalité, il n'y avait que 11 dimensions. ]
- Sniper est lui aussi concerné par les mathématiques. Son beau-père
lui a demandé s'il existait des programmes pour calculer avec des
polynômes. Il ne s'agit pas simplement de calculer quelle valeur prend
un polynôme pour x = 2, mais de faire le calcul
formel de la somme ou de la division de deux polynômes. Je lui
réponds que cela existe sûrement dans CPAN, et qu'il suffit de
chercher dans le
livre du Loup.
En fait, en vérifiant mes allégations,
je n'ai rien trouvé de tel dans ce livre, mais il y a
Math::Polynomial
dans CPAN.
- Il a été question de jeux de rôles, et notamment, D@vid a raconté
qu'il pratiquait Rolemaster (ce n'est pas ce qu'il y a de
plus simple comme jeu de rôle ; notamment, les actions sont résolues au
dixième de seconde près), et qu'il avait voulu en programmer
quelques éléments sur un ordinateur. C'était l'époque des machines
8 bits
(Sinclair ZX-81,
MO5, ...).
BooK nous parle de ses premiers
pas en informatique. Il utilisait un
TO7.
Lorsque son frère et lui ont
décidé de passer à une machine plus puissante, Philippe a recommandé
le TO8,
puisque c'était dans la lignée du
TO7,
donc ils ne seraient
pas dépaysés. Avec le recul du temps, il se rend compte que c'était un
mauvais choix, et qu'en adoptant une autre machine, il aurait connu C
plus tôt, au lieu de continuer à utiliser Basic.
- Philippe avait quelques exemplaires de son CV (dont un a servi
pour l'exposé sur les produits cartésiens d'arbres). Il s'ensuit une
discussion sur la mise en forme et l'organisation d'un CV et de la
lettre de motivation associée. Pour Philippe, il faut donner
suffisamment de détails dans la description de l'expérience
professionnelle, pour que l'ingénieur d'encadrement qui fera passer
l'entretien d'embauche se rende compte du niveau d'expertise du
candidat. Pour D@vid, il faut réduire ces paragraphes au minimum, et
plutôt développer les activités extra-professionnelles, car cela
permet à un DRH de mieux cerner la personnalité du candidat. Difficile
de contenter tout le monde...
- Philippe trouve que son CV n'est pas suffisamment rempli. Il
aimerait faire figurer
MVS
parmi les systèmes d'exploitation qu'il
connaît ! Non mais ça va pas Philippe, te porter volontaire pour
travailler sous MVS, t'es pas bien !
- Kai a parlé de sa traduction, et notamment des derniers mots du
chapitre 11 d'Amelia. Ce chapitre se terminait comme un dessin animé de Warner
Bros : "That's all, folks!". Lors de ma relecture, je lui avais
suggéré soit de conserver le texte en V.O., puisque c'est ainsi qu'il
apparaissait sur les écrans de la télévision française, soit de
transposer avec les
Shadoks,
dont chaque épisode se terminait avec la mention
"C'est tout pour aujourd'hui !",
et un bruit de verre cassé.
- À ce propos, quelqu'un a travaillé chez un client où l'un des
responsables avait surnommé sa secrétaire
"Shadok".
La secrétaire avait trouvé cela amusant, et elle n'hésitait pas à le raconter à
ses collègues. Apparamment, elle n'avait pas fait le rapprochement avec le fait
que les
shadoks
sont des bébêtes dont l'activité essentielle est de
pomper.
Ou bien elle n'est pas au courant des multiples acceptions de ce verbe.