Café des sciences
Café des sciences (développé par Thiébaut Mochel et Raymond Ripp)
On dirait une usine à gaz mais ça marche du tonnerre depuis 1999.
Attention voir Tcl/Tk pour que le package Tcl http fonctionne avec le café des sciences
Principe
La relative lenteur du chargement de Gscope en mémoire nécessitait d’en faire un serveur fonctionnant de manière permanente. Il est possible d’interroger ce serveur en lui demandant d’exécuter une procédure et de renvoyer son résultat. Comme il est possible, à priori, d’utiliser plusieurs serveurs, il est nécessaire de les gérer.
Nous nous sommes rendus compte que l’organisation des programmes reflétait ce qui se passe, dans la réalité, lors d’une soirée dans un café des sciences :
Un nombre indéterminé de curieux (ou clients) veulent poser des questions et entendre les réponses d’un ensemble de savants invités à débattre de ce qu’ils savent. Le client demande à l’animateur du café de sciences à quel savant il doit s’adresser pour savoir telle ou telle chose… L’animateur (qui connaît les savants) le recommande à un savant particulier pour éviter le chahut systématique dans ce type de réunion et le dialogue s’entame. D’autres clients pourront avec d’autres questions profiter de l’enthousiasme grandissant du savant (il est lancé). Dans notre cas, le savant « informatique » peut en « temps partagé » répondre à plusieurs clients.
Nous avons implémenté ce concept en utilisant le système de sockets. Une Socket permet à deux processus (qui peuvent résider sur deux machines différentes) de communiquer. Un même processus peut communiquer éventuellement avec plusieurs autres « en même temps » à travers des canaux différents.
La connexion d’un processus client à un processus existant ne se fait pas directement sur décision du client, celui-ci doit demander à un processus maître, qui tourne déjà, de les mettre en relation.
Le client, s’il veut envoyer des ordres, demande d’abord au café l’identifiant du savant auquel il veut se connecter. Le café répond avec l’adresse IP et le port sur lequel le savant tourne. Le client peut ensuite se connecter au savant et lui envoyer des ordres. Le savant exécute ces ordres dans un interpréteur fils sécurisé. L’interpréteur sécurisé empèche le client d’exécuter certaines fonctions Tcl comme exec, empêchant ainsi un utilisateur de lancer des commandes dangereuses pour la sécurité de Wscope.
L’administrateur système peut gérer le café grâce à un programme de gestion. En s’adressant au café, il est par exemple possible d’obtenir la liste des savants qui tournent, de fermer le café ou de lister les questions posées.
Une implémentation de ce concept a été écrite entièrement en Tcl. Ceci permet au savant d’accéder directement à Gscope. Néanmoins, il est possible de changer de langage : par exemple, écrire la partie client en Java, C, ou autre permet d’accéder aux résultats de Gscope à partir de ces langages. D’autre part, si Gscope est porté vers un autre langage, la partie Wscope en Tcl sera immédiatement utilisable.
L’utilisation optimale du café des sciences est de faire communiquer des clients légers, par exemple le programme CGI sur un petit serveur Web, et de faire tourner la partie café sur une machine dédiée au service de données. Le café permet des gains de performance non négligeables en évitant le chargement de l’ensemble de Gscope (environ 300 000 lignes de code Tcl) à chaque requête CGI.
Utilisation
dans la suite :
HOST (optionnel) est par défaut soit alnitak ou star8 ça dépend de la science demandée
PORT (optionnel) est par défaut 20000
SCIENCE est en général un projet gscope mais ça peut être genoret ou tout autre programme qui se respecte
en langage de commande
- question_de_science HOST:PORT:SCIENCE COMMANDE
- qds HOST:PORT:SCIENCE COMMANDE
on peut mettre, par exemple
qds Pabyssi ListeDesPABs > MesORFs.txt
dans gscope
- QuestionDeScience HOST:PORT:SCIENCE COMMANDE
set Resultat [QuestionDeScience Pabyssi "ret FileMoi nuctfa PABY0025]