26.06.2021 Views

Compte rendu_BOUGUEN

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Compte rendu de stage

Entreprise : DIATEAM - 31 Rue Yves Collet, 29200 Brest (distanciel)

Tuteur : Phillipe BRUNOT

Téléphone : 02 98 050 050

Mail : philippe.brunot@diateam.net

Sommaire

Sommaire .................................................................................................... 1

1/Contexte :................................................................................................... 2

2/Mission confiée :......................................................................................... 2

3/Tâches effectuées ....................................................................................... 3

1-Introduction : ........................................................................................... 3

2-La liste :.................................................................................................... 4

3-La Carte :.................................................................................................. 5

4-La Fiche : .................................................................................................. 6

5-Les détails : .............................................................................................. 7

I/Splashscreen .................................................................................................... 7

II/Barre de navigation : ...................................................................................... 7

4/Outils utilisés .............................................................................................. 8

6-Bilan global ................................................................................................. 9

Josselin BOUGUEN,

Stagiaire chez DIATEAM

Page 1 sur 9


1/Contexte :

DIATEAM, est une société d’ingénierie Brestoise en cybersécurité composée de 27

employés. Depuis 2002, DIATEAM conçoit et développe des solutions innovantes en cyber

sécurité, en particulier sa solution « phare » de cyber range dédié à l’entraînement

opérationnel. L’innovation de DIATEAM dans le domaine du Cyber Range en fait un

partenaire de choix pour les grandes entreprises, les entités gouvernementales de défense,

les universités et l’industrie, en particulier pour les Opérateurs d’Importance Vitale, aussi

bien en France qu’à l’étranger. Cette entreprise met donc en place quatre services :

-RÉPONSE À INCIDENT :

A l’occasion d’un incident déclaré (rançongiciel, fuite de données, …) ou d’une nécessaire

levée de doute, une équipe d’experts intervient dans l’urgence pour accompagner la gestion

et la coordination de votre situation de crise (technique, organisationnel, humain).

-AUDIT TECHNIQUE :

Qu’il s’agisse de briques logicielles, de composants matériels, d’architectures, DIATEAM

accompagne dans l’évaluation de la sécurité de vos actifs. Les capacités d’audit aident à

identifier les points d’amélioration nécessaires à la transformation numérique et par

conséquent à la croissance d’une organisation.

-RECHERCHE & DÉVELOPPEMENT (le service de mon stage):

Chez DIATEAM la curiosité et la passion sont dans l’ADN, depuis toujours, notamment

quand il s’agit d’innover. Ils consacrent 50% de leur activité en R&D, en mode projet ou en

conseil technologique.

-CAPTURE THE FLAG :

Des concours/jeu de capture de drapeaux sont mis en place. Le but étant d’infiltrer un

réseau ou un site afin de s’entrainer et s’améliorer en cybersécurité.

2/Mission confiée :

Ma mission durant ces six semaines de stages sera de créer une application mobile Android

et IOS basée sur Flutter, c’est un kit de développement de logiciel d'interface utilisateur

open-source créé par Google. Cette application reprendra les données affichées dans le site

web nommé « Diabox », qui affiche en temps réel des données météos grâce à des jauges

et des graphiques (vent, température, pression …) ainsi que des webcams si il y en a. Les

données sont accessibles après avoir cliqué sur le nom d'une localisation dans une liste ou

sur une carte (souvent des plages). Le but est de faire une application mobile reprenant les

données affichées dans le site web, grâce à Flutter (une ancienne application était aussi

disponible mais elle n’est plus accessible). Je devrai donc vérifier si Flutter peut convenir aux

besoins de l’application, puis la réaliser. L’application serait destiné au grand public comme à

des Institution comme L’IFREMER qui utilise parfois le site web. Je pourrai aussi avoir à

réaliser des documentations techniques pour l’entreprise, comme par exemple un tutoriel

l’installation de Flutter. La difficulté dans ce projet est que le langage utilisé est nouveau , et

donc qu’il ne comporte pas beaucoup de solutions en ligne, et des documentations

uniquement en Anglais.

Page 2 sur 9


3/Tâches effectuées

1-Introduction :

Tout d’abord je devais en connaître plus sur Flutter et son fonctionnement avant de pouvoir

réaliser n’importe quel programme, pour cela j’utilisais la plupart du temps la documentation

du site web de flutter et ses exemples de codes pour chaque librairie :

https://flutter.dev/docs/

Les forums comme https://stackoverflow.com/ ou https://github.com/ peuvent aussi aider à

comprendre comment ce langage de programmation fonctionne.

Pour utiliser flutter j’ai dû premièrement installer git et flutter sur ma machine ,puis faire une

documentation d’installation pour l’entreprise. Afin de pouvoir tester mes codes j’ai dû

installer Android Studio ,c’est un environnement de développement incluant le SDK Android

et qui permet d’émuler des smartphones pour pouvoir directement visualiser tester des

applications dans un environnement presque réel. J’ai personnellement utilisé le logiciel

Visual Studio Code pour réaliser mes codes :

Page 3 sur 9


2-La liste :

L’application se compose de plusieurs pages ,la première est la liste des Diabox ,se sont les

points qui comportent des données météo à afficher (la plupart du temps des plages, des

camping, etc...).

Premièrement j’ai cherché comment réaliser une liste avec un simple tableau test et qui

puisse être cliquable ,car cette liste devait pouvoir renvoyer vers la fiche de cette Diabox ,qui

est la partie qui comporte les widgets météo et toutes les informations. Une fois compris

comment faire, je devais maintenant récupérer la vraie liste des Diabox.

Pour cela je devais réaliser une API (Application Programming Interface) en code en PHP

qui était hébergé sur un serveur de l’entreprise et dont j’accéderais grâce une connexion

Secure File Transfer Protocol (SFTP) et à ma clé SSH ,que j’utilisais personnellement avec

le logiciel Filezilla.

Le choix de Slim Framework a été fait afin de pouvoir créer des routes spécifiques pour le

serveur PHP (création d’url’), et du fait de sa légèreté :https://www.slimframework.com/. Ce

Framework facilitera une partie du travail car nous aurons besoins de plusieurs routes sur ce

serveur.

Pour récupérer les données ,mon code PHP devait interroger un serveur qui contient toutes

les données sur les Diabox, qui lui est codé en C++. Il est accessible via une URL et renvoi

toutes les données au format JSON. Sur le serveur PHP j’ai dû récupérer et filtrer les

données pour ne garder que celles qui nous intéressent. Une fois ce filtre fait il fallait

maintenant que l’application les récupères.

Sur l’application j’ai donc dû faire un appel HTTP sur le serveur PHP pour récupérer toutes

les informations de chaque Diabox. J’ai dû créer une classe d’objets pour pouvoir uniformiser

et stocker toutes les données.

J’ai ensuite dû adapter le système de liste aux vraies données. Cela à été assez compliqué

car les données qui sont reçues sont des données de type « Future » (asynchrones) ,donc

on ne peut pas forcément les utiliser directement dans le code. J’ai finalement trouvé des

solutions grâce aux forums et à mon maître de stage M. Philippe BRUNOT que je pouvais

contacter par messagerie direct ou par appel.

Il fallait finalement renvoyer les informations nécessaires vers chaque fiche pour pouvoir les

utiliser ensuite.

Page 4 sur 9


3-La Carte :

La deuxième page principale est la carte, elle représente tous les points GPS qui

contiennent des informations. Elle peut donc être plus pratique et plus compréhensible que

une liste.

Plusieurs librairies permettent d’afficher une carte sur Flutter ,comme le classique Google

Maps, qui est en plus lui aussi développé par Google. Mais la librairie de Google Maps

nécessite une clé d’API ,qui au bout d’un certain nombre de connexions ou de requêtes

devient payant. Et comme l’application devait être gratuit, il fallait une librairie gratuite. Après

plusieurs test c’est la librairie Flutter_map qui sera utilisé, et qui utilise OpenStreetMap.

Une fois la libraire choisie ,j’ai dû aller récupérer les données grâce à la première route créée

en PHP (toutes les Diabox et leurs informations). Pour cette fois ci utiliser chaque longitude

et latitude pour afficher chaque point sur la carte.

Pour cette partie j’ai eu encore des problèmes avec les données « Future » qui ne

s’affichaient pas directement ,je n’arrivais à ne les afficher que seulement grâce à un bouton.

M. Philippe BRUNOT m’a finalement apporté la solution que je ne trouvais pas.

J’ai ensuite dû définir les fenêtres de popup qui renvoient

vers chaque élément (chaque fiche). Pour cela j’ai utilisé

une fonction intégré dans Flutter_map qui gère les popup et

aussi le clustering (regrouper les points quand ils sont

proches). J’ai mis pas mal de temps sur cette partie, mais

elle m’a permis de mieux comprendre la structure et

l’organisation du code Flutter ainsi que sur la POO car j’ai du

créer des classes pour les markers et les diaboxs. Cette

fonction permet aussi de regrouper les points quand ils sont

proches. Et grâce à mon maître de stage j’ai pu réussir à

renvoyer vers chaque fiche :

Page 5 sur 9


4-La Fiche :

La fiche représente donc la page de l’application qui contient toutes les informations et

données de chaque Diabox grâce à des jauges ou des widgets.

Premièrement j’ai dû créer une nouvelle route sur le serveur PHP afin de créer une page qui

récupère toutes les données grâce à l’ID de la Diabox qui sera inséré dans l’URL (Ex :

…diabox/11/lastData) pour la Diabox avec l’ID=11. Coté appli, cela va servir dans un premier

temps à afficher sur la fiche les valeurs en texte ,ensuite il faudra afficher des gauges.

Cette fois ci la tâche est plus compliqué car il faut d’abord déterminer l’ID de la métadonnée

qui nous intéresse en fonction de son type (température, vent, etc.), puis grâce à cet ID le

nom du « produit » pour la Diabox concernée dans la liste Ces données sont encore une fois

accessible via une des URL qui renvoient un JSON qu’il faut parcourir en PHP. Puis une fois

cet ID trouvé il faut le comparer à chaque ID de tous les produits de la toute première

requête (toutes les Diabox et leurs informations).

Une fois tous les produits bien comparés et définis, leurs nom et leur ID devait être

urlencodé pour l’appel au serveur diabox afin de récupérer les données temps réel. Sur cette

route je devais uniformiser les données pour pouvoir les utiliser sans problèmes dans

l’application en Flutter (ex : ‘temp’ => ‘temperature’). Car tous les produits n’ont pas le même

nom dans le serveur parce que la base de données est complexe.

Cette partie était assez complexe ,mais M. Philippe BRUNOT m’a envoyé plusieurs mail

pour m’indiquer les différentes étapes à réaliser.

Ensuite j’ai du réaliser les widgets météos, pour cela j’ai utliser un framework Javascript

appelé Echarts qui gère plein d’affichages de widgets ,diagrames, shéma 3D...Nous avons

utilisé ce framework car c’était celui utilisé sur la première version de l’application (qui n’est

plus disponible aujourd’hui. Il est compatible avec flutter avec une simple librarie. Cela

permet de gagner du temps car des templates de widgets sont déjà créés sur leur

documentation. On peut voir ci-dessous différents widgets qui affichent les données en

temps réel pour le Phare du Minou :

Page 6 sur 9


5-Les détails :

I/Splashscreen

Lors de l’arrivée sur l’application ,une image doit être affichée le temps que les données soient

récupérés, et donc éviter un écran blanc. Pour cela je pouvais utiliser une librairie mais j’ai découvert

qu’en changeant les paramètres XML du fichier flutter on pouvait redéfinir cet écran appelé

splashscreen. Ce qui prend moins de place dans le code, et donc économise quelques performances.

J’ai également changé le logo de l’application de la même manière.

(Splashscreen à afficher)

II/Barre de navigation :

Pour passer d’une fenêtre à une autre (ex : de la liste à la carte) l’application nécessite d’avoir une

barre de navigation qui sera placée en bas de l’écran. Au départ je pensais que je devrais coder la

barre pour chaque page, mais finalement en l’insérant dans le fichier ‘main’ du projet et en appelant

les pages par-dessus, il est possible de laisser cette barre pour toutes les pages.

Page 7 sur 9


4/Outils utilisés

Flutter ,le kit de développement de logiciel d'interface

utilisateur open-source créé par Google permettant de créer

des applications mobiles.

Git est un outil qui permet de gérer différents projets en les

envoyant sur un serveur. Ce dernier est connecté à d'autres

développeurs qui envoient leur code et récupèrent le vôtre.

Cela permet de sauvegarder et partager le code.

Android Studio est un environnement de développement pour

développer des applications mobiles Android en permettant

d’émuler des smartphones pour tester ses codes.

WampServer la plateforme de développement Web, que j’utilise pour

son interpréteur de script, et donc pour tester en local mes codes PHP

avant de les envoyer sur le serveur de production.

Visual Studio Code est un éditeur de code extensible développé par

Microsoft pour Windows, Linux et MacOs. C’est un choix personnel

,mais j’aime travailler sur ce logiciel. Je peux tout aussi bien l’utiliser

pour coder du Flutter comme du PHP.

Gajim est un logiciel libre client de messagerie instantanée pour le

réseau standard ouvert Jabber. Il permet de communiquer via un tchat

à mon maître de stage.

Le logiciel Filezilla est un client FTP, FTPS et SFTP. Il me permet

d’envoyer les codes en PHP sur le serveur via une connexion SFTP.

Grâce à son gestionnaire de site on peut sauvegarder le serveur et s’y

connecter en deux clics

Google Chrome, un des navigateur le plus populaire, basique mais il

me permet de faire mes test en PHP, mais aussi de faire toutes les

recherches dont j’ai besoin pour me permettre de réaliser des bons

programmes.

Page 8 sur 9


6-Bilan global

Pour moi ce stage a été très enrichissant, il ma permit de comprendre comment réaliser une

application ainsi qu’une API pour lui fournir des données. L’API étant codé en PHP cela m’a

montré une nouvelle utilisation de ce langage. Ainsi que la découverte d’un nouveau langage

et frameworks (Flutter,Echarts,Slim) donc j’ai aussi progresser en anglais technique car la

majorité des forums qui en parlent sont presque exclusivement en anglais, de même pour la

documentation elle-même de flutter. Ce langage peut être aussi une compétence

intéressante car si il est recherché par les entreprises plus tard cela peut être un point en

plus sur le CV. J’ai aussi pu comprendre comment pouvait se dérouler un projet en

entreprise et de ne pas hésiter à aller poser des questions à des personnes de l’entreprise.

Cela m’a aussi apporter beaucoup d’autonomie du fait que je sois exclusivement en

télétravail dû au conditions actuelles. M’intéressant aussi sur le travail freelance

(autoentrepreneur) ça m’a aussi parfois montrer ce que pouvait-être ce mode de travail

malgré que je ne sois quand même en contact de temps en temps avec mon maître de stage

ce qui est un grand avantage.

Ce que j’aurais aimé faire différemment ce serait peut-être d’apprendre à mieux planifier ce

que je dois faire, car sur certaines parties cela m’a pris plus de temps que ce dont j’aurais

pensé et à cause de ça je n’ai pas forcément eu le temps de tout finir. Comme par exemple

tous les détails des widgets (marge trop grande...) ou encore la partie webcam de chaque

fiche.

L’application n’est malheureusement pas encore finie, mais les aspects principaux de cellesci

ont été quand même abordé. Je n’ai non plus pas forcément eux le temps de faire la partie

IOS ,préférant me concentrer d’abord sur la partie Android.

Page 9 sur 9

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!