Commit graph operations_research/.gitignore
Author SHA1 Message Date
dschlueter
509ce021da NEUER_TITEL.md zu den Quellen, Kritik-Verzeichnis ganz heraus
Der erste Anlauf schloss Kritik_und_Verbesserungsvorschlaege/ mit einer
Gegenausnahme aus, weil NEUER_TITEL.md darin lag und der Bau ohne diese Datei
abbricht:

    Kritik_und_Verbesserungsvorschlaege/*
    !Kritik_und_Verbesserungsvorschlaege/NEUER_TITEL.md

Das funktionierte, war aber die schlechtere Loesung: Eine Bauquelle blieb in
einem Verzeichnis liegen, das aus dem Repository verschwinden soll. Jetzt
steht sie als Operations_Research_mit_Python_Version_04/NEUER_TITEL.md bei den
uebrigen Quellen, und .gitignore braucht nur noch eine Zeile.

Eine Stelle im Build musste mit: pruefe_dateien() meldet jede .md im
Quellverzeichnis, die weder in DATEIEN steht noch mit README beginnt, als
"nicht eingebundene Datei". Die bis dahin leere Menge KEINE_KAPITELDATEIEN
fuehrt jetzt NEUER_TITEL.md - eine Quelle, aber keine Kapiteldatei.

Der Nachweis, dass der Umzug nichts veraendert hat, brauchte einen Umweg: Die
Pruefsumme von titelseite.svg aenderte sich - aber nur, weil das Fussband das
Tagesdatum traegt und inzwischen der 9. September war. Mit dem Datum des
Vortags erzeugt, ist die Datei byte-identisch zum committeten Stand
(1b076697...). Dass der Text unveraendert ist, zeigt schon der
Strukturvergleich: 721 Glyphenverweise und 81 Pfaddefinitionen in beiden
Fassungen.

Gegengeprueft mit einem simulierten Klon (git checkout-index in ein leeres
Verzeichnis): Das Kritik-Verzeichnis fehlt dort vollstaendig, NEUER_TITEL.md
liegt im Quellverzeichnis, und --check liefert dieselben Zahlen wie lokal.

Was das NICHT leistet: Die fuenf Dateien verschwinden aus kuenftigen Klons,
nicht aus der Historie. Wer einen alten Commit auscheckt, bekommt sie
weiterhin.

Veroeffentlicht: 5 Dateien uebertragen, PDF unveraendert 781 Seiten.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 00:31:16 +02:00
dschlueter
7f32ef3b8d Kritik_und_Verbesserungsvorschlaege in .gitignore - mit einer Ausnahme
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>
2026-09-08 22:22:35 +02:00
dschlueter
d566cf8dac veroeffentliche_04.py: Upload mit rsync --delete und Nachpruefung
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>
2026-09-08 16:28:22 +02:00
dschlueter
b7af2f1d9a Version 04 als eigenes Repository
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>
2026-09-08 01:20:09 +02:00