Files
guides/templates/Format/ExtendedGuide.md
2026-05-25 19:33:48 +02:00

7.2 KiB
Raw Blame History

EXTENDED-GUIDE-STIL (HTML/CSS → PDF via WeasyPrint)

FORMAT
- A4 Hochformat, mehrseitig
- @page { size: A4; margin: 22mm 20mm 20mm 20mm; }
- @page :first { margin: 0; } für Cover
- Footer: Seitenzahl Mitte, Guide-Titel rechts (außer Cover)

UMFANG
- 15-20 Kapitel à ~15 Min Lesezeit
- ~1500 Wörter Fließtext pro Kapitel (gleich wie alle anderen Stufen)
- 2-3 Code-Beispiele pro Kapitel (gleich wie alle anderen, 5-15 Zeilen)
- 50-70 Seiten gesamt
- ~4-5h Lesezeit gesamt

EINSTIEGSNIVEAU
- Setzt Anfänger- UND Fortgeschritten-Guide voraus
- Grundbegriffe und fortgeschrittene Patterns werden NICHT mehr erklärt
- Verweist bei Bedarf auf vorherige Guides
- Geht direkt in Internals, Spezial-Themen und Edge-Cases

UNTERSCHIED ZU FORTGESCHRITTEN-GUIDE
- Kapitel-Größe IDENTISCH (1500 Wörter, 2-3 Code-Beispiele, 15 Min)
- Unterschied liegt nur in:
  - THEMEN (Experten/Nischen, Internals, Sprach-Mechanismen)
  - VORAUSGESETZTEM WISSEN (alle Patterns aus Fortgeschritten)
  - KAPITEL-ANZAHL (15-20 statt 12-15)
  - "WARUM" über "WIE" (mehr Trade-Offs, mehr Design-Entscheidungen)

KAPITEL-PROGRESSION
- Aufgeteilt in 3 Teile mit eigenen TOC-Sektionen
- Beispiele für PHP:
  - Teil 1: Sprach-Internals — Reflection, SPL, Stream-Wrapper, GC, FFI
  - Teil 2: Performance & Async — OpCache, Fibers, ReactPHP, Profiling, Caching
  - Teil 3: Architektur & Patterns — DI-Container, Event-Dispatcher, CQRS, DDD, Hexagonal, Event Sourcing
- Jedes Kapitel geht in Bereiche, wo die meisten Entwickler nicht hingehen
- Bewusst dort, wo Mainstream-Tutorials aufhören

STRUKTUR
1. Cover: vollflächiger Hintergrund, Hero-Aussage mit "an der Grenze" oder ähnlichem Tone
2. Inhaltsverzeichnis: 3 Teile, nummeriert, Zeit-Marker (15 Min) - kann auf zwei Seiten brechen
3. Kapitel 1-N
4. Ending: Spaced-Repetition-Plan, nächste Schritte (außerhalb des offiziellen Lernpfads), Begleitmaterial

KAPITEL-AUFBAU
1. Kapitel-Head: große Nummer + Titel + Subtitle, Trennlinie
2. Gap-Opener: kursiv eingerahmt, anspruchsvolles Problem oder Tief-Frage
3. 3-5 H2-Sektionen (mehr als im Fortgeschritten-Guide)
4. Pro Sektion: Erklärtext + Code-Beispiel + ggf. Callout
5. Recall-Box am Ende (3 Fragen, anspruchsvoller als alle Stufen davor)

CODE-BEISPIELE
- Production-Code-Niveau, keine Demos
- Echte Library-Namen (Symfony, Doctrine, ReactPHP, EventSauce)
- Internals-Code zur Erklärung von PHP-Mechanismen
- Vereinfachte Implementierungen echter Frameworks
- Länge bleibt 5-15 Zeilen (wie alle anderen Stufen)

ELEMENTE
- Fließtext: justify mit Silbentrennung
- Codeblöcke: dunkler Hintergrund, syntax highlighting
- Inline-Code: heller Hintergrund, Hauptfarbe
- Tabellen: Header farbig (Hauptfarbe-Dunkel), Vergleichstabellen mit Trade-Offs
- Callouts in 3 Varianten: tip (grün), warn (rot), note (Hauptfarbe)
- Recall-Box: dunkler Hintergrund mit Akzentfarbe

TYPOGRAFIE
- Body: 10.5pt Serif (Charter), line-height 1.55
- H1 Kapitel: 22pt Sans-Serif bold, Hauptfarbe-Dunkel
- H2 Sektion: 14pt Sans-Serif bold
- H3 Subsektion: 11pt Sans-Serif bold
- Code: 8.5pt Monospace, line-height 1.5
- Inline-Code: 9pt Monospace
- Recall/Callout-Labels: 8pt uppercase, letter-spacing 1pt
- Cover-H1: 56pt Sans-Serif bold, letter-spacing -2pt

FARBEN (max 3 + Neutrals)
- Hauptfarbe: kräftig, an offizielle Farbe des Themas anlehnen
- Hauptfarbe-Dunkel: dunklere Variante für Headings und Akzente
- Hauptfarbe-Darker: noch dunkler für Cover-Verlauf und Recall-Box
- Hintergrund-Soft: helle Variante der Hauptfarbe
- Code-Hintergrund: #1e2a3a (dunkel)
- Text: #1a1a1a / muted #5a6470 / Linie #d8dde3
- Callout-Farben: grün/rot/Hauptfarbe

INFORMATION-GAP-OPENER (PFLICHT pro Kapitel)
- Kursiv, eingerahmt mit Hauptfarbe-Border
- Anspruchsvolles Problem oder Internals-Frage als Aufhänger
- Niveau: setzt fortgeschrittene Praxis voraus
- Beispiele:
  - "Wie weiß Symfony zur Laufzeit, welche Routen in deinem Controller stecken?"
  - "PHP räumt Speicher automatisch auf  meistens. Aber in Long-Running-Prozessen..."
  - "Anämische Entities sind in PHP weit verbreitet..."

RECALL-BOX (PFLICHT pro Kapitel)
- Am Kapitel-Ende
- 3 Fragen, anspruchsvoller als Fortgeschritten
- Fragen nach Warum/Wofür/Wann genau statt Was/Wie
- Code-Snippets in Fragen mit Akzentfarbe hervorgehoben

ENDING (PFLICHT)
- Spaced-Repetition-Plan: 4 Karten (Heute, +7 Tage, +30 Tage, +90 Tage)
  - Sehr langfristige Spacing-Abstände
  - Aufgaben anspruchsvoll (eigenes Spezialprojekt, Source-Code lesen)
- "Was als nächstes lernen" — bewusst außerhalb offizieller Lernpfade
  (Source-Code, eigene Extensions, Sprach-Design, RFCs)
- Verweis auf ALLE Begleitmaterialien (komplette Reihe)

CALLOUT-NUTZUNG
- tip (grün): Best Practice für Spezial-Cases, Library-Empfehlung
- warn (rot): subtile Fallen, Architektur-Anti-Patterns, Komplexitäts-Warnungen
- note (Hauptfarbe): Hintergrund-Info, alternative Lösung, "wann lohnt sich das"

CALLOUT-CSS WICHTIG
- .callout-body > b:first-child mit display:block für Label
- NICHT .callout-body b global mit display:block (zerstört Inline-Bold)
- Mehrzeiliger Body-Text in <p style="margin:0;"> wrappen wenn Inline-Bolds drin sind

GAP-CSS WICHTIG
- .gap > b:first-child mit display:block für "FRAGE ZUM EINSTIEG"-Label
- NICHT .gap b global mit display:block (zerstört Inline-Bold im Frage-Text)
- Bei Inline-Bolds im Gap-Text wird sonst jedes <b> zum Block

THEMENSPEZIFISCHE ANPASSUNGEN (vor Generierung wählen)
- Hauptfarbe: offizielle Farbe des Themas
- Logo-Buchstabe(n) oder Kürzel
- Version + Stand-Datum
- 15-20 Kapitel-Titel: Internals, Spezial-Themen, Production-Edge
- Themen, die der Mainstream-Entwickler nicht täglich braucht

PFLICHT-ELEMENTE PRO KAPITEL
- 1 Gap-Opener am Anfang
- 2-3 Code-Beispiele (5-15 Zeilen, gleich wie alle anderen Stufen)
- Mindestens 1 Callout
- 1 Recall-Box am Ende

VERMEIDEN
- Wiederholung von Anfänger- und Fortgeschritten-Themen
- Einleitungs-Floskeln ("In diesem Kapitel lernen wir...")
- Übersichts-Inhalt (steht im OnePager)
- Reine Referenz-Tabellen (stehen im Cheatsheet)
- Toy-Beispiele (Production-Niveau zeigen)
- Themen, die der Mainstream-Entwickler täglich braucht
  (gehören in Anfänger oder Fortgeschritten)
- page-break mitten in Codeblock oder Callout (page-break-inside: avoid)
- Mehr als 3 Schriftgrößen pro Sektion
- Floats oder absolute positioning (bricht in WeasyPrint)

GENERIERUNG MIT FEEDBACK-LOOP (max 3 Iterationen)
1. HTML schreiben (sehr langes Dokument, ~3500-5000 Zeilen typisch)
2. weasyprint file.html file.pdf (Timeout 300s, große Datei)
3. PDF zu PNGs: alle Seiten konvertieren (dpi=90 für Memory-Effizienz)
4. Schlüsselseiten ansehen: Cover, TOC, Kapitel 1, mittlere Seite, Ending
5. Prüfen:
   - Cover randlos und ohne Footer?
   - TOC zeigt alle 3 Teile? (kann auf 2 Seiten brechen bei 15+ Kapiteln, OK)
   - Kapitel beginnen auf neuer Seite?
   - Code-Blöcke nicht über Seitenumbruch zerrissen?
   - Recall-Boxen vollständig sichtbar?
   - Footer mit Seitenzahl korrekt?
   - Setzt der Guide spürbar Anfänger+Fortgeschritten-Wissen voraus?
   - Sind Themen wirklich Experten-/Nischen-Niveau?
   - Inline-Bolds in Gap-Openers und Callouts korrekt (nicht als Blöcke)?
6. Bei Problemen: fixen, ab Schritt 2 wiederholen
7. Nach max 3 Iterationen ausgeben

INSTALLATION
- pip install weasyprint pdf2image
- apt install poppler-utils