Commits

Amirouche Boubekki  committed 6b223de

commit de 22h06

  • Participants
  • Parent commits 469186b

Comments (0)

Files changed (9)

File _static/rook_alimentation.eps

 %!PS-Adobe-3.0 EPSF-3.0
 %%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
 %%Title: rook_alimentation.eps
-%%CreationDate: Mon Sep 12 23:54:26 2011
+%%CreationDate: Tue Sep 13 01:02:42 2011
 %%DocumentData: Clean7Bit
 %%LanguageLevel: 2
 %%Pages: 1

File _static/rook_sa.dia

Binary file added.
 renouveau graphique du site, une refonte des contenus et le lancement de nouvelles
 offres. Ce projet utilise la technologie Plone, un CMS (Content Management System, 
 ou gestionnaire de contenu) en Python.
+
+Cela a été ma première exposition au CMS Plone et au framework ZOPE. Comme il n'ai 
+pas évident de travailler sur un framework inconnu, ma tache n'était pas directement 
+lié à ZOPE mais concernait les methodes de theming.
+
+Le travail demandé était d'analyser les différentes méthodes de theming et choisir
+la méthode la plus efficace et la plus pérenne.
+
+Après avoir sondé la communauté Plone et les différentes documentations se referant
+aux multiples méthodes de theming Plone, Estelle Martinez et moi sommes arrivé à la 
+conclusion que Diazo est la meilleur solution pour faire de l'habillage de site Plone.
+Ce travail à donnée lieu à l'écriture d'un article disponible sur le 
+`blog de Pilot Systems <http://blog.pilotsystems.net/2011/juin/theming-plone-avec-diazo>`_.
+
+
+Ajouter sur travail en binome
 développée par Pilot Systems et utilisant la technologie Django. CaaS (Cockpit as
 a Service) compte parmi ses clients l’AFDAS, la fondation Casques Rouges, l’INSIA
 ou encore France Premium et Libéfood.
+
+Je suis intervenu sur cockpit dans le cadre de l'internationalisation de l'application.
+Il a fallut mettre en place le système de traduction et implementer la traduction
+anglaise.
+
+La mise en place de la traduction n'était pas une chose difficille. Pour autant
+j'ai du me confronté à une construction du langage difficille le monkeypatch. En 
+soit le monkeypatch n'ai pas difficille à comprendre, c'est l'opération qu'il réalise
+qui est importante. Pour l'occasion, le module d'administration a été monkeypatché
+pour supporté l'ordonnancement des élèments du menu selon un critére défini par le 
+programmeur. Ceci avait l'effet indesirable d'évaluer la chaine de caractère avant
+son utilisation et donc avant que le contexte de langue soit défini et donc provoquait
+l'affichage des élèments du menu toujours dans la langue par default. La solution
+a été d'utilisé subtilement un proxy d'évaluation paresseuse sur l'objet en question.

File conclusion.rst

 et PilotSystems a été très enrichissant d'un point de vue humain et technique.
 
 Chez Libération ou PilotSystems le developpeur doit être assez generaliste pour 
-pouvoir repondre aux multiples facettes que presente les missions, dans le cadre
+pouvoir repondre aux multiples facettes que presentent les missions, dans le cadre
 d'une fonctionnalité ou d'un projet entier. Il s'agit d'un point de vue
 technique de conception, de maitrise des outils, y compris les langages de 
-programmation, humain à travers des réunions d'équipe courante et du travail par
+programmation, humain à travers des réunions d'équipe courantes et du travail par
 paire ou encore ce qui concerne la definition des besoins avec leurs adéquantions
 à la plateforme.
 
 de projet informatique.
 
 Il s'agit d'une incarnation du metier de developpeur qui correspond à mes 
-aspirations professionnelles, c'est pourquoi malgré les difficultés rencontrés 
-je suis satisfait de cette experience professionnel.
+aspirations professionnelles, c'est pourquoi malgré les difficultés rencontrées 
+je suis satisfait de cette experience professionnelle.
 ====
 
 Djaz est le projet de modernisation du système d'information qui propulse l'activité 
-web de Libération. L'hébergement et le consulting étant proposé par Pilot Systems,
-je suis intervenu en tant que développeur.
+web de Libération. L'hébergement, le consulting et du developpement étant proposé
+par Pilot Systems, je suis intervenu en tant que développeur.
 
 Ce système d'infomation dois répondre à ces besoins:
 
 L'objectif du projet d'apporter des améliorations fonctionelles tout en améliorer 
 la pile d'application en adoptant Django.
 
-Dans la suite je fait une introduction au langage Python puis au framework Django, 
-je dresse ensuite un portrait technique de l'ancienne et de la nouvelle architecture
-du système d'information, pour finir je decris l'ensemble de mes interventions sur
-le projet.
+Dans la suite je fait à la technologie employé, 
+puis je décrit l'organisation du projet et je dresse un portrait technique de l'ancienne
+et de la nouvelle architecture du système d'information, pour finir je decris 
+l'ensemble de mes interventions sur le projet.
 
-Technologie
------------
+Technologies
+------------
 
 Python
 ^^^^^^
 Sous une license similaire à la BSD, c'est un des langages open-source en vogue. 
 Apprécié pour le developpement de code glue entre différents module écrit en C 
 ou en C++. Il excelle aussi dans le developpement rapide d'application web grâce
-à des types de haut niveau, une bibliothèque standard riche et de nombreuse bibliothèque
-rendu disponible par la communauté.
+à des types de haut niveau, une bibliothèque standard riche et de nombreuses bibliothèques
+rendus disponibles par la communauté.
 
-Bien que plus lent qu'un langage compilé c'est rarement le facteur limitant dans
+Plus lent qu'un langage compilé, mais c'est rarement le facteur limitant dans
 le monde Web. Il existe des solutions pour accelerer une application gourmande en 
 temps processeur tel que le passage du code critique en C, C++ ou Cython. `PyPy <http://pypy.org/>`_ 
 est une solution de plus en plus envisagé pour accelerer l'execution des scripts sans
 avoir à écrire du nouveau code.
 
 Il existe un certains nombre de site propulsé par Python notamment `Youtube <http://www.youtube.com/>`_,
- `Quora <http://www.quora.com/>`_ et `Disqus <http://disqus.com/>`_.
+`Quora <http://www.quora.com/>`_ et `Disqus <http://disqus.com/>`_.
 
 Django
 ^^^^^^
  4. L'«URL Dispatch» se charge d'appeller la vue qui doit répondre à la requete
     en fonction de l'url demandé. Les vues sont associées aux urls à l'aide d'expression
     regulières.
- 5. La vue a à charge la construction de la réponse. Des raccourcis dans le framework
+ 5. La vue doit construire la réponse. Des raccourcis dans le framework
     existent pour les réponses les plus communes (html, json, erreur 404 etc.).
  6. La vue utilise une couche d'abstraction vers la base de donnée qui lui permet
-    de realiser la plus part des opérations de haut niveau depuis le code python.
+    de realiser la plus part des opérations en code python.
     Un moteur de template existe qui permet de séparer la construction de la réponse
     et le rendu de l'attribut body de la réponse.
  7. La reponse est retournée au conteneur wsgi après être passé de nouveau par 
 Organisation
 ------------
 
-L'organisation du projet djaz a évolué au fur et à mesure du projet. Ce travail 
+L'organisation du projet djaz a évolué au fur et à mesure. Ce travail 
 d'amélioration est explicité dans chaque sous partie.
 
 Methodologie agile
 ^^^^^^^^^^^^^^^^^^
 
 Le projet fonctionne dans un cadre fixé avec un certains nombre de jalons, mais
-les contributions pour chaque jalons ne sont pas necessairement clairement établit.
+les contributions pour chaque jalons ne sont pas definitif.
 L'objectif étant de livrer ce qui fonctionne au différent jalons et de continuer
 le travail parallelement à la gestion du code en production pour produire les
-fonctionnalité maquante.
+fonctionnalités maquantes.
 
-Plusieurs chose peuvent survenir qui va bloqué l'avancée du projet de djaz:
+Plusieurs choses peuvent survenir qui va bloqué l'avancée du projet Djaz:
 
  - Evènement politique, social ou économique qui necessite le developpement ou 
    la re-configuration de module. C'est l'un de points qu'essaye de tacler la
-   plateforme djaz, rendre possible la creation de nouveau contenant web rapidement.
+   plateforme djaz, en rendant possible la creation de nouveau contenant web rapidement.
    
  - Bugue sur la  plateforme, il faut intervenir immediatement. La réponse peut être
    gradué comme par exemple retirer la fonction pour ensuite proposer la fonction
    debugué.
    
  - Une demande ponctuelle des journalistes. En fonction de la charge de travail
-   et des priorités les demandes sont integré immédiatement ou à la prochaine 
+   et des priorités les demandes sont integrées immédiatement ou à la prochaine 
    bascule. Les bascules ont lieux tous les 6 mois.
 
-De fait, en dehors des bascules, les mise en production sont faites regulièrement
+De fait, en dehors des bascules, les mises en production sont faites regulièrement
 avec au minimum une mise en production par semaine.
 
 Equipe
 ^^^^^^
 
-L'equipe est composé de 4 developpeurs, d'un integrateur et un chef d'équipe.
+L'equipe est composé de 4 developpeurs, d'un integrateur, un réponsable maquette
+et un chef d'équipe.
 
   .. figure:: _static/organisation_djaz.png
     
 | Proposer des services  |  X         |          |          | 14 Août 2011    |
 | communautaires         |            |          |          |                 |
 +------------------------+------------+----------+----------+-----------------+
-| Offrir les outils pour |  X         |          |          |                 |
+| Offrir les outils pour |  X         |          |          | 14 Août 2011    |
 | la gestion de la partie|            |          |          |                 |
 | communautre            |            |          |          |                 |
 +------------------------+------------+----------+----------+-----------------+
-| La gestion des         |            |          | X        | 14 Août 2011    |
+| La gestion des         |            |          | X        |     |
 | abonnements            |            |          |          |                 |
 | la gestion de la partie|            |          |          |                 |
 | communautre            |            |          |          |                 |
 Forge(s)
 ^^^^^^^^
 
-Initialement le gestion des sources et du projet (à travers le wiki et le tracker
-de Pilot Systems) été séparé il était difficille de referencer le code depuis le 
-tracker ou le wiki. D'autre part le suivit des sources se faisait à l'aide uniquement
-de la commande hg log ou d'un outils graphique adapté.
+Initialement le gestion des sources et du projet était à l'aide du wiki et du tracker
+de Pilot Systems. Il était difficille de referencer le code depuis le 
+tracker ou le wiki. D'autre part le suivit des sources se faisait à l'aide
+de la commande hg log ou d'un outils graphique.
 
 Le passage au logiciel `Trac <http://trac.edgewall.org/>`_ nous a permis une 
 meilleur gestion du projet en integrant différents workflow à l'interieur d'un
  - Acceptation d'un ticket dans la forge trac.
  - Travail sur le ticket, avec possibilité d'alerter l'équipe avec un status
    «Décision Needed» pour valider la conception.
- - Demande de review sur la forge trac
- - Review du code en pair ou par un développeur plus experimenté.
+ - Demande de revue de code sur la forge trac
+ - Revue de code en pair ou par un développeur plus experimenté.
  - Après review et validation le ticket est placé en status «Ready For Production»
- - Les commits faisant référence au ticket sont appliqué à la branche default 
-   de puis mercurial.
+ - Les commits faisant référence au ticket sont appliqués à la branche default 
+   depuis mercurial.
  - Le code sera en production lors de la prochaine mise en production
 
 Utilisation de github
 Les modules indépendants de la plateforme sont développer à l'aide de git et github.
 
 Le workflow est similaire au workflow de travail avec mercurial/trac excepté que
-l'on travaille par «pull-request» ou demande de fusion. Lorsque du nouveau code
+l'on travaille par «pull-request», demande de fusion. Lorsque du nouveau code
 est présent dans la branche «master» d'un projet git il est mis en production
 automatiquement lors de la mise en production suivante.
 
 
 Ma première proposition était de modifier l'administration proposé par Django 
 pour afficher des widgets graphique permettant de visualiser la progression. Ceci
-impliqué d'entamer lot 3 c'est pourquoi nous nous sommes contenter d'une simple
-commande python qui genere un fichier csv facilement importable dans un tableur.
+impliquait d'entamer le lot 3 c'est pourquoi nous nous sommes contenter d'une
+commande django qui genere un fichier au format csv.
 
 Je n'ai pas eu de difficulté majeur lors de la réalisation de cette misssion. Il
 m'a fallu concevoir la commande, ceci n'était pas très difficille car cela n'impliquait
 pas d'autre partie du code hormis le code de transition du lot 3. C'était pour 
 moi l'occasion de me familiariser avec le code du projet djaz ainsi que le code
-du php qui formait la plateforme historique. Il m'a aussi fallut m'adapter au 
-workflow de travail.
+PHP. Il m'a aussi fallut m'adapter au workflow de travail.
 
 
 Améliorer le worlflow d'assurance qualité
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-En d'autre terme m'a fallut faire un point sur les élèments en place pour s'assurer
-le bon fonctionnement de la plateforme ainsi que ça perenité en offrant les outils 
-qui capture un maximum de regression.
+J'ai réalisé un point sur les élèments en place pour s'assurer
+le bon fonctionnement de la plateforme ainsi que ça perenité en proposant des outils 
+qui capturent un maximum de regression.
 
 Lancement des tests projets et sous-modules
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 La première étape était de pouvoir lancer tous les tests de la plateforme djaz
 à l'aide d'une seule commande. La difficulté residait dans la possibilité offerte
 par django de lancer les tests de la plateforme uniquement pour un seul «projet django».
-Ainsi que le fait que certains sous-module on leur propre méthode de lancement de test.
+D'autre part sous-module on leur propre méthode de lancement de test.
 
 J'ai réaliser un script qui permet de lancer tous les tests en série avec la contrainte
-que les rapports sont pas facilement analysable automatiquement.
+que les rapports ne sont pas analysable automatiquement facilement.
 
 Accelerer les lancements des tests
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
  - Placer la base de donnée en RAM avec comme contrainte de ne pas pouvoir éteindre 
    la machine car il faudrais 1 heure pour recharger la base.
- - Limiter le nombre d'ecriture sur disque de la base de donnée avec la contrainte
-   que la base de donnée soit corrompu en cas de panne de la machine. Le temps de 
+ - Limiter le nombre d'ecriture sur disque avec la contrainte
+   que la base de donnée puisse être corrompu en cas de panne de la machine. Le temps de 
    chargement de la base est de deux heures.
 
 Ces deux solutions sont trop contraignante pour la machine de preproduction, nous
 ne pouvions pas courir le risque de perdre la base de donnée quand il faut au moins
-deux heures pour la recharger. C'est une configuration qui est utilisable en developpement,
-car nous utilisons des dump plus leger et donc plus rapide a remettre en memoire.
+une heure pour la recharger. C'est une configuration qui est utilisable en developpement,
+car nous utilisons des bases plus legeres.
 
 Eviter les regressions fonctionnelles
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Les tests unitaires sont efficaces contre certains bugs mais pas tous. Le tests
-des fonctions activé par javascript ne sont pas possible pour cela il faut employé
+Les tests unitaires sont efficaces contre certains bugs mais pas tous. Le test
+des fonctions activés par javascript ne sont pas possible pour cela il faut employer
 d'autre outils tel que `Selenium <http://seleniumhq.org/>`_. Selenium permet le test
 d'une application à l'interieur d'un navigateur, ses tests couvrent un plus large
-spectre fonctionnelle est sont plus réaliste.
+spectre fonctionnelle et sont plus réaliste.
 
 Jusqu'à maintenant, les fonctions qui bénéficiraient de cette amélioration n'ont
 pas été considérés assez nombreuses pour justifier le developpement.
 
 La colonne de droite est la colonne où se trouve des offres promotionnelles.
 
-Elle a fait l'objet de la creation d'un sous-module django, «application» dans
-la terminologie Django.
+Elle a fait l'objet de la creation d'une application django.
 
 Cette application contient un unique modèle qui se charge de stocker la configuration
 de la colonne et ses bloques. En effet une colonne est representé par une table 
 Gestion de favoris
 ^^^^^^^^^^^^^^^^^^
 
-Mirroir fonctionnelle la bibliothèque de monlibe et implementation de service
+Mirroir fonctionnelle la bibliothèque de monLibé et implementation de services
 backend.
 
 La description UML de ce module est representé dans la figure O.T.
 Dossiers à la demande
 ^^^^^^^^^^^^^^^^^^^^^
 
-Mirroir fonctionnelle des dossier à la demande de l'espace «mon Libé».
+Mirroir fonctionnelle des dossiers à la demande de l'espace monLibé.

File pilotsystems.rst

 Développeur Agile
 -----------------
 
-Le développeur chez Pilot Systems doit pouvoir intervenir sur un certains nombre
-de sujet que soit technique qu'humain. Il peut avoir sous sa responsabilité un
-projet entier:
+Le développeur chez Pilot Systems doit pouvoir intervenir dans de nombreux contextes:
 
 - **Conception & Developpement**: Le developpeur a la charge principale de concevoir
   et developper à partir de la demande client une application et son infrastructure.
   Il peut faire intervenir d'autre membre de l'équipe et demander conseil au sein
   de l'équipe en fonction des spécialités de chacun.
 
-- **Veille Technologique**: Une partie du travail de mobiliser une partie de son
+- **Veille Technologique**: Une partie du travail est de mobiliser son
   attention sur le developpement des techniques, technologies et outils. Cette 
-  veille se concretisent notemment à travers la participation des developpeurs au
-  forum concernant les technologies employés.
+  veille se concretisent notemment à travers la participation des developpeurs aux
+  forums concernant les technologies employés.
 
 - **Rercherche & Développement**: Trouver de nouvelle solution à des problèmes 
   déjà résolue tel que la gestion de contenu ou bien l'innovation en intégrant 
-  de nouvelle techno est une part importante du travail du developpeur afin que 
-  l'entreprise reste compétitive.
+  de nouvelle techno est une partie prenante du travail du developpeur.
 
 - **Communication**: Sur ses projets le developpeur est le référent technique donc
   c'est à lui qu'inccombe la formation de l'utilisateur. Il aussi un role de
     
     Page wiki pour l'organisation du projet Cobra
 
-On retrouve sur le wiki des informations comme :
+On retrouve sur le wiki les informations suivantes :
 
-- La documentation sur le parc informatique
+- La documentation du parc informatique
 - La liste des machines en service et les services disponibles dessus
 - Des ressources pour le développement
 - Des procédures d’administration
 fonctionne à l'aide de script écrit en Python ou BASH qui sonde différent comportement
 sur l'ensemble du parc. C'est un outils essentiel au bon fonctionnement
 de l'activité de hosting mais aussi un moyen de detecter de anomalies dans les 
-applications web.
+applications.
 
 .. figure:: _static/nagios.png
     :alt: Vue NAGIOS de suivi des machines virtuelles
    :height: 100px
 
 Djaz est le projet de modernisation du Système d'information qui propulse l'activité 
-web de Libération. L'hébergement et le consulting étant proposé par Pilot Systems,
-je suis intervenu en tant que développeur.
+web de Libération. L'hébergement, le consulting et du développement étant proposé 
+par Pilot Systems, je suis intervenu en tant que développeur.
 
 Rook
 ^^^^
    :align: right
    :height: 100px
 
-Rook est une application web qui complete l'experience utilisateurs de twitter.
+Rook est une application web qui complète l'experience utilisateur de twitter.
 Il s'agit d'une application developpé par Pilot Systems sur laquelle je suis 
 intervenu en tant que consultant fonctionnel et technique.
 
 et technique. Je devais penser à de nouvelles fonctionnalité et proposer des moyens
 de les implementer.
 
-La fonction que j'ai imaginé sont le mur dynamique personnalisé augmenté d'une 
-representation en 3D. Le mure dynamique est inspiré de «La Une» de facebook, la 
-fonction recommandation de twittos par twitter, et la recommandation «Amazon» et
-de lectures. L'idée est de faire donner une note a chaque tweet que reçoit un 
-utilisateur en fonction de ses preférences, actions passés et l'environnement 
+La fonction que j'ai conçu est le mur dynamique personnalisé. Cette fonction
+est inspiré de «La Une» de facebook, la fonction recommandation de twittos par 
+twitter, et la recommandation «Amazon». L'idée est de faire donner
+une note a chaque tweet que reçoit un utilisateur en fonction de ses preférences, 
+actions passés et environnement 
 twitter et faire remonter de cette façon les tweets qui auront le plus de chance 
 d'être interessant. Il faut aussi pouvoir reproduire l'experience pas uniquement
-sur les flux entrant mais aussi sur les autres flux du type hashtag. La représentation 
-en 3D est inspiré de lectures.
+sur les flux entrant mais aussi sur les autres flux du type hashtag. 
 
 La premiere étape a été de dressé un état de l'art dans le domaine de la recommandation
 de contenu. Je me suis rendu compte que le domaine de recherche à l'origine de ce 
   - heure du tweet
 
 Ceci forme le contexte du tweet. Chaque tweet est un graphe entre les mots du tweet
-et des arretes vers les interactions qu'il y a avec d'autres personnes et 
+et des arretes vers les interactions qu'il a avec d'autres personnes et 
 d'autres tweet.
 
 A partir de ce graphe nous réalisons des calculs de "proximité" initial. C'est
 locale. 
 
 Si A est le sous-graphe communicant, et B le sous-graphe cible. Ce type de calcul 
-permet de faire des requetes du objet du type A peut retourner un objet du type B
-et un objet de type A peut donner un objet A. Et ceci car A et B sous tous les deux
-sous-graphe du même graphe. Le calcul de recommdation User-To-User et Item-To-Item
-décrit dans le document sur le système de recommandation de Amazon est possible, 
-ainsi que la recommandation User-To-Item et Item-To-User.
+permet de faire des requetes sur un objet A et retourner un objet B et vis-versa. 
+Et ceci car A et B sont tous les deux sous-graphe du même graphe. Le calcul de 
+recommdation User-To-User et Item-To-Item décrit dans le document sur le système 
+de recommandation de Amazon est possible, ainsi que la recommandation User-To-Item 
+et Item-To-User.
 
 Le système doit pouvoir categoriser les tweets et construire des flux de tweets ordonnées 
 pour une catégorie donnée. Une généralistation de cette fonction est l'utilisation
 d'un langage de description des flux destinés à être écrits et lu par des informaticiens
 ou des nerds. La description de ses flux va nous permettre de créer des configurations
-de flux très populaire facilement et de manière automatique tout en nous laissant
-la possibilité de faire des optimisations. C'est une façon de recuperer des flux
+de flux très populaire tout en nous laissant
+la possibilité de faire des optimisations de code. C'est une façon de recuperer des flux
 interessant pour l'utilisateur que l'on ne trouverai pas aussi facilement avec un 
 algorithme automatique. 
 
-Les tweets doivent pouvoir être noté dés leur arrivé dans la base de connaissances.
+Les tweets doivent pouvoir être noté dés leur arrivée dans la base de connaissances.
 
 Architecture
 ------------
 Une analyse du besoin nous permet de distinguer trois modules:
 
  - un graphe persistent qui va contenir les données connaissances
+ 
  - un module de calcul sur les graphes de haut niveau qui fait des projections d'un 
    sous-graphe vers des noeud d'un autre sous-graphe.
+   
  - les opérations de haut niveau pour implementer le besoin à savoir:
+ 
     - calculer de flux des tweet entrant pour un utilisateur
+    
     - calcule de flux par catégorie
+    
     - calculer de flux personnalisé
 
 
 --------------
 
 Les différents modules qui implemente le programme sont décrit dans la figure O.P.
-Le fonctionnement de et les différents modules sont explicités par la suite.
+Le fonctionnement des différents modules sont explicités par la suite.
 
   .. figure:: _static/rook_recsys_full.png
     
-    Schema modulaire du système de recommandation Noosphere
+    XXX
 
 Haut-Niveau
 ^^^^^^^^^^^
 Alimentation de la base se fait en deux temps une premiere intégration rapide du
 graphe à la base de connaissance est suivit d'une ou plusieurs phase de consolidation
 des connaissances pour faciliter le calcule de proximité et le rendre de plus en plus
-proche de son contexte on crée des arretes pour representer les contribution de 
+proche de son contexte on crée des arretes pour representer les contributions de 
 l'environnement. 
 
   .. figure:: _static/rook_alimentation.png
     
-    Description de la phase d'alimentation de la base
+    XXX
 
 Module Graph
 ~~~~~~~~~~~~
 permet d'abstraire les opérations de haut niveau appliqué sur le graphe par le
 de système apprenant et afin de rendre leurs implémentations plus rapide.
 
-  .. figure:: _static/rook_alimentation.png
+
+  .. figure:: _static/rook_graph_module.png
     
-    Module Graph fournit une API de parcours pour la système apprenant et la persistence
-    
+    XXX
+
 Système Apprenant
 ~~~~~~~~~~~~~~~~~
 
-Le système apprenant implemente l'api qui permet de faire les calculs de haut niveau
-sur le graphe spécialisé dans la recommandation d'algorithme, ceci est dépendant
+Le système apprenant implemente l'API qui permet de faire les calculs de haut niveau
+sur le graphe spécialisé pour la recommandation d'algorithme, ceci est dépendant
 du type d'algorithme utilisé.
 
+
+  .. figure:: _static/rook_sa.png
+    
+    REFAIRE LE GRAPHE
+
+
 NoosphereRecommandationSystem
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
   .. figure:: _static/rook_recsys.png
     
-    API du système apprenant utilisé par NpRecSys
+    XXX
+
 
 Bas-Niveau
 ^^^^^^^^^^
 
 Il existe plusieurs base de donnée spécialisé dans les graphes, il faut les tester
 et choisir une qui satisfasse le besoin. D'autre part il existe le framework
-`BulbFlow <>`_ qui permet s'abstraire de la base de donnée utilisé. Bulbflow fourni
-un langage de haut-niveau pour faire des opérations sur les graphes.
+`BulbFlow <http://bulbflow.com/>`_ qui permet s'abstraire de la base de donnée 
+utilisé. Bulbflow fourni un langage de haut-niveau pour faire des opérations sur
+les graphes.
 
 Système Apprenant
 ~~~~~~~~~~~~~~~~~
 
 Il existent plusieurs bibliothèques traitant le problème des machines apprenantes
 disponible en Python. scikit.learn est la candidate idéale
-car elle implemente une partie de ses algorithmes en Cython. La Contrainte principale
-étant que le système apprenant prend en entrée des graphes.
+car elle implemente une partie de ses algorithmes en Cython. La contrainte principale
+étant que le système apprenant prenne en entrée des graphes.
 
 NoosphereRecommandationSystem
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Ce module correspond à du code glue entre le système apprenant et l'alimentation
 de la base Graph.
-
-Conclusion
-----------
-
-Ce système a été partiellement relu par mes collègues, on attend plus de recul
-pour prendre une décision sur la strategie à adopter.