devsite/strapi_extraction/docs/01-projects-index.md
2026-03-15 15:28:26 +01:00

35 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Projets de Fernand Gras-Calvet
Cette section présente les 17 projets réalisés dans le cadre de ma formation à l'École 42 et de mon parcours en développement.
## Liste des projets
1. **[push_swap](push-swap.md)** - Le projet push_swap de l'école 42 consiste à trier une liste d'entiers en utilisant uniquement un ensemble limité d'opérations sur deux piles (A et B). Lobjectif est de trouver lalgorithme de tri le plus efficace pour minimiser le nombre de mouvements. Ce projet permet dexplorer la gestion des structures de données (piles), loptimisation des algorithmes de tri, et la complexité algorithmique, tout en respectant des contraintes strictes dexécution.
2. **[minitalk](minitalk.md)** - Le projet Minitalk de l'école 42 consiste à établir une communication inter-processus (IPC) entre un serveur et un client en utilisant uniquement les signaux UNIX (SIGUSR1 et SIGUSR2). Le client envoie un message caractère par caractère sous forme binaire, tandis que le serveur le reçoit, le reconstruit et l'affiche. Ce projet permet dapprendre la gestion des signaux, la conversion binaire et la synchronisation des processus en C.
3. **[philosopher](philosopher.md)** - Le projet Philosopher de l'école 42 consiste à résoudre le problème des philosophes mangeurs, un exercice classique de programmation concurrente. Il met en œuvre des threads ou processus pour simuler des philosophes partageant des fourchettes et alternant entre les états manger, penser et dormir, tout en évitant les problèmes de deadlock et starvation. Ce projet permet dapprendre la gestion des threads (pthread), lutilisation des mutex et sémaphores, ainsi que la synchronisation des ressources partagées.
4. **[minishell](minishell.md)** - Le projet Minishell de l'école 42 consiste à coder un interpréteur de commandes minimaliste, inspiré de bash. Il permet dexécuter des commandes via un prompt interactif, en gérant les processus, les pipes (|), les redirections (<, >, >>, <<), et les signaux (Ctrl+C, Ctrl+D). Il inclut aussi des built-ins (echo, cd, pwd, export, env, unset, exit). Ce projet développe des compétences essentielles en programmation système, gestion de la mémoire et manipulation des processus sous Unix.
5. **[netpractice](netpractice.md)** - Le projet NetPractice est essentiel pour acquérir une compréhension pratique des réseaux informatiques, une compétence cruciale pour les administrateurs système et les ingénieurs réseau. Il offre une base solide pour des projets plus avancés impliquant la communication réseau et la gestion des infrastructures.
6. **[inception](inception.md)** - Le projet Inception de l'école 42 consiste à déployer une infrastructure basée sur Docker et Docker Compose, en isolant plusieurs services dans des conteneurs distincts. Il inclut la configuration d'un serveur web (Nginx), d'une base de données (MariaDB/MySQL) et d'une application web (WordPress), tout en assurant la sécurisation, la persistance des données et lautomatisation du déploiement. Ce projet permet dacquérir des compétences en virtualisation, gestion de conteneurs et administration système.
7. **[Born2beroot](born2beroot.md)** - Le projet Born2beroot de l'école 42 est une initiation à ladministration système sous Linux. L'objectif est de configurer un serveur sécurisé en installant une machine virtuelle sous Debian ou AlmaLinux, en mettant en place des politiques de sécurité strictes (gestion des utilisateurs, restrictions SSH, pare-feu UFW, Fail2ban) et en utilisant LVM pour la gestion des volumes de stockage. Les étudiants doivent également automatiser la surveillance du système avec un script monitoring.sh. Ce projet développe des compétences en sécurité informatique, gestion des serveurs et DevOps, essentielles pour les métiers dadministrateur système ou de cybersécurité.
8. **[Get_next_line](get-next-line.md)** - Le projet get_next_line de l'école 42 consiste à implémenter une fonction en C capable de lire une ligne à la fois depuis un descripteur de fichier, sans recharger tout le fichier en mémoire. Pour cela, il utilise une lecture par blocs (BUFFER_SIZE), des variables statiques pour conserver les données non traitées entre les appels, et une gestion efficace des descripteurs de fichiers multiples. Ce projet est essentiel pour apprendre la manipulation des fichiers en C, la gestion dynamique de la mémoire et l'optimisation des entrées/sorties
9. **[cpp-partie1](cpp-partie1.md)** - Les modules CPP 00 à 04 de l'école 42 sont une introduction progressive au langage C++ et à la programmation orientée objet (POO). Ils couvrent les bases du C++ (classes, objets, fonctions membres, références, mémoire), la surcharge d'opérateurs, l'héritage, et le polymorphisme. Ces modules permettent d'acquérir une compréhension solide du modèle objet du C++, essentielle pour le développement logiciel et les projets avancés en POO.
10. **[cpp-partie2](cpp-partie2.md)** - Les modules CPP 04 à 09 de l'école 42 approfondissent les concepts avancés du C++, notamment le polymorphisme, la gestion des exceptions, les casts, les templates génériques, et l'utilisation de la STL (Standard Template Library). Ils permettent d'acquérir des compétences essentielles en programmation orientée objet, conception modulaire et optimisation du code, préparant les étudiants à des projets logiciels complexes en C++.
11. **[cub3d](cub3d.md)** - Le projet Cub3D de l'école 42 consiste à coder un moteur graphique en C, inspiré de Wolfenstein 3D, utilisant la technique du raycasting pour afficher une vue en pseudo-3D à partir d'une carte 2D. Il intègre la gestion des mouvements du joueur, des textures, des redirections de caméra, et des événements clavier/souris via MiniLibX. Ce projet développe des compétences en programmation graphique, manipulation des fichiers de configuration et gestion des collisions
12. **[fract-ol](fract-ol.md)** - Le projet fract-ol de l'école 42 consiste à générer et afficher des fractales (Mandelbrot, Julia, etc.) en utilisant la bibliothèque graphique MiniLibX. Il permet dexplorer la programmation graphique en C, la manipulation des nombres complexes, et loptimisation des calculs pour le rendu dimages. Les utilisateurs peuvent interagir avec les fractales via le clavier et la souris pour zoomer, naviguer et modifier les paramètres en temps réel.
13. **[ft-irc](ft-irc.md)** - Le projet ft_irc de l'école 42 consiste à coder un serveur IRC (Internet Relay Chat) en C++, conforme à la RFC 2812. Il permet de gérer plusieurs connexions clients, d'implémenter des commandes IRC (JOIN, PART, PRIVMSG, NICK, etc.), de gérer des canaux de discussion, et dassurer lauthentification des utilisateurs. Ce projet développe des compétences en programmation réseau, gestion des sockets et protocoles de communication.
14. **[ft_transcendence](ft-transcendence.md)** - Le projet ft_transcendence de l'école 42 est une application web full-stack développée en équipe, combinant un jeu de Pong multijoueur et un chat en temps réel. Le frontend est conçu avec HTML, CSS et JavaScript, tandis que le backend repose sur Django et WebSockets pour gérer la logique du jeu et des interactions en temps réel. L'application est conteneurisée avec Docker, et utilise PostgreSQL pour la gestion des données. Vous avez principalement travaillé sur l'implémentation du chat en jeu, permettant aux joueurs de communiquer en direct, et l'infrastructure est surveillée via Elasticsearch et Kibana pour le monitoring.
15. **[Présentation école 42 ](presentation-ecole-42.md)** - L'École 42 Perpignan est un établissement d'enseignement en informatique, gratuit et ouvert à tous, basé sur une pédagogie innovante sans cours ni professeurs. Les étudiants y apprennent de manière collaborative et autonome à travers des projets pratiques, dans un environnement moderne et accessible 24h/24.
16. **[libft](libft.md)** - Le projet Libft de l'École 42 consiste à recréer une bibliothèque standard en C, comprenant des fonctions essentielles de manipulation de chaînes, de gestion de mémoire et de structures de données comme les listes chaînées. Ce projet vise à renforcer la maîtrise du langage C, à développer des compétences en gestion de mémoire dynamique, et à produire une bibliothèque modulaire et réutilisable pour des projets futurs.
17. **[Ft-printf](ft-printf.md)** - Le projet ft_printf de l'école 42 consiste à reproduire la fonction printf du langage C. Il permet aux étudiants de comprendre la manipulation des chaînes de formatage, et l'affichage de différents types de données (%d, %s, %p, %x…). Lobjectif est dimplémenter une fonction efficace, sans utiliser printf, en travaillant directement avec write. Ce projet développe des compétences essentielles en programmation bas niveau, gestion mémoire et optimisation du code C.
## Technologies et compétences développées
Ces projets couvrent plusieurs domaines clés :
- **Programmation système** : Gestion des processus, signaux UNIX, communication inter-processus
- **Algorithmes et structures de données** : Tri, piles, optimisation algorithmique
- **Programmation concurrente** : Threads, mutex, synchronisation
- **Développement web** : Next.js, React, API REST, hébergement
- **Réseaux** : TCP/IP, routage, configuration réseau