Voici venue la revue de sprint numéro 10, qui a pour thème principal les ressources externes.
Tâches
- 18 tâches prévues
- 10 tâches effectuées
- 22 tâches au total
- plus de 46 points de complexité prévus (avec des incertitudes)
- 36,5 points de complexité résolus (avec des tâches non prévues): dans la moyenne
madec-project.github.io
J’ai créé un page pour l’organisation madec-project
sur GitHub, celle qui contient tous les programmes liés au projet MADEC. GitHub offrant l’hébergement d’un site statique, nous avions déjà opté pour Hexo pour ce blog.
Pour obtenir une URL relativement courte (en tout cas plus courte que http://madec-project.github.io/blogfr), il a fallu nommer le dépôt contenant ce site madec-project.github.io
, ce qui nous autorise une URL sans le nom du dépôt: http://madec-project.github.io/
Un compte Twitter ezvis_project a aussi été créé (en ces temps de communication autour d’ezVIS, ça peut servir).
vimadec / vpmadec / puppet
Le travail avec Patrice, Martial et Philippe porte ses fruits:
- ajout d’un script d’installation d’une app ezmaster à partir de l’URL de son
.tar.gz
, - mise sous surveillance du processus
ezmaster
afin de le relancer automatiquement quand il s’arrête (via forever), - création d’une machine virtuelle de production
vpmadec
, - création d’un accélérateur sécurisé vers cette machine virtuelle.
ezVIS
Test sous node v0.12
En utilisant nvm, nous avons lancé et testé à la main ezVIS, et tout a marché.
Il a néanmoins fallu passer par un npm rebuild
pour recompiler/récupérer les modules binaires correspondant à cette version (principalement bson
et kerberos
)
Affichage de la version
Pour faciliter les échanges avec les utilisateurs (il y en a eu avec une personne d’Orléans, par mél), on affiche la version d’ezVIS dans le navigateur:
mais aussi lors du lancement d’une instance ezVIS:
login/password
On peut maintenant limiter l’accès à un rapport ezVIS en utilisant la clé access
, contenant un login
et un mot de passe soit plain
, soit sha1
:
1 | "access": { |
Le mot de passe sous forme plain
est simplement le mot de passe en clair.
Mais comme ce n’est pas une bonne pratique, on peut remplacer son usage par celui de sha1
qui remplace un mot de passe par son empreinte SHA-1.
Ainsi, on connaît l’empreinte du mot de passe, mais pas le mot de passe lui-même.
Pour obtenir l’empreinte SHA-1 d’un mot de passe, on peut utiliser des commandes comme shasum
ou sha1sum
(en n’incluant pas de passage à la ligne dans le mot de passe), ou bien des sites de génération comme SHA1 online.
Accès aux ressources externes
ezref
On peut avoir besoin de ressources externes à ezvis (parce que de simples fichiers), mais avec la possibilité de remplacer ces fichiers de référence (tables de correspondance, listes, …).
Utiliser ezref
, l’application pour ezMaster qui met à disposition via le protocole http des fichiers qu’ezMaster vous permet de déposer est la solution.
Pour pouvoir stocker les ressources: ezref (serveur web statique).
flyingFields
Les flyingFields
sont les cousins des documentFields
et des corpusFields
. Ils sont un croisement, dans le sens où ils permettent l’interopérabilité des uns et des autres.
JBJ
Pour pouvoir appliquer une table de correspondance présente dans les corpusFields
, on a ajouté une action mappingVar
à JBJ, qui fonctionne comme mapping
, mais dont les arguments sont différents.
Exemple: externaliser la table de correspondance d’une carte géographique
Pour projeter des données sur la carte du monde, jusqu’ici, on était obligé de traduire les noms des pays en codes ISO (c’est ainsi que sont identifiés les pays sur la carte):
1 | "$fields.country" : { |
Nous avons amélioré l’opérateur mapping
de JBJ pour qu’il puisse traiter directement tout un tableau:
1 | "$fields.country" : { |
Puis, nous avons créé un opérateur similaire à mapping
qui, au lieu de prendre en entrée l’objet courant et en paramètre la table de correspondance, permet de mettre en paramètre deux noms de variable: l’entrée et la table.
Il s’appelle mappingVar
(ou combine
).
1 | { |
Ceci renvoie "Aha!"
.
Donc, grâce à ezref
, on peut mettre la table de correspondance sur un serveur externe, et le charger dans un corpusFields
, accessible comme une variable dans les flyingFields
:
1 | "documentFields": { |
Quand on veut avoir le nombre de valeurs distinctes de fields.country
, on peut utiliser l’URL http://localhost:3000/compute.json?operator=distinct&field=fields.country :
1 | { |
Mais en utilisant &flying=country2
en plus, on applique le JBJ correspondant à ce champ:
http://localhost:3000/compute.json?operator=distinct&field=fields.country&flying=country2
1 | { |