DjVu-Viewer Integration: Unterschied zwischen den Versionen

Aus djvu-wiki
Zur Navigation springen Zur Suche springen
(DjVu-Viewer Integration Dokumentation auf Deutsch)
 
 
(47 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= DjVu-Viewer Integration =
= DjVu-Viewer Integration =
 
== Gitlab ==
== SICHERHEITSHINWEISE ==
* [https://gitlab.genealogy.net/genwiki/update-auf-1.39/-/issues/17 Issue #17: DjVu Probleme im Rahmen MediaWiki 1.39 upgrade]
* '''NIEMALS wiki.genealogy.net ändern''' - Produktions-Wiki, absolut verboten
* [https://gitlab.genealogy.net/genwiki/update-auf-1.39/-/issues/53 Issue #53: Hostsharing Server]
* '''NIEMALS fur.bitplan.com ändern''' - Intranet-Quellserver, nur lesend via scp
* '''NIEMALS genwiki39d.bitplan.com ändern''' - Intranet-Docker-Wiki, nur lesend
* Alle Arbeiten beschränken sich auf '''djvu-wiki.genealogy.net''' und '''genwiki39e.genealogy.net''' auf vm2180


== Server-Topologie ==
== Server-Topologie ==
Zeile 22: Zeile 19:
| <code>genwiki39d</code> || http://genwiki39d.bitplan.com || fur.bitplan.com (nur Intranet)
| <code>genwiki39d</code> || http://genwiki39d.bitplan.com || fur.bitplan.com (nur Intranet)
|-
|-
| <code>djvu-viewer</code> || http://djvu.bitplan.com || fur.bitplan.com (nur Intranet)
| Produktion || https://wiki.genealogy.net || hetzner
|-
| Produktion || https://wiki.genealogy.net || '''VERBOTEN, separater Server'''
|}
|}
== DjVu-Viewer ==
* http://djvu.bitplan.de - auf diesem Server (djvu-viewer.genealogy.net DNS Eintrag in Arbeit )
* http://djvu.bitplan.com  - fur.bitplan.com (nur Intranet)


== Hintergrund ==
== Hintergrund ==


* Ursprung: [https://stackoverflow.com/questions/45984437/djvu-thumbnails-are-not-being-generated-at-all DjVu-Thumbnails werden überhaupt nicht erzeugt] (2017)
* Ursprung: [https://stackoverflow.com/questions/45984437/djvu-thumbnails-werden-ueberhaupt-nicht-erzeugt DjVu-Thumbnails werden überhaupt nicht erzeugt] (2017)
* 1,5 Jahre Entwicklung → [https://github.com/WolfgangFahl/djvu-viewer djvu-viewer] - siehe [https://wiki.bitplan.com/index.php/Djvu-viewer wiki.bitplan.com/Djvu-viewer]
* 1,5 Jahre Entwicklung → [https://github.com/WolfgangFahl/djvu-viewer djvu-viewer] - see [https://wiki.bitplan.com/index.php/Djvu-viewer wiki.bitplan.com/Djvu-viewer]
* Grundursache: Nicht-gebündelte (indirekte) DjVu-Dateien verursachen <code>DjVuImage::getMultiPageInfo: multi-page DJVU file contained no pages</code>
* Grundursache: Nicht-gebündelte (indirekte) DjVu-Dateien verursachen <code>DjVuImage::getMultiPageInfo: multi-page DJVU file contained no pages</code>
* Lösung: '''Ausschließlich gebündelte DjVu-Dateien verwenden'''
* Lösung: '''Ausschließlich gebündelte DjVu-Dateien verwenden'''
Zeile 42: Zeile 40:
* djvu-viewer (nur Intranet) verwendet derzeit Tar-Pakete; direkte <code>.djvu</code>-Lesefunktion geplant
* djvu-viewer (nur Intranet) verwendet derzeit Tar-Pakete; direkte <code>.djvu</code>-Lesefunktion geplant


== Aufgabe ==
Das [https://wiki.genealogy.net GenWiki] wird von [https://www.mediawiki.org/wiki/MediaWiki_1.35/de MediaWiki 1.35] auf [https://www.mediawiki.org/wiki/MediaWiki_1.39/de MediaWiki 1.39 LTS] migriert (siehe [https://genwiki39.genealogy.net/Migration2025-11 Migration2025-11]). Die '''DjVu-Anzeige''' ist eines von drei Kernproblemen dieser Migration.
Das GenWiki enthält ca. 4000 DjVu-Dateien — überwiegend genealogische Adressbücher — die mit Orten im [https://gov.genealogy.net GOV (Genealogisches Ortsverzeichnis)] verknüpft sind. Ca. 50% dieser Dateien lagen unbundled vor, was zusammen mit einzeln gespeicherten Thumbnails zu einem Speicherbedarf von ~4 TB führte.
Der [https://wiki.bitplan.com/index.php/Djvu-viewer djvu-viewer] löst dieses Problem durch Konvertierung zu gebündelten TAR-Paketen. Auf <code>fur.bitplan.com</code> sind die Dateien bereits vorbereitet:
* <code>/hd/yuyu</code> (4 TB SSD) — konvertierte TAR-Pakete (1,8 TB), bis auf 10 Fehler vollständig
* <code>/hd/luxio</code> (10 TB HDD) — gebündelte <code>.djvu</code>-Dateien
Da vm2180 nur ~1 TB Platz hat, werden zunächst die Dateien mit Präfix '''A und B''' (333 Dateien) übertragen. Das [[Hauptseite|djvu-wiki]] dient als Testumgebung; Hardlinks nach <code>genwiki39e</code> stellen sicher dass das zukünftige Produktivwiki dieselben Dateien ohne Zusatzspeicher nutzen kann.
== Ziele ==
* '''Optische Prüfung''': DjVu-Seiten werden im djvu-wiki systematisch dargestellt und sind visuell prüfbar
* '''Semantische Prüfung''': GOV-Verknüpfungen bleiben erhalten und sind per SMW-Query abfragbar (siehe [[Semantifizierung]])
* '''Batch-Verarbeitung''': komplette Anfangsbuchstaben werden in einem Durchgang migriert, mit Statistik über Erfolge und Probleme
* '''Farm-Ansatz''': Die Query-Patterns sind für alle Wikis der Farm wiederverwendbar — DjVu ist ein Thema, GOV ein anderes, dasselbe Werkzeug bedient beides
== Drei Quellen — eine Abfragesprache ==
Alle Quellen werden über '''named parameterized queries''' abgefragt — ob SQL, SPARQL oder SMW-Ask spielt keine Rolle. Das Muster kommt aus dem [https://github.com/WolfgangFahl/genwiki2024 genwiki2024]-Projekt:
{| class="wikitable"
! Quelle !! Inhalt !! Beispiel-Queries
|-
| Wiki-Datenbank (MariaDB) || Welche DjVu-Dateien und Wiki-Seiten existieren || [https://github.com/WolfgangFahl/genwiki2024/blob/main/genwiki_examples/wiki_queries.yaml wiki_queries.yaml]
|-
| DjVu-Viewer Datenbank (SQLite) || Konvertierungsstatus, Seitenanzahl, Fehler, gebündelt ja/nein || [https://github.com/WolfgangFahl/genwiki2024/blob/main/genwiki_examples/queries.yaml queries.yaml]
|-
| GOV ([https://gov.genealogy.net SPARQL] / [https://github.com/WolfgangFahl/pyomnigraph pyomnigraph]) || Ortsverknüpfungen zu den Dokumenten || [https://github.com/WolfgangFahl/genwiki2024/blob/main/genwiki_examples/gov-queries.yaml gov-queries.yaml]
|}
== Demo-Dateien ==
== Demo-Dateien ==
Logarithmische Seitengrößen, alle gebündelt, alle A/B-Präfix, alle mit Tar-Paketen:
Logarithmische Seitengrößen, alle gebündelt, alle mit Dateinamen-Präfix A oder B, alle mit Tar-Paketen.
Hinweis: <code>AB1934-Oelde.djvu</code> enthält zwar "Oelde" im Namen, fängt aber mit '''A''' an.


{| class="wikitable"
{| class="wikitable"
Zeile 59: Zeile 90:
|}
|}


== Einrichtungsschritte ==
== Vorgehen ==
 
Die folgenden Schritte werden als wiederverwendbares Skript <code>djvu-setup.sh</code> umgesetzt,
damit dasselbe Verfahren später auf alle A/B-Dateien oder bei ausreichend Speicherplatz
auf weitere Präfixe angewendet werden kann.
 
=== Schritt 1 - Verzeichnisse auf vm2180 anlegen ===
<pre>
sudo mkdir -p /var/www/mediawiki/sites/djvu-wiki.bitplan.de/images/{c/c7,b/b8,5/54,d/d1,a/a0}
sudo chown -R www-data:www-data /var/www/mediawiki/sites/djvu-wiki.bitplan.de/images/
</pre>
 
=== Schritt 2 - Dateien von fur kopieren (auf fur.bitplan.com ausführen) ===
Originalzeitstempel werden mit <code>-p</code> erhalten:
<pre>
BASE=/hd/luxio/genwiki/images
VM=wf@vm2180.hostsharing.net:/var/www/mediawiki/sites/djvu-wiki.bitplan.de/images
scp -p $BASE/c/c7/AB1938_Kreis-Beckum_Inhaltsverz.djvu        $VM/c/c7/
scp -p $BASE/b/b8/Auenheim-Frauweiler_Dokument-1693-03-09.djvu $VM/b/b8/
scp -p $BASE/5/54/AB1934-Oelde.djvu                            $VM/5/54/
scp -p $BASE/d/d1/Adressbuch_Husum_1900.djvu                  $VM/d/d1/
scp -p $BASE/a/a0/Aachen-Burtscheit-AB-1887.djvu              $VM/a/a0/
</pre>
 
=== Schritt 3 - Hardlinks in genwiki39e erstellen (auf vm2180, kein zusätzlicher Speicher) ===
Hinweis: <code>wiki.genealogy.net</code> unten bezeichnet den '''lokalen Site-Konfigurationsverzeichnisnamen'''
auf vm2180 für genwiki39e — dies ist NICHT das Produktions-Wiki.
<pre>
DJVU=/var/www/mediawiki/sites/djvu-wiki.bitplan.de/images
GENWIKI=/var/www/mediawiki/sites/wiki.genealogy.net/images
for hpath in c/c7 b/b8 5/54 d/d1 a/a0; do
  sudo mkdir -p $GENWIKI/$hpath
done
sudo ln $DJVU/c/c7/AB1938_Kreis-Beckum_Inhaltsverz.djvu        $GENWIKI/c/c7/
sudo ln $DJVU/b/b8/Auenheim-Frauweiler_Dokument-1693-03-09.djvu $GENWIKI/b/b8/
sudo ln $DJVU/5/54/AB1934-Oelde.djvu                            $GENWIKI/5/54/
sudo ln $DJVU/d/d1/Adressbuch_Husum_1900.djvu                  $GENWIKI/d/d1/
sudo ln $DJVU/a/a0/Aachen-Burtscheit-AB-1887.djvu              $GENWIKI/a/a0/
</pre>
 
=== Schritt 4 - Dateien in MediaWiki via importImages.php registrieren ===
<pre>
WIKI_SITE=djvu-wiki.bitplan.de php /var/www/mediawiki/code/maintenance/importImages.php \
  --user=wf /var/www/mediawiki/sites/djvu-wiki.bitplan.de/images/
</pre>


=== Schritt 5 - Datei:-Seiten von genwiki39 nach djvu-wiki via wikipush kopieren ===
<code>djvu_migration.py</code> — Teil des [https://github.com/WolfgangFahl/djvu-viewer djvu-viewer]-Projekts — kapselt die notwendigen Migrations Schritte:


=== Schritt 6 - Wiki-Seiten im djvu-wiki erstellen ===
# Batch auswählen (z.B. <code>--prefix A</code> für alle Dateien mit Anfangsbuchstabe A)
* Vereinfachte <code>Oelde</code>-Seite mit <code>AB1934-Oelde.djvu</code>
# Drei Quellen zu den betroffenen DjVu-Dateien abfragen und Ergebnisse zusammenführen
* <code>DjVu</code>-Indexseite mit allen 5 Beispielen
# DjVu-Dateien unter Bewahrung der Timestamps kopieren
# Hard-Links zwischen den Wikis erstellen
# Wiki-Seiten im djvu-wiki systematisch erstellen mit [[Vorlage:DjVuViewer]] und [[Vorlage:GOV]]
# Statistik ausgeben: erfolgreich / Fehler / übersprungen — mit Ursachen (eigenartige Codierung, unvollständige Dateien u.a.)


== djvu-setup.sh ==
Fehlerbehandlung und Batch-Logik werden aus dem bestehenden [https://wiki.bitplan.com/index.php/Djvu-viewer djvu-viewer] übernommen.
Ein Skript, das die Schritte 1, 3 und 4 abstrahiert, wird unter
<code>/home/wf/djvu-wiki/djvu-setup.sh</code> erstellt. Es nimmt eine Liste von Dateien
mit ihren Hash-Pfaden als Eingabe entgegen, sodass dasselbe Verfahren später für alle
333 A/B-Dateien oder zukünftige Stapel ausgeführt werden kann.


== Siehe auch ==
== Siehe auch ==
* [[Hauptseite]] - Übersicht der Wiki-Farm
* [[Semantifizierung]]
* [[Hauptseite]]
* [https://wiki.bitplan.com/index.php/Djvu-viewer djvu-viewer Dokumentation (BITPlan Wiki)]
* [https://github.com/WolfgangFahl/djvu-viewer djvu-viewer auf GitHub]
* [https://github.com/WolfgangFahl/djvu-viewer djvu-viewer auf GitHub]
* [https://wiki.bitplan.com/index.php/Djvu-viewer Djvu-viewer Dokumentation (BITPlan Wiki)]
* [https://github.com/WolfgangFahl/genwiki2024 genwiki2024 auf GitHub]
* [https://stackoverflow.com/questions/45984437/djvu-thumbnails-are-not-being-generated-at-all Ursprüngliche Problemstellung (StackOverflow)]
* [https://stackoverflow.com/questions/45984437/djvu-thumbnails-werden-ueberhaupt-nicht-erzeugt Ursprüngliche Problemstellung (StackOverflow 2017)]

Aktuelle Version vom 20. Februar 2026, 15:44 Uhr

DjVu-Viewer Integration

Gitlab

Server-Topologie

wikiId URL Standort
djvu-wiki http://djvu-wiki.genealogy.net vm2180 (dieser Server)
genwiki-farm http://genwiki-farm.genealogy.net vm2180 (dieser Server)
genwiki39e http://genwiki39e.genealogy.net vm2180 (dieser Server)
genwiki39 https://genwiki39.genealogy.net separater öffentlicher Docker-Server
genwiki39d http://genwiki39d.bitplan.com fur.bitplan.com (nur Intranet)
Produktion https://wiki.genealogy.net hetzner

DjVu-Viewer

Hintergrund

Speicherplatz-Beschränkungen

  • vm2180 hat ~2TB — ausreichend nur für Dateien mit Präfix A/B
  • 333 gebündelte A/B-Dateien haben Tar-Pakete in /genwiki/djvu_images/
  • Originale .djvu-Dateien liegen auf fur.bitplan.com:/hd/luxio/genwiki/images/
  • djvu-viewer (nur Intranet) verwendet derzeit Tar-Pakete; direkte .djvu-Lesefunktion geplant

Aufgabe

Das GenWiki wird von MediaWiki 1.35 auf MediaWiki 1.39 LTS migriert (siehe Migration2025-11). Die DjVu-Anzeige ist eines von drei Kernproblemen dieser Migration.

Das GenWiki enthält ca. 4000 DjVu-Dateien — überwiegend genealogische Adressbücher — die mit Orten im GOV (Genealogisches Ortsverzeichnis) verknüpft sind. Ca. 50% dieser Dateien lagen unbundled vor, was zusammen mit einzeln gespeicherten Thumbnails zu einem Speicherbedarf von ~4 TB führte.

Der djvu-viewer löst dieses Problem durch Konvertierung zu gebündelten TAR-Paketen. Auf fur.bitplan.com sind die Dateien bereits vorbereitet:

  • /hd/yuyu (4 TB SSD) — konvertierte TAR-Pakete (1,8 TB), bis auf 10 Fehler vollständig
  • /hd/luxio (10 TB HDD) — gebündelte .djvu-Dateien

Da vm2180 nur ~1 TB Platz hat, werden zunächst die Dateien mit Präfix A und B (333 Dateien) übertragen. Das djvu-wiki dient als Testumgebung; Hardlinks nach genwiki39e stellen sicher dass das zukünftige Produktivwiki dieselben Dateien ohne Zusatzspeicher nutzen kann.

Ziele

  • Optische Prüfung: DjVu-Seiten werden im djvu-wiki systematisch dargestellt und sind visuell prüfbar
  • Semantische Prüfung: GOV-Verknüpfungen bleiben erhalten und sind per SMW-Query abfragbar (siehe Semantifizierung)
  • Batch-Verarbeitung: komplette Anfangsbuchstaben werden in einem Durchgang migriert, mit Statistik über Erfolge und Probleme
  • Farm-Ansatz: Die Query-Patterns sind für alle Wikis der Farm wiederverwendbar — DjVu ist ein Thema, GOV ein anderes, dasselbe Werkzeug bedient beides

Drei Quellen — eine Abfragesprache

Alle Quellen werden über named parameterized queries abgefragt — ob SQL, SPARQL oder SMW-Ask spielt keine Rolle. Das Muster kommt aus dem genwiki2024-Projekt:

Quelle Inhalt Beispiel-Queries
Wiki-Datenbank (MariaDB) Welche DjVu-Dateien und Wiki-Seiten existieren wiki_queries.yaml
DjVu-Viewer Datenbank (SQLite) Konvertierungsstatus, Seitenanzahl, Fehler, gebündelt ja/nein queries.yaml
GOV (SPARQL / pyomnigraph) Ortsverknüpfungen zu den Dokumenten gov-queries.yaml

Demo-Dateien

Logarithmische Seitengrößen, alle gebündelt, alle mit Dateinamen-Präfix A oder B, alle mit Tar-Paketen. Hinweis: AB1934-Oelde.djvu enthält zwar "Oelde" im Namen, fängt aber mit A an.

Datei Seiten Größe Hash-Pfad
AB1938_Kreis-Beckum_Inhaltsverz.djvu 3 50 KB c/c7
Auenheim-Frauweiler_Dokument-1693-03-09.djvu 10 3,9 MB b/b8
AB1934-Oelde.djvu 105 4,1 MB 5/54
Adressbuch_Husum_1900.djvu 313 7,7 MB d/d1
Aachen-Burtscheit-AB-1887.djvu 676 57 MB a/a0

Vorgehen

djvu_migration.py — Teil des djvu-viewer-Projekts — kapselt die notwendigen Migrations Schritte:

  1. Batch auswählen (z.B. --prefix A für alle Dateien mit Anfangsbuchstabe A)
  2. Drei Quellen zu den betroffenen DjVu-Dateien abfragen und Ergebnisse zusammenführen
  3. DjVu-Dateien unter Bewahrung der Timestamps kopieren
  4. Hard-Links zwischen den Wikis erstellen
  5. Wiki-Seiten im djvu-wiki systematisch erstellen mit Vorlage:DjVuViewer und Vorlage:GOV
  6. Statistik ausgeben: erfolgreich / Fehler / übersprungen — mit Ursachen (eigenartige Codierung, unvollständige Dateien u.a.)

Fehlerbehandlung und Batch-Logik werden aus dem bestehenden djvu-viewer übernommen.

Siehe auch