Encadrant ESIAL Herv Panetto SQLI > Web Agency > PAGT > Dveloppeur PHP Dveloppement du site web dune grande maison de luxe sous eZ Publish, au sein de lquipe technique du groupe SQLI. [RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Avant-propos 2
Avant-propos Ce rapport traite du stage effectu en deuxime anne de lESIAL. Le stage a pour but deffectuer un travail de niveau technicien afin de valider la deuxime anne. Il sinscrit dans le cursus ESIAL et prcde le stage ingnieur de six mois lanne suivante. La dure du stage est dun minimum de 8 semaines. Mon stage sest droul du 2 juin 2009 au 28 aot 2009 dans la socit SQLI situe Paris. Jai t accueilli par Ronan Lequere qui fut mon matre de stage et mon encadrant universitaire fut Herv Panetto.
Remerciements Je remercie Ronan Lequere pour mavoir donn la chance dintgrer lquipe SQLI Agency. Merci aussi pour toutes les aides que tu as pu mapporter lors du stage et ce, mme avec les faibles disponibilits que tu avais. Merci galement Ly Lo Cong, mon matre eZ Publish , qui ma normment apport dans la connaissance de cet immense Framework. Merci Marie Lange, ma chef de projet, pour avoir su nous mettre la pression juste comme il fallait pour que le projet avance bien. Je te souhaite bon courage pour la suite. Enfin, je tiens galement remercier toute lquipe PAGT de SQLI Agency qui ma accueilli chaleureusement, et avec qui jai pass de trs bons moments pendant ces trois mois. Je noublierai pas tous les bons moments, ainsi que les pots dagence mensuels et les soires passes ensemble. tous je souhaite une bonne continuation et espre vous revoir prochainement.
[RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Remerciements 3
Sommaire Avant-propos ......................................................................................................................... 2 Remerciements ...................................................................................................................... 2 1. Prsentation de la socit ............................................................................................... 4 1.1. Le Groupe SQLI ........................................................................................................ 4 1.2. SQLI Agency ............................................................................................................. 6 1.3. La gestion dun projet .............................................................................................. 8 2. Contexte du projet .......................................................................................................... 9 3. Lexistant ...................................................................................................................... 10 3.1. Les interfaces ......................................................................................................... 10 3.1.1. Le Front Office ............................................................................................ 10 3.1.2. Le Back Office ............................................................................................. 11 3.2. Solution retenue : eZ Publish .................................................................................. 12 3.2.1. Adaptations des interfaces ............................................................................... 12 3.2.2. Systme CMS .................................................................................................... 12 3.2.3. Modularit deZ Publish .................................................................................... 13 4. Travail ralis ................................................................................................................ 14 4.1. Import / Export ...................................................................................................... 15 4.1.1. Description ....................................................................................................... 15 4.1.2. Analyse et conception....................................................................................... 16 4.1.3. Module dimport.............................................................................................. 17 4.1.4. Difficults rencontres ...................................................................................... 18 4.1.5. Le devenir ......................................................................................................... 19 4.2. Ask for Price ..................................................................................................... 20 4.2.1. Formulaire........................................................................................................ 21 4.2.2. Traitements ...................................................................................................... 22 4.2.3. Envoi de mails .................................................................................................. 22 5. Bilan .............................................................................................................................. 24 Glossaire .............................................................................................................................. 25
[RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Prsentation de la socit 4
1. Prsentation de la socit 1.1. Le Groupe SQLI Cr en 1990, le Groupe SQLI est le leader franais des socits de services spcialises dans les Nouvelles Technologies de l'Information et de la Communication (NTIC). Lentreprise se positionne en tant que "Grand Spcialiste" unique en France en proposant une offre globale alliant la capacit de production industrielle d'un groupe international l'expertise et la souplesse d'un spcialiste, en mesure de donner de la valeur aux innovations des entreprises qu'elle accompagne.
Le groupe est spcialis sur trois segments de comptence : Les technologies & usages Internet (Java/J2EE, Microsoft, Open Source) Les nouvelles offres SAP (NetWeaver, CRM) La Business Intelligence (BO, Cognos, Open Source)
Depuis 2005, SQLI sest inscrite dans un projet industriel de croissance ambitieux qui vise faire du groupe le leader incontest des pure players du conseil et des solutions e-business. Pour cela, lobjectif de croissance dans le plan de dveloppement 2005-2008 devait amener le groupe 150M de chiffre daffaires en 2008 avec une marge oprationnelle de 10 %. De plus, lentreprise est cote sur Euronext depuis juillet 2000, et supporte une croissance soutenue avec un chiffre daffaires multipli par deux en 2 ans (Figure 1 : volution du chiffre d'affaires de SQLI).
Au niveau du fonctionnement de lentreprise, il faut noter que le groupe est organis en agences. Les agences sont dcoupes en entits de business (Business Unit ou BU). Une BU est un centre de responsabilits dont l'objectif s'exprime sous la forme d'un rsultat (marge ou contribution) obtenir. Cest un dpartement dentreprise spcialis. Chez SQLI les BU sont spcialises dans un domaine dactivit. Une agence est sous la responsabilit dun manager dagence. Une BU est place sous la responsabilit dun manager de BU. Chaque collaborateur est rattach une et une seule BU.
Figure 1 - volution du chiffre d'affaire de SQLI (en M) [RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Prsentation de la socit 5
Le groupe SQLI possde 20 agences en France et linternationale, ce qui lui permet de bnficier dune large couverture gographique. Lentreprise est prsente en France (Aix en Provence, Bordeaux, Dijon, Lyon, Montpellier, Nantes, Paris, Poitiers, Strasbourg, Toulouse), en Suisse (Genve et Lausanne), au Luxembourg, au Maroc (Casablanca, Rabat et Oujda), en Espagne (Madrid), en Belgique (Bruxelles) et au Canada (Montral). Ce rseau dagences permet une grande proximit avec les clients et une prsence internationale.
SQLI compte plus de 2000 collaborateurs en France et ltranger et plus de 800 clients actifs. Les projets sont conduits auprs de grands comptes dans tous les secteurs dactivits.
La gestion des ressources humaines SQLI est un peu particulire. En effet, il ny a pas de service ddi cette gestion. Elle est assure par la cellule de recrutement qui soccupe essentiellement du recrutement, par le service de Paie qui gre tout le ct administratif des Ressources Humaines et par les relais RH, collaborateurs volontaires dsirant grer des personnes. La gestion des Ressources Humaines est donc dcentralise mais permet un management de proximit. Figure 2 - Rpartition des agences SQLI dans le monde Figure 3 - Quelques clients de SQLI [RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Prsentation de la socit 6
1.2. SQLI Agency SQLI Agency, la Web Agency de SQLI, est une agence du groupe SQLI qui propose du conseil et de la cration Web, dans une dynamique dinnovation et de crativit : stratgie de positionnement e-business, conseil en performance ergonomique, connaissance utilisateur, gnration de trafic ainsi que des prestations de cration, de conception, daccompagnement et de formation e-business. Contrairement aux agences standards de type ingnierie, le fonctionnement de lAgency est diffrent. En effet, lAgency a t cre il y a quelques annes pour pouvoir grer des projets web non ralisables de la part de lIngnierie cause de son fonctionnement trop strict, notamment d un processus de qualit adopt par lentreprise. Comme toutes les agences de SQLI, lAgency est dcoupe en BU. Celle qui est concerne par ce projet est la BU PAGT (Paris AGency Technique) plus communment appele Ple Techno , qui ralise les parties techniques des sites web, en PHP, MySQL, .NET ou encore AJAX. Cette BU est dirige par Jean-Marc Leglise.
Sous la direction de Jean-Marc Leglise, Ronan Lequere soccupe du management de lquipe de dveloppement. Il endosse galement la responsabilit de relais RH, et est mon matre de stage pour ce projet. Groupe SQLI Agence Lyon Agence Nantes Agence Oujda Agence
Agency Consulting Agency Sant Agency
Agence Paris Agency Web Agency BU PAGT (Technique) BU PAGC (Conseil) BU Business Dv. BU PARD (Design) Figure 4 Organisation du groupe SQLI [RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Prsentation de la socit 7
Le ple techno est divis en trois entits dune dizaine de collaborateurs : Le ple Flash, qui soccupe des ralisations des animations flash sur les sites web, Lentit Dveloppement que jai intgre, qui a pour objectif de rendre dynamique le site en y incluant des modules (exemple : gestion dutilisateur, forum, blog), Et lentit HTML qui ralise le design gnral du site (navigation, mise en page, ).
Manager & Relais RH Ronan Lequere Directeur de BU (PAGT) Jean-Marc Leglise Directrice (Web Agency) Isabelle Gauthier Figure 5 - Organigramme PAGT simplifi et adapt au projet Ple Flash Ple HTML Dveloppement Chef de projet Marie Lange Expert technique Ly Lo Cong Dveloppeur Mathieu Monselet Dveloppeur Olivier Versanne Dveloppeurs
Dveloppeur William Ong [RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Prsentation de la socit 8
Le prcdent organigramme a t simplifi pour correspondre au projet dcrit dans ce rapport. En effet, le ple dveloppement dispose de plusieurs chefs de projet travaillant sur divers projets simultanment. Toute lquipe de lAgency ne travaillent pas sur le projet expos dans ce rapport.
1.3. La gestion dun projet Les projets passent par plusieurs phases avant darriver en phase de ralisation au sein de lquipe de dveloppement. La premire phase consiste remporter un projet en faisant les propositions de solutions et commerciales les plus adapte au client. Cest le travail de la BU Business qui ralise les avant-ventes. Aprs avoir gagn un projet, celui-ci est envoy la BU Technique qui se charge, avec laide des autres BU de lAgency, de raliser un cahier des charges que validera le client tape par tape. LAgency utilise pour la majorit de ses projets, un systme de dveloppement itratif. Le dveloppement dun site web est dcoup en plusieurs tapes quapprouve chaque fois le client. La premire tape dans la conception de sites web est de dfinir lensemble des fonctionnalits et des cas dutilisation que celui-ci devra remplir. Ltape suivante est de concevoir le design gnral des pages ainsi que larchitecture du site. Aprs avoir labor les aspects statiques, les rubriques dynamiques sont alors conues. Enfin, les dernires phases dans la gestion dun projet, sont la livraison au client, puis, la priode de maintenance du projet dmarre pour une dure dtermine lors de la signature du contrat.
SQLI Agency propose ses clients un grand nombre de technologies pour la plupart Open Source (code source accessible et libre de redistribution), et se lance rgulirement dans de nouvelles technologies pour proposer constamment une grande diversit de choix. Lutilisation dapplications Open Source permet de diminuer les cots de dveloppements pour le client et pour lagence qui nont, ni lun ni lautre, pas besoin dacheter de licences. En contre partie de cette conomie, le support propos par les crateurs de ces technologies nest gnralement pas gratuit et la documentation dutilisation peut manquer de mises jour, mais cela nempche pas SQLI de raliser correctement lensemble de ses projets !
[RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Contexte du projet 9
2. Contexte du projet Il y a un peu plus dun an, une grande maison de luxe que nous appellerons Diamant dans ce rapport (le projet ntant pas termin la date de publication du rapport, je nai pas le droit de mentionner son nom), a command un site Internet e-commerce pour le Japon. La ralisation fut un succs au Japon et lentreprise souhaita tendre le site dautres pays. Elle sadressa la mme socit qui avait conu son prcdent site mais celle-ci refusa le contrat pour cause de travaux trop complexes pour modifier le site existant afin de ladapter aux demandes de Diamant. En effet, le site navait pas t conu dans loptique dtre plurilingue et un redveloppement intgral tait moins onreux quune adaptation de lexistant. Diamant fit alors appel dautres socits de services informatiques comme SQLI pour redvelopper le site linternational. SQLI Agency fit la proposition dutiliser eZ Publish, un gestionnaire de contenu (CMS : Content Management System) de plus en plus plbiscit par le milieu professionnel. Ce CMS a les avantages de pouvoir dcliner les contenus dun site en plusieurs langues et propose un cadre de dveloppement trs complet qui acclre les dveloppements dextensions spcifiques. SQLI dcrocha le contrat et au mois de fvrier commena le dveloppement du projet pour une dure dune dizaine de mois et dun budget dun million deuros. Dans un premier temps, nous verrons les points importants du site existant qui a servi de base pour le cahier des charges du site. Nous nous attarderons ensuite sur certains points prcis sur lesquels jai pu apporter ma contribution, et enfin ltat davancement du projet la fin de mon stage.
[RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
3.1.1. Le Front Office Le site Diamant.jp actuellement en ligne ralis par la prcdente socit a une interface utilisateur est entirement ralise avec la technologie Flash. La technologie Flash, cre par Macromedia et dtenue aujourdhui par Adobe, permet dinclure des animations graphiques sur un site et de sassurer que le rendu visuel sera le mme quelque soit le navigateur et le systme dexploitation utiliss par le client. En effet, pour afficher une animation Flash le navigateur doit possder un plugin et le taux de pntration du lecteur Flash est suprieur 99%.
Figure 7 - Taux de pntration des technologies plugin chez les internautes (source : Adobe)
[RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Lexistant 11
Un inconvnient raliser un site compltement en Flash concerne lindexation du contenu par les moteurs de recherches. Cest un enjeu capital pour nimporte quelle entreprise dtre correctement rfrencer dans les annuaires de recherches. Les moteurs de recherches utilisant, pour indexer, des navigateurs nintgrant aucun module dextension afin dtre le plus lger et rapide possible (navigateurs appels robots ), ils sont incapables dinterprter les animations Flash et ne peuvent indexer le contenu que voit lutilisateur. Ainsi, sur le prcdent site web une navigation alternative a t prvue si lon dtecte que linternaute visitant la page na aucun plugin. Le contenu indexer est afficher en HTML simple (ne ncessitant aucun module dextension) et peut donc tre index.
Figure 8 - Page d'accueil Diamant.jp sans plugin (interface moteurs de recherche)
3.1.2. Le Back Office Enfin, la dernire interface utilisateur est celle utilise par les employs Diamant. Cette interface administrateur est appele Back Office , loppos de linterface visible par le client qui est nomme Front Office . Linterface administrateur permet de grer les contenus afficher sur le Front Office.
Figure 9 - Back office de la prcdente version
[RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Lexistant 12
3.2. Solution retenue : eZ Publish 3.2.1. Adaptations des interfaces La nouvelle version du site dvelopper doit avoir exactement la mme interface utilisateur : une interface compltement ralise en Flash et reprenant les mmes graphismes et fonctionnalits (avec quelques amliorations) que la version japonaise en ligne. Elle doit galement disposer dune interface facilitant lindexation des robots des moteurs de recherche, et doit tre dote dun Back Office pour grer les contenus du site de manire dynamique. Le CMS eZ Publish, de part sa conception, rpond intgralement ces exigences et correspond donc parfaitement au besoin du client. Effectivement, eZ Publish propose aux concepteurs dutiliser plusieurs Front Office en dfinissant simplement de nouveaux Layouts (affichages). Ainsi, les contenus de chaque page sont gnrs sous deux formes diffrentes : sous forme HTML directement interprtable par les robots, et sous forme XML qui permet les interactions avec le module Flash.
3.2.2. Systme CMS Le mode de fonctionnement CMS deZ Publish permet de grer facilement le contenu dun site. Ladministrateur peut crer des pages trs simplement en les reliant dautres pages et ainsi il cre son arbre de navigation. Dans le principe, chaque page est reprsente par un objet qui est une instance dune classe. Une classe peut tre cre par ladministrateur pour dfinir les diffrents attributs quaura lensemble des objets de la classe. Par exemple, une bague et une montre seront du mme type de classe (produit) puisquils comportent tous les deux un prix et un nom. Le mme affichage tant utilis pour les informations de ces deux produits, il est plus ais dutiliser un seul modle daffichage Figure 10 - Fonctionnement du Front Office Internaute Navigateur Plugin Flash Moteur de recherche Serveur eZ Publish Base de donnes www.Diamant.jp www.Diamant.jp XML HTML [RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Lexistant 13
(appel template) pour afficher ces produits. Ainsi, avec eZ Publish, on associe une classe avec un modle daffichage qui a un contenu dynamique reprenant les contenus des attributs. Pour linternaute, lorsquil accdera la page de la montre, il y verra un contenu diffrent de celui de la bague. Pourtant, la structure des donnes est identique et la seule diffrence rside dans le contenu des objets.
Figure 11 - Back Office fourni par eZ Publish
3.2.3. Modularit deZ Publish Malheureusement, la complexit du site Diamant ne peut pas tre gre entirement par le systme des objets-classes-nuds des CMS, par consquent des dveloppements spcifiques sont ncessaires. En effet, certaines pages du site font appel des modules extrieurs (des web services qui vont rechercher des informations distantes, des envois de mails lutilisateur, des requtes spcifiques) et ceux-ci ne peuvent pas utiliser les fonctionnalits des CMS. Un des grands points forts deZ Publish est les possibilits du cadre de dveloppement technique utilisable par les dveloppeurs. eZ Publish permet lajout dextension (module) de manire simple et grce son systme de surcharge trs performant, donne la possibilit dajouter ou de redfinir de A Z, si on le souhaite, chaque mthode, chaque paramtre et chaque module dj inclus dans les fondements techniques du CMS. Dans le cadre de Diamant, ce systme de surcharge [RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Travail ralis 14
nous a permis de redfinir manuellement tous les nuds qui avaient des comportements particuliers, comme par exemple toute la partie du site sur lequel un utilisateur est connect et gre son compte. Les informations des utilisateurs sont stockes sur un serveur part qui est utilis par dautres modules ou dpartement de lentreprise comme, peut-on le supposer, le dpartement marketing ou le dpartement relation clientle de Diamant. Pour obtenir les informations de ce serveur, on passe par lintermdiaire de web services qui interrogent le serveur, en utilisant des protocoles spcifiques (SOAP et WSDL). Ce systme centralise ainsi toutes les informations des clients en vitant tous les problmes lis la redondance dinformations lchelle dune entreprise (exemple : deux adresses diffrentes pour un client, quelle est la bonne ?).
Aprs vous avoir rapidement prsent lessence du projet et dfini quelques notions basiques sur le CMS que jai utilis, je vais vous prsenter les tches notables que jai ralises.
4. Travail ralis Pendant mon stage, jai ralis de nombreuses tches qui mont fait dcouvrir les nombreux points essentiels deZ Publish. Dtailler chaque point serait trop fastidieux et ennuyeux, aussi je ne vous prsenterai que deux tches, trs diffrentes afin de vous donner une vision la plus large possible du projet et du travail ralis : Limport et export des donnes dans le Back Office. La ralisation de la page du site Ask For Price & information sur le Front Office. Quelques exemples supplmentaires de travaux seront donns lors de la soutenance.
[RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Travail ralis 15
4.1. Import / Export 4.1.1. Description Une ou deux semaines aprs mon arrive dans lquipe, Ly Lo Cong (expert technique eZ Publish pour le projet Diamant) me confia la tche dimportation des modles de produit dans la base de donnes eZ Publish afin que le front office ait du contenu afficher sur les pages qui taient en cours de dveloppement. La tche consiste crer ou mettre jour les produits prsents dans les bases de donnes Diamant. Il existe plus de 6.600 modles de produits diffrents, chaque modle pouvant tre dclin en plusieurs rfrences cause de certains paramtres propres aux produits (la taille dune bague par exemple). Chaque modle comporte une quarantaine dinformations complter de tous les types, comme par exemple : - nom du modle, - texte descriptif du modle, - date de lancement, - si le modle peut tre visible sur le site, - les autres modles qui safficheront dans une rubrique crations similaires , - les proprits et collections du modle, - lventuel modle parent qui contient les informations du modle consult, - etc. cette liste non exhaustive dattributs, il faut galement ajouter la gestion des langues pour chaque attribut.
Les fichiers dentres importer sont au format CSV ( Comma-Separated Values ), un format de fichier permet de stocker trs facilement les informations dun tableau sous forme textuelle (et donc facilement interprtable par une machine). Chaque valeur est spare par un point virgule et chaque ligne est spare par un saut de ligne. Un petit exemple : Format tableur
Format CSV
Mon premier fichier CSV, Un vrai Bonheur Mon;premier;fichier CSV,;;Un vrai;Bonheur;
Les fichiers CSV provenant de lancien site Diamant, comporte un nombre variable de colonnes, en moyenne 65 colonnes, qui dfinissent les en-ttes/attributs. Chaque ligne dfinit les caractristiques dun modle dans la langue dexport du fichier. [RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Travail ralis 16
4.1.2. Analyse et conception Limportation et exportation des donnes de contenu du catalogue sont essentielles puisquils agissent ensuite sur la presque totalit du site. Ces tches sont ralises par les intgrateurs de contenus Diamant. Ils modifient les informations des produits soit en passant par linterface dadministration (Backoffice) et en allant diter directement un objet, soit en exportant le catalogue via le module dimport/export, puis en modifiant le fichier CSV et en le rimportant pour mettre jour les produits. Cration de lextension Par consquent, aprs cette brve analyse, nous avons convenu de greffer une extension dans le backoffice deZ Publish pour pouvoir intgrer des modules qui raliseront ces fonctionnalits. Pour crer une extension, nous nous sommes servis des possibilits de surcharge du CMS afin dajouter un nouveau menu au backoffice Import/Export .
Figure 12 - Module import/export : sous-menu gauche, menu en haut, message derreurs, formulaires Lextension servira galement de rubrique pour tous les autres types dimport et export spcifiques aux autres parties du site que nous avons dvelopps. Lutilisateur est immerg dans le backoffice lutilisation de nos modules est transparent pour lutilisateur qui a gard toute lergonomie du backoffice (typographie des messages, design des formulaires). La cration de lextension fut difficile car ce fut ma premire tche importante raliser sur eZ Publish. Nanmoins, jai pu faire beaucoup de recherches dans la documentation du site officiel deZ Publish et ainsi jai commenc comprendre les premiers fondements du framework. [RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Travail ralis 17
Aprs avoir cr lextension, jai cr un premier module pour limport des donnes du catalogue et un second pour lexport.
4.1.3. Module dimport Le module dimport est compos dun formulaire avec deux champs remplir. Le premier est pour slectionner le fichier CSV importer, le second pour choisir la langue du fichier.
Figure 13 - Formulaire d'import Aprs avoir vrifi les conditions de non traitement (fichier invalide, format CSV incorrects, colonnes introuvables), le script dimport va parcourir chaque ligne du fichier CSV pour mettre jour le modle correspondant avec les informations fournies dans le CSV. Limportation tant excessivement long (cinq dix minutes pour 1 000 modles), un log est gnr pour suivre lavancement et le bon fonctionnement. Trois niveaux dinformations sont disponibles : info (des informations pour suivre lavancement), warning (un dfaut est relev mais nempche pas le reste du modle de se mettre jour), et error qui interrompt le traitement dune ligne CSV et passe la suivante.
Figure 14 - Exemple de log gnr [RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Travail ralis 18
Une vrification base sur lutilisation de verrous exclusifs, est effectu pour dtecter si un autre script est excut avant den lancer un nouveau. En effet, lancer deux scripts de mise jour en parallle pourrait crer des conflits et des erreurs de cohrences dans le contenu des modles.
4.1.4. Difficults rencontres Plusieurs difficults ont t rencontres pendant le dveloppement du script dimportation. La premire difficult fut de trouver la correspondance entre chaque nom des en-ttes CSV avec les attributs dfinis dans eZ Publish. Un grand fichier de mapping a t ralis et permet une gestion dynamique des attributs.
Un second problme concerna la lenteur dimportation dun modle. En effet, les premires versions du script demandaient 1 minute en moyenne pour mettre jour une ligne de 65 colonnes CSV. Pour limport de 3000 produits, il fallait compter plus de 50h dexcution ce qui ntait pas acceptable, dautant plus que le prcdent site insrait un modle en 0,02 seconde. Jai fortement tudi ce problme de lenteur un point o javais trac le temps dexcution de chaque ligne de code PHP (le langage de dveloppement deZ Publish). Mes premiers retours montraient une lenteur due lappel dune mthode eZ Publish lors de lenregistrement des modles. Il est comprhensible que le temps de mise jour soit plus important que 0,02 seconde car eZ Publish met en cache lobjet ajout/modifi afin doptimiser le rendu daffichage, il indexe galement le contenu de certains attributs pour une recherche rapide ; mais 1 minute de publication est une diffrence trop importante pour ne pas tre une anomalie. LAgency fit appel un expert eZ Publish extrieur, pour passer une journe dans nos locaux afin de rsoudre les problmes que nous avions rencontrs en utilisant eZ Publish, dont celui-ci. Aprs plusieurs changes vocaux et un audit de code, il remarqua quelques erreurs de nophytes eZ Publish mais qui ntaient lorigine des ralentissements. Nous sommes arrivs ensuite la mme conclusion : un problme se trouve dans le framework deZ Publish. En effet, nous nous sommes aperus quune requte SQL tait plusieurs fois appele et quelle mettait plus de 7 secondes pour retourner le rsultat. Nous avons dcoup la requte pour trouver la source du problme et avons constat que le bug portait sur un tri effectu dans la requte. Ne pouvant pas modifier le noyau du MySQL, nous avons supprim le tri de la requte eZ Publish ce qui fait un script 100 fois plus rapide ! prsent limport dune ligne CSV ne mettait plus quune demi-seconde.
Un troisime bug li eZ Publish avait t dcel. Au bout dun certains temps dexcution quivalent la mise jour de 300 modles, les scripts sarrtaient sur un message derreur : la mmoire alloue au script dpasse la limite autorise. Un premier essai pour viter ce problme fut de remanier le script intgralement pour librer les ressources mmoires lorsquelles ne sont plus [RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Travail ralis 19
utilises. Quelques dizaines de modles supplmentaires furent ajouts, mais le total avoisinait toujours les 10% dun fichier CSV de plusieurs milliers de produits. Jai alors propos de dcouper le script en deux avec une relation parent-enfant. Le pre avait pour but de lire chaque ligne du fichier CSV et de crer un script enfant qui se chargerait de mettre jour la ligne CSV que le pre lui aurait fourni. Par ce biais, lenfant natteindra pas la limite de mmoire puisquil ne traitera quun seul modle. Aprs avoir trait son modle il sera tu, et le pre en crera un nouveau pour traiter le modle suivant. La solution fut adopte et je la mis en application. Le bug disparu, la solution tait fonctionnelle. Ce systme de double script fut ensuite mis en place sur tous les autres scripts dimport du projet qui rencontraient galement ce problme.
Enfin, lors du passage du serveur de recette (l o les dveloppeurs font des tests) au serveur de pr-production (l o les clients font des tests), un bug, qui nexistait pas sur le serveur de recette surgt. Le script plantait de manire alatoire. Aprs quelques jours de recherches, nous avions compris que le bug ntait pas li au module, mais la configuration du serveur de pr-production. En effet, lenvironnement de pr-production utilisait du load-balancing , une technologie qui permet de rpartir les charges sur plusieurs serveurs afin daugmenter les capacits dutilisation dun site. Pour raliser le load-balancing, il faut une rplication des informations sur chaque serveur, sinon linternaute naurait pas les mmes rendus sur une mme page. Le problme venait donc du load-balancing, et dun oubli de la part des administrateurs rseaux Diamant qui faisaient correctement la rplication des fichiers entre les serveurs, mais qui avaient oubli de faire la rplication de la base de donnes. Ainsi, le script essayait de trouver des informations inexistantes dans la base de donnes, et comme il ny arrivait pas, il sarrtait.
4.1.5. Le devenir Le module a vu au cours des trois mois constamment des changements cause de certaines prcisions que nous a indiques le client lors de ses tests. Beaucoup de modifications ont pu tre facilement intgres mais certaines ont eu pour consquences le remaniement quasi complet du module dimport.
[RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Travail ralis 20
4.2. Ask for Price La fonctionnalit Ask-for-price est absolument diffrente de limport catalogue expliqu prcdemment. Les actions sont ralises ct client sur le front office. Lobjectif de Ask-for-price est de permettre linternaute de remplir un formulaire pour demander les tarifs dun produit propos sur le site.
Figure 15 - Page d'un modle (bouton Ask for price gauche) Pour demander les tarifs ou plus dinformations sur le produit, linternaute doit se rendre sur la page du modle pour ensuite cliquer sur le bouton Ask for price . Il obtient alors le formulaire suivant. [RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Travail ralis 21
4.2.1. Formulaire
Figure 16 - Formulaire ask-for-price En fonction de la culture du site visit (exemple : Diamont.jp (japonais), Diamont.com (international), Diamont.it (Italien)), le formulaire de gauche prend des aspects diffrents. Par exemple, pour les sites asiatiques, un champ supplmentaires pour les noms / prnoms apparat afin dobtenir ces informations en version latines. Sur la version Japonaise Your title devient Your gender et laffichage est seulement Male / Female . Si lutilisateur navigue sur le site en stant dj connect son compte, le formulaire de gauche disparaitra et le script de traitement, appel lors de lappui sur le bouton Send , ira chercher les informations du formulaire dans le profile de linternaute connect.
Toutes les informations affiches lcran sont automatiquement traduites par le biais du CMS qui utilisera un fichier de traduction (appel Wording) pour remplacer le texte source (en anglais) par le texte de la version associe au site (exemple Japonais). Le contenu en haut droite dcrivant le produit, est rcupr du backoffice et fonctionne avec le systme de base du CMS (les classes-objets-nuds). Ainsi, beaucoup de cas particulier sont prendre en compte lors de la cration de template, ce qui ne rend pas la conception et le dveloppement facile.
[RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Travail ralis 22
4.2.2. Traitements Lorsque linternaute clique sur le bouton Send , un script PHP est appel pour effectuer le traitement de tous les paramtres envoys. En fonction de tous les diffrents cas dutilisation, il vrifie que les champs obligatoires soient bien complts et affiche une erreur en consquence. Si lutilisateur a coch linscription une newsletter, le script crera (si ce nest dj fait) un compte lutilisateur avec les informations quil a rentr, pour linscrire une newsletter. Le script enverra un mail de demande dinformations Diamant et de prix si celui-ci a t demand et na pas t trouv. Le script met galement jour les comptes des utilisateurs si ceux-ci changent de pays, et les redirige vers une page intermdiaire leurs demandant de sauthentifier pour mettre jour leurs informations .
4.2.3. Envoi de mails Quelque soit la manuvre effectu sur cette page, un mail de confirmation ou de renseignement sera envoy au client.
Figure 17 - Email envoy l'internaute
[RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Travail ralis 23
Lenvoi de mail a t dvelopp en extension. Je me suis entirement occup de la conception et la ralisation de cette extension. Les contraintes que jai prises en compte ont t : Avoir la plus grande facilit dutilisation, Crer un mini-framework au sein deZ Publish pour faciliter la cration de mail, Avoir des mails qui puissent changer de langue en fonction du site consult.
Pour rpondre ces critres, jai dvelopp un mini-framework qui utilise le systme des templates et le wording (comme pour le formulaire ask-for-price) associs une interface de dveloppement la plus simple possible dutilisation. Pour crer un nouveau mail, le dveloppeur doit seulement crer le template avec les sources du wording, puis crer une page PHP qui lui permettra de transfrer des variables au template (exemple le prix rcupr de la page dans ask-for-price).
Lenvoi de mails a ensuite t adapt plusieurs endroits sur le site, pour permettre une meilleure gestion que la solution prcdente qui nenvoyait des mails quen anglais.
[RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Bilan 24
5. Bilan Comme jai souvent pu le dire mon matre de stage ainsi qu toute lquipe PAGT de SQLI, jai beaucoup apprci travailler au sein de lAgency. Le milieu du web est le secteur dactivit que je recherche et lAgency collait parfaitement mon centre dintrt. Habituellement, les stagiaires chez SQLI Agency travaillent sur plusieurs projets. Ils gagnent ainsi en connaissances sur plusieurs technologies et acquirent des comptences gnralement superficielles sur lensemble des technologies utilises. Mon cas au sein de lAgency fut lgrement diffrent. Quand je suis arriv, le projet Diamant ne comportait que peu de dveloppeurs cause de la technologie utilise (eZ Publish) qui tait nouvelle pour beaucoup de collaborateurs. On maffecta ds mon arrive sur le projet, et je fus compltement immerg dans cette nouvelle technologie. Je navais jamais utilis de CMS et en connaissais trs vaguement les principes. Larrive sur eZ Publish tait loin dtre le plus simple de CMS pour commencer, mais avec laide trs pdagogue de Ly Lo Cong (expert technique SQLI pour le projet Diamant) qui possde une bonne matrise deZ Publish, jai pu rapidement apprendre et me former sur ce CMS. On ma ensuite confi des tches complexes comme limportation et exportation de donnes qui mont plong en plein dans le cur deZ Publish. Ainsi, avec les comptences acquises, je suis rest sur le projet pendant les trois mois de mon stage. Jaurai souhait dcouvrir dautres CMS ou framework de dveloppement. Mais, cela fut quand mme fort instructif car jai pu tudier en profondeur les points forts et faibles de ce CMS trs complet et ainsi dcouvrir vritablement lessence mme des CMS. Ce stage fut donc trs formateur, jai pu voir diffrentes manires de gestion dquipe et de gros projets. La deuxime anne de lESIAL se termine donc sur un stage qui maura consolid dans mon choix de projet professionnel : travailler dans le web.
[RAPPORT DE STAGE - 2ME ANNE ESIAL] Juin - Aot 2009
Olivier Versanne | Glossaire 25
Glossaire ADSL (Asymetric Digital Suscriber Line) : technique de communication qui permet d'utiliser une ligne tlphonique d'abonn pour transmettre et recevoir des signaux numriques des dbits levs, de manire indpendante du service tlphonique proprement dit. BU (Business Unit) : division de la socit SQLI. CMS (Content Management System) : gestionnaire de contenu, application permettant de crer, dditer et de manipuler simplement le contenu dun site, que ce soit des articles, des titres, des images. CSV (Comma-separated-values) : format de fichier texte dans lequel les donnes sont ranges sous forme de tableaux, chaque ligne reprsentant une ligne du tableau, les colonnes tant spares par des virgules ou des points-virgules. E-commerce (site) : site proposant la vente en ligne de services et de biens. E-mail : courrier lectronique. eZPublish : CMS Open Source utilis dans le projet Luxe, qui se base sur une architecture proche du modle MVC. Flash (Flash Player) : application client fonctionnant sur la plupart des navigateurs Web permettant la cration danimation et de vido intgre dans des pages web. Framework : ensemble de bibliothques de fonctions, doutils et de conventions aidant dvelopper des applications. HTML : langage de programmation permettant de crer des pages web. Open Source : qualifie les applications gratuites et dont les codes sources sont mis la disposition de tout le monde. PAGC : ple Agency Conseil, une BU de SQLI Agency. PAGD : ple Agency Design, une BU de SQLI Agency. PAGT : ple Agency Technique, une BU de SQLI Agency. PHP (Hypertext Preprocessor) : langage script utilis principalement pour produire des pages web dynamiques via un serveur Apache. Popin : encart contenant du texte et des images apparaissant par-dessus la page prcdente. SQL : langage de programmation ddi la manipulation de base de donnes base de requte. SSII : socit de service en ingnierie informatique
Apprendre Python rapidement: Le guide du débutant pour apprendre tout ce que vous devez savoir sur Python, même si vous êtes nouveau dans la programmation
Secrets du Marketing des Médias Sociaux 2021: Conseils et Stratégies Extrêmement Efficaces votre Facebook (Stimulez votre Engagement et Gagnez des Clients Fidèles)
L'analyse fondamentale facile à apprendre: Le guide d'introduction aux techniques et stratégies d'analyse fondamentale pour anticiper les événements qui font bouger les marchés
L'analyse technique facile à apprendre: Comment construire et interpréter des graphiques d'analyse technique pour améliorer votre activité de trading en ligne.
Dans l'esprit des grand investisseurs: Un voyage à la découverte de la psychologie utilisée par les plus grands investisseurs de tous les temps à travers des analyses opérationnell
Le money management facile à apprendre: Comment tirer profit des techniques et stratégies de gestion de l'argent pour améliorer l'activité de trading en ligne