Rezension und Verbesserungsvorschlaege haben ihren Zweck erfuellt und gehoeren
nicht in die Veroeffentlichung. Fuenf der sechs Dateien sind ausgetragen; sie
bleiben lokal liegen, nur der Index kennt sie nicht mehr.
Die Ausnahme ist notwendig, nicht kosmetisch: NEUER_TITEL.md ist seit dem
Zusammenfuehren der Titeltexte die EINE Quelle, aus der titeltexte_04.py die
PDF-Titelseite und den Hero-Block der Startseite speist. Ohne die Datei bricht
lies_titeltexte() mit "Die Quelle des Titeltexts fehlt" ab - ein frischer Klon
koennte das Buch nicht mehr bauen.
Deshalb 'Kritik_und_Verbesserungsvorschlaege/*' plus Gegenausnahme statt eines
Verzeichnismusters: Git kann eine Datei nicht zurueckholen, deren Verzeichnis
als Ganzes ausgeschlossen ist.
Gegengeprueft mit einem simulierten Klon (git checkout-index in ein leeres
Verzeichnis): Dort liegt aus dem Verzeichnis nur NEUER_TITEL.md, und
build_version_04.py --check liefert dieselben Zahlen wie lokal - 5 Teile,
23 Kapitel, 6 Anhaenge, 998 Querverweise, 456 Indexmarken.
CLAUDE.md und README.md beschrieben das Verzeichnis noch als vollstaendige
Quelle; beide sind nachgezogen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Der Anlass war messbar. Der Live-Stand vor dem Skript:
/OR/ 200
/OR/anhang-glossar-literatur.html 200 <- Leiche des vorigen Stands
/OR/anhang-glossar.html 404
/OR/notebooks.html 404
/OR/Notebooks_04.zip 404
/OR/Notebooks_04/ 403
scp -r ueberschreibt nur, es loescht nie - die alte Glossar-Seite bliebe
dauerhaft erreichbar. Das Zielverzeichnis vorher zu leeren waere die grobe
Antwort: Bricht die Uebertragung von 23 MB in 213 Dateien ab, ist die Website
tot. rsync --delete uebertraegt nur Geaendertes und entfernt genau das, was
verschwunden ist.
Der zweite Grund wiegt schwerer: Die Website hing wochenlang einen Bau
zurueck, ohne dass es auffiel. Vier Schritte:
1. Vorpruefung - ist eine Quelldatei neuer als die gebaute Website, Abbruch.
Ebenso: PDF der Website byte-genau wie das gebaute, Verzeichnis-
Weiterleitungen vorhanden (der Grund fuer den 403).
2. Probelauf - zaehlt Uebertragungen und Loeschungen. Mehr als 30 Loeschungen
brechen ab; das ist der Schutz gegen einen falschen Zielpfad, mit dem
--delete sonst ein fremdes Verzeichnis ausraeumt. --loeschgrenze hebt an.
3. Uebertragung (rsync -rltz --chmod=D755,F644 ueber ssh).
4. Nachpruefung - 14 Adressen per HTTP, Statuscode gegen Erwartung. Darunter
die Probe, dass die entfernte Seite wirklich 404 liefert.
Anmeldung per SSH-Schluessel, nicht per Passwort in der .env: rsync und scp
haben keine Passwort-Option, ein Passwort braeuchte sshpass und staende
waehrend der Uebertragung in der Prozessliste. Die .env (in .gitignore,
Vorlage .env.beispiel) enthaelt nur Host, Benutzer, Zielpfad und URL.
Beim ersten Test lief die Pruefung in eine irrefuehrende Meldung ("kein rsync
installiert"), waehrend in Wahrheit schon die Anmeldung fehlschlug. Die
Pruefung unterscheidet die Faelle jetzt am ssh-Rueckgabewert 255 und nennt
ssh-copy-id.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Erster Commit des Strangs "Optimierte Entscheidungsfindung mit Python"
(Version 04). Die Historie der 71 Commits bis zur Trennung bleibt im
uebergeordneten Repository OR_mit_Python liegen, das ab jetzt nur noch
Version_03 (eingefroren) verwaltet und Version_04/ ignoriert.
Bewusst kein "git subtree split": Der Pfad Version_04/ existiert erst seit
der Verzeichnistrennung, ein Split braechte daher nur 7 der 41 einschlaegigen
Commits - eine Teilhistorie, die vollstaendig aussieht und es nicht ist.
Stand: 5 Teile, 23 Kapitel, 5 Anhaenge, 292 Abschnitte, 703 Querverweise,
325 Indexmarken, 73 Beispielprogramme, 32 SVGs, 4 Plotly-Figuren,
25 Notebooks, PDF mit 715 Seiten.
Zusaetzlich in diesem Commit:
* pyproject.toml mit Abhaengigkeitsgruppen finance, large-scale, api,
figures, dev, empfehlungen. Die abgedruckte requirements.txt bleibt
unveraendert daneben bestehen. ortools steht in der Grundausstattung,
highspy erst in [large-scale] - so kann der HiGHS-Symbolkonflikt bei der
schlanken Installation gar nicht erst auftreten.
* Dabei zwei Funde: graphviz wird von erzeuge_architektur_diagramme.py
importiert, fehlt aber in requirements.txt (jetzt in [figures]); pymoo
steht in requirements.txt, wird aber von keinem Programm importiert,
sondern nur im Kapitel Metaheuristiken empfohlen (jetzt in
[empfehlungen]).
* NEUER_TITEL.md nach Kritik_und_Verbesserungsvorschlaege/ verschoben - es
ist die Vorlage des Titelblatts, kein Bestandteil des Werks. Die beiden
Fundstellen in PROGRESS.md und erzeuge_titelseite.py nachgezogen.
* PROGRESS.md nannte noch den Untertitel der ersten Fassung; auf den
tatsaechlichen aus erzeuge_titelseite.py korrigiert.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>