Étudiant en BAC 3 · HELHA
Oscar Durnez
Étudiant en dernière année de bachelier en Technologies de l'informatique. Une formation large (programmation, réseaux Cisco, systèmes, électronique de base) et des projets concrets : une application client/serveur en Java, un site d'enchères réalisé en équipe et un serveur Linux configuré de A à Z. Je suis ouvert à toutes propositions.
FormationTechnologies de l'informatique
ÉcoleHELHA · BAC 3
DisponibilitéOuvert à toutes propositions
À propos
Mon profil
Ce que j'ai étudié et ce que j'ai déjà réalisé.
Je m'appelle Oscar, je suis étudiant en Technologies de l'informatique à la HELHA, en troisième et dernière année. J'ai fait mes secondaires au Collège Saint-Henri de Comines et obtenu mon CESS en 2024. Ma langue maternelle est le français, et j'ai un niveau B1 en anglais et en néerlandais.
Pendant ma formation, j'ai suivi les modules réseau Cisco CCNA 1, 2 et 3, des cours d'électronique de base avec manipulation de circuits, et j'ai programmé en Java, JavaScript, HTML/CSS, Python et en C (les bases). L'an dernier, j'ai développé une application de quiz client/serveur en Java, participé en groupe à un site d'enchères en Node.js, et configuré un serveur VPS Linux de A à Z.
Je suis ouvert à toutes propositions et je serais heureux d'en discuter.
Projets
Mes réalisations
Chaque projet : le contexte et ce que j'ai réalisé.
clapwhoclap : quiz interactif en temps réel
Java · Projet individuel · 2025-2026
Une version simplifiée de Wooclap. Le professeur ouvre une session et reçoit un code. Les étudiants rejoignent la session avec ce code et un pseudo, puis répondent à des questions Vrai/Faux. Les réponses s'affichent en direct chez le professeur, et un classement apparaît à la fin.
Contexte
Projet du cours de laboratoire de programmation à la HELHA. L'application est de type client/serveur : plusieurs clients, éventuellement sur des machines différentes, communiquent avec un serveur central.
Ce que j'ai réalisé
- Architecture en trois modules : un client JavaFX, un serveur (logique métier et base de données) et un module commun (modèle, messages réseau, configuration). Le client n'accède jamais à la base : il envoie des requêtes au serveur et affiche ses réponses.
- Réseau : sockets TCP et protocole de 13 messages (requêtes du client vers le serveur, événements du serveur vers les clients). Chaque message n'est envoyé qu'aux participants de la session concernée, ce qui permet de faire tourner plusieurs sessions en parallèle.
- Multithreading : un thread par client connecté, accès synchronisé aux données partagées, mise à jour de l'interface via
Platform.runLater().
- Contrôles côté serveur : il refuse un code inexistant, un pseudo déjà pris ou une deuxième réponse à la même question. La correction et les scores sont calculés uniquement par le serveur.
- Persistance : base SQLite de 4 tables accédée par requêtes préparées, fichier de configuration et export CSV du classement.
- Conception : patterns Singleton (connexion à la base) et Observer (notification des clients), polymorphisme sur les types de questions.
- Tests : 43 tests unitaires JUnit 5. Les services reçoivent leurs dépendances par constructeur, ce qui permet de les tester avec des données en mémoire sans toucher à la vraie base.
JavaJavaFXSockets TCPMultithreadingSQLite / JDBCJUnit 5Maven
eBoo : site de vente aux enchères
JavaScript · Projet de groupe · 2025-2026
Plateforme d'enchères en ligne : publication d'annonces avec photos, enchères, messagerie privée entre acheteur et vendeur, puis paiement de l'article remporté.
Le projet
Réalisé en équipe pour le cours de développement web à la HELHA.
- Back-end Node.js / Express avec base SQLite, organisé en routes, contrôleurs, services et modèles.
- Authentification par JWT avec jetons de rafraîchissement, mots de passe hachés avec bcrypt, validation des entrées et en-têtes de sécurité (Helmet).
- Enchères enregistrées dans des transactions pour éviter les incohérences entre deux offres simultanées.
- Messagerie privée en temps réel avec Socket.io.
- Images envoyées par les utilisateurs converties et redimensionnées automatiquement en WebP.
Ma contribution
- Protection des routes des annonces par un middleware d'authentification, et ajout de la suppression d'annonces.
- Pages d'accueil et de profil (HTML et JavaScript côté client).
- Une grande partie de l'interface : styles par page et par composant (en-tête, cartes, fenêtres modales), barre de navigation, thème sombre et refonte visuelle du site.
JavaScriptNode.jsExpressSQLiteSocket.ioJWTHTML / CSS
Configuration d'un serveur VPS Linux de A à Z
Projet scolaire · 2025-2026
Partir d'un VPS vierge et le configurer étape par étape : accès sécurisé, services web et mail, VPN et supervision. Tout a été fait à la main et documenté.
Ce que j'ai mis en place
- Base système : mises à jour, création d'un utilisateur administrateur avec droits sudo.
- Accès SSH : port personnalisé, authentification par clés ed25519 avec passphrase, validation de la configuration avant redémarrage du service, bannières légales d'avertissement.
- Mots de passe : règles de complexité via PAM/pwquality, vieillissement des mots de passe, hachage SHA-512 avec 500 000 tours.
- Services : Nginx, PHP, HTTPS avec Certbot, Nextcloud, Git, SFTP, raccourcisseur d'URL, relais DNS.
- Mail : configuration DNS, DKIM et SPF, webmail Roundcube, surveillance des logs.
- Réseau : VPN WireGuard.
- Protection : pare-feu UFW, Fail2ban, PortSentry, rkhunter, audit du système avec Lynis.
- Durcissement : permissions et fichiers temporaires, PHP, unités systemd, masquage des bannières de services, désactivation du stockage USB, de Firewire et du protocole DCCP.
- Supervision : sysstat, Prometheus avec Node Exporter, tableaux de bord Grafana et alertes.
LinuxSSHNginxUFWFail2banWireGuardNextcloudPrometheusGrafana