Du monde malgré les vacances
Un historique de toutes nos réunions
Table des matières
La voix du secrétaire (Jean) et celle de Sniper
Présents à la réunion :
- Philippe (Bl),
- Sniper,
- Dam's,
- Paul-Christophe,
- Claude (si j'ai bien compris son prénom),
- Arnaud,
- Antoine,
- Jérôme,
- Eric (glb),
- Charles,
- Nicolas (Chuche),
- Kai,
- Natacha,
- et moi.
Nous avons mangé des hamburgers, des spaghetti bolognese
sans persil, des pavés d'autruche, des pièces du boucher,
des salades, des chocolats liégeois, des dames
blanches et une tarte aux pommes.
Nous avons bu de la Beamish Red, de la Kriek, de la Grimbergen
et autres bières et une margarita.
Nous avons parlé de
Perl,
Internet,
informatique
et le reste.
-
Arnaud utilise
LWP
pour l'outil
slackget
qu'il est en train
de développer. Il s'en sert pour les téléchargements,
mais pas s'il s'agit simplement de vérifier l'existence
d'un fichier sur le serveur FTP, sans le télécharger pour
autant, l'équivalent du
wget --spider.
Il avoue
ne pas avoir consulté la doc récemment. Je pense que la
fonction head correspond à ses besoins.
En attendant, il utilise :
system("wget --spider $adresse")
Le problème, c'est que le code retour de la fonction
system
est 0, donc faux, en cas de succès, l'inverse de la convention habituelle.
Et il a mis du temps à trouver pourquoi cela ne fonctionnait pas.
-
À cette même occasion, Arnaud a découvert le module
Carp
et les fonctions cluck, confess et
autres. Avec ces fonctions, les messages d'erreur et d'avertissement
indiquent un numéro de ligne dans le script appelant et non pas
dans le source du module. Utile lorsque vous êtes sûr du bon
fonctionnement du module et que le script est suspect.
-
Charles évoque le débuggueur
ptkdb.
Ce débuggueur affiche le source du script utilisé, plus éventuellement
les modules appelés par ce script.
Il permet de poser des points d'arrêt ou de faire du pas à pas.
Si l'on positionne la souris sur une variable dans le source du programme,
la valeur s'affiche automatiquement, pas besoin de cliquer ou de sélectionner
un article de menu.
-
Un peu plus tard, d'autres évoquent d'autres façons de débugguer, basées
essentiellement sur des :
print STDERR "toto : $toto\n";
Nicolas explique qu'il
passe par un niveau d'indirection supplémentaire,
il appelle
dprint "toto : $toto\n";
(« d » pour debug) avec la définition :
sub dprint { print STDERR $_[0] }
ou approchant. Lorsqu'il passe le programme en exploitation, il
remplace cette définition par :
sub dprint() { 1 }
Du coup, la fonction d'optimisation de Perl sait que l'on peut
remplacer l'appel à la fonction par la valeur 1 et en plus,
si c'est en contexte vide (void), la ligne
disparaît du bytecode généré.
-
Faut-il supprimer
use strict;
et use warnings;
pour un programme qui passe en production ? Il y a deux aspects
à cette question. Tout d'abord, enlever ces deux clauses modifie-t-il
le comportement d'un programme ? Si un programme ne plante pas
et n'émet aucun avertissement, son comportement sera identique avec
et sans use strict; et use warnings;.
Ce n'est pas le cas pour d'autres langages et d'autres environnements
de développement, on cite des cas où la suppression des instructions
de mise au point a provoqué des modifications notables du fonctionnement
d'un programme. D'autre part, y a-t-il un surcoût à l'exécution ?
Pour les avertissements, le surcoût est minime, mais il peut
avoir une influence sur des programmes résident en tâche de fond,
typiquement des démons. Pour use strict, j'ai lu
quelque part que cela n'avait d'influence que pendant la phase
de compilation, il n'y avait aucune augmentation de charge lors
de la phase d'exécution. [ Ce qui est faux. C'est vrai seulement pour
use strict vars; et use strict subs;,
les erreurs sont détectées lors de la compilation. En revanche,
pour les références symboliques et use strict refs;,
la vérification ne peut se faire qu'au cours de l'exécution. ]
-
Je signale avoir lu
une
discussion
animée
sur le
Forum des risques technologiques
concernant la détection des débordements de tableau en C
et le maintien de ces précautions lors du passage en exploitation
du programme.
Je croyais qu'un participant présentait une métaphore
en expliquant que cela revenait à se munir de bouées
de sauvetage tant que l'on apprend à nager ou à faire de la voile,
mais que dès que l'on va en pleine mer, on laisse les bouées
de sauvetage au port. Le problème avec les métaphores, c'est qu'il ne faut pas les
pousser trop loin, on risque de dire des âneries. Parfois même, une
métaphore est foireuse dès le début.
[ Et le problème avec mon intervention, c'est que je n'ai
pas retrouvé la métaphore de la bouée de sauvetage. Cela ne
vient pas du Forum des risques technologiques, mais cela
vient d'où ? ]
-
Nous évoquons également d'autres utilitaires de mise au point,
comme les assert() en C, ou bien des
instructions qui, grâce à des marqueurs spéciaux,
sont enlevées du source par un préprocesseur. Paul-Christophe
raconte qu'il a développé un tel préprocesseur pour ses
besoins de mise en production et qu'ultérieurement,
il a constaté qu'un préprocesseur simple,
ppp
(pour Perl Pre Processor), existe sur
CPAN, dans la
section des scripts.
-
Jérôme évoque une application écrite en Perl, Request Tracker
(celle qui sert à
répertorier les bugs de module ?).
Lorsqu'il a découvert ce programme, il a essayé de le charger
à partir de CPAN. Le problème, c'est que l'auteur avait découpé
l'application en différents modules interdépendants et qu'il
avait chargé sur CPAN une partie seulement des modules, il n'était
donc pas possible de respecter les dépendances.
-
Nous parlons
d'ActiveState
et de son
offre Perl.
Qu'y a-t-il de plus par rapport à une offre gratuite ou bien
à un Perl que l'on compile soi-même sur Cygwin ?
ActiveState propose des outils en plus de la distribution
standard. Quelqu'un évoque même un outil appelé
pyperl
ou quelque chose comme cela et qui permet d'appeler du code Perl
à partir d'un script
Python.
À part cela, le Perl d'ActiveState simule les
fork()
en utilisant des
threads.
À l'inverse, un Perl compilé avec Cygwin gère mieux les signaux que celui
d'ActiveState.
-
Ceux qui ont rempli une déclaration de revenus par Internet
ont reçu récemment un message venant d'un site
impots.gouvernement.fr ou dgi.gouvernement.fr.
Déjà, pour Nicolas, l'adresse de l'émetteur est louche,
l'administration utilisant des noms de site
xxx.gouv.fr.
Charles a fouillé plus profondément. Le message demande
à l'utilisateur (ou au contribuable si vous préférez)
de bien vouloir monter de version pour la machine virtuelle
Java
de Microsoft.
Or, lorsque l'on consulte le
site de Microsoft, on constate que cette machine virtuelle
n'est plus maintenue et que M$ enjoint les utilisateurs
à télécharger la machine virtuelle
Java
de Sun.
Charles a même examiné l'adresse IP de l'émetteur
et est arrivé à la conclusion que le message provenait
de Vienne... aux États-Unis.
-
Il a été question de
IPv6.
Arnaud a qualifié ce sujet
de « gros troll ». Plus gros peut-être que
les préférences en matière d'éditeur de texte ou de distribution
Linux. L'adressage utilisera 8 octets au lieu de 4 comme
actuellement, ce qui fait dire à certains que l'on pourra attribuer
une adresse IP à chaque atome de l'univers. [ Affirmation exagérée,
cela ne fait guère que 2E+19 adresses possibles. ] Mais en plus,
le protocole comportera des fonctionnalités d'auto-détection,
d'authentification, que sais-je encore [ J'avoue que je ne me suis
pas vraiment informé de la question, j'ai donc vraisemblablement mal
interprété les avis émis en réunion. ]
-
Un modèle de
DHCP
simplifié. Pour un réseau très local, restreint à
une pièce, chaque personne qui se connecte au réseau doit annoncer
à haute et intelligible voix : « Quelqu'un utilise l'adresse
172.16.0.5 ? ... Non ? ... Bon, alors je la prends. »
-
Nous avons beau être partisans de Perl, nous ne sommes pas
fanatiques. Par exemple, Sniper nous raconte que quelqu'un lui a demandé quelle
architecture adopter pour un site web dynamique avec des traitements
simples et une base de données réduites. La réponse de Sniper a
été :
« MySQL
et PHP ».
-
Sniper n'a pas mangé sur place. Voici à ce propos son témoignage.
J'arrive à 19H50 après avoir gouté au nouveau KFC au 21, place de la République.
Chose amusante, il y a un Mac Donalds au 19, un KFC au 21 et enfin un Quick au
23, qui a parlé de guerre du fast food ? Je regrette quand même les disparus
Free-Time et Burger King mais on s'égare.
-
[ Jean reprend ]
Kai est arrivé avec un appareil étrange au poignet gauche.
Nous n'avons pas tardé à apprendre qu'il s'agit d'une
montre
GPS.
Elle donne l'heure, avec la précision des
horloges atomiques, puisqu'elle reçoit le signal des
satellites GPS.
Et elle donne la position. Toutefois,
il existe des circonstances dans lesquelles le signal
GPS ne passe pas, par exemple lorsque l'on se trouve
au sous-sol d'un bâtiment. Dans ce cas, on ne connaît
pas la position et l'heure est simplement connue
avec la précision d'une montre à quartz normale.
Kai explique qu'il est possible d'améliorer la réception
en mettant la montre sur le sommet du crâne, mais
cela fait louche. Ou bien en reliant la montre à une
antenne que la personne porte harnachée sur le dos
ou, peut-être, sur une coiffure. Mais Kai n'a pas
cet accessoire.
-
L'une des utilisations de la montre
GPS
consiste à mémoriser l'itinéraire parcouru par le porteur
lorsqu'il fait du jogging. Ensuite, Kai transfère
les données vers son PC et cela lui permet
de calculer diverses données, comme la longueur
totale et la vitesse moyenne. Il peut également
exposer sur un site web l'historique de ses
courses à pied.
-
Une autre utilisation, quoique plus délicate, est
celle d'« aspire-minettes ». Il n'y a rien
de tel qu'un gros boîtier au poignet avec un écran
LCD éclairé pour se faire aborder par la gent féminine.
Mais si l'on se met à discuter du principe de fonctionnement
du GPS, alors cela fait fuir la gent féminine aussi
sûrement que si l'on parle de la performance des
voitures de sport.
-
Comme aucune fille n'était présente (c'était avant
l'arrivée de Natacha), nous avons discuté du
principe de fonctionnement du GPS.
Lorsque le récepteur reçoit
le signal d'un seul satellite, en mesurant le temps
de réception et en multipliant par la vitesse de
propagation du signal (la vitesse de la lumière),
l'appareil est capable de situer sa position sur
une sphère dont le centre est la position du
satellite. Lorsque le récepteur reçoit le signal
de deux satellites, il est capable de calculer deux
sphères, donc la position se situe sur le cercle
formé par l'intersection de ces deux sphères.
S'il obtient le signal d'un troisième satellite,
alors les possibilités se réduisent à l'intersection
du cercle précédent avec la sphère centrée sur le
troisième satellite, c'est-à-dire deux points
relativement éloignés. Le récepteur peut alors
proposer ces deux points à l'utilisateur qui
choisira lequel est la véritable position.
Mais avec un quatrième satellite, le récepteur
est capable de déterminer entièrement la
position et même de donner l'heure.
Outre les problèmes de réception en sous-sol,
il y a des problèmes pour connaître la position
lorsque l'on se trouve au voisinage des pôles, ce qui
fait que certains avions de ligne perdent leur position
GPS et sont obligés de calculer la position par d'autres
moyens lorsqu'ils utilisent une route polaire.
[ À la réflexion, cette histoire de pôle
me paraît peu vraisemblable. Le GPS a été
mis en place pour les besoins des véhicules militaires
américains, notamment les bombardiers stratégiques et
les intercepteurs. Or, la route privilégiée pour aller
bombarder l'URSS depuis l'Amérique du Nord passe par
les pôles. De même, si les soviétiques avaient envoyé
leurs bombardiers attaquer le continent nord-américain,
ils les auraient fait passer par le pôle nord et c'est donc
là que le NORAD aurait envoyé les intercepteurs.
Il aurait été étonnant que les concepteurs du GPS aient
négligé l'utilisation du système dans cette région.
]
-
Nous avons parlé un peu de la mentalité japonaise, notamment
Arnaud qui est a eu l'occasion de se faire un stage
au Temple de Tokai, l'un des hauts-lieux du judo et du kendo.
La mentalité japonaise accorde une place prépondérante
à l'honneur et il est hors de question de perdre la face.
C'est ainsi que lorsqu'Arnaud était au Temple de Tokai,
il a vu Kosei Inoue (grand champion de judo) participer
à un entraînement alors qu'il avait une périostite (infection de la membrane
osseuse du tibia),
il a vu le senseï de judo participer
à un entraînement alors qu'il avait une infection au genou,
infection qui, en Europe, aurait envoyé le malade
immédiatement à l'hôpital pour se faire opérer.
Il a aperçu également la section de kendo, au lendemain
d'un championnat où le Temple de Tokai s'est fait
rétrograder de la première à la deuxième place.
Le résultat de la compétition a eu pour conséquence une journée
de châtiments corporels pour les participants...
En revanche, il n'y a pas de problème de vol.
Un européen (le père d'Arnaud) avait oublié son portefeuille
au comptoir d'un guichet. Lorsqu'il s'est aperçu de
cet oubli, une demi-heure plus tard, il est revenu
au comptoir et le portefeuille était toujours là.
Et lorsqu'il a repris le portefeuille, un passant
lui a demandé de quel droit il le prenait et M.
Dupuis a dû justifier de son identité en montrant
qu'il correspondait aux photos des papiers d'identité.
-
Il paraît que le film de
Michael Moore,
Fahrenheit 9/11,
a eu un impact considérable aux États-Unis, plus
qu'en France, parce que les Américains ont découvert
avec stupeur que leurs dirigeants avaient menti.
[ Ont-ils déjà oublié les explications foireuses
de Clinton sur ses aventures extra-conjugales ?
Et surtout, ont-ils déjà oublié le second mandat de
Richard Nixon, alias « Tricky Dick » ? ]
Eric revient sur un point évoqué dans le
film,
le rapatriement de la famille Ben Laden des États-Unis
vers l'Arabie Saoudite peu après les attentats.
Dans le film, il est dit que cela s'est passé lors de la période
de quelques jours où le trafic aérien était interrompu et que
l'avion qui a assuré le rapatriement était le seul avion civil à avoir
l'autorisation de voler. En fait, ce rapatriement a eu lieu
au moment où le trafic aérien a été rétabli.
Plusieurs personnes, dont un membre de la famille Ben Laden, ont
écrit à Michael Moore pour lui signaler cette contre-vérité.
Le cinéaste a répondu qu'il savait, mais que c'était plus
vendeur de raconter que le rapatriement avait eu lieu
pendant l'interruption du trafic.
-
En parlant de l'impossibilité (pour l'instant) de Schwartzenegger
de se présenter à la présidence des États-Unis, nous en sommes
venus à parler des différentes lois régissant la nationalité.
Pour les États-Unis, c'est la loi du sang qui compte. Vous pouvez
être américain si vos grands-parents sont américains. Le problème
de Schwarzy ne concerne que son éligibilité à la Maison Blanche, pas
sa nationalité. C'est notamment pour cela, paraît-il, que l'Hôpital Américain
de Neuilly a une convention d'extra-territorialité comme les ambassades :
c'est pour garantir aux diplomates en poste en France que leurs
enfants pourront naître sur le « sol américain » et ne seront
pas exclus de la course à la Maison Blanche. D'autres nations
appliquent le droit du sol, ce qui fait qu'un enfant né dans un pays
étranger pourra avoir la double-nationalité. En fait, les lois
changent d'une année sur l'autre, et pour déterminer la nationalité
d'un enfant, il faut savoir non seulement où il est né et quels sont
ses parents, mais également à quelle date il est né.
-
Eric a commencé à lire la trilogie du
Guide du Routard Galactique
en version originale.
Il s'est procuré la version qui réunit les cinq romans en un
seul volume. Déjà rien qu'en lisant la préface, il était écroulé
de rire lorsque Douglas Adams raconte l'historique du roman :
cela a commencé par une
série radiophonique,
puis cela a continué
par un livre reprenant les épisodes 1 à 4, puis un autre livre reprenant
les épisodes 8 à 12, puis il y a eu une série télévisée, puis
un disque, puis...
-
Eric a également lu un
HOWTO
dans ce volume, donnant
des instructions pour pouvoir quitter la planète Terre. C'est un
HOWTO
très instructif et très précis, puisqu'il
donne le numéro de téléphone de la Maison Blanche, du Kremlin
et du Vatican (mais Eric n'a pas vérifié). Je connaissais déjà ce
HOWTO,
il figurait dans l'annexe IV de
Don't Panic,
la biographie de Douglas Adams par Neil Gaiman.
-
Philippe est en train de lire un livre sur l'usage
américain de la ponctuation,
Eats, Shoots and Leaves.
Il semble que c'est une référence chez les anglophones.
Parallèlement, Jérôme s'est procuré récemment chez
Eyrolles
un livre sur un sujet analogue, mais pour la langue
française. Il s'agit des
Règles typographiques en usage à l'Imprimerie Nationale.
Ce livre contient entre autres la signalétique utilisée
dans le secteur de l'impression pour la correction des épreuves
papier avant de lancer le tirage d'un livre. Cette signalétique
prévoit par exemple un symbole en forme de zig-zag pour montrer que deux
caractères ont été inversés et qu'il faut rétablir l'ordre. Ou
bien un symbole rappelant le lambda pour un caractère à supprimer.
Et chaque fois qu'un symbole de correction apparaît dans le texte,
il est repris dans la marge.
En fin de soirée, alors que le sujet est repris en présence
de Natacha, elle nous signale que dans la maison où elle travaille,
elle est censée utiliser cette signalétique.
-
Nous avons parlé d'électrocution. Charles évoque l'époque où
il était stagiaire. Il devait intervenir sur un appareil électrique.
L'appareil comportait un témoin indiquant s'il était sous tension.
Charles s'assure donc que le témoin indique qu'il n'y a pas de
problème. À peine commence-t-il à travailler qu'il prend une décharge.
Comme lui ont dit ses collègues expérimentés, le seul témoin valable
est de s'assurer que la prise soit débranchée du secteur.
-
Sniper a lui aussi subi un choc électrique, dont je n'ai pas retenu
les circonstances. Depuis cet accident, il n'a quasiment plus
de sensation des douleurs (quoique cela commence à revenir).
Cela peut se révéler bénéfique, comme lorsqu'il va chez le dentiste
et qu'il n'a pas besoin d'anesthésie. Cela peut être néfaste,
lorsque par exemple il ne réagit pas après s'être ébouillanté.
-
Dans le même style, Charles évoque le cas d'une femme qui a subi un
traitement de fluorisation des dents alors que par ailleurs, elle
prenait des antalgiques. À l'époque, une des
particularités du traitement de fluorisation était que le patient
était soumis à un courant continu pour intensifier le dépôt
de fluor par électrolyse. Un cylindre métallique servait comme
point de connexion de la cathode et était tenu dans la main.
L'effet Joule le faisait chauffer, ce qui fait que le patient
le lâchait lorsque le cylindre devenait
trop chaud, ce qui mettait fin à l'intervention. Dans le cas de la
femme, les antalgiques l'ont en partie anesthésiée et
elle a conservé trop longtemps le cylindre de métal,
ce qui fait que des brûlures en ont résulté.
-
Pour en revenir aux électrocutions, des problèmes peuvent se produire
avec une simple tension de 24 volts, qui est d'ailleurs la
valeur légale pour définir le danger électrique. D'un autre côté,
certaines personnes ont survécu à des chocs de plusieurs milliers
de volts, mais c'était dans des circonstances très spéciales :
intensité si faible qu'il n'y a pas eu d'effet Joule, la décharge n'est
pas passée au voisinage du cœur, etc. Malgré tout, n'essayez pas
chez vous.
-
Une vache peut être électrocutée même sans avoir été touchée par
la foudre. En effet, si la foudre touche un point proche de l'endroit
où se trouve la vache, le sol est électrisé et il y a un gradient de
potentiel électrique. Si la vache est dans une mauvaise orientation,
le gradient électrique provoque une différence de potentiel entre
les pattes avant et les pattes arrières, ce qui est fatal pour la vache.
-
Qu'elle est dangereuse, la vie des vaches ! Même la traversée
à gué d'une simple rivière peut leur être fatale ! En effet,
comme elles n'ont pas de sphincter, si le niveau de l'eau
est trop haut, elles se remplissent petit à petit par l'« autre
extrémité » lorsqu'elles traversent l'eau. Et si cela dure trop
longtemps, la quantité de flotte absorbée peut se révéler fatale.
-
Nous avons brièvement évoqué la possibilité de faire des
véhicules avec des roues carrées. Cela impose d'avoir
une route très spéciale, avec un profil en cycloïde ou
une courbe analogue, mais si c'est bien fait, le véhicule
se déplace selon un mouvement parfaitement rectiligne et horizontal.
-
Après avoir commandé les desserts, nous parlons du dessert préféré
de notre Csar David (absent ce jour-là), le « nègre en chemise ».
Il paraît que pour être politiquement correct, il faut dire
« meringue au chocolat ». Pour moi, même si le terme isolé
« nègre » est péjoratif et malvenu, il n'en va pas forcément de même
pour les expressions bâties sur ce mot. Quelques minutes plus
tard, une autre discussion me permet de donner une analogie.
Le mot « cul » est considéré comme grossier, mais les
expressions « cul-de-sac » et « cul de bouteille »
sont tout-à-fait admissibles dans une conversation mondaine.
-
Jérôme a évoqué la place du français à l'étranger. Il donne l'exemple
de l'Allemagne où les voies sans issues sont signalées par
une inscription « cul de sac », en français dans le texte.
De même, les coiffeurs sont appelés Friseurs, même
si vous leur demandez de vous faire la boule à zéro.
-
Arnaud étant resté sur le sol français, nous sommes peu confiants
quant aux chances françaises pour les compétitions olympiques de judo.
La discussion dérive sur divers sujets sportifs et même, au grand dam
de Sniper, sur le foot-ball. Heureusement, cela n'a pas duré.
Ceci est un script que j'ai écrit en 1993 sur HP-UX, puis converti
sur AIX il y a 10 ans presque jour pour jour. Le client pour lequel
je travaillais était anglais, donc tous les textes, y compris les commentaires
de programmes étaient censés être écrits en anglais.
J'ai également laissé les commentaires institutionnels
ainsi que la documentation en ligne qui ne correspond pas
aux pages de man, ni dans le plan, ni dans la technique
(totalement déconnectée de nroff).
Comme vous
pouvez le constater, le script est
légèrement buggué : à chaque changement de mois, si un utilisateur
ne s'est pas déconnecté la veille, il apparaîtra en fin de liste avec
l'option -t, alors qu'il devrait apparaître en première position.
Le même bug existait dans la version HP-UX, mais une fois par an seulement.
Quant aux commentaires justifiés à gauche et à droite, la méthode a déjà été
évoquée dans un compte-rendu précédent.
#------------------------------------------------------------------------------
#--- name : lsusr
#---
#--- object : list all currently connected users, with only one line
#--- per user containing the number of still active connections and
#--- the lowest date for these. Alternatively, with option a, list the
#--- time since the most recent activity.
#---
#--- But : afficher la liste des utilisateurs connectés, avec une
#--- seule ligne par utilisateur contenant le nombre de connexions
#--- existantes, et la date de la plus ancienne d'entre elles. Ou
#--- alors, avec l'option a, afficher pour chaque utilisateur le temps
#--- écoulé depuis l'action la plus récente.
#---
#--- date : 10/08/1994
#---
#------------------------------------------------------------------------------
#--- author date reason
#---
#------------------------------------------------------------------------------
#
#
utilname=$0 ; export utilname
sort_opt='' ; export sort_opt
#
#--- keyword analysis loop
for i
do
case $i in
#--- user ask help manual
help)
echo "\f
============================================================================
$utilname
===========
purpose :
list all currently connected users, with only one line per
user containing the number of still active connections and the
lowest date for these. Alternatively, with option a, list the
time since the most recent activity.
keywords :
===> help
Display text concerning usage of this utility
===> -a
list time since last activity
===> -t
sort by connection time
parameters :
None.
result :
List every user currently connected
============================================================================" |
more
exit 0;;
-t)
# optional output sort criteria
# k2bM2 : month
# Note: the M modifier exists on HP-UX but not AIX. Nevertheless,
# its only use is at the start of the month, and if a user did
# not log out the preceding evening. This sort criterion is
# discarded in the AIX version.
# k3b,4 : day and hour
#
# sort_opt='-k2bM2 -k3bn,3 -kb4,4'
sort_opt='-k3bn,3 -kb4,4'
;;
esac
done
#
# - who including activity
# - reordering fields within the line: activity, month, day, hour, user
# - replace the "old" and "." values by "24:00" and "00:00" respectively, and if
# activity is less than 10, insert a zero to right align the numbers
# - sort criteria
# k5,5 : user's name
# k2bM,2 : connection month
# Note: the M modifier exists on HP-UX but not AIX. Nevertheless,
# its only use is at the start of some months, and if a user did
# not log out the preceding evening. For example, if a user
# logged in on the 31st of July and is still logged on the first
# of August. This sort criterion is discarded in the AIX version.
# k3b,4 : connection day and hour
# or
# k5,5 : user's name
# k1b,1 : time since last activity
# - keep one line per user, counting the number of lines per user
# - reordering:
# user, month, day, hour, number of connections
# or
# user, time since last activity, number of connections
# number of connections is right-aligned with a leading space
# - optional sort
#
who -u | awk '{ print $6 " " $3 " " $4 " " $5 " " $1 }' \
| sed -e s/old/24:00/ -e 's/^\./00:00/' -e 's/^[0-9]:/0&/' \
| if [ "$1" = "-a" ]
then
sort -k5,5 -k1b,1
else
# sort -k5,5 -k2bM,2 -k3b,4
sort -k5,5 -k3b,4
fi \
| uniq -f 4 -c \
| if [ "$1" = "-a" ]
then
awk '{ printf("%-10s\t%s\t%2d\n", $6, $2, $1) }'
else
awk '{ printf("%-10s\t%s %s %s\t%2d\n", $6, $3, $4, $5, $1) }'
fi \
| sort $sort_opt
HTML 5 - CSS v3
Mongueurs de Paris, le 28 juin 2018
Copyright © The Paris Perl Mongers, 1999-2024