> Contact.sh
[SYSLOG] Initialisation des protocoles de communication externes...
> Proxmox_Homelab.sh
Infrastructure personnelle auto-hébergée. Isolation des services via conteneurs LXC (Monitoring, DNS, Médias), routage via Reverse Proxy et déploiement continu. Services : Jellyfish - Nginx Proxy Manager - Prometheus - Grafana - festins.hfragnoli.fr - pihole.
> Festins
Création de A à Z d'un site vitrine pour un restaurant (fictif), conçu pour démontrer mes compétences en développement front-end, en optimisation des performances et en infrastructure.
> Woody_Wood_Packer.exe
hfragnoli@homelab:~/WoodyWoodPacker$ ./helloHello world!hfragnoli@homelab:~/WoodyWoodPacker$ ./woody_woodpacker hello[INFO] Parsing arguments[INFO] Building woody...[DEBUG] Payload size: 15752[INFO] Payload compressed (LZ77) Original size : 15752 Packed size : 4632 Ratio : 70.59% (factor 3.40x)[DEBUG] Encrypted size: 4656 (AES, PKCS#7 padding)[INFO] Key used : OUBRUQEVMBEPGXUI[INFO] woody successfully created.hfragnoli@homelab:~/WoodyWoodPacker$ ./woodyHello world!...WOODY...
Création d'un packer de binaires ELF de zéro. Injection d'une payload de chiffrement AES écrite entièrement en Assembleur. Projet axé sur la rétro-ingénierie, la manipulation de la mémoire et l'architecture des exécutables.
> Taskmaster.rs
hfragnoli@homelab:~/Taskmaster$ ./taskmaster config.yaml[Info] - Program [ping2] launch with PID 81886[Info] - Program [ping1] launch with PID 81888[Info] - Execution thread ready.taskmaster > status[Info] - [STATUS] ping2 is alive (PIDs: [81886, 81887])[Info] - [STATUS] ping1 is alive (PIDs: [81888, 81889])[Info] - [STATUS] env2 is offtaskmaster > start env2[Info] - Command start sent.[Info] - Program [env2] launch with PID 81900[Info] - Done.taskmaster > status[Info] - [STATUS] env2 is alive (PIDs: [81900])[Info] - Signal 20 received (SIGCHLD)[Error] - [env2] Crashed too quickly (retry 1/4)taskmaster > stop ping1[Info] - Command stop sent.[Info] - [STATUS] ping1 is offtaskmaster > exit[Info] - exiting...[Debug] - Killing ping2 with pid 81886[Debug] - Killing ping2 with pid 81887[Info] - Exec thread successfully quit.
Gestionnaire de processus type systemd. Gestion des threads, des signaux POSIX et de la concurrence de manière sécurisée grâce à Rust.
> malloc.c
hfragnoli@homelab:~/lib_malloc$ MALLOC_DEBUG=2 ./test_debug== 1) malloc / realloc / free classiques ==malloc(32) => 0x1003b0040realloc(200) => 0x1003b0040free(0x1003b0040)== 2) scribble (visible au niveau 2) ==malloc(16) => 0x1003b0040 apres malloc : c[0]=0xAA (0xAA au niveau 2)free(0x1003b0040) apres free : c[0]=0x55 (0x55 au niveau 2)== 3) cas limites malloc == malloc(0) => 0x0 (attendu (nil))free((nil)) free(NULL) : OK (no-op)== 4) cas limites realloc ==realloc(32) => 0x1003b0040 realloc(NULL, 32) => 0x1003b0040realloc(0) => (nil) realloc(ptr, 0) => 0x0 (attendu (nil))realloc(0) => (nil) realloc(NULL, 0) => 0x0 (attendu (nil))== 5) double free large (detecte -> abort) ==malloc(5000) => 0x1003b4020free(0x1003b4020)free(0x1003b4020)free(): double free or invalid pointer => 0x1003b4020zsh: abort MALLOC_DEBUG=2 ./test_debug
Réécriture complète des fonctions d'allocation dynamique. Optimisation de la mémoire et gestion de la fragmentation via des listes chaînées.
> minishell
hfragnoli@homelab:~/minishell$ ./minishell minishell> cd /tmp minishell> pwd/private/tmp minishell> export DEMO=hello minishell> echo $DEMOhello minishell> echo abc | grep babc minishell> echo test > out.txt minishell> cat out.txttest minishell> nonexistentcmdminishell: nonexistentcmd: command not found minishell> unset DEMO minishell> echo $DEMO minishell> exitexit
Réimplémentation d'un shell Unix interactif. Parsing, pipes, redirections, heredoc, builtins et gestion fine des signaux (SIGINT, SIGQUIT) en C.
> cub3D

Moteur de rendu 3D façon Wolfenstein, écrit de zéro en C avec MinilibX. Raycasting, parsing de cartes, textures directionnelles et portes interactives.
> Loi_&_Moi [WIP]
Projet citoyen visant à rendre l'information publique et administrative accessible aux non-initiés. La donnée existe et elle est ouverte : le problème est qu'elle est éparpillée, brute et illisible pour qui n'en a pas l'habitude.
L'essentiel du travail est un pipeline d'ingestion. Les jeux de données de data.gouv.fr arrivent dans des formats hétérogènes et mouvants, qu'il faut nettoyer, normaliser et faire converger vers un schéma relationnel unique. Ces traitements ETL sont écrits en Python et alimentent une base PostgreSQL volumineuse, rejouable à chaque mise à jour des sources.
Au-dessus, une API REST en Go expose ces données à une interface React / TypeScript. Les appels à l'API Mistral interviennent en bout de chaîne, pour restituer en langage clair des contenus administratifs qui ne le sont pas.