• Aucun résultat trouvé

RAPPORT DE STAGE. Titouan Proux. 27 Mai 2019 / 27 Juin Etablissement d Accueil : QuanticSoft. Maître de stage : Monsieur de Saint Jorre

N/A
N/A
Protected

Academic year: 2022

Partager "RAPPORT DE STAGE. Titouan Proux. 27 Mai 2019 / 27 Juin Etablissement d Accueil : QuanticSoft. Maître de stage : Monsieur de Saint Jorre"

Copied!
10
0
0

Texte intégral

(1)

RAPPORT DE STAGE

________________________________________

Titouan Proux

27 Mai 2019 / 27 Juin 2019

Etablissement d’Accueil : QuanticSoft

Maître de stage : Monsieur de Saint Jorre Professeur référent : Madame Ledreux

Établissement de formation : Lycée St Pierre - La Joliverie

(2)

Sommaire

Remerciements ……….……….……….1

Introduction ……….……….1

Présentation de l’Entreprise ………..……….1

Taches et Apport du Stage ……….…….……….2

1. Travail effectué ……….……….………….……….…….……….2

2. Compétences acquises ………….………….………..….……….……….6

3. Bilan technique ……….………….……….….……….…….6

Veille technologique ………..……….……….6

Conclusion ……….….………...….……….……….8

Synthèse en anglais ……….….….………...….……….……….8

(3)

Remerciements :

Avant tout développement sur cette expérience professionnelle, il apparaît opportun de commencer ce rapport de stage par des remerciements, à M. Nicolas De Saint Jorre, qui m’a beaucoup appris au cours de ce stage, et à Mme Coralie Errera, Mme Adeline Paty, Mme Mélissa Letissier, Mme Carol Charlot et M. Benoît Delhaye qui ont eu la gentillesse de faire de ce stage un moment très profitable.

Introduction :

Selon l’AFCROs, plus de 6000 études cliniques ont été initiés en France entre 2014 et 2016.

Dans le cadre de ma première année de BTS SIO option SLAM, j’ai donc effectué mon stage chez Quanticsoft, petite entreprise spécialisée dans le domaine de l’Informatique et de la Recherche Biomédicale, basée à St Félix.

Ma mission était donc de prendre part à la transformation de leur logiciel de capture de données cliniques Webtrial en utilisant Python via le Framework Django à la place de PHP.

Dans un premier temps, nous parlerons de Quanticsoft, puis de mon stage et enfin de la veille technologique effectuée pendant ce stage de 5 semaines.

Présentation de l’entreprise :

Fort de son expérience en tant que responsable des essais cliniques chez Medcost (socuété créatrice du site Doctissimo.fr), Nicolas De Saint Jorre fonde Quanticsoft en 2005, afin de créer des logiciels pour la recherche biomédicale. Ils accompagnent des projets de recherche pour combattre de nombreuses maladies, notamment dans le domaine du cancer et plus spécifiquement en hématologie. Ils disposent actuellement du logiciel Webtrial, en PHP. Depuis 2005, Quanticsoft est partenaire de la société Xclinical (société allemande, basée à Munich avec une cinquantaine de personnes) pour distribuer le logiciel MARVIN. Il est lui en Java, et permet à leurs clients de mettre au point des questionnaires médicaux, pour ensuite les stocker dans une base de données centrale afin de pouvoir faire des analyses statistiques en vue d’une obtention d’une autorisation de mise sur le marché (AMM). Webtrial est un logiciel destiné à des études cliniques moins complexes que celles confiées à MARVIN qui prend notamment en compte les standards CDISC dont je vous parlerai un peu plus loin.

1/8

(4)

Taches et Apport du Stage : Travail effectué :

Pendant ce stage, j’ai eu l’opportunité d’apprendre à utiliser le framework Django. J’ai conçu un site sous la forme d’un forum.

(5)

Il est équipé d’un système d’authentification complet (création de comptes, réinitialisation de mot de passe, connexion et déconnexion), d’une interface d’administration elle aussi complète et directement fournie par Django. On peut bien sur y écrire des commentaires, les éditer, lire des sujets ou bien les créer.

Ce site est également équipé d’une base de données assez simple, mais permettant, non seulement les utilisateurs (ainsi que leurs mots de passes) mais aussi le contenu de toutes les pages du site.

Ce projet correspond aux prémices de la conversion de Webtrial depuis PHP vers Python Django.

Nous avons suivi le tutoriel www.simpleisbetterthancomplex.com/series/beginners-guide/1.11/ de Vitor Freitas que j’ai moi-même utilisé pendant ce stage.

Dans le cadre de mon stage, j’ai aussi pu utiliser un environnement virtuel virtualenv. C’est un outil pour créer des environnements python isolés les uns des autres. Cela permet d’utiliser des projets Python dans différentes versions sans pour autant casser l’une ou l’autre.

3/8 Première page du site sous Django

Base de données du site du tutoriel

(6)

J’ai également pu avoir un aperçu du potentiel de Neo4j, qui est un système de gestion de base de données basé sur les graphes. Il représente les données en tant que nœuds reliés par un ensemble de relations. L’absence de modélisation rigide rend Neo4j parfaitement adapté à la gestion de données changeantes et de schémas évoluant fréquemment. Il offre une façon originale de présenter des données, mais aussi de les stocker. De plus, cette base de donnnées est interfaçable avec la prochaine version de Webtrial. La société Quanticsoft envisage éventuellement d’utiliser cette base conjointement avec l’actuelle base de données PostgreSQL.

Cela devrait permettre à Webtrial de gérer toutes méta données issues de modèles internationaux avec les données cliniques déjà disponibles.

J’ai utilisé Git, qui est un logiciel de gestion de versions très pratique dans le monde du travail, puisqu’il offre la possibilité de revenir en arrière à tout moment sur un projet, en versionnant chaque mise à jour, mais aussi d’accéder à d’autres branches de développement, pour ne pas casser le programme principal, ce qui est représenté par le « Workflow » ci-contre.

Git permet également de travailler à plusieurs sur un code source unique, sans conflit.

L’un des nombreux Workflow de Git

Base de données graphique de Neo4j

(7)

Nous sommes également allés dans le Data Center Etix, Nantes, où j’ai assisté à une réunion entre un représentant d’Etix Nantes et mon maître de stage, M. De Saint Jorre ainsi que sa collègue, Mme Errera. Ensuite, nous sommes allés visiter le data center de Etix Everywhere.

Bien que j’ai déjà eu l’occasion de visiter un Data Center à Fribourg, en Suisse, je suis toujours impressionné par la complexité et les technologies employés par ces centres de données informatiques.

Puisqu’il y est stocké des données sensibles, comme les données cliniques de Quanticsoft, ou tout autre donnée d’une autre entreprise, relevant du secret professionnel, les portes d’entrée sont protégées par un lecteur d’empreintes digitales et les « cold corridors » sont accessibles via des badges nominatifs.

Ce datacenter est équipé d’un système de gestion des incendies, qui propage du gaz inerte dans la salle des serveurs afin de remplacer le dioxygène et ainsi éteindre tout départ de feu.

Ressources et Outils mis en œuvre :

Tout au long de mon stage, j’ai travaillé sur un nano-ordinateur monocarte à processeur ARM, appelé Raspbery Pi. J’ai utilisé le système d’exploitation Raspbian, basé sur Debian et optimisé pour fonctionner sur un Rasberry Pi.

Raspberry est conçu pour encourager l’apprentissage de la programmation informatique. Pour cette raison, Raspbian est fourni avec de nombreux logiciels de programmation simples et légers.

J’ai donc travaillé avec deux d’entre eux : Geany pour gérer des fichiers html et Thonny Python IDE pour travailler sur les fichiers Python.

5/8 Système biométrique de

Etix Nantes

« Cold Corridor » du Datacenter Etix Nantes

(8)

Compétences Acquises :

Pendant ce stage, j’ai pu apprendre les bonnes pratiques pour l’utilisation de Python, comme l’intérêt d’un fichier __init__.py et l’utilisation d’un fichier de tests, permettant de grandement faciliter la détection d’erreurs dans le code ainsi que la non-régression au fur et à mesure du développement. J’ai également appris à créer des sites web d’une nouvelle et meilleure façon que PHP, grâce à Django. De plus, j’ai aussi pu me rendre compte de l’intérêt de Git et de GitHub, pour du développement dans un cadre professionnel.

Bilan Technique :

Dans la mesure où la beta 0.1 de Webtrial V4 est, si tout va bien, prévue pour être terminée en septembre, le projet Webtrial est toujours en développement. Ce tutoriel a cependant permis à Monsieur De Saint Jorre de créer des tickets dans github pour ensuite les assigner à Monsieur Delhaye. Ce dernier traite les tickets au fil de l’eau, le logiciel évoluant ainsi assez rapidement.

Monsieur De Saint Jorre reprend ensuite la main sur tickets pour les valider et ainsi créer des

« releases ».

Veille technologique :

Django est un framework de développement web open-source utilisant le langage Python. La force de Django est sa facilité de mise en place, puisque toute la base d’un site est déjà fourni. Il contient des outils pour sécuriser votre application, gérer la structure des modèles, etc … Cela vous laisse tout le temps de vous consacrer à l’essence même de votre projet. De plus, Django s’inspire du modèle MVC (Modèle-Vue-Contrôleur), c’est-à-dire que sa structure sépare les modèles des vues et des contrôleurs (ou templates, dans le cas de Django). Cela permet de toujours maintenir un code propre. Il rend le travail collaboratif plus simple.

Un autre atout de Django est la disponibilité d’un espace admin déjà prêt dans l’import contrib, qui donne accès directement à une interface CRUD (Create-Read-Update-Delete). Cet espace admin est en plus entièrement personnalisable. La documentation de Django est très complète avec un sytème de gestion des versions du code. On peut même trouver des applications, outils ou sites directement utilisables sur le site djangopackages.org.

Voilà, par exemple, comment installer Django dans un environnement virtuel et y créer un projet, une application et une base de données.

Installation de Django dans un environnement virtuel Virtualenv, grâce à pip:

Cela permet d'isoler toutes les manipulations réalisées, et qu'elles n'affectent pas le reste du système, en plus d'éviter les conflits au niveau de python avec les conditions d'autres projets.

→ sudo apt-get update, pour obtenir la liste des mises à jours nécessaires

→ sudo apt-get upgrade, pour installer ces mises à jours

→ sudo apt-get install python3-pip

pip = logiciel pour gerer les dépendances entre les paquets python

(9)

→ source venv/bin/activate

on va activer cet environnement isolé en y installant les packages necessaires.

L'invite a maintenant changé pour refleter ce qu'il y a dans l'environnement virtuel.

Elle ressemble à ca: (venv) pi@rasberrypi: ~/ProjetQS $

On va maintenant installer Django dans cet environnement (à noter qu'il n'est pas nécessaire d'utiliser la commande sudo puisqu'on installe Django en local.

→ pip install django (or pip install django-bootstrap4) On installe donc Django 2.2.1

On peut ensuite vérifier l'installation en tapant: django-admin version 2.0. Il devrait nous renvoyer la version exacte de Django

→ Pour quitter l'environnement virtuel, on utilise la commande deactivate

→ Pour réactiver cette environnement, on se place dans le projet et on utilise la commande source env/bin/activate

Pour créer un nouveau projet :

→ On va utiliser la commande: django-admin startproject ProjectName

→ On peut maintenant lancer le serveur local avec la commande python manage.py runserver.

Les erreurs de migrations sont normales pour le moment.

→ Maintenant, on peut ouvrir l’URL http://127.0.0.1:8000 et une page standard Django devrait s’afficher.

Création d’une application Django :

→ Pour créer une application: django-admin startapp boards

→ Pour configurer le projet, pour qu'il puisse utiliser l'app:

→ Dans settings.py, ajouter à la variable INSTALLED_APPS l'app boards

→ Pour commencer à créer une view, il faut aller dans views.py et créer une fonction (qu'on appellera, ici, home), qui prendra en paramètre la variable request et qui retournera la classe HttpResponse avec, en paramètre, le string « Hello World », par exemple. Il faut, en plus, bien importer cette classe : from django.http import HttpResponse

→ Pour permettre à Django d'afficher cette vue, il faut aller dans le fichier urls.py. On va y importer le module views de notre app boards: from boards import views, et ajouter dans la variable

URL_PATTERNS la ligne: url(r'^$', views.home, name='home') (ATTENTION, l’import

django.core.urlresolvers est obsolète depuis Django 2.0, il faudra la remplacer par django.urls).

(ici, on utilise la regex (expression régulaire) ^$ car on veut que la page s'affiche au lancement de l'app, sur la page principale. Si la page devait être une page secondaire, on utiliserait le regex

^homepage/$.

→ Pour afficher la page web, il faut relancer le serveur local. Pour cela, il faut utiliser la commande: python manage.py runserver

Création de la base de données :

→ Ensuite, on va demander à Django de créer la bdd. Pour cela, on va se placer dans le dossier contenant le fichier manage.py et on va lancer la commande : python manage.py makemigrations.

Django a donc créé un fichier nommé 0001_initial.py dans le fichier boards/migrations. Il

représente le statut actuel des models de l’application. Django va utiliser ce fichier pour créer les tables et les colonnes.

→ Si SQL ne vous fait pas peur, vous pouvez executer la commande python manage.py

sqlmigrate boards 0001, pour inspecter les instructions SQL qui vont être exécutées dans la base de données.

→ Maintenant, il faut appliquer la migration qu’on a générée à la bdd, grâce à la commande python manage.py migrate.

7/8

(10)

Conclusion :

Ce stage a été très enrichissant pour moi, car il m’a permis de découvrir le fonctionnement d’une entreprise, travaillant avec des contraintes imposés par des standards de développement pour la médecine, ou CDISC (Clinical Data International Standard Consortium). Cela m’a également permit de découvrir de nombreux outils très intéressants, comme Django ou Neo4j, ou même indispensables, comme git et github. Ce stage a assurément enrichi mes connaissances et mon attrait pour le développement. En effet, grâce à ce stage et à Quanticsoft, je sais maintenant que mon parcours professionnel idéal sera et restera dans le monde de l’informatique et plus particulièrement celui du développement. De plus, l’ambiance de travail au sein des locaux était très bonne, basée sur la bonne humeur et la rigolade.

Synthèse en anglais :

As part of my studies, I was on an internship at Quanticsoft, which is a French company founded by Mr Nicolas De Saint Jorre. It hold 3 people. This firm specializes in biomedical research and computer science. Their job is to support research project in order to fight lots of diseases, especially cancers.

During this internship, I worked on a Raspberry Pi, a single board computer, with Raspbian, an operating system based on Debian, a Linux kernel based OS. Quanticsoft is using 2 softwares, one is MARVIN, it has been developed by a Quanticsoft’s partner in Germany, and is used to set up medical questionnaires that are, then, used to create statistical analysis for the purpose of obtaining a marketing authorization for a new molecule. The other software they are using is Webtrial, this one has been developed by Quanticsoft, in PHP. My task was to convert this software, Webtrial, from PHP to Python Django. I didn’t really worked on Webtrial but my tutorial accomplishment helped a lot for the future Webtrial website.

I really liked to work at Quanticsoft. It might be because of the fact that it is a small society, working in an apartment with 3 others people but the overall atmosphere was very friendly and restful. I also learnt a lot from this 5 weeks’ internship. Even thought I already did an internship in a computer company, it gave me first-hand knowledge of life in an office, smaller and frendlier, this time. It also comforted me in carrying on my studies, as I am now even more convinced than I want to pursue a career in Computer sciences.

Références

Documents relatifs

[r]

- A l'issue de cette formation vous devriez connaître les principales fonctionnalités du logiciel afin de pouvoir construire un tableau et effectuer, dans

Puis la configuration de base reste à appliquer, pour ceci il faut aller dans poste de travail affichage sélectionné détails puis dans l'onglet outil sélectionner option des

LE CERF Faisceaux laser Raman pour réaliser une séparatrice Raman Etude de la diffusion Raman dans une fibre optique pour des expériences d'optique quantique. Déformation actuelles

Cette commande « tail -f /var/log/apache2/error.log » rentrée dans la machine debian9 m’a permis de repérer plus facilement les erreurs des requêtes (avec les pages et les lignes)

Art 3 : En cas d'annulation de votre part au-delà de 10 jours avant le stage (sauf raison médicale avec remise d'un certificat médical), l'acompte sera encaissé.. Art 4 :

- L'intégration du laser dans le développement scientifique et industriel en France. - Augmentation du savoir-faire sur la technologie et production laser dans l'industrie

Afin de s’occuper de l’intendance, nous sollicitons les parents qui pourraient se rendre disponibles pour l’organisation des repas (prendre les repas chez le