projet2
Ce depot contient un site pedagogique genere a partir de Markdown, avec injection automatique de benchmarks (SQLite + Highcharts), extraction de contenu depuis PDF et mise en forme via un layout PHP commun.
- Statut
- archivé
- Contribution
- 52 commits sur 62
- Stack
- PHP, Assembly, JavaScript
- Version
- v1.2
- Début
- déc. 2025
- Fin
- mars 2026
Ce depot contient un site pedagogique genere a partir de Markdown, avec injection automatique de benchmarks (SQLite + Highcharts), extraction de contenu depuis PDF et mise en forme via un layout PHP commun.
1) Objectif du projet
Le site presente des etudes de cas autour de l'assembleur (x86 32/64), avec:
- des chapitres rediges en Markdown;
- des blocs de code exportes automatiquement;
- des tableaux + graphiques de performances injectes depuis une base SQLite;
- un pipeline d'extraction/import depuis un PDF source.
2) Architecture du depot
Principaux repertoires:
site_web/: site genere (HTML statique), styles, JS, data, templates;site_web/pages-md/: sources Markdown des chapitres;site_web/markdown_to_php/build.php: pipeline principal Markdown -> HTML;site_web/markdown_to_php/templates/layout.php: layout commun;site_web/ez_web.php: header/footer/menu + helpers historiques;site_web/data/benchmarks.db: base SQLite des benchmarks;site_web/data/graph.js: rendu des graphiques Highcharts;pdf_extract/: scripts d'analyse/extraction/import depuis PDF;lar/: dossiers de travaux benchmarks assembleur/C/C++ (sources et scripts de perf).
3) Prerequis
Minimum recommande:
- PHP 8.x;
- Composer;
- extension PDO SQLite active dans PHP;
sqlite3(CLI, utile pour debug base);pdftotext(poppler-utils) pour certains scripts d'extraction;- dependances Composer installees (
smalot/pdfparser).
4) Installation rapide
Depuis la racine du projet:
cd /home/etud/PhpstormProjects/projet2
composer install
Optionnel (outils extraction PDF):
sudo apt install -y poppler-utils sqlite3
5) Comment le site est genere
Le flux principal est:
- lire chaque fichier
site_web/pages-md/*.md; - detecter/remplacer les balises speciales (ex:
[BENCHMARK:...]); - convertir Markdown vers HTML (Parsedown);
- post-traiter le HTML (titres, tableaux, blocs de code, nettoyage);
- injecter le layout via
templates/layout.php; - ecrire le resultat dans
site_web/*.html.
Commande:
php site_web/markdown_to_php/build.php
Details importants du build
- Les formules mathematiques
$...$et$$...$$sont protegees avant parsing pour eviter la corruption des_par le parser Markdown. - Les blocs de code Markdown sont exportes vers
site_web/code/chapitre_X/puis affiches dans des<details>avec coloration GeSHi. - Si un benchmark est present,
highcharts.jsetsite_web/data/graph.jssont injectes automatiquement dans la page. - Le lien Accueil du header pointe vers
/(force danssite_web/ez_web.php).
6) Systeme de benchmark dynamique
6.1 Balisage dans le Markdown
Dans un chapitre, il suffit d'ecrire:
[BENCHMARK:nom_du_benchmark]
Exemples utilises:
[BENCHMARK:asm_selfdesc][BENCHMARK:asm_bsr_lzcnt]
6.2 Source des donnees
Le build interroge site_web/data/benchmarks.db, vue v_resultats, en filtrant:
chapitre = nom_du_benchmarktype_test IN ('temps moyen', 'performance')
Vue disponible dans la base:
v_resultats(id_resultat, nom_cpu, marque, annee, chapitre, type_test, nom_test, valeur_resultat, validation, remarque)
6.3 Segmentation des graphiques
Par defaut, un benchmark est split en 3 groupes:
ancien: annee < 2015moderne: 2015 <= annee < 2020recent: annee >= 2020
Cas special: asm_bsr_lzcnt est affiche en vue globale unique.
7) Pipeline PDF (extraction/import)
Repertoire: pdf_extract/
Scripts principaux:
pdf_probe.php: inspection structure PDF;extract_pdf_to_markdown.php: extraction PDF -> fichiers Markdown;extract_chapter_data.php: generation JSON de donnees chapitres;import_benchmark.php: insertion/maj benchmarks dans SQLite.
Configuration centralisee: pdf_extract/config.php (+ pdf_extract/.env).
Variables supportees:
PDF_PATHDB_PATHOUTPUT_DIRDATA_DIR
Exemples:
php pdf_extract/import_benchmark.php --config
php pdf_extract/pdf_probe.php --config
php pdf_extract/extract_pdf_to_markdown.php --config
php pdf_extract/import_benchmark.php
8) Lancer le site en local
Le site genere est statique (HTML/CSS/JS). Pour le consulter localement:
cd site_web
php -S 127.0.0.1:8080
Puis ouvrir:
http://127.0.0.1:8080/index.html- ou directement un chapitre (ex:
chapitre_17.html).
9) Workflow mainteneur recommande
- Modifier un chapitre dans
site_web/pages-md/. - Ajouter/mettre a jour les donnees benchmark via SQLite ou
pdf_extract/import_benchmark.php. - Regenerer:
php site_web/markdown_to_php/build.php. - Verifier visuellement les pages modifiees.
- Commit des fichiers source + HTML regeneres si votre process le demande.
10) Depannage courant
Le graphique ne s'affiche pas
Verifier:
- presence de la balise
[BENCHMARK:...]dans le Markdown; - presence de donnees correspondantes dans
v_resultats(chapitreidentique); - chargement de
highcharts.jsetdata/graph.jsdans la page generee.
Le tableau benchmark est vide
- Verifier que
type_testest bientemps moyenouperformance; - Verifier l'existence du benchmark dans la table
Chapitre+Test+Resultat.
Erreurs sur les formules
Le build protege les formules math avant parsing Markdown. Si une formule casse, verifier que les delimiteurs $...$ ou $$...$$ sont bien fermes.
Scripts PDF en erreur
- verifier le chemin du PDF (
PDF_PATH); - verifier
pdftotextinstalle; - verifier les droits d'ecriture des repertoires de sortie.
11) Fichiers de reference
site_web/markdown_to_php/build.phpsite_web/markdown_to_php/templates/layout.phpsite_web/ez_web.phpsite_web/data/graph.jssite_web/SITE_WEB_DOC.mdpdf_extract/config.phppdf_extract/import_benchmark.php