Author: fgilet Date: 2010-02-11 10:04:56 +0100 (Thu, 11 Feb 2010) New Revision: 73 Added: trunk/docs/analyse/Analyse.rst trunk/docs/rapports_suivi/CompteRendu_01-02-2010.rst trunk/docs/rapports_suivi/CompteRendu_08-02-2010.rst trunk/docs/rapports_suivi/CompteRendu_18-01-2010.rst trunk/docs/rapports_suivi/CompteRendu_25-01-2010.rst Log: docs ajout?\195?\169s (comptes rendus et analyse) Added: trunk/docs/analyse/Analyse.rst =================================================================== --- trunk/docs/analyse/Analyse.rst (rev 0) +++ trunk/docs/analyse/Analyse.rst 2010-02-11 09:04:56 UTC (rev 73) @@ -0,0 +1,236 @@ +// mardi 12 janvier 2010 + +Technologies +------------ + +- UML +- JAVA +- JMX +- Jaxx / Swing +- HBase +- XML +- SVN +- RST +- Maven + +Contraintes +------------ + +- L'encodage des fichiers doit être en UTF-8. +- La norme checkstyle de sun doit être utilisée pour le code java (http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html). +- Pour les diagrammes UML, l'outil ArgoUML (v 0.28.1) doit être employé. +- Utilisation de Maven2 pour la construction, génération du site web… +- Couverture du code à 80% +- Environnement de développement libre (Eclipse, Netbeans, Vim) +- Utilisation de rst (ReStructuredText) pour la documentation +- Projet sous licence GPL v3 +- Code source en anglais + +Définitions +----------- + +HBase : HBase est un système de gestion de base de données distribuée disposant d'un stockage structuré pour les grandes tables.HBase est inspirée des publications de Google sur BigTable. Comme BigTable, elle est une base de données orientée colonnes. + +HMap : une table de hachage est une structure de données qui permet une association clé-élément, c'est-à-dire une implémentation du type abstrait table de symboles. + +RST : RST (ReStructuredTex)t est un langage de balisage léger utilisé notamment dans la documentation. + + +Analyse de BigTable (de google Inc.) +===================================== + +But de l'analyse +---------------- + +Permettre la compréhension de Big Table et de ses diverses implémentations +ainsi que l'extraction d'interface pour le projet MSM. + +Introduction : Qu'est-ce que BigTable ? +--------------------------------------- + +BigTable est la spécification d'un système de stockage distribué permettant +de gérer des données. Il est conçu pour s'adapter fiablement à des tailles +de contenu allant jusqu'au "Peta". BigTable est utilisé pour plusieurs raisons : + +- Toucher un large ensemble d'applications +- Mise à l'échelle +- Très bonnes performances (temps de réponse...) +- Forte disponibilité + +Le modèle de données de BigTable +-------------------------------- + +Le modèle de données de BigTable se comporte comme un dictionnaire +multidimensionnel (matrice) indexé par le triplet +<row key, column key, timestamp>. Chaque valeur de ce dictionnaire +est un table d'octets. + +Les clés pour une rangée du dictionnaire sont des chaînes de charactères +arbitraires et BigTable maintient les données dans un ordre lexicographique +grâce à ce type de clé. + +ex de clé de rangée : "com.google.maps/index.html" (reversed URL) + +La portée d'une rangée est appelée "tablet", unité de distribution et d'équilibrage +de charge. + +Les clés de colonne sont groupées en ensembles appelés "famille de colonnes". +Une clé de colonne est nommé suivant le schéma : family:qualifier. +Les noms de famille doivent être lisibles facilement mais les qualificateurs peuvent +être des chaînes de charactères arbitraires + +ex de famille de colonne : "contents:" + +Ainsi, le contenu d'une cellule indexée par <com.google.maps/index.html, contents:, ?> +serait le contenu de la page "index.html" (le code html). +Une cellule peut contenir plusieurs versions de la même donnée via le mécanisme de timestamp. +Chaque cellule stocke plusieurs timestamp en ordre décroissant si bien que : + +- <com.google.maps/index.html, contents:, ts1> donne la version la plus récente du contenu. +- <com.google.maps/index.html, contents:, ts2> donne une version plus ancienne du contenu. + +Stockage +-------- + +BigTable utilise le système de fichier google GFS (Google File System) +pour stocker les logs et fichiers de données. + +Le format de fichier google SSTable est utilisé pour stocker les données +internes à BigTable. + +API BigTable (client) +--------------------- + +Voici les fonctionnalités prévues par la spécification BigTable : + +- Création de tables. +- Création de familles de colonne. +- Suppression de tables. +- Suppression de familles de colonne. +- Changement de cluster (?). +- Changement de table. +- Changement de méta données sur une famille de colonne (droits d'accès...). +- Ecriture des données dans une table. +- Suppression des données dans une table. +- Recherche des données dans une table depuis des rangées individuelles. +- Itération sur un sous-ensemble de données d'une table. +- Manipulation avancée des données : Transactions "Lecture - Modification - Ecriture" +sur une rangée simple (BigTable ne supporte pas les transactions par rangées multiples). +- Utilisation des cellules comme compteurs d'entier. +- Excécution de scripts clients dans l'espace d'adressage des serveurs (langage : sawzall). +- Calcul parallèle avec le framework MapReduce. + +Source +------ + +Cette analyse est une synthèse des éléments utiles dans le cadre du projet, issue de la +spécification même de Google Inc. +"BigTable: A Distributed Storage System for Structured Data" + +lien : labs.google.com/papers/bigtable-osdi06.pdf + + +How to Hbase +============ + +Préparation de l'environnement de travail +----------------------------------------- + +prérequis : (nous travaillerons sur linux) + - SSH doit être installé. + +Télécharger Hadoop : +ftp://ftp.inria.fr/pub/Apache/hadoop/core/hadoop-0.20.1/hadoop-0.20.1.tar.gz +Télécharger Hbase : +ftp://ftp.inria.fr/pub/Apache/hadoop/hbase/hbase-0.20.2/hbase-0.20.2.tar.gz + +Dézipper les archives... + +Variables d'environnement +------------------------- + +Créer deux variables d'environnement "Hadoop_HOME" et "HBase_HOME" localisant les dossiers Hadoop-0.20.1 et HBase-0.20.2. +Ouvrir les fichiers ${Hadoop_Home}/conf/hadoop-env.sh et ${HBase_Home}/conf/hbase-env.sh et modifier/ajouter la variable d'environnement JAVA_HOME. + +Lancement des daemons +--------------------- + +Lancement du daemon hadoop : +${Hadoop_HOME}/bin/start-dfs.sh + +Lancement du daemon hbase : +${HBase_HOME}/bin/start-hbase.sh + +Lancement du shell Hbase +------------------------ + +${HBase_HOME}/bin/hbase shell + +Exemple +------- + +hbase> # Type "help" to see shell help screen +hbase> help +hbase> # To create a table named "mylittletable" with a column family of "mylittlecolumnfamily", type +hbase> create "mylittletable", "mylittlecolumnfamily" +hbase> # To see the schema for you just created "mylittletable" table and its single "mylittlecolumnfamily", type +hbase> describe "mylittletable" +hbase> # To add a row whose id is "x", to the column "mylittlecolumnfamily:x" with a value of 'x', do +hbase> put "mylittletable", "x" +hbase> # To get the cell just added, do +hbase> get "mylittletable", "x" +hbase> # To scan you new table, do +hbase> scan "mylittletable" + +Arrêt des daemons +----------------- + +Lancement du daemon hadoop : +${HADOOP_HOME}/bin/stop-dfs.sh +(On va dire que l'action n'est pas très rapide... Si elle marche.. ?) + +Lancement du daemon hbase : +${HBASE_HOME}/bin/stop-hbase.sh +${HBASE_HOME}/bin/stop-all.sh +(??? pour le premier il faut renseigner le nom du node ? Pour le second, je doute fort qu'il éteigne bien le daemon..) +---> Problème de port à la fac, je suppose. + + +How to use plugin emma +====================== + +cr - pour JUnit3 : + - la classe de test doit terminer par "Test" ; + - les m +clic droit sur le projet (ou une classe de test) -> Coverage As -> JUnit Test ... + +Une vue Coverage doit s'ouvrir, + - L'on peut parcourir les dossier pour visualiser la couverture de code par package/classe/m - L'on peut choisir la session de couverture - L'on peut supprimer une session de couverture ... + +How to use others plugins +========================= + +Maven : http://m2eclipse.sonatype.org/update/ + - installer uniquement ce qui est dans Maven Integration +Subclipse : http://subclipse.tigris.org/update_1.6.x + - je crois que l'on a uniquement besoin du subclipse->subclipse(required) +Eclipse-cs (checkstyle) : http://eclipse-cs.sf.net/update/ + - installer la version 4.x, je n'ai pas essayé là, mais la 5.x merdait la dernière fois que j'ai essayé. +PMD (analyse statique du code) : http://pmd.sourceforge.net/eclipse +TestNG : http://beust.com/eclipse (Perso, je préfère JUnit et autant faire tous les tests avec le même truc...) +JUnit : il suffit juste d'ajouter une librairie Junit au projet... (perso, je préfère Junit 3, dans Junit 4 on marche principalement avec des annotations java mais il a l'avantage de permettre de mettre le nom que l'on veut pour les méthodes de test... avec Junit3, il faut que la classe de test finisse pas *Test, que les méthodes de test commencent par test* ...). + - tuto Junit : http://www.jmdoudoux.fr/java/dejae/chap011.htm +Coverlipse (couverture de code) : http://coverlipse.sf.net/update -> ne veut pas installer... ??? +Emma (couverture de code) : http://update.eclemma.org/ + + +/!\ : Mieux vaut éviter d'activer en permanence Checkstyle et Emma. +-> Emma surligne respectivement en vert ou en rouge les lignes couvertes ou non pour les tests. +-> Checkstyle surligne en jaune les lignes à problème. + +Il est certes vrai que nous ne devrions pas avoir de lignes surlignées en jaune, non ? +Idem pour PMD notre meilleur pire amis. + +Bon, peut-être que la liste n'est pas exaustive pour le moment. + + Added: trunk/docs/rapports_suivi/CompteRendu_01-02-2010.rst =================================================================== --- trunk/docs/rapports_suivi/CompteRendu_01-02-2010.rst (rev 0) +++ trunk/docs/rapports_suivi/CompteRendu_01-02-2010.rst 2010-02-11 09:04:56 UTC (rev 73) @@ -0,0 +1,31 @@ +semaine du 1 fevrier 2010 +========================== + +Architecture à plugin +--------------------- + +- Analyse de l'intégration de l'architecture à plugins avec l'IHM + +JAXX +---- + +Implémentation de l'internationalisation dans l'IHM pour appréhender les liaisons java, jaxx et css. (optionnel mais utile pour la compréhension) + +Objectifs de le la semaine prochaine +----------------------------------- + +Implémentation de la navigation (Arbre naviguable). + +RAF (Reste à faire) +------------------ + +- Analyse description de Hbase [DONE] +- Scénario (description textuelle) des cas [DONE] +- Diag. de classes du modèle [pending] +- Format de découverte des Plugins et architecture [DONE] +- Faire les interfaces core(Hbase, Hashmap) et graphiques pour les plugins [DONE] +- Faire un exemple simple jaxx [DONE] +- Faire les bases d'une archi à plugin simple [DONE] +- Valider le fonctionnement de l'architecture à plugin [DONE] +- Implémentation basique de l'interface graphique [DONE] +- Implémentation plus complexe de l'interface graphique [pending] \ No newline at end of file Added: trunk/docs/rapports_suivi/CompteRendu_08-02-2010.rst =================================================================== --- trunk/docs/rapports_suivi/CompteRendu_08-02-2010.rst (rev 0) +++ trunk/docs/rapports_suivi/CompteRendu_08-02-2010.rst 2010-02-11 09:04:56 UTC (rev 73) @@ -0,0 +1,33 @@ +semaine du 8 fevrier 2010 +========================== + +Architecture à plugin +--------------------- + + + +JAXX +---- + +Implémentation de la navigation (non finie). + + +Objectifs de le la semaine prochaine +----------------------------------- + +Finition de l'arbre de navigation. +Commencement de la visualisation du contenu des tables d'une base donnée. + +RAF (Reste à faire) +------------------ + +- Analyse description de Hbase [DONE] +- Scénario (description textuelle) des cas [DONE] +- Diag. de classes du modèle [pending] +- Format de découverte des Plugins et architecture [DONE] +- Faire les interfaces core(Hbase, Hashmap) et graphiques pour les plugins [DONE] +- Faire un exemple simple jaxx [DONE] +- Faire les bases d'une archi à plugin simple [DONE] +- Valider le fonctionnement de l'architecture à plugin [DONE] +- Implémentation basique de l'interface graphique [DONE] +- Implémentation plus complexe de l'interface graphique [pending] \ No newline at end of file Added: trunk/docs/rapports_suivi/CompteRendu_18-01-2010.rst =================================================================== --- trunk/docs/rapports_suivi/CompteRendu_18-01-2010.rst (rev 0) +++ trunk/docs/rapports_suivi/CompteRendu_18-01-2010.rst 2010-02-11 09:04:56 UTC (rev 73) @@ -0,0 +1,34 @@ +semaine du 18 janvier 2010 +========================== + +Architecture à plugin +--------------------- + +- Prototype d'architecture à plugin basée essentiellement sur urlClassLoader +- Création de plugin simple (simpliste : hashmap) pour tester l'architecture - architecture fonctionnelle + +JAXX +---- + +Configuration de l'environnement de travail avec ant pour premiers tests. +Découverte de jaxx : des principales fonctionnalités (original jaxx), des tags, du fonctionnement des fichiers jaxx, css et java. +Première analyse avec prototype papier de l'IHM. (si besoin scan dans le svn). + +Objectifs de le la semaine prochaine +----------------------------------- + +Valider l'architecture à plugin +Test des exemples jaxx avec maven +Synchroniser le dépot code lutin + +RAF (Reste à faire) +------------------ + +- Analyse description de Hbase [DONE] +- Scénario (description textuelle) des cas [DONE] +- Diag. de classes du modèle [pending] +- Format de découverte des Plugins et architecture [DONE] +- Faire les interfaces core(Hbase, Hashmap) et graphiques pour les plugins [pending] +- Faire un exemple simple jaxx [pending] +- Faire les bases d'une archi à plugin simple [pending] +- Valider le fonctionnement de l'architecture à plugin [pending] \ No newline at end of file Added: trunk/docs/rapports_suivi/CompteRendu_25-01-2010.rst =================================================================== --- trunk/docs/rapports_suivi/CompteRendu_25-01-2010.rst (rev 0) +++ trunk/docs/rapports_suivi/CompteRendu_25-01-2010.rst 2010-02-11 09:04:56 UTC (rev 73) @@ -0,0 +1,33 @@ +semaine du 25 janvier 2010 +========================== + +Architecture à plugin +--------------------- + +- Découverte du ServiceLoader (lors de la discussion avec Tony Chemit) +- Nouveau prototype fonctionnel basé sur le ServiceLoader + +JAXX +---- + +Configuration de l'environnement de travail avec maven pour premier test +Découverte de jaxx : nouvelle vision avec la démo modifiée par code lutin, des nouveau tags,... +Implémentation basique de l'interface sans dynamicité +Tests des principales balises de disposition d'éléments (VBOX, HBOX, TABLE,...) + +Objectifs de le la semaine prochaine +----------------------------------- + +Implémentation des fonctions de base dans l'IHM ( navigation et visualisation du contenu). + +RAF (Reste à faire) +------------------ + +- Analyse description de Hbase [DONE] +- Scénario (description textuelle) des cas [DONE] +- Diag. de classes du modèle [pending] +- Format de découverte des Plugins et architecture [DONE] +- Faire les interfaces core(Hbase, Hashmap) et graphiques pour les plugins [pending] +- Faire un exemple simple jaxx [DONE] +- Faire les bases d'une archi à plugin simple [pending] +- Valider le fonctionnement de l'architecture à plugin [DONE] \ No newline at end of file