Commits

Amirouche Boubekki committed 2e96ddb

21h40

  • Participants
  • Parent commits 7731f41

Comments (0)

Files changed (5)

 Modifications
 =============
 
- - Retrait de l'organigrame de l'entreprise
+ - Reformulation, grammaire et orthographe
+ - Reécriture du retour d'experience 
+ - Reécriture de la conclusion
+ - Reécriture de la présentation du projet Djaz
+ - Reformulation de la description de Django
+ - Retrait de l'organigramme de l'entreprise
  - Retrait des captures d'écran qui n'apportaient pas d'information supplémentaires
- - Référence à la NASA et au projet Open Stack comme projet utilisant Python
  - Correction de l'architecture cible Djaz
  - Correction de la pile applicative Djaz
- - wording sur la description de Django
-
 Cobra
 =====
 
-Cobra est le projet de refonte du site web de Pilot Systems. Il a pour but un 
-renouveau graphique du site, une refonte des contenus et le lancement de nouvelles
+Cobra est le projet de refonte du site web de Pilot Systems, son objéctif est le 
+renouvellement 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'est 
-pas évident de travailler sur un framework inconnu, ma tache n'était pas directement 
-lié à ZOPE mais concernait les méthodes de theming.
+Ce fut m'a ma première experience de Plone et du framework Zope. Comme il n'est 
+pas évident de travailler sur un framework inconnu, ma tache n'a pas été directement 
+liée à Zope et concernait les méthodes d'habillage.
 
-Je devais analyser les différentes méthodes de theming et choisir
+Je devais analyser les différentes méthodes d'habillage et choisir
 la méthode la plus efficace et la plus pérenne.
 
-Ce travail était ma première expérience de travail en binôme en entreprise. Nous
-avons établit ensemble un plan pour évaluer les principales méthodes de theming.
-Après avoir évaluer séparément les principales méthodes et remplit une matrice
-de comparaison. Nous nous sommes échangés documents et ressources pour simuler
-la prise en main de l'outils à partir d'une documentation interne existante.
+Cet mission a été ma première expérience de travail en binôme en entreprise. Nous
+avons établi un plan d'évaluation des méthodes d'habillage.
+Après avoir évalué séparément les méthodes et rempli une matrice
+de comparaison, nous nous sommes échangés les documents et ressources pour simuler
+la prise en main de l'outil à partir d'une documentation interne existante.
 
 Après avoir sondé la communauté Plone et les différentes documentations se référant
-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>`_.
+aux multiples méthodes de theming Plone et suite à nos expériences, 
+Estelle Martinez et moi sommes arrivés à la conclusion que Diazo est la meilleure 
+solution d'habillage de site Plone. Ce travail a donné lieu à une publication 
+disponible sur le `blog de Pilot Systems <http://blog.pilotsystems.net/2011/juin/theming-plone-avec-diazo>`_.
 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 implémenter la traduction
-anglaise.
+Je suis intervenu sur Cockpit dans le cadre de l'internationalisation de l'application.
+J'ai implémenté le système de traduction et réalisé la traduction anglaise.
 
-Pour autant j'ai du me confronté à une construction du langage extra-ordinaire le monkeypatch. En 
-soit le monkeypatch n'ai pas dur à 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 indésirable d'évaluer la chaine de caractère avant
-son utilisation et donc avant que le contexte de langue soit défini et provoquait
-l'affichage des éléments du menu toujours dans la langue par défaut. La solution
-a été d'utilisé subtilement un proxy d'évaluation paresseuse sur l'objet en question.
+Dans le cadre de cette mission, j'ai eu l'occasion de découvrir une construction 
+du langage extra-ordinaire: le monkeypatch. 
+Le monkeypatch n'est pas compliqué à comprendre, c'est l'opération qu'il réalise
+qui peut-être complexe. Le module d'administration a été monkeypatché
+pour supporter l'ordonnancement des éléments du menu selon un critère défini par le 
+programmeur. 
+Cette opération provoquait un bug. Ce dernier provoque l'évaluation de la chaine de caractères
+avant que le contexte de langue soit défini et les éléments du menu apparaissaient dans 
+la langue par défaut. La solution a été d'utilisée un proxy d'évaluation paresseuse.
 Conclusion
 ==========
 
-Le travail réalisé au cours des 5 derniers mois aux seins des équipes de Libération
+Le travail réalisé au cours des 5 derniers mois au sein des équipes de Libération
 et Pilot Systems a été très enrichissant d'un point de vue humain et technique.
 
-Chez Libération ou Pilot Systems le developpeur doit être assez generaliste pour 
-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 courantes et du travail par
-paire ou encore ce qui concerne la definition des besoins avec leurs adéquantions
-à la plateforme.
+Chez Libération ou Pilot Systems le developpeur doit être assez généraliste pour 
+pouvoir répondre aux multiples facettes que presentent les missions. Sur le plan technique
+cela requière une maitrise des outils y compris les langages de programmation. 
+Sur le plan humain, il faut de bonnes qualités de communication pour des réunions 
+efficaces et un travail en binôme fructueux. 
 
-Une responsabilisation sur les différentes aspects que présente un projet permet
-d'augmenter l'implication et donc la qualité du travail et permet d'un point de vue
-individuel de developper ses qualités dans différents domaines de la réalisation 
-de projet informatique.
+Intégré un projet agile fut une enrichissante experience.
 
-Il s'agit d'une incarnation du metier de developpeur qui correspond à mes 
-aspirations professionnelles, c'est pourquoi malgré les difficultés rencontrées 
-je suis satisfait de cette experience professionnelle.
+La responsabilisation sur les différentes aspects que présente un projet permet
+d'augmenter l'implication et donc la qualité du travail. Sur le plan
+individuel, on developpe des compétences dans différents domaines de la réalisation 
+de projets informatiques.
+
+Cette experience professionnelle diversifiée correspond à mes aspirations. Je tire
+une grande satisfaction des 5 mois passés à enrichir mes connaissances et à developper
+mes compétences dans différents domaines de la realisation de projets informatiques.
 ====
 
 Djaz est le projet de modernisation du système d'information qui propulse l'activité
-web du journal Libération. L'hébergement, le consulting et du développement étant proposé
-par Pilot Systems, je suis intervenu en tant que développeur.
+web du journal Libération. L'hébergement, le consulting et une partie du développement 
+étant proposés par Pilot Systems, je suis intervenu en tant que développeur.
 
 Ce système d'information dois répondre à ces besoins:
 
- 1. Permettre de diffuser des articles et autres media sur le web
- 2. Offrir les outils pour la gestion de la partie rédaction
+ 1. Diffusion des articles et autres medias sur le web
+ 2. Outils pour la gestion de la partie rédaction
  3. Proposer des services communautaires
- 4. Offrir les outils pour la gestion de la partie communautaire
- 5. La gestion des abonnements
+ 4. Outils pour la gestion de la partie communautaire
+ 5. Gestion des abonnements
+ 6. Gestion des flux partenaires
 
 Les points 1 et 3 forment le site web, les 2 et 4 forment le «BackOffice Libération».
-Le site de Libération est un site qui reçoit 20 Millions de visites par mois.
-L'objectif du projet est d'apporter des améliorations fonctionnelles tout en améliorant
-la pile d'application en adoptant Django.
+Le site de Libération reçoit 20 Millions de visites par mois.
 
-Dans la suite je présente à 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.
+L'objectif du projet Djaz est d'améliorer la pile applicative pour permettre un
+developpement plus rapide, et plus perenne de nouvelles fonctionnalités. 
+
+Dans les paragraphes suivants, je présente les technologies employées, 
+puis décris l'organisation du projet et dresse un portrait technique de 
+l'ancienne et de la nouvelle architecture du système d'information, pour 
+finir je présente l'ensemble de mes interventions sur le projet.
 
 Technologies
 ------------
 ^^^^^^
 
 Python est un langage dynamique de haut niveau multi-paradigme créé en Europe.
-Sous une licence similaire à la BSD, c'est un des langages open-source en vogue.
-Apprécié pour le développement de code glue entre différents module, écrit en C
-ou en C++, il excelle aussi dans le développement rapide d'application web grâce
-à des types de haut niveau, une bibliothèque standard riche et de nombreuses bibliothèques
-rendus disponibles par la communauté.
+Sous une licence similaire à la BSD, c'est un langages open-source en vogue.
+Apprécié pour le développement de code glue entre différents modules, écrit 
+en C ou en C++, il excelle aussi dans le développement rapide d'applications
+Web grâce à des types de haut niveau, une bibliothèque standard riche et 
+de nombreuses bibliothèques rendus disponibles par la communauté.
 
 Plus lent qu'un langage compilé, sa lenteur n'est pas un facteur limitant dans
 le monde Web. Il existe des solutions pour accélérer 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ée pour accélérer l'exécution des scripts sans
-avoir à écrire du nouveau code.
+avoir à écrire du nouveaux codes.
 
-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/>`_. Il aussi utilisé
+Il existe un certain nombre de sites propulsés par Python notamment `Youtube <http://www.youtube.com/>`_,
+`Quora <http://www.quora.com/>`_ et `Disqus <http://disqus.com/>`_. Il est aussi utilisé
 par la NASA notamment dans le cadre du projet `Open Stack <http://www.openstack.org/>`_.
 
 Django
 ^^^^^^
 
-Django est le framework qui a la plus forte progression en terme de popularité et
-de développement dans le monde open-source ces derniers années. Il emprunte des bonnes
+Django est le framework avec la plus forte progression en terme de popularité et
+de développement dans le monde open-source. Il emprunte de bonnes
 pratiques du monde de Ruby-on-Rails pour fournir une plateforme complète de
-développement de site web. Sous License BSD, il est utilisé par un certains nombre
-de site et startup notamment feu `Pownce <http://pownce.com/>`_ et sur le réseau de
+développement de site web. Sous License BSD, il est utilisé par un certain nombre
+de sites Web et startup notamment feu `Pownce <http://pownce.com/>`_ et sur le réseau de
 site du journal `Lawrence <http://www.lawrence.com/>`_.
 
 Il s'agit d'un framework qui implémente le patron de conception Modele-Vue-Controlleur
 
 La figure 5.1 décrit la vie d'une requête sur un pile applicative Django:
 
- 1. La requête envoyée par le client est reçu par un serveur compatible avec la norme
+ 1. La requête envoyée par le client est reçue par un serveur compatible avec la norme
     `WSGI <http://www.python.org/dev/peps/pep-0333/>`_.
  2. Le serveur WSGI se charge de présenter l'information de la requête selon le
     standard et appeler l'application web.
  3. La première étape lorsque l'application web est appelée est la curation des
-    parametre de la requête reçue. Les middleware interviennent directement sur les
-    arguments passée par le conteneur WSGI. Après cette opération la main est passé
+    paramètres de la requête reçue. Les middlewares interviennent directement sur les
+    arguments passés par le conteneur WSGI. Après cette opération la main est passée
     au module de dispatch des requêtes.
- 4. L'«URL Dispatch» se charge d'appeller la vue qui doit répondre à la requête
+ 4. L'«URL Dispatch» se charge d'appeler la vue qui doit répondre à la requête
     en fonction de l'url demandé. Les vues sont associées aux urls à l'aide d'expression
     régulières.
  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.).
+    existent pour les plus communes (html, json, erreur 404 etc.).
  6. La vue utilise une couche d'abstraction vers la base de données qui lui permet
-    de realiser la pluspart 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.
+    de realiser la majorité des opérations en code python.
+    Un moteur de template existe, il permet de séparer la construction de la réponse
+    et le rendu de l'attribut body.
  7. La reponse est retournée au conteneur wsgi après être passée de nouveau par
     la couche middleware.
  8. Le couche middleware va pouvoir intervenir sur toutes les requêtes.
- 9. Le Server WSGI se charge de renvoyer la réponse au client.
+ 9. Le serveur WSGI se charge de renvoyer la réponse au client.
 
 
 Organisation
 ------------
 
 L'organisation du projet djaz a évolué au fur et à mesure. Ce travail
-d'amélioration est explicité dans chaque sous partie.
+d'amélioration est expliqué dans chaque sous partie.
 
 Méthodologie agile
 ^^^^^^^^^^^^^^^^^^
 
-Le projet fonctionne dans un cadre fixé avec un certains nombre de jalons, mais
-les contributions pour chaque jalons ne sont pas définitives.
-L'objectif étant de livrer ce qui fonctionne aux différents jalons et de continuer
-le travail parallèlement à la gestion du code en production pour produire les
-fonctionnalités manquantes.
+Le projet a un certain nombre de jalons dont les contributions pour 
+ne sont pas définitives. L'objectif étant de livrer ce qui fonctionne
+et de continuer parallèlement à gérer le code en production et 
+la réalisation des fonctionnalités manquantes.
 
-Plusieurs choses peuvent survenir qui va bloquer l'avancée du projet Djaz:
+Plusieurs évènements qui peuvent bloquer l'avancée du projet Djaz, peuvent survenir:
 
- - Évènement politique, social ou économique qui nécessitent le développement ou
-   la re-configuration de module. C'est l'un de points qu'essaye de tacler la
-   plateforme djaz, en rendant possible la création de nouveau contenant web rapidement.
+ - Évènements politiques, sociaux et économiques qui nécessitent le développement ou
+   la reconfiguration de modules.
 
- - Bugue sur la  plateforme, il faut intervenir immédiatement. La réponse peut être
-   gradué comme par exemple retirer la fonction pour ensuite proposer la fonction
-   débogué.
+ - Bug sur la  plateforme, il faut intervenir immédiatement pour corriger l'anomalie. 
 
  - Une demande ponctuelle des journalistes. En fonction de la charge de travail
-   et des priorités les demandes sont integrées immédiatement ou à la prochaine
+   et des priorités, les demandes sont intégrées immédiatement ou à la prochaine 
    bascule.
 
-De fait, en dehors des bascules, les mises en production sont faites regulièrement
+De fait, en dehors des bascules, les mises en production sont faites régulièrement
 avec au minimum une mise en production par semaine.
 
-Equipe
+Équipe
 ^^^^^^
 
-L'équipe est composé de 10 personnes.
+L'équipe est composée de 10 personnes.
 
   .. figure:: _static/organisation_djaz.png
 
 | Fonction               | Lot 1      | Lot 2    | Lot 3    | date de bascule |
 |                        |            |          |          |                 |
 +========================+============+==========+==========+=================+
-| Permettre de diffuse   |     X      |          |          | 14 Août 2011    |
-| des articles et autre  |            |          |          |                 |
-| media sur le web       |            |          |          |                 |
+| Permettre de diffuser  |     X      |          |          | 14 Août 2011    |
+| des articles et autres |            |          |          |                 |
+| medias sur le Web      |            |          |          |                 |
 +------------------------+------------+----------+----------+-----------------+
-| Offrir les outils pour |            |    X     |          |                 |
+| Offrir des outils pour |            |    X     |          |                 |
 | la gestion de la partie|            |          |          |                 |
 | rédaction              |            |          |          |                 |
 +------------------------+------------+----------+----------+-----------------+
 | Proposer des services  |     X      |          |          | 14 Août 2011    |
 | communautaires         |            |          |          |                 |
 +------------------------+------------+----------+----------+-----------------+
-| Offrir les outils pour |     X      |          |          | 14 Août 2011    |
+| Offrir des outils pour |     X      |          |          | 14 Août 2011    |
 | la gestion de la partie|            |          |          |                 |
 | communautaire          |            |          |          |                 |
 +------------------------+------------+----------+----------+-----------------+
-| La gestion des         |            |          |    X     |                 |
-| abonnements            |            |          |          |                 |
+| Gérer les abonnements  |            |          |    X     |                 |
+|                        |            |          |          |                 |
 +------------------------+------------+----------+----------+-----------------+
-| Gestion des flux       |     X      |          |          |                 |
-| partenaire             |            |          |          |                 |
+| Gérer les flux         |     X      |          |          |                 |
+| partenaires            |            |          |          |                 |
 +------------------------+------------+----------+----------+-----------------+
+
 Forge(s)
 ^^^^^^^^
 
-Initialement le gestion des sources et du projet étaient organisé à l'aide du wiki
+Initialement le gestion des sources et du projet étaient organisés à l'aide du wiki
 et du tracker de Pilot Systems. Il était difficile de référencer 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 tracker ou le wiki. D'autre part le suivi des sources se faisait à l'aide
+de la commande hg log ou d'un outils graphique, ce qui n'était pas optimal.
 
 Le passage au logiciel `Trac <http://trac.edgewall.org/>`_ nous a permis une
-meilleur gestion du projet en intégrant différents workflow à l'intérieur d'un
-même outils.
+meilleure gestion du projet en intégrant différents workflow à l'intérieur d'un
+même outil.
 
 Gestion des sources
 ^^^^^^^^^^^^^^^^^^^
 
 La gestion des sources du projet se fait à l'aide du logiciel mercurial. Les
-sous-modules dont le code est indépendant du projet sont géré à l'aide de git et
-de la forge proposé par github.
+sous-modules dont le code est indépendant du projet sont gérés à l'aide de git et
+de la forge proposée par github.
 
 Utilisation de mercurial
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
-Durant toute la période pré-bascule nous travaillions avec une
-branche après la bascule nous avons mis en place une seconde branche destinée
+Durant toute la période pré-bascule nous avions travaillé avec une
+branche. Par la suite nous avons mis en place une seconde branche destinée
 à recevoir ce qui doit aller en production. Le workflow de travail
 dans cette nouvelle configuration est le suivant:
 
- - Acceptation d'un ticket dans la forge trac.
+ - 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.
+   «Decision Needed» pour valider la conception.
  - Demande de revue de code sur la forge trac
  - Revue de code en pair ou par un développeur plus expérimenté.
  - Après review et validation le ticket est placé en status «Ready For Production»
    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.
+Les modules indépendants de la plateforme sont développés à 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», 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.
+l'on travaille par «pull-request». 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.
 
 La Bascule
 ----------
 
-La bascule est la période du passage de l'ancienne version à la nouvelle version
-de la plateforme. Une première bascule a permis de passer le Lot 1 sur la nouvelle
-plateforme, d'autre bascule viendront compléter.
+La bascule est la période du passage de l'ancienne version à la nouvelle. 
+Une première bascule a permis de passer le Lot 1 sur la nouvelle plateforme, 
+d'autres bascules viendront compléter.
 
 Ancienne architecture
 ^^^^^^^^^^^^^^^^^^^^^
 
-La solution initiale était basé sur la technologie PHP Zend. La pile applicative est
+La solution initiale était basée sur la technologie PHP Zend. La pile applicative est
 décrite dans la figure 5.3.
 
   .. figure:: _static/zendstack.png
 
     Pile applicative du système d'information sous Zend
 
-L'infrastructure qui herbergeait cette solution est decrite dans la figure 5.4.
+L'infrastructure qui herbergeait cette solution est décrite dans la figure 5.4.
 
   .. figure:: _static/infrastructure.png
 
 Architecture cible
 ^^^^^^^^^^^^^^^^^^
 
-La nouvelle solution utilise une pile applicative à base de Python aidé du framework
+La nouvelle solution utilise une pile applicative à base de Python aidée du framework
 Django. Elle est décrite dans la figure 5.5.
 
   .. figure:: _static/djangostack.png
 --------
 
 En tant que développeur dans le cadre d'une méthodologie agile j'avais une relative
-liberté de conception mais mes choix devaient être validé par le reste de
-l'équipe.
+liberté de conception mais mes choix devaient être validés par le reste de l'équipe.
 
 Dashboard de suivit des abonnées payant
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Le dashboard de suivit des abonnées payant est une demande du service marketing,
-qui a pour objectif de permettre l'analyse de l'impact des campagnes.
+Le dashboard de suivi des abonnées payants est une demande du service marketing,
+qui a pour objectif de permettre l'analyse de l'impact des campagnes d'abonnement.
 
 L'ancienne plateforme se contentait d'envoyer un mail avec les totaux d'abonnées
 par type d'abonnements. Une personne se chargeait après réception du mail de
 remplir un tableau pour permettre une lecture plus facile de l'information et
 la génération de graphique.
 
-Ma première proposition était de modifier l'administration proposé par Django
+Ma première proposition était de modifier l'administration proposée par Django
 pour afficher des widgets graphique permettant de visualiser la progression. Ceci
 impliquait d'entamer le lot 3 c'est pourquoi nous nous sommes contenter d'une
 commande django qui génère un fichier au format csv.
 concernant le travail en groupe et la gestion des sources. Hormis
 ce petit bémol, mon expérience a été positive et a renforcé mes convictions quant
 à l'intérêt du développement Web en Python.
-