Andreas K. Förster: lesen – Webanwendung zum Veröffentlichen von Literatur

Hauptseite: https://akfoerster.de/lesen/index.xhtml

Projektseite: https://akfoerster.de/p/lesen/

Der Autor würde sich sehr über Rückmeldungen freuen.
<mailto:akf@akfoerster.de>


 0. Überblick

Dieses Programm ist ein Service zum Bereitstellen von Büchern über
Netzwerke. Als Betrachter wird ein normaler Webbrowser mit Unterstützung
für [XHTML] benötigt.
Es können aber auch spezialisierte Betrachter dafür entwickelt werden.

Die Bücher können weltweit über das Internet zugänglich gemacht
werden, oder in einem lokalen Netzwerk, aber auch einfach nur auf
einem einzelnen Computer.


 10. Installation

Das Programm ist in [C] geschrieben und sollte auf allen
[POSIX]-kompatiblen Systemen kompilierbar sein.
Für Windows kann man den Compiler Mingw-w64 verwenden.

Außer einem [C]-Compiler benötigt man entweder einen Webserver mit
Unterstützung für [CGI/1.1], oder ein TCP-Programm, wie „inetd“
oder „ucspi-tcp“ <http://cr.yp.to/ucspi-tcp.html>.

An die verwendbaren Webbrowser werden keine besonderen Anforderungen
gestellt... Ja, es funktioniert auch mit Lynx!
(Lediglich alte Versionen des Internet-Explorers machen Probleme.)

			*	*	*

Zuerst kann man in der Datei „config.h“ einiges umkonfigurieren.
Es gibt auch andere Beispieldateien, mit denen man die „config.h“
ersetzen kann.

Im Folgenden gehe ich von der Standard-Konfiguration aus.


 11. Über einen Webserver als [CGI]

Um das Programm als [CGI] für einen Webserver zu kompilieren gibt
man „make lesen.cgi“ ein. Die Verwendung eines Webservers ist auf jeden
Fall besser, aber auch schwieriger, wenn man den nicht eh schon
eingerichtet hat.

Das erstellte Programm „lesen.cgi“ kopiert man dann zB. als „lesen“
in das Verzeichnis „cgi-bin“ des Webservers. Das Verzeichnis
für die Textdateien sollte als „/usr/local/share/lesen“ angelegt
werden. Als Beispieltext kann man erstmal diese Datei da rein
kopieren.

Die Datei „lesen.css“ sollte in das Wurzelverzeichnis des
Webservers kopiert werden. Außerdem sollte dort eine Datei
namens „kontakt.html“ existieren. Das kann natürlich auch ein
symbolischer Link zum eigentlichen Impressum sein.
(In Deutschland herrscht Impressumspflicht.)

			*	*	*

Verlinken kann man das dann wie in folgendem Beispiel:

<a href="/cgi-bin/lesen/index.xhtml">Bücher</a>

Um ein bestimmtes Buch zu adressieren, gibt man vor dem index
den Kurznamen an, wieder gefolgt von /index.xhtml, diesmal für das
Inhaltsverzeichnis. Der Kurzname ist der Dateiname ohne die
Erweiterung „.txt“.

<a href="/cgi-bin/lesen/2Planeten/index.xhtml">Auf zwei Planeten</a>

Um ein bestimmtes Kapitel abzurufen, gibt man statt index die
Kapitelnummer an:

<a href="/cgi-bin/lesen/2Planeten/1.xhtml">Erstes Kapitel</a>

Man kann sogar einen bestimmten Absatz mit angeben:

<a href="/cgi-bin/lesen/2Planeten/1.xhtml#a81">Absatz 81</a>


 12. Über „inetd“, „tcpserver“ oder Ähnliches

Wenn man keinen vollständigen Webserver installieren will, kann
man das Programm auch als eigenständigen Server über „inetd“ oder
„tcpserver“ oder Ähnliches laufen lassen.

Zunächst sollte man das Verzeichnis „/usr/local/share/lesen“ anlegen.
In diesem Verzeichnis legt man später seine Texte und
index-Dateien ab. Da kann man erstmal diese Anleitung rein packen.
Dort legt man dann noch ein Unterverzeichnis „web“ an.
In das Verzeichnis kopiert man die Datei „lesen.css“.
Dieses Verzeichnis ist das Wurzelverzeichnis des internen
Webservers. Es können dort zum Beispiel auch [PDF]-Dateien,
oder Unterverzeichnisse für [HTML]-Webseiten, angelegt werden.

Da die Erweiterung „.txt“ bei diesem Programm eine besondere Bedeutung
hat, sollten reine Textdateien, welche als solche angezeigt werden
sollen, die Dateiendung „.text“ bekommen. Der Server überträgt die
eingestellte Zeichenkodierung bei allen Textformaten; auch bei
[HTML]-Dateien.

Um das Programm zu kompilieren, gibt man nun „make lesen-http“ ein.

Um es mit „tcpserver“ zu verwenden, kann man es als unpriviligierter
Nutzer beispielsweise wie folgt aufrufen:

tcpserver localhost 8080 ./lesen-http /usr/local/share/lesen

Das kann dann über die Adresse <http://localhost:8080/index.xhtml> abgerufen
werden.  Durch die Angabe „localhost“ ist sichergestellt, dass das nur auf
dem selben System abrufbar ist.

			*	*	*

Um „inetd“ zu verwenden, installiert man das erzeugte Programm
„lesen-http“ dann nach „/usr/local/bin“.

Nun muss man die Datei „/etc/inetd.conf“ anpassen, indem man folgende
Zeile hinzufügt:

http  stream  tcp  nowait  nobody  /usr/sbin/tcpd /usr/local/bin/lesen-http

* Am Ende der Zeile könnte man noch das Hauptverzeichnis und das
  Webverzeichnis hinzufügen. Dann braucht man das Programm nicht neu
  kompilieren, wenn man die ändern will.

* Wenn schon ein anderer Webserver installiert ist, kann man statt „http“ am
  Anfang eine noch freie Portnummer angeben.

Um inetd mitzuteilen, dass die Konfiguration geändert wurde, muss man ihm
ein [HUP]-Signal senden: [killall -HUP inetd].

So, nun müsste man es mit einem Webbrowser aufrufen können: <http://localhost>.

Man kann auch den Zugang einschränken, zum Beispiel auf das lokale
Netzwerk. Genaueres findet man in der Manpage [hosts_access].


 20. Aufbau der Textdateien

Textdateien sollten einen möglichst kurzen Dateinamen haben und auf 
„.txt“ enden. Anstelle von Leerzeichen sollte man im Dateinamen
lieber einen Unterstrich (__) verwenden. Der Dateiname ohne die
Endung wird Teil der Adresse.

Dateien, deren Namen mit „index“ beginnen, werden als Indexdateien
interpretiert (siehe unten).

Die Datei muss in [UTF-8] kodiert sein.

Die erste Zeile beginnt mit dem Namen des Autors, einem Doppelpunkt,
evtl. Freiraumzeichen und dem Titel des Buches. Falls der Autor unbekannt ist,
oder bleiben will, sollte in der Zeile entweder gar kein Doppelpunkt
verwendet werden, oder sie sollte gleich mit einem Doppelpunkt beginnen.
Einen Untertitel kann man durch zwei Schrägstriche abgrenzen.

Dann kann eine kurze Einleitung folgen, die durch die erste Kapitelzeile
abgeschlossen wird.

Kapitelzeilen müssen eingerückt sein, dann kommt eine Kapitelnummer,
gefolgt von einem Punkt, Freiraum und der Kapitelüberschrift.
Falls das Buch keine Kapitelüberschriften hat, kann stattdessen
durchgängig das Wort „Kapitel“ verwendet werden. Ein Vorwort muss die
Kapitelnummer „0.“ tragen. Mehrere Vorworte sollten zu einem Kapitel
zusammengefasst werden.

Kapitel werden durch die nächste Kapitelzeile oder dem Dateieinde
abgeschlossen.

Absätze werden durch eine oder mehrere Leerzeilen dargestellt.

Eine Zeile, die nur Freiraum und Sterne (*) enthält, ist eine
Trennzeile (<hr>).

Ausdrücke in geschweiften Klammern ({Beispiel}) werden betont (<em>).
Anstatt geschweifter Klammern kann man auch die Steuerzeichen
[Shift Out (U+000E)] und [Shift In (U+000F)] verwenden.

Ausdrücke in eckigen Klammern ([Beispiel]) werden ebenfalls unterschiedlich
dargestellt (<i>). Deutsche Bücher, die in Fraktur gesetzt sind, setzen
beispielsweise anderssprachige Ausdrücke in Antiqua.
Die genaue Darstellung kann man in der Datei „lesen.css“ festlegen.

Ein einzelner Unterstrich (_) wird durch ein geschütztes Leerzeichen
ersetzt. Bei einem geschützten Leerzeichen wird ein Zeilenumbruch
an der Stelle verhindert.

Falls man eines dieser Zeichen tatsächlich darstellen lassen
will, muss man es doppelt angeben ({{…}}, [[…]], __).

Verse werden durch zwei Schrägstriche getrennt.

Zicke zacke //
Hühnerkacke

Zwei Schrägstriche erzwingen einen Zeilenumbruch, allerdings wird die
Zeichenkombination „://“ intakt gelassen, da diese in [URL]s verwendet
wird.

[URI]s werden automatisch erkannt für die Schemata http, https, ftp, ftps,
file, mailto, gopher, shttp, sftp, ssh, tel, telnet und urn.
Zur Abgrenzung zum umgebenden Text sind zB. Freiraum, spitze Klammern,
oder Anführungsstriche geeignet (siehe [RFC-3986], Anhang C).
Die Adresse muss jedoch zusammenhängend, in einer einzigen Zeile stehen.

Runde Klammern kann man beispielsweise nicht verwenden, da diese Teil der
[URI] sein könnten. Freiraum, oder Zeilenumbrüche innerhalb von [URI]s
sind nicht zulässig.

Anwendungsbeispiel: //
Der Autor ist per E-Mail erreichbar unter <mailto:Dichter@example.net>,
oder telefonisch unter <tel:+49-234-9999999>.

Zeichen, die in [XHTML] besondere Bedeutung haben, werden korrekt umgewandelt
und können somit bedenkenlos verwendet werden. Das bedeutet auch, dass
[(X)HTML]-Code in Textdateien textuell dargestellt wird. Das ist unter Anderem
auch eine Schutzmaßnahme.


 30. Index-Dateien

Der Buch-Index wird erstmal voll automatisch erstellt. Allerdings sieht
man dann nur die Kurznamen und hat kaum Kontrolle über die Reihenfolge.

Man kann jedoch im Verzeichnis mit den Textdateien eine Datei namens
„index.txt“ erstellen. Diese Datei enthält linksbündig die Kurznamen der
aufzulistenden Bücher, oder [URLs]. Danach kann, nach beliebig vielen
Leer- oder Tabulator-Zeichen, der ausführliche Titel folgen. Der Titel
kann aber auch einfach weggelassen werden, wenn der Name reicht.

Kurznamen, die mit „index“ beginnen, werden ebenfalls als Indexdateien
behandelt. Auf diese Weise kann man Verzeichnisse in beliebig viele
Kategorieen unterteilen.

Im Kurznamen muss man eventuell die [URL]-Kodierung für Sonderzeichen
verwenden. Insbesondere müssen Leerzeichen im Dateinamen durch „%20“
ersetzt werden. Ob deutsche Umlaute kodiert werden müssen, hängt
vom Dateisystem des Servers ab. Am besten, man verwendet für
Dateinamen nur unkritische Zeichen. Unkritische Zeichen sind
Buchstaben des Alphabets, Zahlen, Punkte, Minus-Zeichen,
Unterstriche, und Tilden.

Wenn im Namen Schrägstriche und/oder Doppelpunkte vorkommen, wird das
als [URL] interpretiert. Wenn die Dateien auf dem selben Server liegen,
sollte man nur den Pfad, beginnend mit einem Schrägstrich, angeben.

Leerzeilen werden ignoriert. Zeilen, die mit einem Leerzeichen oder
Tabulator anfangen, werden derzeit ebenfalls ignoriert, das könnte
sich jedoch in zukünftigen Versionen ändern.

Bücher, die in Index-Dateien nicht erscheinen, werden auch nicht
angezeigt. Man kann sie jedoch direkt aufrufen oder verlinken. Auf
diese Weise kann man zum Beispiel Bücher erstmal versteckt halten,
solange man noch daran arbeitet.


 31. Umleitungsdateien

Manchmal möchte man auch den Kurznamen eines Buches ändern. Wenn man einfach
nur die Datei umbenennt, sind aber alte Links kaputt. Seine eigenen Links
kann man zwar ändern, man sollte aber auch bedenken, dass andere Leute
sich schon Lesezeichen oder Links auf ein Buch angelegt haben könnten.

Man könnte zwar bei einigen Systemen mit symbolischen Links arbeiten, für
Suchmaschinen oder gar Archive wäre das aber fatal, da von außen betrachtet
der selbe Inhalt dann mehrfach vorhanden wäre.

Stattdessen kann man besser Umleitungsdateien anlegen. Dies sind Dateien
mit dem Dateinamen der alten Datei. Diese Dateien enthalten dann aber
nur eine Zeile, die mit einem „>“ anfängt, gefolgt von dem neuen Kurznamen.
Vor und nach dem „>“ dürfen Leerzeichen stehen.

Solche Umleitungen kann man auch benutzen, um ein Buch unter mehreren Namen
oder Schreibweisen verfügbar zu machen.

Diese Umleitungen funktionieren sowohl für das Inhaltsverzeichnis, als auch
für die Kapitel und bei der Abfrage von Textdateien.

Obwohl es funktioniert, sollte man Umleitungen über mehrere Ecken
jedoch vermeiden.

Die Umleitung erfolgt mittels [HTTP]-Code „301 Moved Permanently“. Die alte
Adresse wird dadurch für ungültig erklärt, was zB. für Suchmaschinen
relevant ist.

Will man deutlich machen, dass ein Buch dauerhaft nicht mehr verfügbar ist,
kann man hinter dem „>“ einfach nichts angeben, oder die Datei gleich ganz
leer machen. Das ergibt dann eine andere Fehlermeldung, als wenn die Datei
gar nicht existiert. Das ist sowohl für Menschen zu unterscheiden, anhand
der Fehlermeldung, als auch maschinell, anhand des [HTTP]-Codes. Für nicht
mehr verfügbare Bücher wird der [HTTP]-Code „410 Gone“ ausgegeben,
für überhaupt nicht vorhandene Bücher Code „404 Not Found“.

Wenn man ein Buch nur zeitweilig offline nehmen will, kann man stattdessen
erstmal die Leserechte so einschränken, dass der Server die Datei nicht mehr
lesen kann („403 Forbidden“).

{Achtung:}
Code 410 und 301 verursachen in vielen Suchmaschinen eine sofortige Löschung,
die Codes 403 und 404 erstmal nicht.

Wenn sich ein Buch noch in Zwischenspeichern befindet, entweder im Browser,
oder in Proxies, werden diese Änderungen erst viel später sichtbar!


 40. Text-Schnittstelle

Es gibt auch eine reine Text-Schnittstelle, mit der man spezialisierte
Anwendungen entwickeln kann, zum Beispiel Thin-Clients. 
Wenn man bei der [URL] hinten „.txt“ anhängt, bekommt man reine
Textdaten, ohne [XHTML]-Code.

Mit „…/index.txt“ erhält man die Buchübersicht; mit „…/buch.txt“
bekommt man den Text des gesamten Buches; mit „…/buch/index.txt“
nur das Inaltsverzeichnis; das Vorwort — falls vorhanden — mit
„…/buch/0.txt“; das erste Kapitel dann mit „…/buch/1.txt“ und so
weiter…

Im HTTP-Kopf wird bei den einzelnen Kapiteln ein zusätzlicher
Eintrag mitgeschickt, mit Links zum Inhaltsverzeichnis, dem
vorherigen und dem nächsten Kapitel (siehe RFC_5988). Dies
kann für ein Navigationsmenü genutzt werden. Normale Webbrowser
ignorieren diesen Eintrag.

Wenn man Daten als Text anfordert, werden auch eventuelle
Fehlermeldungen als reiner Text gesendet. Neben dem [HTTP]-Statuscode
erkennt man solche Fehlermeldungen auch daran, dass sie mit einem
Stern (*) beginnen. Man sollte aber auch nicht die Möglichkeit
vergessen, dass Fehlermeldungen evtl. nicht von diesem Programm,
sondern vom Webserver generiert werden, und somit als [(X)HTML]-Code
ausgeliefert werden. Es sollte aber reichen zu erkennen, dass das
Ergebnis mit „<“ beginnt und dann mit einer allgemeinen Fehlermeldung
zu reagieren.

Man kann beispielsweise das Werkzeug „curl“ verwenden. Dabei sollte
man immer den Parameter „-L“ und eventuell „--compressed“ verwenden.
Außerdem könnte „-f“ hilfreich sein.


 50. Probleme und Fragen

[Warum C? Sollten CGI-Skripte nicht in Skriptsprachen geschrieben werden?]

Nein! Dass [CGI]-Skripte oftmals in Skriptsprachen geschrieben werden, ist
gerade das Problem, wieso [CGI] den Ruf hat, so langsam zu sein. Da werden
dann teilweise sogar Skriptsprachen in den Server integriert, um diesen
Nachteil auszugleichen. Wenn man aber gleich kompilierte Programme benutzt,
entsteht das ganze Problem erst gar nicht. Das ist unkompliziert und schnell.

Leider spricht der [CGI]-Standard immer von Skripten. Aber das Wort wird dort
anders definiert. Das führt leider zu Verwirrungen.

Leider gibt es auch Webanbieter, die nur bestimmte Sprachen unterstützen.

			*	*	*

[Gibt es weitere Möglichkeiten der Optimierung?]

Das [CGI]- und http-Programm wird immer wieder neu gestartet. Dadurch
ist die Startzeit besonders wichtig. Die Startzeit kann deutlich
verbessert werden, indem man die Programme statisch linkt.

Die [GNU]-libc ist allerdings nicht gut für statisches Linken geeignet.
Ich selber verwende die dietlibc <http://www.fefe.de/dietlibc/>,
und das Programm ist auch dafür optimiert.

Aber das ist nicht nötig. Auch wenn das Programm dynamisch gegen die
[GNU]-libc gelinkt ist, ist es immer noch wesentlich effizienter,
als beispielsweise ein Perl-Skript.

			*	*	*

[Was bedeutet die Meldung „es liegt ein Fehler auf dem Server vor“?]

Das kann verschiedene Ursachen haben. Die wahrscheinlichste ist jedoch,
dass das Verzeichnis für die Bücher nicht existiert, oder an der falschen
Stelle liegt, oder der Server nicht die Rechte hat, in das Verzeichnis
zu wechseln.

			*	*	*

[Wie kann ich die Bücher „entsperren“?]

Die Meldung, dass ein Buch „gesperrt“ ist, bedeutet, dass der Server keine
Leserechte auf das Buch hat. Es könnte auch ein Problem mit den Rechten
der Verzeichnisse im Pfad vorliegen.

			*	*	*

[Bei HTML-Dateien wird die Meta-Angabe zur Zeichenkodierung ignoriert?]

Das betrifft nur den integrierten Webserver von „lesen-http“.
Ich gehe davon aus, dass man auf dem Server alles in der selben Kodierung
haben möchte, sonst ist es noch fehleranfälliger. Die Kodierung wird bei
vielen Dateiformaten schon innerhalb der http-Übertragung mitgeschickt.
Das hat Vorrang vor einer Meta-Angabe.

Eine Meta-Angabe zusätzlich rein zu schreiben, kann jedoch sinnvoll sein,
falls sich das jemand als Datei abspeichern will.

			*	*	*

[Welchen Sinn macht die Angabe der Sprache?]

Die Angabe der Sprache hat keinerlei Einfluss auf die Anzeige in einem
normalen Webbrowser. Aber sie macht zum Beispiel Sinn für Suchmaschinen,
online-Übersetzer, oder für die Aussprache von Sprachsynthesizern.

			*	*	*

[Was für Bücher darf man veröffentlichen?]

In Deutschland muss man das Urheberrecht beachten
<http://www.gesetze-im-internet.de/urhg/>.

In § 64 steht: „Das Urheberrecht erlischt siebzig Jahre nach dem Tode
des Urhebers.“ Das bedeutet, ältere Texte dürfen frei veröffentlicht
werden. Falls es sich um eine Übersetzung handelt, gilt aber auch der
Übersetzer als Urheber.

In anderen Ländern gibt es ähnliche Gesetze, die sich jedoch in Details
unterscheiden können. Das Herkunftsland des Buches spielt nach deutschem
Recht jedoch keine Rolle.

Manche Bücher werden aber auch unter Lizenzen gestellt, die eine
Veröffentlichung unter bestimmten Bedingungen erlauben; zum Beispiel
Creative Commons Lizenzen.

Falls ihr selber Bücher schreibt, dürft ihr die selbstverständlich
veröffentlichen (das heißt, wenn ihr die Verwertungsrechte nicht an einen
Verlag abgetreten habt). Es wäre nett, wenn ihr das unter eine Creative
Commons Lizenz stellt, so dass auch andere das weiterverbreiten dürfen,
was wahrscheinlich auch euren Leserkreis erweitern würde.

Ansonsten muss man die Rechte mit dem Autor oder dem Verlag klären,
was recht teuer werden kann.

			*	*	*

[Was ist mit Kurzgeschichten, die keine Kapitel haben?]

Eigentlich ist das nicht dafür gedacht.
Man sollte dann zumindest ein Kapitel mit der Nummer 0. anlegen.

Für eine Sammlung von Kurzgeschichten ist das Programm aber
gut geeignet. Jede Kurzgeschichte ist dann halt ein Kapitel.

			*	*	*

[Deutsche Umlaute werden nicht richtig angezeigt.]

Dann wurde der Text wahrscheinlich in der falschen Zeichenkodierung
abgespeichert. Beim Texteditor mal die Option „Speichern unter...“ suchen,
und dort schauen, ob man die Kodierung einstellen kann. Es sollte [UTF-8]
verwendet werden.

			*	*	*

[Wie bekommt man deutsche Anführungsstriche?]

Das muss schon in der Textdatei richtig angewandt werden. Sowas sollte nicht
erst auf dem Server geschehen (aus Komplexitäts- und Effizienz-Gründen).
Das ist also eine Aufgabe für den Texteditor, bzw. das Betriebssystem.

Unter [GNU/Linux] bekommt man idR. Anführungsstriche unten („) mit der
Tastenkombination AltGr + v, und Anführungsstriche oben (“) mit AltGr + b.
Für Binnenzitate (‚‘) verwende man zusätzlich die Shift-Taste.
Lange Gedankenstriche (—) bekommt man mit AltGr + Shift + -.

			*	*	*

[Wie kann man das Layout verändern?]

Das Layout kann über die Datei „lesen.css“ sehr flexibel angepasst werden.
Man kann es jedoch nicht für einzelne Bücher individuell ändern.

Falls man zwei Designs zur Auswahl anbieten will, kann man zwei Programme
kompilieren, die über die config.h unterschiedliche [CSS]-Dateien einbinden.
Mit den Makros [ALTERNATIVE] und [ALTERNATIVEURL] kann man auf den jeweils
anderen Stil verweisen. Das funktioniert aber nur beim Aufruf als [CGI].

			*	*	*

[Kann man die Bücher auch in andere Seiten einbetten?]

Ja, über ein „iframe“.

<iframe src="http://akfoerster.de/lesen/Kandide/index.xhtml"
width=630 height=500></iframe>

Die Adresse muss natürlich entsprechend angepasst werden. Die Breite (width)
und Höhe (height) sind beliebig anpassbar.

			*	*	*

[Kannst du mal die lange Lizenz in kurzen Worten wiedergeben?]

Man darf das Programm verbreiten, mit oder ohne Veränderungen, aber nur
unter der gleichen Lizenz. Man darf das Programm jedoch nicht nur in
kompilierter Form weitergeben, sondern muss immer auch den entsprechenden
Quelltext mit anbieten. Selbstverständlich muss man die Copyright-Hinweise
intakt lassen und auch immer die Lizenz mitliefern. Überarbeitete
Versionen müssen entsprechend gekennzeichnet werden.

Wenn man das Programm selbst nicht verbreitet, sondern nur auf einem Server
einsetzt, hat man gar keine Verpflichtungen.

			*	*	*

[Ist das Programm anfällig für das Jahr-2038-Problem?]

Ja. Im Jahr 2038 wird es bei vielen der heutigen 32-Bit Systemen
zu einem Überlauf kommen, so dass das Datum falsch berechnet wird.

Dies tritt auf Systemen auf, bei denen time_t nur 32 Bit hat.
Auf 64-Bit Systemen ist das Problem bereits behoben. Es kann aber auch da
trotzdem zu Problemen mit älteren Dateisystemtreibern kommen.

Dieses Programm hat Gegenmaßnahmen, aber wirklich gelöst werden kann das
nur auf der Ebene des Betriebssystems.

Es wird derzeit daran gearbeitet, auch auf 32-Bit Systemen den Typ time_t
auf 64 Bit umzustellen. Nach einer solchen Umstellung sollte dieses
Programm neu kompiliert werden, um das Problem zu beheben.

			*	*	*

[Wie steht es mit Zwischenspeichern (Cache/Proxy)?]

Das Programm ist so ausgelegt, dass die Bücher zwischengespeichert
werden können. Die genauen Fristen kann man in der „config.h“
einstellen.

Auch das Datum der letzten Dateibearbung wird übermittelt. Das
hat auch Einfluss auf Zwischenspeicher. Allerdings wird das Datum
der Programmdatei nicht berücksichtigt. Eventuell ist es hilfreich,
nach einer Aktualisierung der Software nochmal alle Textdateien
anzufassen („touch *.txt“).

			*	*	*

[Ist Verschlüsselung über HTTPS möglich?]

Die http-Variante unterstützt keine Verschlüsselung.

Bei der [CGI]-Variante geht das, wenn der Webserver das unterstützt.
Man sollte überprüfen, ob bei Weiterleitungen die Verschlüsselung
beibehalten wird. Das ist etwas wackelig, da hier die Spezifikation
ungenau ist. Mit Apache funktioniert es.

			*	*	*

[Wie sieht es mit Kompression aus?]

Die http-Variante unterstützt gar keine Kompression.

Auch die [CGI]-Variante selber unterstützt keine Kompression. Die
Dateien müssen unkomprimiert auf dem Server liegen.
Man kann aber manche Webserver so konfigurieren, dass sie die
Daten vor dem versenden komprimieren; zum Beispiel abhängig vom
Typ der Daten. Das Programm gibt Daten des Typs [application/xhtml+xml]
und [text/plain] aus, außerdem wird eine externe Datei vom Typ
[text/css] eingebettet.

			*	*	*

[Wo bekomme ich einen Fraktur-Schriftsatz her?]

Unter <http://unifraktur.sf.net>.
Lizenz: SIL Open Font License (OFL) 1.1


 100. Lizenz
 
Copyright © 2014-2018 Andreas K. Förster

Dieses Programm ist freie Software. Sie können es unter den
Bedingungen der [GNU] General Public License, wie von der Free
Software Foundation veröffentlicht, weitergeben und/oder
modifizieren, entweder gemäß Version 3 der Lizenz oder (nach Ihrer
Option) jeder späteren Version.

Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß
es Ihnen von Nutzen sein wird, aber {ohne irgendeine Garantie}, sogar
ohne die implizite Garantie der {Marktreife} oder der {Verwendbarkeit
für einen bestimmten Zweck}. Details finden Sie in der [GNU] General
Public License.

Sie sollten ein Exemplar der [GNU] General Public License zusammen mit
diesem Programm erhalten haben. Falls nicht, siehe
<http://www.gnu.org/licenses/>.

