22
Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas Page 1 de 22

Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Embed Size (px)

Citation preview

Page 1: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

Page 1 de 22

Page 2: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

Table des matièresTable des matièresRemerciments........................................................................................................4

Glossaire................................................................................................................5

Introduction...........................................................................................................6

 1  Présentation de de l'entreprise Acticiel...........................................................6

 2  Objectifs du développement ................................................................…...….7

 3  Description et méthodologie de travail...........................................................8 3.1 Méthodologie de travail...............................................................................................................8

3.2 Mise en place de la base de données......................................................................................9

3.3 Site Web..............................................................................................................................................9

 3.3.1  La charte graphique.....................................................................9

 3.3.2  Les fonctionnalités du site.........................................................10

 4  Conception et réalisation....................................................................................10 4.1 Langages et outils utilisés..........................................................................................................10

 4.1.1  Xmind...........................................................................................10

 4.1.2  PHP...............................................................................................11

 4.1.2.1 Tidy...............................................................................................11

 4.1.2.2 SimpleXML..................................................................................11

 4.1.2.3  JSON.............................................................................................12

 4.1.2.4 Le Framework Code Igniter......................................................12

 4.1.3  MySQL..........................................................................................13

 4.1.4  jQuery...........................................................................................13

 4.1.4.1  jQuery AutoComplete................................................................14

 4.1.4.2  jQuery TableSorter......................................................................14

 4.1.4.3  jQuery Accordion.......................................................................15

 4.1.4.4  jqTransform.................................................................................15

 4.1.5  Google Visualization API..........................................................15

 4.1.6  (x)HTML/CSS.............................................................................15 4.2 Base de données..............................................................................................................................15

 5  Résultat final.........................................................................................................17

Page 2 de 22

Page 3: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

 6  Difficultés rencontrées........................................................................................20 6.1 Problème d'encodage de caractères.......................................................................................20

6.2 Perte de 30 000 enregistrements dans la base de données..........................................20

Conclusion.............................................................................................................21

Références..............................................................................................................22

Page 3 de 22

Page 4: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

RemerciementsRemerciements

Je tiens à remercier tout particulièrement :

• La société Acticiel pour m'avoir accueilli pour ce stage;

• Jean­Christophe BOURROUX, mon maître de stage pour sa disponibili­

té en cas de besoin;

• Amine CHAOUKI, mon encadrant pour ce stage et chef du départe­

ment des services informatiques, qui m'a assisté et guidé au fur et à 

mesure de mon avancement dans l'application;

• Mbark AKERKOUCH, développeur web qui m'a aidé à fixer les bogues 

auxquels  je n'arrivais pas à trouver une solution moi­même.

Page 4 de 22

Page 5: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

GlossaireGlossaire

BDD : Acronyme de Base De Données.

CSS  : acronyme pour Cascading Style  Sheets, langage utilisé pour décrire 

la mise en page et le style d'un document écrit en HTML (page web). 

Framework : Ensemble de bibliothèques(classes) qui fournissent des services 

communs à une grande partie de  logiciels, un framework est mis à disposi­

tion du développeur afin de lui faire gagner du temps au lieu de coder des 

choses qu'il refait normalement sur tout ses projets

GNU/GPL  :  GNU  General  Public  License,  licence qui  fixe  les conditions  lé­

gales de distribution des logiciels libres des projets GNU. 

(x)HTML  : acronyme pour eXtensible  HyperText  Markup  Language, format 

de données conçu pour représenter les pages web. 

PHP  : acronyme pour  Hypertext  PreProcessor, langage de programmation 

très utilisé dans le développement web. 

XML : acronyme de « eXtensible Markup Language », langage de balisage. 

AJAX :  acronyme de Asynchrone Javascript And Xml, est une technologie 

qui assure la communication client/serveur et  vice­versa via  le protocole 

HTTP sur une page web sans avoir à la recharger.

Page 5 de 22

Page 6: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

 1  1  IntroductionIntroduction

C'est en cette fin d'année universitaire 2009­2010, et plus exactement en 

mois de Juin, que j'ai passé mon stage d'études au sein de la société Acti­

ciel, qui sera présentée en détails dans la partie qui suit. Et c'est grâce à l'in­

térêt que je porte au développement web que j'ai pu décrocher ce stage 

au sein de ma société d'acceuil.

J'essaierai de présenter dans ce rapport les objectifs de mon développe­

ment, ainsi que la méthodologie de travail employée pour arriver aux résul­

tats voulus.

Ce rapport permettra donc   de découvrir d'une façon globale la société 

Acticiel, mais surtout l'application web que j'ai réalisé durant ce stage, les 

outils utilisés pour y arriver, tout en citant vers la fin de ce rapport les difficul­

tés rencontrées durant ce stage.

 1.1  Présentation de l'entreprise Acticiel• Historique

En 2008, Jean­Christophe Bourroux, français résident au Maroc, expert inter­

national en nouvelles technologies et en logiciels libres, créa Acticiel.

En Février 2010, deux jeunes acteurs du web marocain, Oussama Benham­

mou (éditeur du site N°1 de foot au Maroc, elbotola.com) et Mohammed El 

Ghaissani (éditeur de sites de cinéma) sont rentrés dans le capital. 

Acticiel  est  une startup marocaine,  une Société  de Services en Logiciels 

Libres – ou SS2L, Société de Services en Ingénierie Informatique spécialisée 

dans les logiciels libres – dont les deux principales activités sont l’intégration 

et le développement de solutions et de projets Open Source pour le Web, 

et l’édition et la co­édition de sites web. 

Page 6 de 22

Page 7: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

Au Maroc, Acticiel accompagne les entreprises, les offices et les institutions 

du Royaume dans leur développement en ligne, et propose des offres  clés­

en­main, de sites internet, intranet, extranet et des solutions autour des logi­

ciels libres.

• L'équipe

Acticiel  est  constitué  d’une équipe de 3 développeurs,  un  infographiste, 

ainsi qu'un administrateur serveur, et qui s'occupe aussi des relations clients, 

autrement dit il joue le rôle d'un commercial.

 2  2  Objectifs du développementObjectifs du développement

La préparation d'une base de données exploitable de CVs à partir d'enre­

gistrements sous format XML était le premier objectif de ce développement.

Après cela venait la création d'une application web permettant la manipu­

lation de la base de données créée( j'entend par manipulation tout ce qui  

est   Recherche/Consultation/Modification/Suppression)   créée   grâce   au 

Framework Code Igniter   principalement, ainsi que d'autres outils qui seront 

détaillés par la suite dans ce même rapport.

Ce travail a été confié à ZAHIM Anas, étudiant en 1ère année à l'Ecole Supé­

rieure de Technologie de Salé,   filière « Génie  Informatiique »,  et   stagiaire 

entre le 31 Mai 2010 jusqu'aù 26 Juin 2010, sous l'encadrement du chef du 

département des services informatiques, ainsi que le développeur web de 

la société.

Page 7 de 22

Page 8: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

 3  3  Description et méthodologie de travailDescription et méthodologie de travail

 3.1  Méthodologie du travailAfin de toujours assurer un produit livrable au client, l'équipe au sein de la­

quelle j'ai dû m'intégrer se base sur les principes de la  méthode agile,  no­

tamment Scrum.

La méthode agile Scrum consiste à focaliser les efforts d'une équipe sur des 

fonctionnalités définis au préable(ou par la suite). Ceci afin de livrer un logi­

ciel partiellement fonctionnel et enrichie au fur et à mesure.

Le point fort de cette méthode est que le client est impliqué dans toutes les 

phases du développement pour que le produit soit en final ce qu'il espèrait.

Le projet est divisé en fonctionnalités à finir dans une durée allant d'une se­

maine à un maximum de 2 mois, et chaque fonctionnalité est divisée en 

plusieurs tâches, tout en prenant soin de bien s'assurer que la même fon­

tionnalité ne devra pas être modifié après suite à l'ajout d'une autre. 

Page 8 de 22

Page 9: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

 3.2  Mise en place de la base de données

La base de données   fournise contenait  des  données  stockés  en  format 

HTML, donc inutilisables. Le but de ce travail est d'extraire ces données, et 

de les stocker dans une base de données relationnelle.

 3.3  Site web 3.3.1  La charte graphique

La charte graphique de cette application se divise principalement en 3parties:

➔ Une entête (Header) : Contient le logo, ainsi qu'un menu.➔ Le bloc principale : C'est dans ce dernier où la majorité des manipu­

lations vont être réalisées.➔ Un pied de page (Footer) : Contiendra les informations légales, mais il 

n'est là que pour ne pas faire exception aux autres sites webs, mais aussi pour que le deisgn du site web soit plaisant.

Page 9 de 22

Page 10: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

 3.3.2  Fonctionnalités du siteLe  site   sera  doté  d'une page de  recherche avancée de profils  afin  de permettre un accès aisé aux candidats. 

Après visualisation d'un profil, il sera possible de le modifier si on dispose des droits d'accès, sinon une connexion autant qu'administrateur s'impose.

Une   page   de   statistiques   sera   programmé   afin   d'avoir   un   peu   plus   d'­informations   sur   le   total   des   candidats   ainsi   que   leurs   formations,   expé­riences.

Toutes  les fonctionnalités citées ci­dessus seront réalisées grâce aux outils expliqués en détails dans la partie qui suit.

 4  4  Conception et réalisationConception et réalisation

 4.1  Langages et outils utilisésTous les outils et langages qui ont été utilisés pour la réalisation de ce projet sont  à code ouvert (Open Source), ce choix est dû au fait que ces derniers sont caractérisés par leurs:

➔ Accès libre;➔ Performance, robustesse, mais sans négliger la sécurité;➔ Facilité de se documenter sur un outil ou un autre, vu que 

n'importe qui peut contribuer à   l'enrichissement des docu­mentations;

➔ Large communauté d'entre­aide, notamment sur les forums de discussions; 

➔ Extensibilité; ➔ Portabilité. Vu que ces outils peuvent être utilisés indépen­

damment de la plate­forme sur laquelle ils sont hébergés.

P.S : Le développement a eu lieu sous le système d'exploitation Ubuntu 9.04 (Jaunty Jackalope), et grâce à l'IDE1 Aptana Studio, tout le code a été écrit dessus.

 4.1.1  XmindXmind est un logiciel de brain storming2  et de mind mapping3(carte heu­ristique). Il  sert à stocker ses idées, puis la mise en oeuvre de diagramme d'un tel ou tel projet, tout en gérant l'état d'avancement de chaque fonc­

1 IDE : Integrated Development Environment ( Environnement de développement intégré)2 Brain storming : Collecte d'idées sans tenir compte ni de l'ordre ni de l'absurdité de celles-ci.3 Mind mapping : Carte heuristique est un diagramme qui représente les idées sous un format sémantique et hié-

rarchique

Page 10 de 22

Page 11: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

tionnalité du projet, ainsi que son degré d'importance, ainsi que les dépen­dences entre celles­ci.

Voici   un   exemple   d'un   diagramme   réalisé  à   l'aide   de  Xmind   lors   d'une étape donnée de la réalisation du projet faisant objet de ce rapport :

 4.1.2  PHPPHP a été utilisé afin d'assurer le dynamisme du site web côté serveur. Plu­sieurs extensions4 et framework ont été utilisés dans ce projet, nous citons à titre d'exemple :

 4.1.2.1  TidyCette extension pour PHP sert à valider  du code (x)HTML/XML, la validation consiste   au   fait   de   rendre   le   code   (x)HTML/XML   compatible   avec   les standards imposés par le W3C5. Mais elle a été surtout utilisé dans ce projet afin de    rendre  la base de données XML  'parsable'6    par  la  librairie Sim­pleXML .L'extension Tidy pour PHP se caractérise par sa simplicité d'utilisation, mais surtout par son extrême difficulté à être  trouvée/installée.Voici un exemple de son utilisation dans un code PHP : 

$tidy = new tidy;

$tidy->parseString(utf8_encode($reponse['content']));

$tidy­>cleanRepair();

 4.1.2.2  SimpleXMLSimpleXML est une extension pour PHP permettant le traitement des docu­ments XML, le choix de cette librairie et non pas une autre, se justifie par sa simplicité d'utilisation (comme son nom l'indique d'ailleurs) et qu'elle répond à   tous   les   besoins   du   projet,   mais   aussi   parce   que   d'autres   extensions comme  domxml, reste très difficile à maîtriser, quoi qu'elle soit assez puis­4 Les 3 premiers outils ont été utilisés lors de l'mportation des données depuis la base de données XML, en ce qui

concerne le framework CodeIgniter, il a surtout servi à la réalisation du site web.5 W3C : World Wide Web Consortium est une organisation mondiale à but non-lucratif dont le but est d'assurer une

compatibilité entre les technologies, et ceci en les standarisant.6 Parsable : On entend par le parsing, l'analyse sémantique d'un code donné

Page 11 de 22

Page 12: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

sante et complète, et dotée de plusieurs fonctionnalités … qui seront com­plètement inutile pour ce projet.

C'est grâce à SimpleXML que l'extraction des données sous format XML a eu lieu.

 4.1.2.3  JSONJSON pour « JavaScript Object Notation », est un format de représentation de données, sous une forme nom/valeur.

Il a été utilisé dans ce projet pour stocker les langues ainsi que les niveaux de maitrises pour chacune dans un seul champ dans  la BDD.En voici un exemple :

[{

"langue":"Arabe",

"maitrise":"(Lu, Parlé et Ecrit)"

},

{

"langue":"Français",

"maitrise":"(Lu, Parlé et Ecrit)"}

}]

 4.1.2.4  Le framework CodeIgniterLa majorité de la réalisation du site web a été faite grâce à ce framework.L'utilisation d'un framework est dû  au fait qu'il  propose des  librairies/fonc­tions aides, et beaucoup d'outils qui sont communs à tous les sites web, il aurait été complètement inutile de recoder ces choses là.

En ce qui concerne le choix de CodeIgniter,  il a été fait vu que ce dernier a un temps d'exécution plus   court que ses concurrents,   ainsi   que   pour   sa   documentation   complète (quoi que disponible qu'en anglais). Mais aussi pour son sup­port natif de l'architecture MVC(Model/View/Controller), qui sépare template(s), classes et contrôleurs7. Le tout est orienté objet, même la communication avec la base de don­nées ce qui rend le code beaucoup plus structuré.

Les classes utilisées parmis celles offertes par ce framework sont :

• Config Class : cette classe a été utilisé afin de modifier la configura­tion du framework dans certaines fonctions.

7 Contrôleur : Gère l'interaction entre l'utilisateur et le modèle(une base de données en général), contrôle aussi les ac-tions à déclencher.

Page 12 de 22

Page 13: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

• Database Class  : La classe de gestion de BDD de CodeIgniter gère automatiquement la connexion à cette dernière une fois  les identi­fiants   fournies.  Voici  un exemple de requête  réalisé  grâce à  cette classe :

$this->db->distinct();

$this->db->select('*');

$this->db->order_by('ville_natale', 'asc');

$query = $this->db->get('candidats');

//équivaut à $query = mysql_query(SELECT DISTINCT * FROM candidats ORDER BY `ville_natale` ASC);

• Input   Class  :   Cette   classe   sert   à   faciliter   la récupération/vérification/sécurisation des données entrées par un uti­lisateur( dans un champ de recherche par exemple). Je l'ai utilisée un peu   partout   dans   le   site   web,   mais   surtout   dans   la   page   de   re­cherche de profils.

• Pagination Class : Automatise la gestion des liens du genre :

« < 1 2 3 4 5 > »   . Elle a été utilisée  dans la page de résultats de re­cherche.

Afin d'éviter de rentrer dans des détails encore plus techniques,  seules les  classes  ci­dessus ont été citées, et les fonctions d'aide ont été omises aussi.

 4.1.3  MySQLJ'ai utilisé MySQL comme base de données durant ce projet, pour les mêmes raisons pour lesquelles les autres outils ont été choisis8.

 4.1.4  jQueryComme PHP assure la dynamicité du site web côté serveur, jQuery l'assure côté client.

  JQuery est une bibliothèque javascript qui assure la com­munication   serveur/client   (généralement   avec   un   script PHP),   sans  avoir  à   recharger   la  page,  on  entend par   là AJAX9, mais pas seulement ça, il gère aussi les animations des éléments de la page, et dispose d'un sélecteur CSS très puissant, et qui fait toute sa puissance.

8 Voir 4.1 pour plus de détails sur ces raisons.9 AJAX : pour Asynchrone Javascript And Xml, (cf. voir glossaire)

Page 13 de 22

Page 14: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

JQuery a été utilisé sur plusieurs parties du site dont la plus intéressante est celle du formulaire de recherche, dans laquel les villes varient selon le pays choisi(chargé grâce à la technologie AJAX).

Toutefois, ses plugins ne font qu'enrichir ses fonctionnalités, deux d'entres eux ont été utilisés dans ce site web à savoir :

 4.1.4.1  jQuery AutocompleteAfin d'assister l'utilisateur lors de sa saisie dans un champ texte, une liste de suggestions lui est affiché selon ce que le visiteur est en train de taper, et cela en temps réel.

 4.1.4.2  jQuery TableSorterCe plugin est implémenté dans la page de résultats de recherche, il permet de trier les résultats selon une colonne ou plus.

Dans  l'exemple ci­dessus le tableau a été trié suivant la ville PUIS le champ 'Nom/Prénom'.

Page 14 de 22

Page 15: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

 4.1.4.3  jQuery AccordionUtilisé dans la page des statistiques, le plug­in jQuery Accordion permet d'afficher un bloc tout en prenant soin de cacher celui qui est visible avec un joli effet d'accordéon. Il est utilisé à des fins d'accessibilité pour la page, vu qu'elle est chargée de graphs/cartes.

 4.1.4.4  JqTransformAfin de rendre les formulaires du site web plus « jolis », le plugin jqTransform a été utilisé afin d'assurer cette tâche.

 4.1.5  Google© Visualization API10

L'API Google© Visualization permet de créer des visualisations en se basant sur les données qu'on lui a fourni, 2 types(mais 4 vues différentes) de visuali­sations ont été utilisés dans ce projet dans la page statistiques notamment :

• Geomap : C'est avec ce package que les visualisations pour les villes, et les pays ont été créés.

• Corechart : le camembert ainsi que les graphiques à barres ont été réalisé à l'aide de ce package.

 4.1.6  (x)HTML/CSS

Nul besoin de préciser que ces deux langages sont à la base de toute page web présente sur internet (du moins une grande partie).

Le (x)HTML a surtout été utilisé dans la partie vue/view du MVC11.

Sinon le CSS a été utilisé pour la mise en forme de la page web.

 4.2  Base de données

 4.2.1  Export/Import de la base de données en XML

La BDD d'origine(Provient de l'ancien site de Menara Jobs) ne   contenait 

qu'une seule table avec cette structure :

avec :

➔ url : l'adresse vers le CV sur l'ancien site web de Menara Jobs.

10 API : Application Programming Interface, Interface de programmation d'application, ensemble d'outils implémentés permettant la mise en place d'applications

11 Voir plus haut, dans la partie Framework

Page 15 de 22

Page 16: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

➔ content  : contient tout le CV aspiré depuis Menara Jobs, dont voici un aperçu :

<td>

<b>

mrym ch

</b>

<br/>

3 rue anqara appt 6 10000<br/>

Casablanca - Maroc

</td>

<td>

Date de naissance : 28/05/2008<br/>

Tél : 0668566655<br/>

Email :

<a href="mailto:[email protected]">

[email protected]

</a>

                    </td>

Cette étape consiste à  extraire de  la   base de données citée ci­dessus toutes les données qu'elle contient afin de les enregistrer dans une autre BDDR MySQL « exploitable » qui ressemblera à la fin après maintes manipu­lations12 à ça : 

▪ Table candidats : Contient les informations personnelles(tout ce qui   est   coordonnées   du   déteneur   du   CV,   le   champ candidat_photo contient un lien direct vers la photo du candi­dat.

12SimpleXML, ainsi que les RegEx ont été les principaux outils utilisés pour extraire les données

Page 16 de 22

Page 17: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

Il reste à préciser que : • la base de données initiale faisait presque 200Mo, après extraction 

elle ne pesait pas plus  de 30Mo.

 5  5  Résultat finalRésultat final

➔ La page d'acceuil Contient tout d'abord un formulaire rapide de rechercher de profils, suivi de 3 profils tirés aléatoirement de la BDD.

➔ Recherche de profils : 

La page de recherche de profils contient un formulaire réparti en 3 grandes parties (dites  Fieldset  en anglais, comprenez par cela « un ensemble de champs »)  à savoir :

▪ Informations personnelles.▪ Expériences.▪ Formations

Et ceci afin  d'assurer une recherche personnalisée et ciblée de pro­fils.

Il est bien de préciser aussi que toutes les listes déroulantes (Pays/Ville,Do­maine …), sont complétement dynamiques, vu qu'elles sont générées de­puis la base de données selon les choix disponibles.

En ce qui concerne les champs de type « text«   ils sont dotés d'une aide sous forme d'auto­complétation(on reviendra dessus par la suite).

➔ Résultats de la recherche :

Page 17 de 22

Page 18: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

10 résultats sont affichés par page, et peuvent être trié (sans avoir à rechar­ger  la page)   par nom/prénom, Date de naissance, Ville,   téléphone ou bien même une combinaison de ces derniers.

➔ Consultation d'un profil :

Comme son nom l'indique cette page permet la visualisation  de la totailité du CV d'une personne donnée.

➔ Statistiques :La page de statistiques affichent des graphs/cartes géographiques en se basant à chaque fois sur un critère des 5 disponibles:

Page 18 de 22

Page 19: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

Domaine de formation Secteur d'acitivité

Pays13 Ville

Type de contrat

13Le fait que le Sahara Marocain soit indépendant du Maroc dans cette carte géographique n'exprime en aucun cas l'avis ou bien un engagement politique de la part de l'autreur du site web. Vu que cette même carte est fournise Par Google Visualization API qui est indispensable pour assurer une meilleure présentation des statistiques.

Page 19 de 22

Page 20: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

 6  6  Difficultés rencontréesDifficultés rencontrées

 6.1  Problème d'encodage de caractères 

Lors de la validation du contenu de la base de données d'origine, l'exten­sion Tidy  de PHP crée des caractères dit html entity, qui à cause d'eux l'a­nalyse   sémantique   (parsing)   devient   impossible   pour   SimpleXML,   ce   qui rend l'importation impossible, ceci est dû au fait que la base de données initiale n'est pas bien formatée, ce qui rend son exploitation très difficile.

Afin de remédier à ceci, plusieurs expressions régulières ont été créées afin de supprimer tous les caractères qui posent problème (la plupart étant des espaces blancs) qui sont incompatibles avec l'encodage UTF­8.

 6.2  Perte de plus de 30 000 enregistrements dans la BDD

Vu   que   le   script   créé   ne   peut   gérer   toutes   les   anomalies,   vu   le   grand nombre de CVs (au début il y en avait vers les 20 000, même si toutes celles  qui ont été rencontrées lors de la réalisation du projet ont toutes été répa­rées),  des maintenances s'imposaient,  durant  cela  la  requête suivante a été exécuté

DELETE FROM `formations` WHERE `nom` LIKE "%_%"

Requête qui veut dire : Supprimes de la table formations tous les enregistre­ments qui contient un caractère.

Ce   que   j'ignorais   c'est   que   le    underscore  _   voulait   dire   un   caractère, concernant le pourcentage %, placé au début et en fin de la chaine veut dire, commençé ou/et terminé par un caractère. Ce qui est un peu le cas pour toutes formations, ce qui a causé le vidage de la table entière.

Et même si une sauvegarde existe déjà, son utilisation reste très difficile, vu qu'elle pèse 24mo, et il n'y a qu'une seule table qui devait être restauré. Ce qui requit un PC très puissant pour faire cette sélection.

Au moment où ces lignes ont été rédigés seul 900 enregistrements ont été récupérés, le reste sera récupéré au fur et à mesure.

Page 20 de 22

Page 21: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

ConclusionConclusion

Ainsi,   j'ai effectué mon stage de fin d'année d'études en Génie informa­tique au sein de l'entreprise Acticiel.

Toutes les fontionnalités qui ont été fixé dès le départ, ou bien dont la plani­fication a  été  ajoutée par   la   suite  ont  été   réalisées,  à  part  celle  de  la gestion   des   versions,   vu   qu'elle   s'est   avéré   complètement   inutile,   car   la gestion des versions vise tout d'abord la mise en disposition du code aux profits des autres participants au projet, or une seule personne s'était occu­pé du projet, et il n'y aura qu'une seule version de la même application, rai­son pour laquelle la fonctionnalité de la   gestion des versions a été abon­donnée.

En ce qui me concerne, ce stage m'a été très instructif, vu que j'ai dû chan­gé ma logique de développement pour qu'elle s'adapte avec la logique des Framework MVC. Certes c'est transparent pour   le visiteur du site, mais c'est une architecture qui donne droit à un code plus structuré et plus or­ganisé  pour  le développeur, Et qui peut s'avérer utile pour une ultérieure modification.

Enfin, j'ai été très honoré d'avoir eu la chance de vivre une telle expérience au sein d'une équipe aussi motivée et expérimentée dans le domaine du développement web, domaine qui, je tiens à le préciser, me tient à coeur.

Page 21 de 22

Page 22: Rapport de Stage - Réalisation d'une application web avec le Framework Code Igniter

Site web de repositoring de CVs avec le framework Code Igniter Zahim Anas

RéférencesRéférences

➔ Documentation PHP, SimpleXML, Tidy : http://fr.php.net/ 

➔ Documentation MySQL : http://dev.mysql.com/doc/refman/5.0/fr/ 

➔ Documentation CodeIgniter : http://codeigniter.com/user_guide/

➔ Documentation jQuery et ses plug­ins: 

◦ http://docs.jquery.com/Main_Page   

◦ http://tablesorter.com/docs/   

◦ http://www.dfc­e.com/metiers/multimedia/opensource/jqtrans   ­  form/

➔ Documentation Google Visualization API : http://code.google.com/intl/fr­FR/apis/visualization/documentation/index.html

➔ http://stackoverflow.com   

➔ http://siteduzero.com   

Page 22 de 22