Académique Documents
Professionnel Documents
Culture Documents
MODALITÉ D’ACCÈS :
☒ Parcours de formation
☐ Validation des Acquis de l’Expérience (VAE)
2. du Dossier Professionnel (DP) dans lequel le candidat a consigné les preuves de sa pratique professionnelle.
3. des résultats des évaluations passées en cours de formation lorsque le candidat évalué est issu d’un
parcours de formation
[Arrêté du 22 décembre 2015, relatif aux conditions de délivrance des titres professionnels
du ministère chargé de l’Emploi]
Ce dossier comporte :
pour chaque activité-type du titre visé, un à trois exemples de pratique professionnelle ;
un tableau à renseigner si le candidat souhaite porter à la connaissance du jury la détention d’un titre, d’un
diplôme, d’un certificat de qualification professionnelle (CQP) ou des attestations de formation ;
une déclaration sur l’honneur à compléter et à signer ;
des documents illustrant la pratique professionnelle du candidat (facultatif)
des annexes, si nécessaire.
Pour compléter ce dossier, le candidat dispose d’un site web en accès libre sur le site.
http://travail-emploi.gouv.fr/titres-professionnels
Sommaire
Page 2 DOSSIER PROFESSIONNEL-Version du 11/09/2017
DOSSIER PROFESSIONNEL (DP)
1. Décrivez les tâches ou opérations que vous avez effectuées, et dans quelles conditions :
C’est dans le cadre de ma formation chez Simplon, j’ai dû concevoir une base de données qui
répondait à un cahier de charges pour un groupe d’agences immobilières. Pour ça j’ai utilisé la
méthodologie Merise. En étudiant le contexte du projet j’ai défini les besoins, qui m’ont permis
d’identifier les entités à créer. Ensuite j’ai commencé la modélisation conceptuelle des données (MCD)
en utilisant la représentation graphique de haut niveau, afin de mieux comprendre comment les
différents éléments sont liés entre eux, notamment les entités, les propriétés, les relations et les
cardinalités. (voir Annexes, Figure 1)
Une fois le « MCD » fait, j’ai procédé aux modifications pour passer du modèle conceptuel de
données vers le modèle physique de données (MPD) qui pourra être implanté dans un système de
gestion base de données relationnelle (SGBDR). (voir Annexes, Figure 2)
Les entités du « MCD » deviendront des tables dans le « SGBDR ». L’identifiant de l’entité
devient la clé primaire et les autres propriétés deviennent les attributs de la relation. Les associations
de type « 1:N » se traduisent par la création d’une clé étrangère dans la relation correspondante à
l’entité côté « 1 ». Les associations de type « N:N » se traduisent par la création d’une table dont la clé
primaire est composée des clés étrangères référençant les relations correspondant aux entités liées par
l’association.
Le modèle logique des données (MLD) est la représentation textuelle du MPD. J’ai présenté ainsi
les données issues de la modélisation Merise sous la forme suivante :
Chaque ligne représente une table ;
C’est toujours le nom de la table qui est écrit en premier ;
Les champs sont listés entre parenthèses et séparés par des virgules ;
Les clés primaires sont soulignées et placées au début de la liste des champs ;
Les clés étrangères sont préfixées par un dièse.
- Exemple de MLD : (voir Annexes, Figure 3)
o annonce_bien(idBien, description_bien, annee_construction, nb_etages, exposition, nb_piece, chambre,
superficie_bien, etat_bien, nb_lots_copropriete, charges_anuelles, prix_bien, norme_pmr,
salle_de_bain, toilette, ascenseur, chauffage, cuisine, interphone, digicode, consomation_energetique,
emissions_gaz, date_enregistrement, etage, quartier, #idUsers, #idTypeBien, #idVille)
idBien: clé primaire de la table annonce_bien
o photos_bien (idPhoto, photo_bien, #idBien)
idPhoto: clé primaire de la table photos_bien
o type_bien (idTypeBien, type_bien)
idTypeBien: clé primaire de la table type_bien
#idUsers: clé étrangère qui référence idUser de la table user
#idTypeBien: clé étrangère qui référence idTypeBien de la table type_bien
#idVille: clé étrangère qui référence idVille de la table ville
#idBien : clé étrangère qui référence idBien de la table bien
J’ai utilisé le logiciel « JMerise » pour la modélisation des données. Cet outil m’a permis, à partir
du « MCD », de fabriquer le « MPD » et les scripts « MySQL » pour créer des tables dans le « SGBDR ».
Pour ce faire, j’ai utilisé un serveur « MySQL », son système d’administration « phpMyAdmin » intégrés
à la plateforme de développement Windows/Apache/MySQL/PHP (WAMP) de ma machine, ainsi que le
navigateur web GoogleChrome.
J’ai travaillé seul pour effectuer cette tâche, et la schématisation de la base de données a été
validée par un de mes formateurs, Mr Philippe Giraud.
4. Contexte
1. Décrivez les tâches ou opérations que vous avez effectuées, et dans quelles conditions :
Afin de s'entrainer sur la syntaxe et la logique « PHP », ainsi que les requêtes « POST », j’ai été
chargé de réaliser un petit projet sur les formulaires et leur traitements. Le contexte représente la
consommation de ressources serveur, car le code source n’est pas bien organisé. (voir Annexes, Figure
4)
J’ai utilisé la méthode de rendu traditionnelle Server Side Rendering (SSR) qui consiste :
- Le client envoie une requête « HTTP » au serveur d’application « PHP »
- Le serveur va se charger de construire la vue, parce que « PHP » est capable de fabriquer du
« HTML »
- Le serveur va faire des appels à la base de données (si nécessaire), préparer et injecter les
données dans la vue
- Puis il va retourner un unique fichier « HTML » contenant déjà tout le contenu, ainsi que les
liens vers quelques ressources externes éventuelles
- Le navigateur va charger les éventuelles ressources (js, css, images, vidéos, etc)
- La page est entièrement disponible pour l'utilisateur
Mon but s’était d’écrire un code « clean » pour minimiser le nombre de requêtes. Pour ce faire,
j’ai défini l’architecture de l’application web.
La première requête : l’utilisateur demande et reçoit le formulaire de la page « index.php » de
l’application. Cette page est fabriquée à partir de 3 composants : (voir Annexes, Figure 5)
- Le « header » contient les en-têtes du fichier « HTML » et les balises ouvrantes « body » et
« html ». (voir Annexes, Figure 6)
- Le formulaire. (voir Annexes, Figure 7)
- Le « footer » contient de la logique du code et les balises fermantes respectivement.
Pour envoyer le formulaire j’ai privilégié la méthode « POST » afin de transmettre les données
de l’utilisateur au serveur.
La deuxième requête : une fois le formulaire complété, l’utilisateur clique sur le bouton
« Envoyer » et les informations saisies seront stockées dans la variable super-globale « $_POST » et
seront transmises au serveur, qui va retourner une réponse sous la forme d’une page « HTML ». (voir
Annexes, Figure 8)
La troisième requête : l’utilisateur clique sur le bouton « Retour » pour être dirigé vers une
autre page.
J’ai travaillé seul pour effectuer cette tâche, et les fonctionnalités du code ont été validée par un de
mes formateurs, Mr Camille Ghastine.
4. Contexte
1. Décrivez les tâches ou opérations que vous avez effectuées, et dans quelles conditions :
Dans l'objectif de réinvestir les compétences « PHP » acquises et utiliser les nouvelles
connaissances « SQL », j’ai développé une partie d’un site web. Il s’agit d’un chat qui offrira aux
utilisateurs un canal de communication supplémentaire. Le chef de projet à établie le cahier de charges
et il m’a confié de développer les fonctionnalités suivantes, en respectant la maquette exigée par le
client :
- La création de la base de données MySQL. (voir Annexes, Figure 9) J’ai nommé la base
« bd_chat_simplon ». Ensuite, j’ai écrit le script SQL dans la console de requêtes du
phpMyAdmin. Après l’exécution du code la table « messages » a été créée ainsi que ses
attributs. (voir Annexes, Figure 10)
- L'affichage du fil de discussion dans un tableau de données. (voir Annexes, Figure 11) Vu que
« SQL » ne comprend pas « HTML », « CSS », « JavaScript », je stocke le contenu des messages
sans les traiter auparavant ou les détériorer. Tandis que pour afficher les données dans le
navigateur il est impératif d’utiliser au moins la méthode « htmlspecialchars() » afin de convertir
les caractères spéciaux en entités HTML, et par conséquence empêcher l’exécution de tout code
« JavaScript ». On appelle ça une « faille XSS ».
L’ordre d’affichage des messages est descendent.
J’ai créé quatre colonnes dans lesquelles on trouve la date, l’auteur, le message et les boutons
pour manipuler ces messages.
- L'ajout de nouveau message avec un formulaire. (voir Annexes, Figure 12) L’utilisateur saisie
son pseudo et le message. (voir Annexes, Figure 13) Une fois envoyé, le pseudo est enregistré
dans le champ de saisie. J’ai créé la fonction « isValidForm() » qui vérifie si tous les champs sont
remplie et que la contrainte de la longueur minimum de la chaine de caractère est satisfaite. En
cas d’erreur on affiche le formulaire en indiquant le message d’erreur, si non, on se connecte au
serveur pour insérer dans la base de données les informations traitées. Lorsqu’il s’agissait des
données utilisateur à insérer dans le « SGBDR », j’ai utilisé les requêtes préparées qui
permettent de se protéger des « injections SQL ». (voir Annexes, Figure 14)
Pour rendre le chat plus dynamique j’ai rajouté quelques fonctionnalités supplémentaires :
- Modification et suppression de messages. Pour ce faire, j’ai créé les fonctions
« updateMessage() » et « deleteMessage() ». La méthode « bindValue() » de l’objet
PDOStatement est utilisée avec les requêtes préparée et permet d'associer un nom (utilisé dans
la requête) à une variable. (voir Annexes, Figure 15)
- Pagination. Je calculais la totalité de messages en base de données, le nombre de messages par
page, le nombre de pages nécessaires pour afficher tous les messages et le 1er message de la
page en cours.
- Date Formatée. J’ai utilisé la fonction SQL « DATE_FORMAT() ».
J’ai travaillé seul pour effectuer cette tâche, et les fonctionnalités du code ont été validée par un de
mes formateurs, Mr Camille Ghastine.
4. Contexte
1. Décrivez les tâches ou opérations que vous avez effectuées, et dans quelles conditions :
Dans le but de mieux maitriser le PHP et le framework Symfony j’ai dû réaliser un projet d’une
application web Symfony. Notre formateur, en tant que chef de projet, nous a fourni :
- Le cahier de charges. L’application web devra être conforme à la demande client tant sur le plan
graphique que sur le plan fonctionnel.
- Les maquettes. (voir Annexes, Figure 16) La charte graphique reprendra le thème Vapor du site
bootswatch : https://bootswatch.com/vapor/
- Les spécifications techniques et fonctionnelles. (voir Annexes, Figure 17, Figure 18) Le projet a
été développé avec le Framework Symfony version 5.2.
Après avoir compris la conception du projet, les besoins, les entités et les autres contraintes j’ai
démarré le développement. Symfony permet de créer des applications web souples, adaptées et
évolutives grâce au model d’architecture logicielle Model-Vue-Controller (MVC). Ainsi, lorsqu’un
utilisateur demande une page, le routeur de Symfony va chercher le contrôleur correspondant à la
requête et sa méthode. Ensuite le contrôleur contacte le model et la vue pour échanger des
données avec eux. Une fois les données récupérées du model, le contrôleur les transmet à la vue
qui se chargera d'afficher la page.
J’ai ouvert le terminal dans un répertoire de mes projets et j’ai écrit « symfony new
festival_technonite –full ». Le projet basique a été créé avec la structure des dossiers prévu par
Symfony. Je me place à l’intérieur du répertoire « festival_technonite » et désormais je peux faire
un commit et le déployer sur GitHub. Ensuite j’ai mis à jour les variables d’environnements
« MAILER_DSN » et « DATABASE_URL » du fichier « .env » pour pouvoir se connecter à la base de
données et pour envoyer des emails. J’ai démarré le serveur du SGBDR MySQL et j’ai écrit dans
l’invité de commande « symfony serve ». Symfony a lancé son propre serveur de développement
PHP qui est disponible en local sur « https://localhost:8000 ».
En quelques lignes écrites dans le terminal et au moyen des bundles, j’ai réussi à créer les entités
User, Artist, Category avec les getters, les setters, les propriétés et les méthodes nécessaires.
J’ai utilisé les migrations, car « Doctrine ORM » est capable de créer et mettre à jour la base de
données à partir des informations tirées du mapping des entités. Doctrine supporte différents types
d'associations (One-To-One, Many-To-One, One-To-Many, Many-To-Many). Dans mon projet j’ai eu
une association « One-To-Many » entre les entités Category et Artist, c’est-à-dire qu’un artiste fait
partie d’une seule catégorie, tandis qu’une catégorie peut avoir plusieurs artistes. Donc, la table
artist aura une clé étrangère #category_id qui référence la clé primaire id de la table category.
(voir Annexes, Figure 19)
Par exemple, Symfony gère l’inscription d’utilisateur et permet de sécuriser les données,
notamment par le hachage du mot de passe, la tokenisation d’un formulaire contre la faille CSRF,
les requêtes préparées contre la faille d’injection SQL. Aussi, Twig est le moteur de template par
J’ai travaillé avec mes collègues de la promotion, Prasanth PUSHPARASAH et Ludovic Erin, pour
effectuer cette tâche, et les fonctionnalités du code ont été validées par les formateurs, Mr Camille
Ghastine et Mr Philippe Giraud. On devrait suivre la méthodologie de travail ci-dessous :
- 1) On lui proposait une tâche à effectuer.
- 2) S'il la valide, nous créions une nouvelle branche sur Git et effectuions cette tâche. Sinon, il
nous l'imposait.
- 3) Une fois la tâche achevée, nous lui présentions notre travail qu'il aurait critiqué.
- 4) Nous intégrions les critiques formulées.
- 5) Une fois la tâche validée, nous fusionnions la branche et reprenions le cycle au 1) en
proposant une nouvelle tâche.
4. Contexte
A partir de mois d’août 2021, la version 5.2 de Symfony n'est plus maintenue et j’ai passé à Symfony
5.3. Dans ce contexte j’ai remplacé dans le fichier « RegistrationController.php » la classe
« UserPasswordEncoderInterface » par « UserPasswordHasherInterface » et respectivement la
méthode « encodePassword() » par « hashPassword() », parce qu’elles ont été dépréciées.
1. Décrivez les tâches ou opérations que vous avez effectuées, et dans quelles conditions :
Dans l'intention de se familiariser avec le CMS Wordpress, j’ai développé un site web qui était la
reproduction du site « https://www.ruedesvignerons.com ». J’ai téléchargé la dernière version de
Wordpress et je l’ai installé sur ma machine. J’ai utilisé le thème « Travel Agency ». Ensuite j’ai créé le
thème enfant pour faire des mises à jour du site web en toute sécurité. J’ai ajouté des extensions (Yoast
SEO, Akismet, Redirection, etc.) et des widgets (Météo).
J’ai hébergé gratuitement le site sur « https://infinityfree.net » et à l’aide du client FTP FileZilla
j’ai uploadé les fichiers de mon application web. J’ai modifié le fichier « .htaccess » pour forcer tout le
trafic du site vers le HTTPS.
J’ai travaillé seul pour effectuer cette tâche, et le site vitrine a été validée par un de mes formateurs, Mr
Philippe Giraud.
4. Contexte
Intitulé Autorité ou
Date
organisme
Titre professionnel « Développeur web et web
Ministère du Travail
mobile »
Vladislav CIOBANU
Je soussigné(e)...........................................................................................................................,
déclare sur l’honneur que les renseignements fournis dans ce dossier sont exacts et que je suis
Signature :