Projets scolaires

Liste des projets

Développement web

Création d’un site web statique

Année d’études 1ère année de Licence informatique
Thème Développement web
Langages utilisés HTML 5, CSS 3

En première année de licence informatique, nous avons appris les bases du développement web. Pour cela nous devions créer un site statique de quelques pages avec une liste d’éléments de code à inclure. Le thème et le design étaient libres. En plus de ces pages HTML à créer, il fallait également recréer le CSS d’une page à partir d’une image modèle.
Ce projet m’a permis d’avoir une première approche du développement web en structurant le code source du site pour séparer le fond de la forme.

Création d’une application web en JavaScript

Année d’études 2ème année de Licence informatique
Thème Développement web
Langages utilisés HTML 5, CSS 3, JavaScript

En seconde année de licence informatique, nous avons continué l’apprentissage du développement web en nous focalisant sur JavaScript pour rendre les pages dynamiques côté client. Pour cela nous devions créer une application web ayant pour thème la phytothérapie. L’application consiste en une page HTML unique qui est générée avec le code JavaScript. L’application contient une liste de plantes et une liste de maladies. Pour une plante donnée, on affiche les maladies qu’elles soignent, et vice-versa. Il est possible d’ajouter des plantes ou des maladies et une fonction recherche est également présente. L’exécution se déroule entièrement côté client (aucune requête asynchrone) et les modifications apportées sont donc perdues à la fermeture de la page.
Ce projet m’a permis de me familiariser avec le langage JavaScript, dont j’ai eu besoin dans des projets ultérieurs mais aussi dans mon travail à Bordeaux Métropole. L’orchestrateur que nous utilisons dans notre cloud privé utilise JavaScript, tous nos workflows d’automatisation sont donc écrits dans ce langage.

Création d’une application web

Année d’études 3ème année de Licence informatique
Thème Développement web
Langages utilisés HTML 5, CSS 3, JavaScript, PHP, MySQL
Sources https://gitlab.com/lasserre.jeanbaptiste/l3_gestion_documents

En troisième année de licence informatique, nous avons étudié la partie serveur d’un site web avec le langage PHP. Nous avons combiné les connaissances des deux premières années avec PHP pour créer une application web complète, utilisant à la fois JavaScript pour animer l’interface utilisateur et PHP pour traiter les données côté serveur. Le cours de bases de données a également été mis en application avec la création d’une base de données MySQL.
Le projet réalisé est une application permettant de visualiser des documents. Nous partons d’une arborescence imposée, contenant des documents de différents types (eux aussi connus). L’application permet de naviguer dans ces documents en choisissant une personne puis un type de documents. Mais parcourir les documents n’est pas le but réel de l’application, sa valeur ajoutée est dans les métadonnées que l’on peut renseigner pour chaque document. Notre but n’était pas d’ajouter des documents, mais de gérer les métadonnées de chacun d’eux.
L’application devait fonctionner sur les serveurs de l’université qui utilisaient d’anciennes versions de PHP. En particulier, les accès à MySQL se faisaient avec des fonctions comme mysql_connect qui sont obsolètes en PHP 7.
Je connaissais déjà PHP avant ce projet mais il m’a permis de continuer à m’exercer. Tout comme JavaScript, c’est un langage dont j’ai souvent eu besoin par la suite.

Stage – création d’une application web

Année d’études 3ème année de Licence informatique
Thème Stage de développement web
Durée 1 mois
Lieu Luxe-Sumberraute, France
Langages utilisés HTML 5, CSS 3, JavaScript, PHP, MySQL
Sources https://gitlab.com/lasserre.jeanbaptiste/l3_inforext

En troisième année de licence informatique, j’ai réalisé un stage d’un mois dans une entreprise qui gère l’infrastructure informatique de TPE. Mon maître de stage désirait une application pour gérer ses clients et ses interventions.
J’ai créé un site web à usage purement interne dans lequel j’ai noté les avancées de mon stage. C’était un projet personnel auquel j’ai souhaité donner une réalisation plus concrète. Le début de mon stage coïncide également avec la date à laquelle j’ai commencé la location de mon serveur chez OVH. L’hébergement du site et de l’application sur le serveur étaient une occasion d’utiliser le serveur dans un cas réel. Le site créé est très simple, il a été codé en PHP pur, sans aucun framework ou outil. L’idée n’était pas de créer un site parfait mais uniquement de progresser.
Concernant l’application à développer dans le cadre du stage, elle a elle aussi été développée en PHP à partir de zéro. J’ai mis beaucoup plus de temps qu’avec un framework mais c’était mon premier projet relativement long et le fait de tout coder moi-même m’a beaucoup apporté. D’un point de vue interface utilisateur, la priorité n’était pas d’avoir une interface belle (ce serait raté…) mais plutôt efficace, c’est à dire qui minimise le nombre d’actions pour accéder à une information ou réaliser une tâche. L’application n’est pas responsive design (ce n’était pas un critère de satisfaction) mais est claire.
Le code source publié contient le site de présentation du projet ainsi qu'une démo de l'application réalisée.

Stage – création d’une application web

Année d’études 1ère année d’école d’ingénieurs Réseaux et Systèmes d’Information
Thème Stage de développement web
Durée 2 mois
Lieu Hambourg, Allemagne
Langages utilisés HTML 5, CSS 3, JavaScript, PHP, MySQL
Frameworks et bibliothèques utilisés Symfony 2.8, jQuery

Durant l’été 2016, j’ai effectué un stage de développement web d’une durée de 2 mois au sein de la société Herberg Systems, une petite entreprise d’une dizaine d’employés dont 3 développeurs à temps partiel. C’est une entreprise spécialisée dans les logiciels destinés aux compagnies de fret maritime. Leur principal produit est un outil de suivi de flotte, permettant de connaître l’emplacement et les trajets effectués par chaque navire d’une compagnie. Leur application propose également de nombreux outils d’analyse s’appuyant sur un très grand volume de données collectées sur chaque navire et chaque trajet.
Mon travail fut la réalisation d’un outil de monitoring. L’entreprise possède de nombreux services et scripts s’exécutant régulièrement et il est difficile de s’assurer que tout est opérationnel. Par exemple, le script de récupération des prévisions météo n’a plus fonctionné pendant 3 semaines avant que l’équipe ne s’en aperçoive. L’idée était donc de créer un outil permettant de centraliser l’ensemble des systèmes à surveiller dans un unique tableau de bord. Concrètement, le tableau de bord affiche l’état de tous les systèmes surveillés. Chaque système contacte le serveur de monitoring (via une requête HTTP) afin de lui signaler le résultat d’opérations importantes. Selon les évènements reçus par l’outil de monitoring, l’état d’un système sur le tableau de bord change. De plus, l’ensemble des évènements reçus est affiché et chaque erreur doit être marquée comme lue. Ainsi, en seulement quelques secondes, l’équipe d’Herberg Systems peut savoir si l’ensemble de ses services sont opérationnels et connaître les erreurs éventuelles.

Capture d’écran de l’application

Création d’un site web

Année d’études 2ème année d’école d’ingénieurs Réseaux et Systèmes d’Information
Thème Développement web
Langages utilisés HTML 5, CSS 3, PHP, MySQL
Frameworks et bibliothèques utilisés Symfony 3, Bootstrap
Lien vers le projet https://gitlab.com/lasserre.jeanbaptiste/tanks_game

En seconde année d’école d’ingénieurs, nous devions créer un site web. Le thème était totalement libre, tout comme les technologies utilisées. La seule demande était une complexité suffisante et l’utilisation du modèle MVC (modèle, vue, contrôleur) pour structurer le site. Ayant découvert Symfony durant mon stage à Hambourg, j’ai souhaité continuer dans cette lancée pour mieux maîtriser ce framework et voir plus en profondeur certains composants que je n’avais pas eu le temps d’aborder entièrement durant l’été. Faire ce site sur le jeu de tank créé en première année permettait d’avoir un vrai contenu et encore une fois de réaliser un projet concret pouvant vivre au-delà de la simple demande faite par l’école.

Développement de jeux

Création d’un jeu 2D multijoueurs

Année d’études 1ère année d’école d’ingénieurs Réseaux et Systèmes d’Information
Thème Développement logiciel
Langages utilisés C
Bibliothèques utilisées SDL
Plateformes compatibles PC Linux
Lien vers le projet https://gitlab.com/lasserre.jeanbaptiste/tanks_game

En première année d’école d’ingénieurs, nous avons eu nos premiers cours de programmation C suivis d’un projet de création de jeu pour mettre en pratique nos connaissances. Le thème était imposé, ainsi que certaines contraintes techniques. Il s’agit d’un jeu en réseau où deux équipes s’affrontent en combattant avec des tanks. C’est un jeu 2D écrit en C et utilisant la SDL. Cela nous a permis de nous exercer en réalisant quelque chose de concret et de ludique. Le jeu étant en ligne, nous avons abordé à travers ce développement de nombreuses problématiques des systèmes distribués, avec les problèmes réseau, la synchronisation et également la gestion des threads côté serveur. Pour plus de détails sur ce projet, vous pouvez lire la page qui y est consacrée  ou vous rendre sur GitLab.

Développement de logiciels

Création d’une application de gestion de courses de vélo

Année d’études 2ème année de Licence informatique
Thème Programmation procédurale
Langages utilisés C
IHM Console uniquement

Ce projet de seconde année de licence informatique a pour but de nous faire progresser en programmation impérative et de mieux maîtriser le langage C. L’idée est d’avoir un programme sans interface graphique (console uniquement) qui permet de gérer des courses de vélo sur une saison. Le programme permet de gérer (créer, afficher, modifier, supprimer) des épreuves, des participants et des vélos. Les vélos sont attribués à des participants pour une saison et pour chaque épreuve seuls certains types de vélos sont autorisés. Les épreuves sont composées de plusieurs manches, avec un classement par manche puis un classement final pour l’épreuve. Une fois les épreuves, participants et vélos créés, il faut associer les vélos aux participants et inscrire les participants aux épreuves. Il est ensuite possible de saisir le classement d’une épreuve. Le programme permet d’afficher le classement de la saison complète, en prenant en compte les difficultés des épreuves (pondération selon le niveau). Enfin, il est possible de sauvegarder/charger une saison. Ci-dessous l’écran d’accueil de l’application. Pour plus d’informations sur l’application, une documentation complète des fonctions et structures utilisées est disponible dans le rapport  que nous avons rédigé.

 _ _  ___  _    ___     ___   ___   ___  _  _  _   ___     __      ___
| | || __>| |  /   \   | - > / - \ /  _>| || \| | /  _>   <  |    /   \
| | || __>| |_ | | |   |   \ | | ||  (_ | ||  \ ||  < \    | |  _ | | |
 \_/ |___>|___|\___/   |_|\_\|_|_| \___>|_||_\__| \___/   <___>(_)\___/

**************************************************
****************  Menu Général :  ****************
**************************************************
1. Gestion Epreuves
2. Gestion Participants
3. Gestion Vélos
4. Classement Saison
5. Sauver Saison
6. Charger Saison
7. Quitter
Choix : 

Création d’une application de « simulation » d’animaux dans un zoo

Année d’études 2ème année de Licence informatique
Thème Programmation orientée objet
Langages utilisés C++
IHM Console uniquement
Sources https://gitlab.com/lasserre.jeanbaptiste/l2_gestion_zoo

Lors de ce projet, nous avons développé un logiciel qui simule un parc zoologique. Le parc est composé d’enclos, de cages et de bassins. Chacun de ces espaces peut contenir un certain nombre d’animaux. Ce nombre est défini lors de la création de l’espace. Les enclos sont particuliers : ils sont à ciel ouvert ce qui signifie qu’un animal sachant voler s’échappera lors de son placement dans celui-ci. De la même manière, un animal ne sachant pas nager se noiera instantanément s’il est placé dans un bassin. Chaque espace a la possibilité d’accueillir des animaux de toute sorte, mais certains animaux ont tendance à en manger d’autres. Le logiciel a trois principales fonctionnalités :

  • Un gestionnaire d’espaces permettant de construire (et agrandir par la suite) le parc. Si en cours d’exécution, il n’y a plus de places dans un espace, on peut en ajouter un nouveau. De plus, on peut connaître l’état de remplissage ainsi que la liste des occupants de chaque enclos.
  • Barney : il est chargé de capturer les animaux à la demande. Vous choisissez, il attrape !
  • Chaque nouvel animal déniché par Barney devra être dispatché dans un enclos à choisir dans une liste.

Ce logiciel a été développé en C++ et sert de mise en pratique pour les cours de programmation orientée objet, il n’est pas doté d’une interface graphique (console uniquement). Ci-dessous l’écran d’accueil de l’application. Pour plus d’informations sur l’application, une documentation complète des fonctions et structures utilisées est disponible dans le rapport que nous avons rédigé.

***  Informations sur le parc  ***
Nombre d'animaux : 19
Nombre d'enclos : 10

************************
***  Menu principal  ***
************************

1. Gestion des enclos et des animaux
2. Affichage des informations sur les enclos
3. Affichage des informations sur les animaux
9. Quitter
Choix : 

Création d’un chat avec plusieurs clients et un serveur

Année d’études 3ème année de Licence informatique
Thème Programmation système, systèmes distribués
Langages utilisés C, C++, Java
IHM Console uniquement

Ce projet réalisé en binôme était à l’intersection entre deux pans importants du programme de troisième année : la programmation système et les systèmes distribués.
Nous devions créer un serveur de chat permettant à plusieurs clients de s’y connecter pour communiquer. De nombreuses contraintes techniques sur l’architecture de l’application ont été données afin que l’on implémente plusieurs concepts de communication vus en cours. L’application est composée de 5 programmes :

  • Une application client pour les utilisateurs du chat.
  • Une application affichant les messages reçus par le client.
  • Un serveur de chat écrit en C.
  • Un serveur RMI écrit en Java pour la gestion des comptes.
  • Un client RMI / serveur TCP écrit en Java assurant la communication entre le serveur de chat et celui de gestion des comptes.

Le client et l’afficheur communiquent entre eux à l’aide d’un tube nommé (pipe). C’est le client de chat qui interagit avec l’utilisateur et communique avec le serveur. Le programme d’affichage ne fait que lire et afficher sur la sortie standard les messages que le client écrit dans le tube de communication.
La communication entre le client et le serveur de chat se fait en deux temps. Tout d’abord, le client doit découvrir le serveur (IP et port) en émettant une requête sur le groupe multicast utilisé par l’application. Le serveur écoute sur sa socket UDP multicast les demandes de découverte et répond – là aussi en multicast – en envoyant les informations requises pour une connexion TCP. Dès que le serveur est localisé, le client initie une connexion TCP avec lui. Toutes les communications entre le client et le serveur se font via TCP.
La communication entre le serveur de chat et le client RMI se fait via TCP. Les deux programmes étant supposés sur la même machine, il n’y a pas de phase de découverte. Au lancement, le client RMI se met en écoute sur sa socket TCP et attend une connexion TCP. Quand la connexion est initiée, le client RMI se met alors en attente de requête. Quand le serveur de chat est lancé, il initie une connexion TCP avec le client RMI.
Le client RMI et le serveur RMI communiquent par RMI (Remote Method Invocation). Le serveur exporte un objet à son lancement et l’ajoute au registry. Il écoute ensuite toutes les connexions sur une socket UDP multicast. À chaque demande de découverte reçue, le serveur envoie en multicast les informations nécessaires au fonctionnement de RMI. Le client RMI doit donc initialement découvrir le serveur avant de débuter la connexion RMI. Si la découverte échoue ou si la connexion est rompue à un moment donné, une nouvelle tentative est effectuée quand nécessaire.

Ce projet nous a permis de mettre en œuvre des mécanismes de communication inter-processus, de gestion des threads et ressources partagées ainsi que les communications via TCP/UDP en unicast et multicast. Tout ceci était très enrichissant et vous pouvez trouver les détails de la conception du serveur de chat dans le rapport que nous avons rédigé. Malheureusement, ce projet n’a pas été une réussite technique pour notre binôme, en raison de quelques mauvais choix de départ, quelques erreurs et aussi des contraintes fortes nous ayant empêchés de consacrer suffisamment de temps sur le développement pour aboutir à un résultat acceptable. La conception générale était bonne, mais l’implémentation n’est pas fonctionnelle.

Création d’un serveur FTP simple

Année d’études 2ème année d’école d’ingénieurs Réseaux et Systèmes d’Information
Thème Programmation système, programmation réseau
Langages utilisés C
IHM Console uniquement, pas de mode interactif

Création d’une application de gestion d’un troupeau

Année d’études 2ème année d’école d’ingénieurs Réseaux et Systèmes d’Information
Thème Développement logiciel
Langages utilisés Windev, Java, PHP, bash, MySQL
Plateformes compatibles PC Windows/Linux (Windev), Android (Java)
IHM Interface graphique sur PC et sur Android, pas de mode console

Autres projets

Mise en place d’un multiseat sous Ubuntu 12.04

Année d’études 1ère année de Licence informatique
Thème Linux
Outils utilisés X.org, udev, pulseaudio, lightdm

Conception d’un réseau IP d’entreprise

Année d’études 3ème année de Licence informatique
Thème Architecture réseaux, sécurité, VLAN

Création d’une calculatrice à partir de portes logiques et composants électroniques de base

Année d’études 3ème année de Licence informatique
Thème Architecture des ordinateurs, électronique numérique