GTChat 0.95

GTChat 0.95

GTChat 0.95 ist die am meisten verwendete Version, für die es auch viele Erweiterungen gibt. Er zeichnet sich aus durch umfangreichere Einstellungsmöglichkeiten und hohe Leistungsfähigkeit.

Dank des logischen Programmaufbaus können die oben genannten Erweiterungen sehr einfach hinzugefügt werden. Bei der entschlüsselten Version kann man auch auf den Chat-Kern zugreifen und falls nötig Änderungen vornehmen.

Meinung von Wladimir Palant

Einige Bemerkungen und Aussagen von Wladimir Palant zu GTChat 0.95.

  • Das Verzeichnis Templates enthält Schablonen in ihrer sprachunabhängigen Form. Diese werden von templateconverter.pl in Schablonen für die jeweilige Sprache umgewandelt. Siehe convert.bat für die Aufrufparameter
  • Zeilen im Kern, die den Kommentar #DEBUG enthielten, wurden aus der endgültigen Version entfernt. “use strict” und “use vars” wurden ebenfalls entfernt, und die erste Zeile in chat.pl durch “#!/usr/bin/perl” ersetzt (also ohne Warnungen) – wurde alles vom Verschlüsselungsprogramm erledigt.

Wichtigste Neuerungen

Als ich mit GTChat 0.95 angefangen habe, hatte ich bereits deutlich mehr Erfahrung. Dementsprechend wurde es ein kompletter Neuanfang, die Probleme waren schlichtweg zu zahlreich.

Modularer Aufbau
GTChat wurde endlich aus weitgehend unabhängigen Modulen aufgebaut. Die eingebauten Module registrieren sich in Definitions.pm, die Plugins in Settings.dat. Nach Programmstart werden die beiden Strukturen mit Hilfe von joinedhash.pm vereinigt. Probleme:
  • Zum Laden der Module wurde ein eigener Mechanismus erfunden, um Probleme im mod_perl-Betrieb zu vermeiden. Die Namen der Module sollen ständig variiert werden (beim Kern automatisch, bei den Plugins per Hand), um Konflikte zu vermeiden, wenn derselbe Server mit mod_perl zwei Chats ausführt, die etwas unterschiedliche Module verwenden (verschiedene Versionen). Dementsprechend können keine Funktionen in den Modulen direkt aufgerufen werden – es wird stattdessen der Rückgabewert des Moduls verwenden.
  • joinedhash dürfte einer der Hauptgründe für die Performance-Probleme sein. Während es eine physische Vereinigung der Hashes vermeidet, werden die Zugriffe zu dem vereinigten Hash sehr langsam.
Flexible Schablonen
SimpleTemplateEngine wurde eigentlich mit dem Gedanken entworfen, dass auch Leute ohne Perl-Kenntnisse die Schablonen bearbeiten sollen. Dementsprechend wurde die Syntax einfach gestaltet, und doch flexibel genug, um die gesamte Präsentationslogik ausdrücken zu können. Probleme:
  • Die Schablonen sind, wie es eigentlich immer passiert, zu einer neuen Programmiersprache ausgeartet. Diese Programmiersprache ist nicht gerade gut durchdacht und hat vielerlei Nachteile. Am wichtigsten ist es aber, dass sie keine Vorteile mehr im Vergleich zu Perl bietet. Letztendlich hat GTchat 0.95 die Möglichkeit bekommen, andere Template Engines einzubinden – von diesen ist EmbedderTemplateEngine wohl vorzuziehen, auf Grund ihrer Einfachheit und Effizienz.
  • Da für die Einbindung von Variablen spezielle Ausdrücke verwendet wurden, die erst mit $main->get() umgewandelt werden mussten, dürfte das die Schablonen entscheidend verlangsamt haben. Das eigentliche Parsing und die Ausführung der Schablonen waren dagegen recht effizient.
Mehrsprachigkeit
Settings.dat enthielt mehrere sprachabhängige Zweige, von denen die für die gerade aktive Sprache über joinedhash mit dem Hauptzweig vereinigt wurde.

Das Admin-Interface würde man heutzutage eine AJAX-Anwendung nennen. Allerdings ist die Implementierung völlig inakzeptabel – sie arbeitet mit Frames und überschreibt stets den HTML-Code der Seiten via document.write(). Grund dafür ist die Kompatibilität zu damaligen Opera-Versionen, auch meine damals mangelhaften DOM-Kenntnisse sind zu nennen.

Weitere Informationen

Wird noch ergänzt.

Einen Kommentar hinterlassen

Du musst eingeloggt sein um einen Kommentar zu schreiben.