- portfolio.malik-dev
- Accueil.
- Profil.
- Projet.
- mon-mur
- siteweb-belindys
- futur-projet
- forum-parfum
- script-bash
- gestion-compte
- siteweb-responsive
- bomberman
- jeu-echecs
- calendrier-dynamique
- siteweb-evenementiel
- Competences.
- Contact.
- MentionsLegales.
- interfaces
- Page.
- utils
- Logger.
- DateHelper.
- exceptions
- InvalidEmailException.
- ProjetNotFoundException.
- tests
- AccueilTest.
- ProfilTest.
- ProjetTest.
- CompetencesTest.
- ContactTest.
- MentionsLegalesTest.
- README.md
Projets professionnels
Site web Belindys (2025)
Voir le projet
-
Site web Belindys
Réalisation d'un site vitrine professionnel en PHP.
Sommaire :
Langages et outils
Structure PHP
Environnement PHP natif (sans framework)
- Fichier config.php :
- Informations de contact
- Chemins de navigation et d’inclusions
- Icônes et URL externes
- Includes génériques :
- head.php
- header.php
- list-navigation.php
- footer.php
Ergonomie
- Navigation claire et intuitive
- Utilisation d’icônes SVG
- Menu et slider adaptés au tactile (drag)
- Effets hover sur les éléments cliquables
- Présence d’une lightbox pour les images
Optimisation
- Compression des images (WebP)
- Fichiers CSS/JS regroupés dans des bundles
- Scripts chargés en différé grâce à l’attribut defer
- Téléchargement local des dépendances (aos/, fonts/ ...)
- Préchargement des polices d’écriture
Référencement naturel (SEO)
- Métadonnées uniformisées dans head.php
- Structure hiérarchique des titres (h1, h2...)
- Contenu multilingue via data-i18n
- Intégration des avis Google via API
Responsive
- Propriétés CSS flexibles (flex-wrap, clamp...)
- Utilisation de media queries (@media...)
Multilingue
- Attributs data-i18n pour chaque texte
- Fichiers JSON contenant les traductions
- Structure facilement extensible à d’autres langues
- Lien direct vers le site
Projets personnels
Application forum de parfum (2025)
-
Forum Parfum
Application Java de gestion et découverte de parfums avec notes, créateurs, familles et forum.
Inspiré de fragrantica !Sommaire :
Langages & outils
Structure & organisation :
- Parfum : informations sur les parfums
- Famille, Marque : classification des parfums
- Note : notes olfactives présentes dans les parfums
- Utilisateur : gestion de la garde-robe, des votes et commentaires
Fonctionnalités
- Recherche de parfums par nom, créateur, pays, maison mère ou note
- Filtrage et tri par popularité, genre, famille ou collection
- Gestion des préférences et Garde-Robe de l'utilisateur
- Votes en fonction de : genre/tenue/longévité...
- Forum : créer des questions et y répondre
Mises en cache
- Stockage temporaire des données : calcul de popularité, liste de parfums
- Optimisation du code et des temps de recherche
- Désactivation lors de nouvelles entrées
Méthode thread-safe
- Synchronisation des accès aux listes, par Collections.synchronized
- Utilisation de : AtomicLong et ConcurrentMap
- Prise en compte des risques de goulot d'étranglement
Algorithme de recherche
- Recherche sur les collections de parfums
- Scoring par filtre : expressions > mots > lettres
- Pondérations en fonction de l'ancienneté et des votes utilisateurs
Tests unitaires (JUnit)
- Couverture globale des tests de 70%
- Validation de la synchronisation thread-safe
- Tests sur l'optimisation et les caches
- Voir le dépôt sur git

Script bash malveillant (2025)
-
Script Bash malveillant (simulation)
Projet réalisé uniquement dans un environnement autorisé et contrôlé. Aucun code malveillant n’a été exécuté.
Sommaire :
Language & outils
Paramètres du script
- Nom de la salle : "infoXX"
- Numéro du poste occupé : "XX"
- Nombre de dizaine de poste : "0..9"
- Nom du poste occupé : "prenom.nom"
Description
- Exploitation d'une autorisation SSH trop permissive (à but éducatif)
- Parcours des postes nommés : @info[numéro_de_salle][numéro_de_poste]
- Le poste de lancement est exclu de la boucle
- Exécution d'un script malveillant stocké dans un répertoire d'accès public
- Tentative de suppression de l'historique du terminal
- Nettoyage visuel du terminal
- Exécution du script malveillant sur le poste de lancement (en dernier)
- Disclaimer : projet purement théorique — aucune exécution réelle
Site web Responsive (2024)
Réalisation de site en HTML, CSS et JavaScript. Avec pour objectif de découvrir les langages web.
Projets collaboratifs
Bomberman JavaFX (2025)
-
Bomberman
Reproduction du jeu Bomberman, en Java et interface JavaFX
Sommaire :
Language & outils
Objectif
- Faire exploser les ennemis.
- Ne pas mourir (3 vies disponibles à chaque stage).
- Avancer dans les stages (niveaux).
- Obtenir le meilleur score possible.
Stages (niveau)
- Le jeu commence au stage 1.
- Pour passer au stage suivant, vous devez tuer tous les ennemis.
- À chaque niveau supérieur :
- La carte s'agrandit de 2 cases
- Vous récupérez vos 3 vies
- Vous récupérez le minimum de bombe
Ennemies
- Toucher un ennemi vous fait perdre une vie
- Les ennemis les plus forts sont plus rares et se déplacent plus rapidement
- Ils ne se déplaceront pas dans une explosion
- Tuer plusieurs ennemies avec une bombe rapporte un bonus
Bombes
- 4 types de bombes : normal, colonne, ligne et large
- Détruit les murs de brique (coffre bonus derrière)
- L'explosion ne traverse pas les murs
Coffre bonus
- Un coffre a 33% de chance d'être caché derrière un mur
- Récompense possible :
- 30% : +1 bombe en ligne
- 30% : +1 bombe en colonne
- 10% : +1 bombe large
- 10% : +1 vie
- 20% : Aucune (coffre vide)
Commandes
- Déplacement : touches fléchées, ZQSD ou WASD
- Placer une bombe : touche E
- Choisir une bombe : inventaire ou 1,2,3,4
- Quitter : touche Échap.
- Voir le dépôt sur git

Site web événementiel (2024)