Yan Buatois

Étudiant en informatique

Qui suis-je ?

Bonjour, je suis Yan Buatois, étudiant en troisième année de licence d'informatique à l'Université de Montpellier.

Je suis âgé de ans et passionné d'informatique depuis toujours.
En effet, j'ai réalisé mes premiers programmes peu avant l'âge de 10 ans, et ai continué à me renseigner à ce sujet en parallèle de mes études au collège, puis au lycée, avant d'entrer en DUT informatique, qui m'a permis d'acquérir de nombreuses compétences, d'un point de vue plus professionnel.

Cela m'a permis de découvrir plusieurs langages et façons de réfléchir propres à la programmation avant-même de commencer mes études d'informatique.

Mon parcours

2019-2020 : Licence informatique à la Faculté des Sciences de Montpellier (En cours)

Logo Université de MontpellierUniversité de Montpellier

2017-2019 : DUT informatique à l'IUT de Dijon (Obtenu)

Logo Université de BourgogneUniversité de Bourgogne

Au cours de ces deux années de formation, j'ai pu acquérir de nombreuses compétences au niveau de l'informatique, en apprenant de nouvelles méthodes de travail, de nombreux langages de programmation, ainsi que plusieurs technologies, mais aussi des compétences plus générales, notamment en mathématiques, en économie, en droit, en langues et en communication.

J'ai également réalisé de nombreux projets, en équipe ou seul, et pu parfaire mes connaissances au cours d'un stage de 12 semaines.

2017 : Semestre "STIC" (Sciences et Techniques de l'Information et de la Communication) à l'IUT de Dijon

Logo Université de BourgogneUniversité de Bourgogne

Ce semestre était un semestre de réorientation me permettant de viser un DUT MMI (Métiers du multimédia et de l'Internet), RT (Réseaux et Télécoms) ou Informatique, mais aussi de découvrir des points clés de ces différentes formations. J'ai ainsi pu découvrir le réseau, améliorer mes compétences en programmation, et m'essayer à la photographie et à l'infographie.
Ce semestre m'a ensuite permis d'entrer en première année de DUT informatique l'année suivante.

2016 - 2017 : Première année de licence d'Histoire à l'UFR Sciences Humaines de Dijon

Logo Université de BourgogneUniversité de Bourgogne

Après mon baccalauréat, j'ai été admis en première année de licence d'histoire. Cependant, ce domaine ne me passionnait pas. J'ai donc rapidement décidé de me réorienter, afin de me diriger vers l'informatique, domaine qui me passionnait depuis toujours.

2014 - 2016 : Baccalauréat Économique et Social spécialité Sciences Sociales et Politiques (Mention Bien)

Lycée Saint-Charles à Chalon-sur-Saône (71)

Mes années de première et terminale m'ont permis de découvrir l'économie et la sociologie, ainsi que les sciences politiques, deux domaines passionnants. J'ai également pu acquérir de nombreuses connaissances, notamment en mathématiques.

Mes expériences professionnelles

Avril à Juillet 2019 : Développement web en entreprise

Logo Acute GamesAcute Games à Carcassonne (11)

D'avril à juin, j'ai effectué mon stage de 12 semaines de fin de DUT au sein de l'entreprise Acute Games, spécialisée dans le développement de jeux vidéo et basée à Carcassonne. Par la suite, j'ai travaillé avec eux en freelance durant le mois de Juillet, puis au cours de l'année étuidante 2019-2020.

Au cours de ce stage, j'ai eu pour mission de réaliser un mini-réseau social intégré au jeu phare de l'entreprise : Urban Rivals. Cette mission a été menée à bien, et j'ai ensuite pu travailler sur plusieurs fronts. À la fois le frontend, avec la réfection de quelques pages du même site, mais aussi le backend, par exemple en intégrant de nouvelles fonctionnalités au jeu, sur la partie "serveur". Cela m'a permis de développer mes compétences en PHP, et de découvrir beaucoup de contraintes, relatives à la fréquentation du site, et au volume de données stocké.

Mes compétences

Développement web

  • Javascript/ES2019
    Je sais faire du Javascript, à la fois pour du développement web "client", mais aussi pour du développement Node.js. Je suis en mesure d'utiliser les fonctionnalités les plus importantes des dernières versions de Javascript. En outre, je connais plusieurs frameworks Javascript, notamment jQuery et reveal.js, j'ai également des connaissances à propos du fonctionnement de React. Côté serveur, je sais utiliser express.js et j'ai déjà été amené à réaliser plusieurs projets, tels que de petites API REST. Enfin, je maitrise plusieurs outils de l'environnement Node.js, dont npm, plateforme sur laquelle j'ai publié plusieurs modules. Enfin, j'ai réalisé plusieurs projets avec le framework electron, permettant la réalisation d'applications bureau en utilisant Javascript, HTML et CSS.
  • PHP 7.3
    Je sais également utiliser PHP. J'ai, au cours de ma vie, été amené à travailler sur de nombreux projets PHP. Je sais donc comment fonctionne le langage, et comment utiliser certains outils et frameworks, tels que Composer et PHPSlim.
  • HTML5/CSS3 J'ai également des connaissances en HTML et CSS, me permettant de réaliser des sites basiques. Je sais également utiliser le framework bootstrap dans sa version 4.

Programmation bureau

  • Go
    J'ai parfois utilisé le langage Go. Je sais donc quelles sont ses spécificités et comment l'utiliser.
  • C
    Au cours de mes études, j'ai été plusieurs fois amené à réaliser des programmes en C. Je connais ses spécificités et comment tirer parti de ses forces, que ce soit dans un contexte de programmation système, de programmation embarquée, ou dans d'autres contextes.
  • C++
    C++ est également un langage que j'ai souvent dû utiliser au cours de mes études ou dans des projets personnels.
  • C#
  • Python
  • Java
    Je sais utiliser Java pour réaliser des programmes orientés objet plus ou moins complexes.

Administration système

  • Debian
    J'ai plusieurs fois été amené à utiliser la distribution Linux Debian, à la fois sur PC, mais aussi sur serveur. J'administre depuis plus de 2 ans un VPS fonctionnant sous Debian.
  • LEMP (Linux, Nginx, MariaDB et PHP)
    Sur le serveur en question, j'ai dû installer, configurer et maintenir un serveur Nginx, avec MariaDB et PHP. Je sais donc les installer, les utiliser et les configurer, mais aussi faire face à plusieurs problèmes que l'on peut rencontrer.

Bases de données

  • MySQL et MariaDB
    Dans de nombreux projets, j'ai dû utiliser le système de gestion de base de données MySQL ou MariaDB. Je sais donc comment celui-ci fonctionne, et quelles sont ses spécificités. Je sais écrire des requêtes qui lui sont adaptées.
  • Oracle SGBD et PL/SQL
    Au cours de mes études, j'ai également beaucoup travaillé avec le système de gestion de base de données d'Oracle, en découvrant ses spécificités et comment travailler avec. J'ai également appris à écrire des procédures PL/SQL.
  • MongoDB
    Dans certains projets, j'ai pu utiliser MongoDB, système de gestion de base de données orienté Documents. Cela m'a permis de découvrir ce type de base de données, ses avantages, mais surtout ses limites.
  • Redis
    Durant mon stage chez Acute Games, j'ai travaillé avec Redis, essentiellement afin de mettre en cache des informations telles que des classements.

Logiciels

  • Suite Microsoft Office 2019
  • Suite d'environnements de développement Jetbrains
    Au cours de mes études et dans mes projets personnels, j'ai été amené à utiliser plusieurs IDE Jetbrains, notamment WebStorm, PHPStorm, IntelliJ IDEA et CLion.
  • Microsoft Visual Studio et Visual Studio Code
  • Git
    Au cours de mes études, j'ai été amené à utiliser Git (ainsi que Github) afin de gérer mes différents projets.
  • Subversion

Mes réalisations

IQChat

Au cours de ma deuxième année de DUT, j'ai dû réaliser IQChat, un système de discussion instantanée.

Le serveur est réalisé en Node.js, et le client en Javascript, avec Electron. Les deux communiquent grâce à la bibliothèque Socket.io. Les utilisateurs peuvent s'inscrire, se connecter, créer des salons, y inviter d'autres membres et y dialoguer en temps réel. Le projet utilise MongoDB. Le serveur n'est plus en ligne à l'heure actuelle. Toutefois, le code source est disponible en intégralité sur Github.

Serveur | Client

Le "Spot"

Le Spot est le nom donné à un mini-réseau social créé au cours de mon stage, pour le site Urban Rivals. Celui-ci permet aux joueurs de communiquer, de partager, notamment, des messages, des images ou des decks.

Sa réalisation a nécessité de tenir compte de nombreux facteurs que je n'étais pas habitué à gérer, tels que l'importance du cache, et le problème posé par le stockage de gros volumes de données. J'ai donc pu découvrir comment les gérer. Cela m'a également appris à travailler sur un gros projet déjà existant, et les difficultés qui peuvent être induites lorsqu'on essaie de le modifier.

Ce projet a été réalisé en PHP pour la partie serveur, et en javascript (avec jQuery) pour ce qui est du client. Il utilise également Bootstrap 4, comme le reste du site.

"Monopoly Génétique"

Durant le troisième semestre de mon DUT informatique, nous avons dû mener à bien un projet, en groupe de 6 étudiants. Ce projet était la réalisation d'un jeu de Monopoly utilisant l'architecture MVC. Le jeu devait être réalisé en Java, avec le framework JavaFX et pouvoir fonctionner sans interface graphique, afin, à terme, de reçevoir des Intelligences Artificielles, et d'utiliser la technique des algorithmes génétiques pour les mettre au point.
Malheureusement, nous n'avons pas eu le temps d'aller jusqu'au bout, et à l'implémentation des Intelligences Artificielles. Toutefois, nous sommes parvenus à un jeu quasiment fonctionnel.

Dans ce projet, je me suis concentré sur l'implémentation des mécaniques de jeu, et la partie purement "Modèle" du MVC. J'ai également travaillé sur plusieurs contrôleurs, et quelques fois sur l'interface graphique.

Code source

Émulateur web de CHIP-8

Le CHIP-8 était un langage de programmation hexadécimal destiné à la programmation de jeux vidéo sur des ordinateurs 8 bits. Les avantages de CHIP-8 sont multiples. Tout d'abord, les ROM sont extrêmement simples, composées d'une simple suite d'instructions. Par ailleurs, il n'y a pas de gestion complexe des touches, de la mémoire ou de l'affichage, l'ordinateur n'ayant pas de mémoire vidéo à proprement parler, et se limitant à un écran de très petite résolution, strictement monochrome. Par ailleurs, ceci n'étant pas une console commerciale, les documentations sur son fonctionnement sont nombreuses et simples à comprendre.

Ceci m'a donc permis de découvrir le monde de l'émulation, mais aussi le fonctionnement d'un processeur, certes, basique. J'ai ainsi été amené à me servir de fonctionnalités de Javascript qui m'étaient alors nouvelles. C'est, par exemple, le cas des opérateurs bit-à-bit, très utile pour déchiffrer les codes d'opération. J'ai également pu découvrir comment utiliser un canvas en Javascript, bien qu'en m'en servant de façon très simple.

Émulateur | Code source

"Dracofuck" : Interpréteur Brainfuck en C

Ce projet est une implémentation d'un interpréteur du langage brainfuck écrite en C. Ce langage turing-complete n'admet qu'un jeu de 8 caractères, permettant d'écrire différents programmes. Ce projet m'a permis d'améliorer mes compétences en C, mais aussi de me pencher sur l'interprétation de langage de programmation, le langage restant suffisamment simple pour une introduction à ce sujet.

Code source

Et bien d'autres...

Vous pouvez retrouver tous mes autres projets sur mon Github.

Me contacter