Inventaire (Guide du développeur)

De Biciklo
Aller à : navigation, rechercher

Architecture

Le logiciel est basé sur une architecture web classique, c'est à dire une base de données, un logiciel serveur et des pages téléchargées et exécutées par un fureteur côté client. Pourquoi? Ça allait plus vite pour moi de faire un truc web plutôt que de faire une application "desktop".

L'engin de bases de données utilisé est mongodb, un type de BD dit NoSQL. Pourquoi? Parce qu'à ce moment ça me tentait d'essayer ça. Par rapport aux BD SQL classiques, c'est pratique pour certaines choses et moins pour d'autres. La BD contient une collection (l'équivalent d'une table) par concept (membres, pièces, factures, peut-être que d'autres viendront plus tard). Certaines entrées font référence à des entrées d'autres collections. Par exemple, une facture contient le numéro du membre à qui la facture appartient. Rien ne nous garantit de l'existence de ce membre comme pourrait le faire une contrainte forte dans une base de donnée relationnelle. On doit donc faire bien attention avant de supprimer quoi que ce soit, afin de ne pas laisser de références qui vont dans le vide.

Le logiciel côté serveur est écrit en Python, à l'aide du framework Flask. Pourquoi? Parce que c'est bien pratique malgré que ce soit minimaliste. La tâche du framework est de router les requêtes. En d'autres mots, on lui dit: lorsque tu reçois une requête pour /api/membres, appelle ma fonction ici. Et dans cette fonction, on va retourner la liste des membres au client. On peut également lui demander de router les requêtes du type /api/membres/<id>, où <id> est un nombre entier représentant un numéro de membre. Notre fonction retournera donc les infos sur ce membre s'il existe, sinon une fameuse erreur 404 Not Found. Pour aider à envoyer des pages dynamiques au client, le serveur utilise aussi la fonction de templates du framework, basée sur Jinja2.

Sur le client, le code Javascript utilise les bibliothèques jQuery, Bootstrap (version 2) et Datatables pour essayer de faire quelque chose qui a de l'allure.

Sauvegardes

Un script est fourni dans l'entrepôt git (misc/backup/backup.sh) pour faire une sauvegarde automatique. Autrement, ces commandes peuvent être utilisées pour exporter les données et les compresser:

   $ mongodump --db biciklo -o biciklo_dump
   $ tar -cvJf biciklo_dump.tar.xz biciklo_dump
   $ rm -rf biciklo_dump

Le fichier résultant est biciklo_dump.tar.xz. Ce fichier se trouve sur le dropbox de l'atelier sous un nom de la forme biciklo_2015MMJJ_HHMMSS.tar.xz. Pour restaurer:

   $ tar -xf biciklo_2015MMJJ_HHMMSS.tar.xz  # par exemple
   $ mongorestore --drop biciklo

Liens