Lundi 04 Janvier 2016 au Vendredi 05 Février 2016
Rapport de stage Stage de fin d’études
Akram JHINGOOR LYCÉE CHARLES DE FOUCAULD BTS SIO
Tuteur entreprise : Ahilan THANGAVADIVEL
Tuteur académique : Michel VINCIGUERRA
JHINGOOR Akram STAGE ADENIS 2016
1
Table des matières Table des figures ..................................................................................................................................................... 2
Remerciements ....................................................................................................................................................... 3
Introduction ............................................................................................................................................................ 4
Présentation de l’entreprise : ................................................................................................................................ 5
Présentation des activités.................................................................................................................................. 5
Stratégie de l’entreprise .................................................................................................................................... 5
Mon poste pendant le stage .............................................................................................................................. 5
Mission 1 : Formation Symfony2 ........................................................................................................................... 6
La méthode SCRUM ........................................................................................................................................... 6
1.1/ Contexte ................................................................................................................................................. 6
1.2/ Méthode SCRUM, qu’est-ce que c’est ? ................................................................................................ 6
1.3/ La méthode SCRUM appliquée au stage. .............................................................................................. 7
Cheminement de la formation .......................................................................................................................... 8
2.1/Contexte de formation ........................................................................................................................... 8
2.2/ Les tâches liées à la formation............................................................................................................... 8
DEBUG .............................................................................................................................................................. 17
3.1/ Le principe du débogage ...................................................................................................................... 17
3.2/ Le débogage en temps réel .................................................................................................................. 17
Mission 2 : Préparation installation machines SDT ............................................................................................. 22
Contexte : ......................................................................................................................................................... 22
Déroulement : .................................................................................................................................................. 22
Mission 3 : Intervention Salon Voyages Masson ................................................................................................. 24
Contexte ........................................................................................................................................................... 24
Liste des matériaux nécessaires : .................................................................................................................... 24
Déroulement .................................................................................................................................................... 24
Exemple de paramétrage d’un ordinateur ...................................................................................................... 25
Schéma réseau du salon .................................................................................................................................. 29
Mission 4 : Migration Zend vers Symfony ........................................................................................................... 30
Zend, qu’est-ce que c’est ? .............................................................................................................................. 30
Et Symfony alors, qu’est-ce que c’est ? ........................................................................................................... 30
Zend vs Symfony .............................................................................................................................................. 31
Pourquoi choisir de migrer un projet vers Symfony2 ..................................................................................... 31
VEILLE TECHNOLOGIQUE : SYMFONY .................................................................................................................. 32
Pourquoi Symfony comme thème de veille .................................................................................................... 32
Les origines de Symfony .................................................................................................................................. 32
Pré requis matérielles et logicielles ................................................................................................................. 32
Symfony, les pour et les contres...................................................................................................................... 33
Débuter avec Symfony ..................................................................................................................................... 33
Le routing : ....................................................................................................................................................... 34
Les contrôleurs : ............................................................................................................................................... 34
Les templates : ................................................................................................................................................. 35
Doctrine : .......................................................................................................................................................... 35
Sources ............................................................................................................................................................. 35
Conclusion ............................................................................................................................................................ 36
JHINGOOR Akram STAGE ADENIS 2016
2
Table des figures
Figure 1 - Cycle du SCRUM ...................................................................................................................... 7
Figure 2 - SCRUM appliqué au stage ....................................................................................................... 8
Figure 3 - Création d'une entité Customer via CMD ............................................................................. 10
Figure 4 - Formulaire client ................................................................................................................... 11
Figure 5 - Contrôleur du Formulaire Client ........................................................................................... 12
Figure 6 - La vue du Formulaire Client .................................................................................................. 13
Figure 7 - Config du swift mailer ........................................................................................................... 13
Figure 8 - Personne anonyme ............................................................................................................... 14
Figure 9 - Formulaire d'inscription ........................................................................................................ 14
Figure 10 - Security.yml ......................................................................................................................... 15
Figure 11 - Accès refusé ........................................................................................................................ 17
Figure 12 - Ajouter un client TEST ......................................................................................................... 18
Figure 13 – Erreur .................................................................................................................................. 19
Figure 14 - Code formulaire client ......................................................................................................... 20
Figure 15 - Méthode find ....................................................................................................................... 21
Figure 16 - Méthode findBy ................................................................................................................... 21
Figure 17 - Résultat des courses ............................................................................................................ 21
Figure 18 HP modèle ProDesk 400 G1 Desktop Mini PC ....................................................................... 22
Figure 19 - Tableau de bord Adenis ...................................................................................................... 23
Figure 20 - Recensement des machines SDT ......................................................................................... 23
Figure 21 - Connexion au réseau local .................................................................................................. 25
Figure 22 - Protocole TCP/IPv4 .............................................................................................................. 26
Figure 23 - Ajout de l'imprimante ......................................................................................................... 26
Figure 24 - Nom de l'imprimante .......................................................................................................... 27
Figure 25 - Imprimante ajoutée ............................................................................................................ 28
Figure 26 - Schéma Salon Voyages Masson .......................................................................................... 29
Figure 27 - Zend Framework ................................................................................................................. 30
Figure 28 - Symfony Framework ........................................................................................................... 30
JHINGOOR Akram STAGE ADENIS 2016
3
Remerciements
Je remercie spécialement M. Ahilan THANGAVADIVEL, qui a été mon tuteur sur l’ensemble
des deux stages effectué chez Adenis. Je le remercie pour m’avoir accepté en stage, pour
m’avoir partagé son expérience professionnelle et avoir eu la patience de recruter un
stagiaire original comme moi.
Je remercie également Mlle Rihab ABDELHEDI qui m’a encadré dans ce stage de fin d’études
pour m’avoir aidé dans mon apprentissage du Framework Symfony2, pour ses excellents
conseils de développeurs et pour m’avoir supporté pendant ces 5 semaines.
Je remercie aussi M. Alain ANTISTE pour avoir partagé son expérience professionnelle et
m’avoir fait comprendre à quel point l’organisation et la gestion de projets étaient
importants. Je le remercie pour avoir pris le temps de m’aider dans la préparation de mon
épreuve et pour ces précieux conseils.
Et enfin, je remercie toute l’équipe des techniciens, Mervyn, Marie, Giresse, Junior,
Anthony,Rémi, Ghislain, Steeve pour l’ambiance joviale et leur accueil qui a facilité mon
intégration. Je les remercie tous pour les conseils qu’ils m’ont donnée pour mon projet
professionnel et mon avenir.
JHINGOOR Akram STAGE ADENIS 2016
4
Introduction
Dans le cadre de mon formation de BTS SIO spécialité SLAM, j’ai pu effectuer mon stage de
première année et de deuxième année au sein de la société Adenis. Durant mes stages, j’ai
pu obtenir une expérience significative pour ma vie professionnelle et apprendre
énormément en tant que développeur informatique.
Pendant ces 10 semaines de stage, j’ai participé à deux projets sous le Framework Symfony2
avec le langage PHP. J’ai aussi participé à des interventions de solutions d’infrastructure
pour des clients de la société J’ai pu obtenir des connaissances en adressage IP, en
installation de solutions matérielles en base de données, en gestion de projet et sur le
Framework Symfony2 et Zend.
Je vais présenter dans ce rapport de stage les différentes missions que j’ai réalisé dans le
cadre de mon stage de fin d’études :
Les interventions auquel j’ai participé ;
La formation Symfony2 ;
La migration d’un projet Zend vers Symfony2.
D’une part, je vais présenter l’entreprise dans laquelle j’ai exercé mes stages et d’une autre
part, je vais présenter les missions de mon stage de fin d’études.
JHINGOOR Akram STAGE ADENIS 2016
5
Présentation de l’entreprise :
Présentation des activités
Adenis est une SSII créée en 1999 par Jerôme Benbihi et David Marciano (les actuels
dirigeants). Le siège social est basé à Bagnolet, regroupant tous les services : la direction, la
comptabilité, la finance, la gestion de projet et le support. Au départ, l’entreprise se
destinait à la vente de matériel informatique et au support technique.
Au fur et à mesure, Adenis évolue son offre afin d’accompagné ses clients, allant du support
technique, de l’hébergement jusqu’au déploiement de lien physique.
Ainsi, Adenis développe une offre de communications unifiée (ToIP, trunk SIP, Asterisk...) Il
fournit internet (en partenariat exclusif avec Orange) par différents biais soit par le
déploiement de fibre noire, optique ou de solution SDSL 1
Adenis offre également un service d’audit et de conseil en systèmes et réseaux. Allant de la
création d’architectures LAN et WAN, la conception de serveurs et de postes de travails
jusqu’à leurs intégrations et hébergements.
Stratégie de l’entreprise
Adenis applique une politique de niche en ciblant des agences de voyages en leur proposant
des offres de services globales, des accès sécurisés et une expertise avancée.
Mon poste pendant le stage
Au sein d’Adenis, j’ai pu entrevoir les différents aspects du poste de développeur
informatique. Par exemple, l’identification du besoin des futurs utilisateurs liés à un projet
en tenant compte des contraintes telles que la simplicité, la performance et l’adaptabilité du
projet.
Ma principale mission était de participer aux projets en développant une partie ou un
module du projet.
JHINGOOR Akram STAGE ADENIS 2016
6
Mission 1 : Formation Symfony2
La méthode SCRUM
1.1/ Contexte
L’équipe autour du projet était composée du développeur informatique, deux stagiaires
développeur informatique. Le projet était encadré par le Directeur TechniqueM. Ahilan
THANGAVADIVEL.
Dans le cadre du stage et de la gestion projet, il fallait instaurer une démarche de travail
pour le bon suivi des tâches. Les méthodes dites "Agiles" ont permis de pouvoir faciliter
l'organisation de projet et la gestion des différentes tâches.
La méthode utilisée ici pour la gestion de projet était la méthode Agile SCRUM. Cela permet
une gestion réactive, structurée et interactive des différents projets de l’entreprise.
1.2/ Méthode SCRUM, qu’est-ce que c’est ?
La méthode SCRUM définit un cadre de travail permettant la réalisation de projets
complexes. Initialement prévu pour le développement de projets type « Software », cette
méthode peut être appliquée à tout type de projet, du plus simple au plus innovant, et ce de
manière très simple.
Les projets qui suivent la méthode Agile « SCRUM » sont divisés en plusieurs cycles de
travail relativement court que l’on appelle « sprints ». Ces derniers permettent aux membres
de l’équipe d’évaluer régulièrement les progrès liés au projet et de planifier les prochaines
étapes de développement. Mais cela permet surtout de réajuster ou réorienter la direction
prise par le projet si besoin est, à partir d’une base de travail déjà achevée et validée (sprint).
Chaque projet utilisant la méthode SCRUM s’organise autour d’une équipe auto-organisée
car il n’y a pas de chef d’équipe qui décide des rôles de chacun, ou de la manière dont un
problème est résolu, puisque ces problématiques sont traitées par l’équipe dans son
ensemble ; et multifonctionnelle car chaque membre de l’équipe est parti prenant dans le
développement de chaque fonctionnalité, de l’idée à l’implémentation finale.
JHINGOOR Akram STAGE ADENIS 2016
7
Figure 1 - Cycle du SCRUM
Il existe trois rôles principaux à « pourvoir » : Le responsable produit, le SCRUM Master, et le
membre de l’équipe.
• Le responsable produit : Ce dernier est en charge de communiquer la vision
globale du produit à l’équipe. Il se doit de représenter le client final, se mettre à
sa place et donc de prioriser ses besoins. Il est celui qui a le plus de
responsabilités et d’autorité. Le responsable produit est en effet celui qui est en
première ligne lorsque quelque chose se passe mal.
• Le SCRUM Master : Il ne manage pas l’équipe, mais travaille à éliminer tous les
obstacles qui peuvent empêcher l’équipe d’atteindre les objectifs fixés pour
chaque sprint de travail. En résumé, ce rôle permet à l’équipe de rester créative
et productive, tout en veillant à ce que les réalisations soient visibles pour le
responsable produit.
• Membre de l’équipe : Dans la méthode SCRUM, l’équipe est responsable de la
réalisation opérationnelle des « travaux ». C’est toute l’équipe qui est
responsable du résultat final de chaque sprint.La manière dont sont exécutées les
tâches est très libre mais cette liberté doit être néanmoins cadrée par l’obligation
de répondre aux objectifs du sprint.
1.3/ La méthode SCRUM appliquée au stage.
Afin d’être dans un cadre propice pour la réalisation de projet, nous avons appliqués la
méthode SCRUM préconisé par notre « chef de projet » à notre stage.
J’avais déjà des connaissances sur le Framework Symfony2 et il a fallu former l’autre
stagiaire en développement. Ainsi, nous avons organisés les différentes tâches selon des
sprints.
JHINGOOR Akram STAGE ADENIS 2016
8
Le développeur informatique a eu le rôle de SCRUM Master, mon tuteur, le responsable
ingénieur a le rôle de Responsable produit et nous étions, les stagiaires, les membres de
l’équipe.
Cette méthode nous a apporté une dimension organisationnelle pour le projet et le stage en
lui-même.
Figure 2 - SCRUM appliqué au stage
Cheminement de la formation
2.1/Contexte de formation
Dès le premier jour, nous avions pris connaissance avec l’environnement de travail de la
société sur l’aspect développement. Les méthodes de travail, l’environnement logiciel, le
langage principal utilisé etc… Ayant déjà fait mon stage de première année chez ADENIS. J’ai
déjà une certaine connaissance de l’environnement de travail. L’autre stagiaire développeur
ne connaissait pas Symfony2 et l’architecture MVC* avec le PHP POO. Ainsi, il a donc fallu
former le stagiaire développeur pour qu’elle puisse se familiariser avec cette technologie. La
formation a donc été organisée sous forme de tâches pour se positionner sur le SCRUM du
stage.
2.2/ Les tâches liées à la formation
Voici comment nous avons organisé la formation sous forme de plusieurs tâches :
Installation de Symfony2 et création d'un projet Symfony2 ;
Contexte d'un mini projet comme appui à la formation ;
Création d'entité objet : Client et Company;
JHINGOOR Akram STAGE ADENIS 2016
9
Création formulaire pour ajouter, modifier ;
Envoyer un email avec Symfony2 ;
Sécuriser une application avec une page de connexion et une page inscription ;
Sécurité sur Symfony2.
Installation de Symfony2 et création d’un projet Symfony2
Pour l’installation de Symfony2, on a commencé par les pré requis à savoir : un serveur web
(Apache*, par exemple), un moteur de base de données (MySQL), et PHP 5.3.2 ou plus
récent.
Quoi de mieux pour comprendre et installer une technologie qu’un tutoriel bien expliqué.
Voici le lien d’un très bon tutoriel qui relate ce que nous voulons faire :
http://www.lafermeduweb.net/tutorial/demarrer-un-projet-avec-symfony-p27.html
Contexte d’un mini projet comme appui à la formation
Afin de pouvoir comprendre et poursuivre la formation rien de tel qu’un contexte. On a pris
un contexte simple : une société et ses clients. Pour une société, on voudrait savoir sa raison
sociale, son adresse, son code postal et sa ville. Pour le client, on voudrait connaître son
pseudo, son prénom, son nom de famille et de quelle compagnie il est client. On voudrait
pouvoir ajouter un client, des compagnies, les modifier et les supprimer. Un tableau de bord
où l’on pourrait voir les clients et les compagnies.
JHINGOOR Akram STAGE ADENIS 2016
10
Création d'entité objet : Client et Company et Utilisation de la php app/console
Symfony2 a l’avantage de fonctionner avec une commande et un panel d’instruction
permettant de réaliser différentes actions comme créer une entité objet dans la base de
données. Pour tout ce qui concerne les bases de données, Symfony2 utilise Doctrine ORM*.
Figure 3 - Création d'une entité Customer via CMD
Il suffit de passer cette commande pour l’entité objet soit créer dans la base de données :
php app/console doctrine :schéma :update --force
JHINGOOR Akram STAGE ADENIS 2016
11
Création formulaire pour ajouter, modifier
Les formulaires aussi ont une particularité puisqu’ils sont gérés par Symfony2. On crée un
formulaire basique et on devra le déclarer comme un objet. Par défaut, le formulaire généré
par Doctrine affiche des champs pour toutes les colonnes de la table. Un formulaire permet
une action sur une entité objet donc il est lié à une entité. On va s’intéresser à un formulaire
d’ajout des clients. En partant du principe qu’il y a déjà quelques sociétés dans la base de
données, on va créer un formulaire avec l’username, firstname et lastname du client de
type TEXTE. Pour l’associer à une compagnie, on va créer une liste déroulante.
Figure 4 - Formulaire client
JHINGOOR Akram STAGE ADENIS 2016
12
Qui dit formulaire dit traitement de données. Le traitement du formulaire se fait dans le
contrôleur et c’est ici même où on « déclare » le formulaire.
Figure 5 - Contrôleur du Formulaire Client
JHINGOOR Akram STAGE ADENIS 2016
13
Figure 6 - La vue du Formulaire Client
Envoyer un email avec Symfony2
Envoyer un mail est possible avec Symfony2 puisque SwiftMailer, une bibliothèque à base
de composants pour l'envoi d'e-mails à partir d'applications PHP, gère ce service
C’est le même principe qu’un formulaire sauf qu’il faut modifier la config de Symfony2. Un
exemple de config.yml pour cerner la chose.
Figure 7 - Config du swift mailer
JHINGOOR Akram STAGE ADENIS 2016
14
Sécuriser une application avec une page de connexion et une page inscription
Comme on peut le remarquer, on est considéré comme un utilisateur anonyme.
Figure 8 - Personne anonyme
On va alors créer une page de connexion et une page d’inscription pour accéder aux
différents actions du projet. De ce fait, il nous faut créer une entité User qui répertorie les
utilisateurs inscrits.
Une fois inscrit, on va pouvoir se connecter à l’application. La sécurité sous Symfony2 est
très poussée, on peut la contrôler très facilement.
La démarche est simple : On cherche à identifier l’utilisateur qui accède à l’application et
après authentification, on gère l’accès à l’utilisateur en question.
Bon dans ce cas-ci, en s’inscrivant, on laisse le choix à l’utilisation de devenir admin ou
utilisateur.
Figure 9 - Formulaire d'inscription
JHINGOOR Akram STAGE ADENIS 2016
15
Sécurité sur Symfony2
La sécurité est un processus en deux étapes dont le but est d'empêcher un utilisateur
d'accéder à une ressource dont il ne devrait pas avoir accès.
Le composant de sécurité peut être configuré via la configuration de votre application à
l'aide du fichier security.yml à partir du dossier app/config.
Voici un extrait pour comprendre la sécurité gérée par Symfony2.
Figure 10 - Security.yml
JHINGOOR Akram STAGE ADENIS 2016
16
Partie role_hierarchy
La notion de « rôle » est au centre du processus d'autorisation. On assigne un ou plusieurs
rôles à chaque utilisateur, et pour accéder aux ressources on demande que l'utilisateur ait
un ou plusieurs rôles. Ainsi, lorsqu'un utilisateur tente d'accéder à une ressource, le
contrôleur d'accès vérifie s'il dispose du ou des rôles requis par la ressource. Si c'est le cas,
l'accès est accordé. Sinon, l'accès est refusé. Le ROLE_ADMIN hérite du ROLE_USER par
défaut et le ROLE_SUPER_ADMIN hérite du ROLE_ADMIN et donc du ROLE_USER
Partie encoders
Cette partie de la configuration permet donc de modifier l'encodeur utilisé pour vos
utilisateurs, et donc la façon dont sont encodés les mots de passe dans votre application. Le
mode encoders utilisé ici est le sha512 pour crypter les mots de passes.
Partie providers
Un provider est un fournisseur d'utilisateurs. Les firewalls s'adressent aux providers pour
récupérer les utilisateurs et les identifier. Dans notre cas, les firewalls chercheront dans
l’entité User que l’on a définie ici.
Partie firewalls
Un pare-feu cherche à vérifier que vous êtes bien celui que vous prétendez être. Ici on
définit un espace sécurisé où il faut se connecter pour accéder aux différentes pages.
Login_path : /loginrenvoie vers la fonction qui va soumettre le formulaire et check path
/login_check vers la fonction qui va vérifier/traiter la demande. La partie pour se
déconnecter est aussi défini et redirige vers le formulaire de connexion.
Partie access control
Le contrôle d'accès (ou access control en anglais) va s'occuper de déterminer si le visiteur a
les bons droits (rôles) pour accéder à la ressource demandée.
Ainsi, les niveaux des rôles des utilisateurs sont définis par l’intermédiaire de l’entité Rôles.
On peut restreindre l’accès d’une partie du contenu à une partie des utilisateurs.
JHINGOOR Akram STAGE ADENIS 2016
17
Figure 11 - Accès refusé
DEBUG
3.1/ Le principe du débogage
Les erreurs sont toujours fréquentes quand on développe et cela peut arriver à tout le
monde même au meilleur. Les erreurs amènent à une recherche de solutions par le
débogage. C’est le fait d'enlever les erreurs d'un programme, en suivent le déroulement de
ce programme afin d'en repérer et corriger les dysfonctionnements. La faute a un point-
virgule, ou bien une méthode mal utilisé voir un blocage au niveau du système.
3.2/ Le débogage en temps réel
Dans cette partie, nous allons prendre un exemple d’erreur à DEBUG afin de comprendre la
démarche à suivre. Nous allons essayer de créer un client test qui sera associé à la
compagnie CompanyTest. De ce fait, soumettre ce cas au formulaire d’ajout de client du
mini-projet.
JHINGOOR Akram STAGE ADENIS 2016
18
Figure 12 - Ajouter un client TEST
Lors de la validation du formulaire, on peut apercevoir une erreur. C’est fâcheux et c’est tant
mieux.
L’importance lors d’un débogage est de pouvoir comprendre l’erreur affiché. Voicil’erreur en
question:
The identifier id is missing for a query of Test\Bundle\CeriseBundle\Entity\Client
Juste après, nous avons la STACK TRACE qui montre et identifie la possible source du
problème avec la fonction qui renvoie l’erreur affiché précédemment. Le deuxième point
nous dit qu’il y a une erreur qu’il manque le champ identifiant. Rappelons que l’ID est généré
automatiquement par Symfony2.
Il est décrit que la méthode find de l’ENTITY MANAGER récupère un tableau avec les
données que l’on a rentré dans notre formulaire.
JHINGOOR Akram STAGE ADENIS 2016
19
Figure 13– Erreur
D’après ce que l’on comprend de l’erreur, il y aura un problème avec la requête puisqu’il
manquerait un argument.
Dans le code, on vérifie à l’aide de la méthode findsi l’utilisateur est déjà présent dans la
base de données. Si ce n’est pas le cas, alors on peut l’insérer dans la table CLIENT.
Concrètement, l’erreur serait ici dans l’utilisation de la méthode find.
JHINGOOR Akram STAGE ADENIS 2016
20
Figure 14 - Code formulaire client
La méthode find sélectionne une information par une clé primaire. En gros, on donne
l’identifiant et il nous renvoie les informations associées à cet identifiant. Comme on a pu le
voir dans le code, on passe en argument un tableau au lieu d’un ID.
JHINGOOR Akram STAGE ADENIS 2016
21
Figure 15 - Méthode find
Il faut donc trouver une autre méthode pour continuer le traitement. Sachant qu’on doit
passer un tableau en argument, il sera judicieux d’utiliser la méthode findBy qui, lui,
demande un tableau en argument.
Figure 16 - Méthode findBy
Il suffit de remplacer la méthode find par la méthode findBy et hop le tour est joué. Voilà,
l’ajout du client peut se faire.
Figure 17 - Résultat des courses
JHINGOOR Akram STAGE ADENIS 2016
22
Mission 2 : Préparation installation machines SDT
Contexte : ADENIS possède plusieurs clients. Un client, SDT une agence de voyage sous traite sa partie
solution système et réseau à ADENIS. SDT a commandé des ordinateurs auprès d’ADENIS. La
responsable du système avait assigné cette mission à un technicien du support ainsi qu'à un
autre stagiaire du support technicien.
Malheureusement, le stagiaire-technicien s'est blessé hors travail et a été contraint d'arrêter
son stage. Ainsi, j'ai aidé à la préparation de l'intervention.
Déroulement :
On devait installer une vingtaine d’ordinateurs dans une des agences de SDT. Il avait
commandé auprès d’ADENIS des ordinateurs. Les ordinateurs étaient configurés chez
ADENIS pour les préparer pour leur installation dans l’Agence SDT.
Les ordinateurs commandés sont de la marque HP modèle ProDesk 400 G1 Desktop Mini PC
Figure 18 HP modèle ProDesk 400 G1 Desktop Mini PC
Le démarche est simple :
Allumer les PC HP et vérifier si le produit n’est pas défectueux ;
Installer le Pack Office et activer la licence du Pack logiciel ;
Installer l’Agent Adenis comprenant l’anti-virus ;
Exécuter le programme Agent Adenis et vérifier s’il apparait dans le tableau de bord
Adenis ;
Recenser les ordinateurs par Numéro de série ;
Durant l’installation, on doit vérifier si l’Agent Adenis est bien présent sur l’ordinateur.
Cette Agent Adenis aide à la prévention d’éventuels problèmes ou autres soucis techniques
et au bon fonctionnement de l’ordinateur.
JHINGOOR Akram STAGE ADENIS 2016
23
Figure 19 - Tableau de bord Adenis
On peut y voir les machines installées à l’Agence de SDT avec pour chacun les sessions et
utilisateurs des différentes machines.
Toute activité a besoin d’être représenté sous la forme d’un document pour avoir une trace
de celle-ci et pour qu’il soit compris d’autres personnes extérieurs à cette activité
(Responsable système, le directeur informatique, les autres techniciens, le client etc…).
Pour répertorier les ordinateurs installés, on a recensé chacun avec leurs informations dans
un document Excel.
Figure 20 - Recensement des machines SDT
JHINGOOR Akram STAGE ADENIS 2016
24
Mission 3 : Intervention Salon Voyages Masson
Contexte
Voyages Masson, un groupe d'agences de voyage, prépare un salon au musée du cheval de
Chantilly.
Dans ce salon, le groupe Voyages Masson présentera les différents services de l'entreprise
avec des coins pour chaque conseiller.
L'agence de voyage a donc fait appel à Adenis pour la préparation et l'installation de
l'infrastructure informatique.
Liste des matériaux nécessaires :
HP LaserJet P2015 - Imprimante
HP LaserJet P2055dn
50m de câble Ethernet
2 routeurs NETGEAR ProSafe GS108 8-port
2 Ordinateurs portables Lenovo (propriété d'Adenis)
6Ordinateurs portables du personnel Voyages Masson
Déroulement
L’espace consacré à Voyages Masson était partagé par 7 espaces personnels pour chaque
conseiller. Chaque conseiller doit avoir accès à la Wi-Fi du Salon et doit avoir la possibilité
d’imprimer une fiche de renseignements ou autre document.
L’agence Voyages Masson possède 2 imprimantes pour le salon. Chaque ordinateur devait
aussi avoir accès au module proposé par Adenis (contrôle à distance pour la
télémaintenance…).
L’espace Voyages Masson était étendu. Nous avons alors regroupé les espaces personnels
en 2 secteurs. Chaque secteur dispose d’une imprimante. Nous avons installé 4 ordinateurs
portables donc le secteur 1 avec l’imprimante HP LaserJet P2055dn et 3 ordinateurs
portables au secteur 2 avec l’imprimante HP LaserJet P2015. Un ordinateur est placé à
l’accueil utilisant le Wi-Fi.
On a utilisé les routeurs NETGEAR pour relier les différents ordinateurs aux imprimantes de
leurs secteurs respectifs. On paramètre chaque ordinateur sur la plage d’adresse IP utilisé
pour les imprimantes.
JHINGOOR Akram STAGE ADENIS 2016
25
Exemple de paramétrage d’un ordinateur
La démarche est simple pour que l’ordinateur en question accède au réseau local et à
l’imprimante.On établit une connexion au réseau local qu’on a mis en place pour le salon de
Voyages Masson.
Figure 21 - Connexion au réseau local
JHINGOOR Akram STAGE ADENIS 2016
26
On définit l’adresse IP via le
Protocole Internet Version 4
(TCP/IPv4) ainsi que le masque
de sous-réseau et la passerelle
par défaut.
Figure 22 - Protocole TCP/IPv4
Une fois l’adressage IP terminé, on peut installer l’imprimante. On installe chaque
imprimante à son secteur par défaut.
Figure 23 - Ajout de l'imprimante
JHINGOOR Akram STAGE ADENIS 2016
27
Windows va détecter automatiquement le pilote d’impression à utiliser. Pour faciliter
l’identification de chaque imprimante, on va leur donner un nom.
Figure 24 - Nom de l'imprimante
JHINGOOR Akram STAGE ADENIS 2016
28
Voilà, on a ajouté l’imprimante à l’ordinateur. Par soucis de prévention, on ajoute l’autre
imprimante au cas où l’imprimante du secteur lâche.
Figure 25 - Imprimante ajoutée
JHINGOOR Akram STAGE ADENIS 2016
29
Schéma réseau du salon
Pour cette intervention, j’ai réalisé un schéma réseau afin de comprendre et d’être mieux
organisé.
On peut y avoir la passerelle par défaut, les plages d’adresses IP attribuées aux ordinateurs
et imprimantes.
Figure 26 - Schéma Salon Voyages Masson
JHINGOOR Akram STAGE ADENIS 2016
30
Mission 4 : Migration Zend vers Symfony
Zend, qu’est-ce que c’est ?
Figure 27 - Zend Framework
Le Zend Framework est un projet PHP gratuit fourni par la société Zend. Les objectifs du projet sont
les suivants :
Accélérer le développement de sites web
Faciliter la maintenance
Industrialiser la façon de coder en PHP
Ce Framework permet de faciliter et de fiabiliser le développement de sites dynamiques en PHP. Il
s'adresse notamment aux entreprises : le risque associé au développement d'un site d'envergure est
significativement inférieur avec l'utilisation du Zend Framework.
Et Symfony alors, qu’est-ce que c’est ?
Figure 28 - Symfony Framework
Symfony est un Framework codé en PHP qui va nous permettre de développer une immensité
d'applications web de la plus simple à la plus complexe imaginable.
Car en effet, Symfony définit un squelette de base à respecter, mais dans lequel on peut y mettre
tout le code que l'on souhaite.
JHINGOOR Akram STAGE ADENIS 2016
31
Zend vs Symfony
Zend FrameWork Symfony Framework
Le Zend Framework est plus considéré comme une grosse bibliothèque de fonctionnalités plutôt qu'un Framework à part entière et n'est pas très simple à comprendre pour un débutant.
Dans sa version 2, il passe réellement dans la catégorie des Framework avec une approche très proche de celle de Symfony2.
Néanmoins, de solides connaissances sont aussi à prévoir afin d'exploiter correctement l'outil.
Symfony est un Framework qui dispose d'un bon nombre de briques de base tout en laissant pas mal de libertés au développeur.
Cependant, Symfony peut être délicat à aborder pour un débutant s'il n'a pas de bonnes connaissances en programmation orientée objet.
Il nécessite une certaine maîtrise des technologies web pour en exploiter toute la puissance du produit.
Pourquoi choisir de migrer un projet vers Symfony2
Une grande réputation
Lancé en 2005, Symfony est aujourd'hui un Framework stable connu et reconnu à l'international.
Symfony dispose aussi une communauté active de développeurs, intégrateurs, utilisateurs et
d'autres contributeurs qui participent à l'enrichissement continu de l'outil.
De l'innovation
Symfony est tout ce que vous attendez d'un Framework : rapidité, flexibilité, des composants
réutilisables, etc.
De bonnes idées ont fait leur petit bout de chemin, c'est par exemple le cas de l'injection de
dépendances. Un concept tout droit venu du monde du Java !
Une grande communauté derrière
Une communauté se trouve à coté de vous ! Des conversations par mail sont partagées, des channels
IRC existent pour que vous exposiez vos problèmes, de nombreux travaux sont publiés régulièrement
et bien évidement, le Site du Zéro est là pour vous accompagner ! Il n’existe quasiment pas de
problème n’ayant pas déjà eu une solution.
Le Framework de la société Adenis
Dans la société d’Adenis, les développeurs sont habitués à utiliser Symfony2 et possède ainsi de
bonnes connaissances sur le sujet. Les projets sont réalisés en interne avec ce Framework pour les
raisons exposés ci-dessus.
JHINGOOR Akram STAGE ADENIS 2016
32
VEILLE TECHNOLOGIQUE : SYMFONY
Symfony est un ensemble de composants PHP, un Framework pour application web, une philosophie,
ainsi qu'une communauté — le tout fonctionnant en harmonie.
Pourquoi Symfony comme thème de veille Symfony, un Framework qui m'a beaucoup servi durant mon stage et sur lequel j'ai pu m'appuyer
pour développer au sein de la société Adenis. Ce Framework était en quelque sorte une suite logique
dans l'apprentissage du PHP puisqu'il est recherché sur le marché du travail et que la communauté
Symfony est grande.
J'ai choisi ce thème pour ma veille technologique car dans un premier temps, je devais me former sur
cette technologie afin de pouvoir participer aux projets de la société et dans un second temps, j’ai
trouvé cette technologie intéressante puisque le PHP était le premier langage dans lequel j’ai codé.
Cette veille me permet de valider des compétences suivantes :
A5.2.2 Veille technologique
A5.2.3 Repérage des compléments de formation ou d’auto-formation utiles à l’acquisition de
nouvelles compétences
A5.2.4 Étude d‘une technologie, d’un composant, d’un outil ou d'une méthode.
Les origines de Symfony
Le site du Framework symfony a été lancé en octobre 2005. À l’origine du projet, on trouve une
agence web française, Sensio, qui a développé ce qui s’appelait à l’époque Sensio Framework pour
ses propres besoins et a ensuite souhaité en partager le code avec la communauté des développeurs
PHP. Le projet est alors devenu symfony (car le créateur voulait garder les initiales SF comme «
Sensio Framework »), puis Symfony à partir de la version 2
Pré requis matérielles et logicielles
Serveur Apache &PHP : WAMP/XAMP (Windows) ou LAMP (Linux)
Les fichiers sources de base à l’application (disponible sur le site officiel)
Un éditeur de texte (Sublime Text, NotePad++, Gedit…). Pour ma part, j’utilisais NetBeans car c’était
très adapté à Symfony notamment avec la console qui pouvait générer des entités objets.
JHINGOOR Akram STAGE ADENIS 2016
33
Symfony, les pour et les contres
Avantage :
- Open source: Symfony est distribué sous une licence Open Source, vous n’avez donc pas de
contraintes imposées et cela vous permet le développement de solutions propriétaires;
- Grande communauté d'utilisateurs : Avec une forte utilisation par les professionnels et une
grande communauté de développeurs ayant utilisé Symfony, Quelle que soit le problème, la
question ou le bug, vous trouverez toujours la réponse auprès du support de SensioLabs ou
auprès de la communauté.
- Gain de temps et qualité optimisée : Par l’utilisation de composants déjà existants, on
supprime les tâches à faible valeur ajoutée pour se concentrer exclusivement sur des aspects
plus complexes. Le temps gagné sur ces tâches peut être dédié à des composants plus
spécifiques ou à des tests en profondeur, vous garantissant ainsi un code solide, durable et
un projet de bonne qualité.
Inconvénients :
- L'apprentissage complexe et lourd : Apprendre un framework nécessite du temps et de la
patience mais Symfony demande un temps d'apprentissage important. Symfony est quand
même un ensemble de composants et qu'il faut pouvoir l’utiliser (moteur de templates,
Doctrine, etc...)
- Coder en Symfony, un autre langage : Il est vrai que Symfony2 est un framework PHP mais le
"PHP dur à la main" n'est pas possible puisqu'il faut utiliser d'autres langages pour
comprendre (Twig pour les vues, yml pour les config de Symfony...). Programmer en
Symfony2 signifie rester strictement sur l'architecture du MVC certes mais celui propre à
Symfony. Pour débogguer, on sait déjà que cela peut devenir difficile.
Débuter avec Symfony
Le découpage est effectué comme suit :
/app : on y trouve les fichiers de configurations, les paramètres et le cache
/src : c’est ici qu’est le code source (sous forme de bundles)
/web : contrôleur frontal « app.PHP » (équivalent de index.PHP) et les fichiers de css
/vendor : les composants : Doctrine, Twig, librairies externes …
En réalité, le dossier « /web » comporte deux contrôleurs frontaux, un pour l’environnement de
production destiné aux internautes « app.PHP » et un second destiné aux développeurs «
app_dev.PHP » qui est optimisé pour la résolution des problèmes et le débogage.
Comme expliqué précédemment, dans le dossier « /src » on trouve des bundles, ce sont simplement
des dossiers dans lesquels on y trouve des fonctions spécifiques pour telle ou telle tâches à effectuer
par l’application. Cela permet, une fois de plus, de découper son code et ainsi faciliter la lecture de
celui-ci.
JHINGOOR Akram STAGE ADENIS 2016
34
Le routing :
Une chose importante à savoir, Symfony fonctionne grâce à un système de « route ». C’est à dire que
chaque fonction créée à une route unique, ce qui permet d’exécuter la fonction correspondante à la
route passée dans l’url. Les routes sont définies dans le fichier « routing.yml » situé dans le dossier «
/app/config/ ».
Exemple de route dans le fichier « routing.yml » :
helloworld :
pattern: /hello-world
defaults: {
_controller: TestBundle:Test:hello
}
(Ici, l’url « www.monsite.com/hello-world » redirige vers la fonction « hello » du contrôleur «
TestController » du bundle « TestBundle »).
Les contrôleurs :
Comme dit précédemment, Symfony respecte le modèle MVC et le PHP objet, ainsi le contrôleur est
le « chef d’orchestre » de l’application. Chaque bundle a donc son propre contrôleur (cependant, il
n’est pas rare de trouver plusieurs contrôleurs pour un seul bundle).
Exemple du contrôleur « TestController » :
<?PHP
namespace Test\TestBundle\Controller;
useSymfony\Bundle\FrameworkBundle\Controller\Controller;
useSymfony\Component\HttpFoundation\Response;
classTestController extends Controller
{
public function helloAction()
{
$hello = « Hello world »;
return $this->render(‘MainBundle:hello:hello.html.twig’, array(‘hello’ => $hello));
}
}
(ici, la fonction helloAction() permet de générer la page « hello.html.twig » en lui passant la variable
« $hello » définie juste avant)
JHINGOOR Akram STAGE ADENIS 2016
35
Les templates :
Symfony2 inclut un moteur de templates, Twig, les vues sont donc générées grâce à ce moteur. Les
vues permettent au webdesigner d’avoir un code plus lisible et de sécuriser les variables
automatiquement.
Exemple de la vue « hello.html.twig » :
<!DOCTYPE html>
<html>
<head>
<title>Hello world</title>
</head>
<body>
<h1>{{ hello }}</h1> // Affichage du contenu de la variable $hello
</body>
</html>
Doctrine :
Doctrine est, contrairement à Composer, intégré par défaut dans Symfony. Doctrine est un ORM
(Object Relation Manager), son but est donc de permettre à l’utilisateur de communiquer avec une
base de données au travers d’objets (créés grâce au PHP) sans avoir besoin d’écrire les requêtes
(requêtes MySql, par exemple). Doctrine permet aussi la création d’entités. Elles pourront être
utilisées comme objet en PHP et Doctrine se sert de ces entités pour générer la base de donner
automatiquement (une entité = un table dans la base de données).
Sources http://symfony.com/fr/what-is-symfony
https://fr.wikipedia.org/wiki/Symfony
https://openclassrooms.com/courses/developpez-votre-site-web-avec-le-framework-
symfony2/symfony2-un-framework-php
JHINGOOR Akram STAGE ADENIS 2016
36
Conclusion
Durant mes débuts dans la société, je n’étais pasassez entreprenant et je travaillais de mon côté. Au
fur et à mesure des jours, toute l’équipe a su faciliter mon intégration. Cela m’a permis de collaborer
avec les autres. J’ai pris conscience que le travail d’équipe était essentiel pour un cadre propice au
travail. J’ai rencontré des personnes ayant un vécu professionnel et humain qui m’a donné une idée
du métier de développeur et de travailler dans une société.
Je suis satisfait de mon stage puisque j’ai pu apporter mes connaissances mais surtout apprendre
énormément sur les technologies utilisées en entreprise et sur le marché du travail.
J’ai franchi un cap dans mon projet professionnel et j’ai une meilleure perception de ce que je
voudrais faire plus tard.
J’espère pouvoir faire une formation en alternance avec une entreprise et pourquoi ne pas
renouveler l’aventure avec Adenis.