Présents à la réunion, en fonction de l'ordre d'arrivée approximatif
Julien,
Alexandre,
Stéphane,
Philippe (un quasi-nouveau),
Romain (un nouveau ou quasiment),
moi,
Théo (un nouveau),
Anthony,
Olivier,
Dam's,
Jérôme,
Éric (glb),
Sébastien,
et David (L).
Nous avons mangé des œufs mayonnaise, des
cheeseburgers, des blue-cheeseburgers, des magrets de canard,
des rumsteaks, des spaghetti bolognaise, des dames
blanches et une tarte aux pommes. Malgré une
longue négociation, nous n'avons pas pu avoir
des nègres en chemise, car il n'y a plus de
meringue à la Taverne.
Nous avons bu de la Kriek, de la Beamish Red, de la blanche,
d'autres bières, du Pepsi et deux margaritas
(je ne suis plus seul !).
Julien ne comprend pas à quoi sert la
fonction pack.
C'est vrai que tout le monde n'a pas tous les jours l'occasion
de s'intéresser de près à la façon dont les nombres binaires
sont stockés. Notons toutefois l'existence d'un
tutoriel sur pack.
La discussion s'est poursuivie par un quasi-troll
au sujet du stockage des nombres binaires. Le troll n'a pas
porté sur les mérites relatifs des différentes architectures
mais sur les termes à utiliser en français. Les
uns étaient pour l'antinomie « gros-boutiste »
/ « petit-boutiste » (comme dans les
Voyages de Gulliver)
et les autres préféraient l'antinomie
« petit-indien » / « grand-indien ».
Il paraît que l'architecture Intel est
« moyen-indien » (ou « moyen-boutiste »
pour les autres) : la disposition des octets formant
un nombre à 16 bits ne correspond pas à la disposition
des mots de 16 bits pour composer un nombre à 32 bits.
Julien a écrit des utilitaires pour travailler en ligne
de commande sur un répertoire LDAP. Il a profité de la
réunion pour remercier Jérôme
d'avoir écrit
des articles
à ce sujet
dans Linux-Magazine.
Ces utilitaires sont beaucoup plus puissants
et plus souples que les quelques
ldap-add et ldap-search
disponibles en standard.
Julien est un peu réticent à diffuser ces utilitaires sur
CPAN,
car le code n'est pas d'une propreté irréprochable.
Une nouvelle
dans le monde Perl :
Best Practical,
déjà connu pour
RT
(Request Tracker) vient de racheter
svk.
Il y a donc de fortes chances que svk
devienne un produit à part entière, avec
un véritable support, plutôt que simplement
l'œuvre d'un
programmeur unique.
Quelqu'un a parlé de problèmes sur
HTTP::Proxy.
C'est dommage que Nicolas ne soit pas présent à
cette réunion, car il connaît bien les entrailles
de HTTP::Proxy. J'évoque même une discussion
à laquelle j'ai assistée à l'aéroport de Porto,
juste après
YAPC Braga,
au cours de laquelle
BooK et Nicolas ont longuement discuté sur HTTP::Proxy
et où Nicolas essayait de le persuader de découper le
module pour ne pas mélanger les fonctions de transport
et les fonctions de mise en forme.
Les idiomes Perl : on croit que les idiomes que l'on a appris
depuis plus de deux ou trois ans sont connus de tous. Éh bien pas
toujours. C'est tout récemment que Julien a découvert comment
transmettre des paramètres par nom à un sous-programme, ce
que sûrement la plupart d'entre nous savaient déjà faire.
Si d'autres l'ignorent encore, voici à quoi cela ressemble :
sub formattage_texte{my($param_ref) = @_;my$l = $param_ref->{longueur};my$h = $param_ref->{hauteur};# etc}formattage_texte({longueur=>80,hauteur=>60,police=>'Computer Modern'});
Il a été question de
Ruby,
notamment je crois pour expliquer que les sous-programmes Ruby savaient faire
la différence entre un paramètre indéfini (c'est-à-dire nil
qui correspond à undef en Perl) et un paramètre qui n'a pas
été transmis au sous-programme. Sur le coup, je n'ai pas réagi,
mais lors de la rédaction de ce compte-rendu, j'ai vérifié
que Perl savait faire la différence, comme indiqué dans
l'exemple ci-dessous :
#!/usr/bin/perl
usestrict;usewarnings;sub examine_param{my($premier_prm,$deuxieme_prm,$troisieme_prm) = @_;my$cpt = 0;foreachmy$i(0 .. $#_){if(defined$_[$i]){print"paramètre $i = $_[$i]\n";}elsif(exists$_[$i]){print"paramètre $i indéfini\n";}else{print"paramètre $i inexistant\n";}}}my@tableau;$tableau[1] = 'a';$tableau[3] = undef;# et inexistant aux indices 0 et 2examine_param(@tableau);
La distinction entre le
test d'existence
et le test de définition
sur les valeurs de hachage existe au moins depuis
que je fais du Perl (1998). Pour les tableaux, c'est
un peu plus récent, la
version 5.6.0 si je me souviens bien,
mais ça fonctionne. Le programme
ci-dessus a été testé en 5.8.6. Si l'on tient à
faire la distinction entre les paramètres indéfinis
et les paramètres inexistants, il faut le faire
avec le tableau @_. Si l'on recopie les
paramètres dans des variables lexicales :
Certains ont rappelé la
RFC sur le transport de paquets IP par pigeons.
Ce que tout le monde ne savait pas, c'est que
certains ont mis en œuvre cette RFC
pour échanger quelques pings grâce à des pigeons.
L'ordre d'arrivée des paquets IP n'est pas le même que l'ordre
d'émission, mais c'est normal avec IP. De plus, il y a quelques
problèmes de performance, aussi bien pour le débit que pour la
latence. Ce n'est pas avec cette technique que l'on pourra
télécharger des fichiers MP3 ou MPEG.
Les pigeons ont fait une autre apparition un autre premier avril, car
Google
a décrit
comment ils utilisent des pigeons
pour attribuer des page rankings
aux pages web visitées. Or il se trouve que
depuis un certain temps, ils ont quelques personnes
chargées de vérifier la pertinence des réponses
à certaines requêtes. En d'autres termes, ils ont
remplacé les pigeons par des humains.
Julien a évoqué la technologie
Ajax.
C'est en fait
un retour de quinze ans en arrière,
c'est-à-dire à l'époque où les applications
fonctionnaient avec des clients lourds et où
l'interaction entre l'utilisateur et la machine
pouvait s'effectuer chaque fois que l'utilisateur
pressait une touche de son clavier. On a maintenant
exactement la même chose, cette fois par l'intermédiaire
du protocole HTTP.
Nous avons parlé du Web 2.0. Il paraît que
O'Reilly
aurait déposé cette marque. Du coup, on commence
à parler de web 2.1, voire de web 3.0.
Jérôme évoque les mesures qu'il a prises avant de changer
d'employeur, notamment la récupération de ses messages
électroniques. Il n'avait pas envie de récupérer ces
messages dans un format propriétaire, il préférait
les avoir dans un format documenté, comme
mbox.
Il a donc pris un logiciel de courrier électronique
qui sait utiliser à la fois le format Outlook et
le format mbox,
Evolution,
et il a fait le transfert
d'une boîte aux lettres électronique à une autre.
Mais il s'est aperçu par la suite que les pièces
jointes n'avaient pas été récupérées. Dans les
messages mbox, il y a simplement la mention
de winmail.dat. Il va donc devoir
éplucher les fichiers d'origine pour tenter
d'en extraire les pièces jointes. Il a donné
le nom de deux modules Perl qui sont susceptibles
de l'aider un peu, mais je n'ai pas retenu leur nom.
Julien nous a reparlé de son robot pour aller draguer sur
Meetic.
Il a bien regardé dans les
conditions générales d'utilisation
et ces CGU n'interdisent en rien l'utilisation
d'un robot pour accéder au site.
Et même le jour où, par une fausse manip,
son robot a effectué plusieurs milliers de
requêtes en quelques secondes, Julien n'a
pas été pénalisé pour son utilisation
intensive du site.
En revanche, quelqu'un d'autre a eu des
problèmes en utilisant
WWW::Search::Pagesjaunes,
le module de
Briac,
pour trouver quelques adresses sur
le site des pages jaunes.
Il s'est fait blacklister pendant une
courte durée pour son utilisation suspecte du site.
Pour revenir à Meetic,
n'est-ce pas risqué de traiter ses contacts avec
un robot, plutôt que de s'en occuper soi-même ?
Julien pense qu'il n'y a pas trop de risques.
Selon lui, l'interlocutrice ne se doutera pas
qu'il s'agit d'un robot. Tout au plus pourra-t-elle
remarquer une certaine réserve dans les échanges,
réserve qu'elle attribuera à de la timidité, ce qui
constitue un attrait supplémentaire.
Il a été question du format graphique PNG. Ce format
pose parfois des problèmes de rendu de couleur.
Par exemple, l'orange a tendance à virer
vers le jaune, ce qui gêne beaucoup
l'opérateur de téléphone homonyme.
SVN
constitue un net progrès par rapport à
CVS,
mais tout n'est
pas idéal dans ce logiciel. Par exemple, si l'on veut migrer
vers une autre machine, on est obligé de migrer le répertoire
dans sa totalité. Il est impossible de ne faire migrer qu'une
seule branche de l'arborescence. Il est impossible également
de signaler au moment de la migration que l'on souhaite
abandonner un certain type de fichiers. Le cas s'est
présenté pour l'un des participants. Le répertoire
qu'il voulait migrer comportait à tort des fichiers RPM.
Impossible de spécifier à la faveur de la migration qu'il
faut oublier ces fichiers RPM.
[ Note de BooK qui l'a appris de Rafael: la commande
svndumpfilter permet justement de supprimer certains
chemins d'un dump, par exemple dans un enchaînement
svnadmin dump | svndumpfilter | svnadmin load ]
Anthony a de gros problèmes avec
Active Directory.
Sur le coup, je n'ai pas retenu
ce qu'il avait dit, mais il m'a rafraîchi la mémoire par la suite
et je paraphrase ici ses précisions.
Active Directory ne respecte pas les
RFC.
Il impose des contraintes qui montrent la faible maîtrise de
Microsoft
sur des technologies dont cette
société n'est pas à l'origine. Par exemple, des attributs sont
contraints dans le nombre de caractères (longueur) de la valeur. Plus
drôle, le mode multi-maître n'est pas maîtrisé. Si l'on effectue une
modification sur un maître, l'autre maître l'écrase. Enfin Anthony a une
erreur toujours pas diagnostiquée : il met à jour une donnée et
quand il la recherche, il en trouve une autre à la place.
En conclusion, nous sommes loin de la philosophie Unix où chaque
commande fait une chose et une seule et elle le fait bien. Nous avons là
l'exemple typique d'une volonté de ne pas respecter les standards et de
prendre des décisions à la place de l'utilisateur et ce n'est pas ce
qu'attend Anthony.
Stéphane a acheté récemment un MacBook, l'un des premiers
Macintosh basé sur l'architecture
Intel.
Avec une métonymie qui confond
une firme
avec les produits
qu'elle construit, Stéphane signale que la dernière
fois qu'il a utilisé un Macintosh, c'était un Apple ][.
Mais il a des problèmes avec son MacBook. La machine
a tendance à fonctionner de travers, avec tous les
symptômes d'une surchauffe, sauf la température.
L'appareil est donc parti à la réparation.
Entre temps, l'utilisation de son MacBook lui a procuré
quelques surprises. Stéphane possède des DVD de provenances
géographiques diverses et cela n'a jamais été une préoccupation
pour lui. Un jour, lorsqu'il a voulu passer un DVD sur
son MacBook, il a vu afficher une boîte d'avertissement lui
signalant que le lecteur DVD allait changer de région et
que ce changement de région n'était possible que cinq fois.
Du coup, Stéphane a recours à
VLC
pour lire ses DVD sans tenir compte de la région.
En parallèle, Stéphane s'intéresse à
Cocoa,
le framework de développement
d'applications pour Mac OSX.
Cela repose sur
Objective C,
une variante orientée objet de
C,
beaucoup moins connue que
C++.
Avec Mac OSX, l'utilisateur a droit à des effets
graphiques très impressionnants : légère
transparence des fenêtres, fondu-enchaîné, graphisme
très détaillé des icônes, etc. Microsoft Vista n'est
pas en reste : quand l'utilisateur pointe
un fichier avec la souris, selon le temps que le
pointeur séjourne sur l'icône, plusieurs choses
différentes peuvent se passer : rien du tout,
sélection simple ou bien ouverture du document.
Mais est-ce réellement souhaitable d'arriver
jusque-là ? Anthony évoque des utilisateurs
qui se contentent d'une interface graphique
du niveau de Windows 3.1, avec un écran de
800 sur 640 pixels, avec des gros boutons
bien massifs et sans fioritures, avec des icônes
très simples et très épurées.
Julien, un lecteur régulier de
Joel on Software,
évoque un
texte
du dénommé Joel expliquant que
l'ergonomie était quelque chose de très relatif.
Une application qui semblera très ergonomique
pour une personne semblera très mal fichue à
une autre. L'exemple qui nous vient à l'esprit
est celui de la ligne de commande, qui sied
à la plupart des participants à nos réunions,
mais qui donne des boutons à la plupart des
utilisateurs occasionnels de l'informatique.
Mais même en dehors des geeks
que nous sommes, on peut noter des divergences
de goût ergonomique entre des catégories d'utilisateurs
comme les comptables d'un côté et les secrétaires
de l'autre côté.
Il ne faut donc pas laisser aux programmeurs
la tâche de définir l'ergonomie d'un logiciel,
il faut demander l'avis d'un ergonome, spécialisé
dans la question. D'un autre côté, il ne faut pas
donner trop de champ libre à l'ergonome, qui
risquerait de perdre de vue le but qu'on lui
demande de spécifier. Prenons l'exemple
de la diffusion de la télévision via Internet.
Si un utilisateur veut zapper, le temps de
réponse ne doit pas dépasser un dixième de
seconde, puisque c'est le temps nécessaire pour
changer de chaîne sur un poste de télévision.
Cela ne sert donc à rien d'ajouter des gadgets
autour de la télévision via Internet si
le traitement de ces gadgets nécessite
des temps de traitement de l'ordre de la
seconde, soit beaucoup plus longtemps
que le temps d'un
changement de chaîne.
Pour en revenir à la ligne de commande,
Olivier évoque l'époque reculée où il a tenté d'enseigner
MS-DOS à sa mère, Windows n'existant pas à cette
époque. La tâche fut ardue, sans
succès et surtout vouée à l'échec : ce serait aujourd'hui comme limiter
l'apprentissage de l'utilisation d'un ordinateur à l'Explorateur Windows, sans
faire découvrir d'autres applications.
[ Mais ne jetons pas la pierre à Olivier et à sa mère
et ne critiquons pas non plus la syntaxe
du shell MS-DOS que je trouve baroque. Je pense que même avec
un shell puissant et propre comme
bash
ou zsh,
le résultat aurait été le même. ]
Un autre participant évoque le programme
tkrun.
Comme son nom le laisse supposer, c'est du
TCL-Tk
et cela permet de lancer des commandes.
Là où cela devient intéressant, c'est que cet
utilitaire analyse la manpage
de la commande qu'on lui demande de lancer
et qu'il construit à la volée un clickodrome
de saisie correspondant aux options et paramètres
qu'il a reconnus dans l'analyse. Il y a en plus
un bouton pipe, qui permet
d'enchaîner les commandes comme nous le faisons
habituellement en tapant un « | ».
Avec la généralisation des environnements graphiques,
il n'y a plus beaucoup de monde qui utilise
Curses.
Dam's s'y intéresse encore. Il aimerait disposer d'une
boîte à outils plus agréable que la programmation
qui utilise directement les fonctions curses,
mais personne n'a pu lui indiquer une telle
boîte à outils.
Il a été question du célébrissime
RTFM
qui s'interprête en français par
« relis ton qr/fabuleux|fameux|foutu/ manuel ».
À un collègue qui lui demandait comment utiliser telle ou
telle commande, un participant à la réunion a répliqué :
-- Tape mancommande.
-- Et c'est quoi, ce man ?
-- Tape man man.
Il y a également la commande apropos, un moteur
de recherche très rustique pour les pages de manuel.
On peut d'ailleurs obtenir le même résultat avec
man -k. Pourquoi « k » ?
Sans doute est-ce l'abréviation d'« à propos »
:-)
Ce qu'il y a de bien avec Perl, c'est que l'on n'a pas
besoin de se préoccuper d'allouer de la mémoire (à condition
d'en demander des quantités raisonnables, tout de même).
Alors qu'en C, il faut systématiquement tester le code
retour des malloc(3), il faut garder à l'esprit
la liste des espaces alloués pour penser à les libérer
ensuite, il faut se méfier des
pointeurs rances
(lorsque l'espace alloué a été libéré par l'intermédiaire
d'un autre pointeur). Quelqu'un raconte qu'il a été
obligé, pour je ne sais plus quelle raison, de
décortiquer le source de malloc(3).
Il n'est pas du tout arrivé à comprendre.
Sur le système qu'il utilisait, le malloc(3)
contenait des adresses « en dur ».
Mais il est impossible d'avoir une idée générale
du fonctionnement du malloc(3), de savoir
quelle portion de la fonction est une simple vérification
des paramètres, quelle portion consiste à faire le ménage
avant le retour final et quelle est la portion qui est
réellement le cœur de la fonction.
Il a été question de l'informatique des temps passés,
en évoquant les Amiga et les
ZX-81,
en nous demandant si le
micro-processeur de
l'Oric
était un Z80
ou un 6502.
Dans les temps tout aussi reculés, mais concernant l'informatique
professionnelle, quelqu'un a rappelé qu'à cette époque, l'expression
« système ouvert » désignait les différentes variantes
d'Unix, y compris les Unix propriétaires
comme AIX et HP-UX.
Le sujet est revenu lorsqu'il a été question
d'économiseurs d'écran,
l'un deux affichant la
guru meditation
des Amiga, un autre montrant la
bombe
des Macintosh.
Il a été question d'un autre économiseur d'écran, qui laisse planer un doute sur
le terme « économiseur ». Cet économiseur d'écran affiche
une animation en couleur sur un fond noir. Là où le bât blesse, c'est
que cette animation est développée en
OpenGL et qu'elle
tourne sur une machine sans carte accélératrice pour les graphiques.
Du coup, la CPU est sollicitée à 100 %, ce qui fait griller
la carte-mère au bout d'un certain temps.
Tout le monde se plaint que
les réunions de travail sont une perte de temps.
Non, pas tout le monde. Certains
participants à la réunion expliquent comment ils mettent
à profit les réunions pour faire avaliser en douce des
décisions impossibles à faire admettre en temps normal.
D'autres expliquent comment ils tirent parti de leur
absence à une réunion pour se détacher de leurs collègues,
prendre du recul et éviter de se faire mouiller en cas
de pépin.
Les collègues ou ex-collègues d'Éric savaient qu'il accole
le sigle « glb » à son nom, mais ils en ignoraient
la signification, qui a pourtant été présentée dans
un compte-rendu précédent.
Faute de connaître la véritable signification, ils
avaient pensé entre autres à l'interprétation
« gros lutin barbu ».
Depuis qu'il a changé la façon dont il taille sa
barbe, son apparence se rapproche encore plus de celle
des nains de
Donjons & Dragons
ou du Seigneur des Anneaux.
Lorsque quelqu'un lui dit que la ressemblance
serait encore plus évidente s'il portait une hache,
il rappelle qu'il en a déjà eu une, ce qui a déjà été
évoqué dans
le même compte-rendu.
Jérôme raconte qu'il a eu des problèmes avec sa voiture.
Au bout de 71 000 km, le capteur mesurant le
flux d'air en entrée a commencé à fournir des valeurs
incorrectes au calculateur de bord, lequel a réagi en
prenant des mesures inadaptées, car l'état mécanique
du moteur était tout-à-fait correct. Du coup, Jérôme
se retrouvait à faire du 40 km/h en vitesse de
pointe sur du terrain plat. C'est, semble-t-il,
un problème connu du constructeur : le capteur
en cause flanche toujours aux alentours de
70 000 kilomètres.
Il évoque également ses trajets quotidiens pour
aller travailler à Rueil-Malmaison. La distance n'est
pas énorme et il pourrait le faire à vélo. Seulement,
le problème est qu'il y a deux côtes à grimper, l'une
au début du trajet et l'autre à la fin. Il continue
donc à utiliser sa voiture.
Quelqu'un a fait remarquer, je ne sais plus à propos
de quoi, qu'en France, la seule chose interdite
est de faire perdre la face à quelqu'un en public.
Il faut toujours laisser une porte de sortie à
votre interlocuteur.
Nous avons à peine dit du mal de notre président
de la République. Il faut dire qu'une seule personne
présente à la réunion avait vu le
dernier film
de Karl Zéro,
donc les possibilités de discussion
étaient plutôt limitées.
Dam's a récemment lu les comptes-rendus des réunions,
jusqu'à
celle où nous étions seulement deux,
Guillaume et moi. Dans le compte-rendu, j'évoquais la possibilité
que certaines personnes, entendant le titre
« Full Métal Planète »,
pourraient penser qu'il s'agissait d'un lapsus pour
Full Metal Jacket.
Dam's, lui, connaît parfaitement l'existence de
ce jeu et il ne risque pas de le confondre avec
le film.
Julien intervient pour signaler l'existence
d'un troisième larron
dans la confusion, un manga
Full Metal Panic.