lesen – Webanwendung zum Veröffentlichen von Literatur

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