Dokumentation nachgezogen - und dabei den neunten Fund gemacht
Der Leser-Wegweiser Operations_Research_mit_Python_Version_04/README.md, die Datei, die Leser als erstes oeffnen, beschrieb noch die Struktur der Version 03: * 12 der 15 Kapitelnummern falsch. "20_Lineare_Programmierung.md | 4" - es ist Kapitel 5. Bei den Finanzkapiteln lag die Abweichung bei sieben: README 11, tatsaechlich 18. * 8 der 23 Kapitel fehlten ganz (Metaheuristiken, Spaltengenerierung, Mehrziel, Predict-then-Optimize, Testing und drei weitere). * 93_Anhang_Spickzettel.md fehlte in der Anhangtabelle; der Bauabschnitt nannte dreimal build_version_03.py statt _04 und beschrieb --html als "Single-Page-HTML", obwohl es laengst eine mehrseitige Website erzeugt. Dieselbe Regel wie acht Mal zuvor, dieselbe Behandlung: Die Tabelle wird erzeugt, nicht korrigiert. schreibe_kapiteltabelle() ersetzt den Block zwischen den KAPITELTABELLE-Marken aus der Struktur, die baue_seiten_registry() ohnehin ermittelt - derselben Quelle, aus der die Nummern im Buch stammen. --check meldet einen veralteten Block und bricht ab. Gegenprobe: alle 37 Dateien aus DATEIEN stehen in der Uebersicht. Weiter nachgezogen: * CLAUDE.md kannte veroeffentliche_04.py nicht und nannte .env.beispiel nicht. Der Abschnitt "Veroeffentlichung" beschrieb noch das Kopieren von Hand samt curl-Kontrolle - das erledigt jetzt das Skript. * Fundzahl der Nummern-Regel: CLAUDE.md sagte sieben, README acht, PROGRESS dokumentiert einen "Achter Fund". Jetzt ueberall neun. * Diagrammzahl: CLAUDE.md zaehlt 32 Kapiteldiagramme, README 33 - der Unterschied ist titelseite.svg. Das steht jetzt dabei. Nebenbei am Upload-Skript: rsync bekommt --checksum. Der Bau schreibt alle 42 Seiten bei jedem Lauf neu, auch ohne inhaltliche Aenderung; nach Zeitstempel und Groesse waeren das jedes Mal rund 19 MB sinnlose Uebertragung. Gemessen nach einem Neubau ohne Aenderung: 0 statt 151 Dateien. Website unveraendert - kein Upload noetig, der Probelauf meldet 0 zu uebertragen und 0 zu loeschen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
e3ff5846f6
commit
3d85488d7c
6 changed files with 212 additions and 42 deletions
39
CLAUDE.md
39
CLAUDE.md
|
|
@ -39,6 +39,8 @@ pyproject.toml Quelle: Abhängigkeiten in Gruppe
|
|||
Dockerfile, .dockerignore Quelle: Kurs-Image (Programme + JupyterLab)
|
||||
LICENSE, LICENSE-TEXT.md MIT fuer Code, CC BY-SA 4.0 fuer den Text
|
||||
.gitattributes LF im Repository, egal auf welchem System
|
||||
.env.beispiel Vorlage; die echte .env (Ziel des Uploads)
|
||||
ist bewusst NICHT im Repository
|
||||
pandoc-defaults-basis.yaml, pandoc/, pandoc-defaults-buch.yaml PDF-Konfiguration
|
||||
```
|
||||
|
||||
|
|
@ -60,8 +62,17 @@ cd Version_04
|
|||
python3 Operations_Research_mit_Python_Version_04/build_version_04.py --check # nur prüfen
|
||||
python3 Operations_Research_mit_Python_Version_04/build_version_04.py --pdf --html
|
||||
python3 Operations_Research_mit_Python_Version_04/extract_programme_04.py
|
||||
python3 Operations_Research_mit_Python_Version_04/veroeffentliche_04.py # hochladen
|
||||
```
|
||||
|
||||
`veroeffentliche_04.py` lädt `OR_HTML_04/` per `rsync --delete` nach <https://jamulix.de/OR/>
|
||||
— **nicht** per `scp`, denn das überschreibt nur und löscht nie; eine aus dem Buch entfernte
|
||||
Seite bliebe sonst dauerhaft online. Vorher prüft es, ob eine Quelldatei neuer ist als die
|
||||
gebaute Website (die Website hing einmal wochenlang einen Bau zurück, ohne dass es auffiel),
|
||||
hinterher ruft es vierzehn Adressen per HTTP ab. Bei mehr als 30 Löschungen bricht es ab —
|
||||
die Liste ist dann anzusehen, bevor `--loeschgrenze N` sie freigibt. Ziel in `.env`
|
||||
(nicht im Repository, Vorlage `.env.beispiel`); Anmeldung per SSH-Schlüssel, kein Passwort.
|
||||
|
||||
`--check` prüft mehr als die Struktur: fehlende Codezäune, Links auf nicht existierende
|
||||
Dateien und **harte Kapitel-/Abschnitts-/Aufgabennummern im Quelltext**. Es meldet Datei und
|
||||
Zeile. Der Suchausdruck erlaubt beliebigen Zwischenraum — der letzte gefundene Fall war ein
|
||||
|
|
@ -76,9 +87,10 @@ sonst fälschlich als sichtbaren Umbruch dar.
|
|||
## Die wichtigsten Konventionen
|
||||
|
||||
**Keine abgeleiteten Zahlen im Quelltext.** Das ist die Regel, an der dieses Projekt am
|
||||
häufigsten gescheitert ist — **sieben** Mal an verschiedenen Stellen verletzt gefunden
|
||||
häufigsten gescheitert ist — **neun** Mal an verschiedenen Stellen verletzt gefunden
|
||||
(Anhang A, 66 Programm-Docstrings, die Übersichtstabellen der Anhänge, `CLAUDE.md` selbst,
|
||||
eine Tabellenzelle, die 98 Lösungsmarken des Anhangs, neun Denkfehler-Verweise).
|
||||
eine Tabellenzelle, die 98 Lösungsmarken des Anhangs, neun Denkfehler-Verweise, sieben
|
||||
„Übung N.N"-Verweise in alter Zählung, zuletzt die Dateiübersicht des Leser-Wegweisers).
|
||||
Seit dem letzten Fund trägt **keine** Marke mehr eine handgeschriebene Nummer, und `--check`
|
||||
bewacht jede Familie. Konkret:
|
||||
|
||||
|
|
@ -95,6 +107,11 @@ bewacht jede Familie. Konkret:
|
|||
einer bereits nummerierten Überschrift. Verwiesen wird auf
|
||||
`{ref:sec:<kapitel>-denkfehler}`.
|
||||
* Im Fließtext `{ref:<label>}`, nie eine Literalzahl.
|
||||
* **Die Dateiübersicht in `Operations_Research_mit_Python_Version_04/README.md`** steht
|
||||
zwischen `<!-- KAPITELTABELLE:ANFANG -->` und `<!-- KAPITELTABELLE:ENDE -->` und wird von
|
||||
`schreibe_kapiteltabelle()` aus derselben Struktur erzeugt wie die Nummern im Buch. Nicht
|
||||
von Hand bearbeiten — `--check` meldet einen veralteten Block, ein Lauf ohne `--check`
|
||||
zieht ihn nach.
|
||||
* In Code-Kommentaren und Docstrings der Kapitel**name** („Kapitel Metaheuristiken:"), nie
|
||||
die Nummer. Auch nicht im Dateinamen.
|
||||
|
||||
|
|
@ -137,8 +154,10 @@ gehört wie die Arbeit, die sie beschreibt.
|
|||
|
||||
## Diagramme
|
||||
|
||||
`bilder_04/erzeuge_*.py` erzeugen 18 der 32 SVGs, jeweils **aus derselben Instanz wie das
|
||||
zugehörige Buchprogramm**. Das ist kein Selbstzweck: Von zehn nachgebauten Bildern förderten
|
||||
`bilder_04/erzeuge_*.py` erzeugen 18 der 32 Kapiteldiagramme, jeweils **aus derselben
|
||||
Instanz wie das zugehörige Buchprogramm**. (Das 33. SVG im Verzeichnis ist `titelseite.svg`,
|
||||
die der Build bei jedem Lauf selbst schreibt — deshalb nennt `README.md` 33 und diese Datei
|
||||
32.) Das ist kein Selbstzweck: Von zehn nachgebauten Bildern förderten
|
||||
sieben einen Fehler zutage — dreimal ein Modell, das im Buch gar nicht vorkommt, einmal
|
||||
widersprüchliche Zahlen zwischen Bild und Text, einmal ein gekipptes Vorzeichen. Wer ein
|
||||
Diagramm anfasst, vergleicht es zuerst mit dem Modell des Kapitels.
|
||||
|
|
@ -174,10 +193,14 @@ Die Website hat vier Übersichtsseiten: `index.html` (Landing), `programme.html`
|
|||
weiterleitet — sonst antwortet der Webserver mit 403, weil Directory-Listing abgeschaltet
|
||||
ist.
|
||||
|
||||
**Nach jedem `--pdf --html` muss `OR_HTML_04/` neu auf den Webserver kopiert werden** — sonst
|
||||
laeuft die veroeffentlichte Fassung dem Repository hinterher. Woran man das merkt: Ein
|
||||
`curl -s https://jamulix.de/OR/lp.html | grep -c colab.research` muss **0** ergeben, und die
|
||||
Groesse des dort liegenden PDF muss zur lokalen Datei passen.
|
||||
**Nach jedem `--pdf --html` gehoert `veroeffentliche_04.py` hinterher** — sonst laeuft die
|
||||
veroeffentlichte Fassung dem Repository hinterher, und genau das ist einmal wochenlang
|
||||
unbemerkt geblieben. Von Hand muss dabei nichts mehr geprueft werden: Das Skript weigert
|
||||
sich, einen veralteten Bau hochzuladen, und ruft anschliessend vierzehn Adressen ab.
|
||||
|
||||
Der erste Lauf am 08.09.2026 uebertrug 213 Dateien und loeschte 35 — 33 verwaiste PNGs, ein
|
||||
leeres `__pycache__/` und die geteilte Anhangseite. Alle 35 haette ein `scp`-Upload stehen
|
||||
gelassen.
|
||||
|
||||
**`COLAB_BASIS_URL` ist bewusst leer.** Colab oeffnet Notebooks nur aus GitHub, Google Drive
|
||||
oder einem Upload; die URL-Form `colab.research.google.com/github/...` ist fest auf GitHub
|
||||
|
|
|
|||
Loading…
Reference in a new issue