Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2008  »  09  »  Wer A sagt, darf nicht B sagen  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

© kebox, Fotolia.com

Frage-Antwort-System fürs Web

Wer A sagt, darf nicht B sagen

von Michael Schilli
Erschienen im Linux-Magazin 2008/09

Catalyst ist das Ruby on Rails der Perl-Welt: Bei der Entwicklung von Webapplikationen - beispielsweise eines Quiz - bietet das MVC-Framework enormen Komfort und eine saubere Trennung der Komponenten.

Ob Spiegel-Online "Reicht ihr Latein zum Angeben?" fragt [2] oder Food.aol.com seine Benutzer durchgeschnittene Schokoriegel identifizieren lässt (Abbildung 1) - ein Quiz vertreibt dem Onliner erfolgreich die Zeit. Arbeitskollegen leiten die URLs gern weiter und beim abschließenden Vergleichen der Punktzahlen ergibt sich neben einer anregenden Diskussion auch eine Neuordnung der büroweiten Hackordnung.


Abbildung 1: Welcher Schokoriegel mag das sein? Ein Schnittbilder-Quiz auf der Website Food.aol.com [3] verlangt Onlinern Wissen über Kalorienreiches ab.

Was liegt näher, als selbst ein Quiz zusammenzuklopfen? Abbildung 2 zeigt den vorgestellten Rat-Dampfer in Aktion. Damit der Code wiederverwertbar ist, holt die Applikation die Quizfragen samt Multiple-Choice-Antworten aus einer Yaml-Datei (Abbildung 3). Das Beispiel benutzt eine Auswahl aus Fragen der Einbürgerungsprüfung der USA. Die Anwärter müssen zum Beispiel wissen, wie viele Sterne die US-Flagge aufweist und was sie symbolisieren [4].


Abbildung 2: Die mit Catalyst implementierte Quizapplikation für US-Neubürger in Aktion. Hier die Frage nach der Sterne-Symbolik in der Flagge.


Abbildung 3: Multiple Choice: Die Fragen mit drei Antwortvarianten liegen in einer Yaml-Datei. Die jeweils erste Antwort ist die richtige.

Die Webapplikation soll die Yaml-Datei einlesen und die Fragen einzeln auf einer neuen Seite darstellen. Die Yaml-Datei gibt die richtige Antwort stets als erste, doch die Applikation soll später die Antworten zufällig durcheinanderwürfeln, damit der Test spannend bleibt.

Die Implementierung ist nicht sonderlich trickreich, aber es kommt so einiges zusammen: Schön designtes HTML mit dynamisch aufbereiteten Feldern, Session-Management zwischen den einzelnen Fragen, damit die Applikation die Punktzahl des Users nicht vergisst, und zum Schluss eine Ergebnisseite, die dem Benutzer den Endstand mitteilt und zu einer weiteren Runde einlädt (Abbildung 4). Und schließlich darf der Server dem Client niemals über den Weg trauen, denn der könnte schummeln.


Abbildung 4: Am Ende des Quiz angelangt bekommt der Teilnehmer seine Punktzahl angezeigt. Die Applikation muss sich deshalb die Vorgeschichte merken.

Das Framework Catalyst [5] unterstützt Perl-Programmierer bei derartigen Projekten. Es erzeugt automatisch ein Rohgerüst des Programmcode, in das der Entwickler dann nur noch die applikationsspezifischen Teile einfügt. Die Aufteilung der Komponenten in Model (Datenmodell), View (HTML-Darstellung) und Controller (Kontrollfluss) hat sich bei der Entwicklung von Webapplikationen bewährt und ermöglicht eine saubere Codetrennung und folglich leichte Wartbarkeit.

Framework installieren

Die Catalyst-Module liegen auf dem CPAN vor. Wegen ihrer schieren Menge empfehlen sich aber vorgefertigte Pakete. Auf Debian-basierten Systemen sorgt

sudo apt-get install libcatalyst-perl libcatalyst-modules-perl

für die fachgerechte Installation aller Module samt einem Rattenschwanz abhängiger Pakete. Damit der Entwickler nicht bei Adam und Eva anfangen muss, legt das mitgelieferte Skript

catalyst.pl QuizShow

ein neues Verzeichnis »QuizShow« für die neu erzeugte Applikation an und stellt dort auch noch etwa 30 Dateien in verschiedene Unterverzeichnisse hinein, damit das Ganze sofort betriebsfähig ist. Es finden sich unter anderem ein »Makefile.PL«, um die Applikation CPAN-gerecht zu verpacken, vordefinierte Konfigurationsdateien, Modulskelette zum Ausfüllen und diverse Skripte, um neue Teile anzulegen und die Applikation auf unterschiedliche Weise zu starten.

Später lässt sie sich als CGI-Skript oder unter Mod_perl auf einem Apache-Server fahren. Aber während der Entwicklung bietet es sich an, einfach den mitgelieferten Webserver zu starten:

cd QuizShow
script/quizshow_server.pl

Sofort fährt der Server wie in Abbildung 5 hoch und gibt akkurat formatierte Informationen über die Serverkonfiguration und die URL, unter der ein Browser ihn erreichen kann, bekannt. Die Standardeinstellung ist »http://localhost:3000«. Wer sie in einen Browser eingibt, bekommt die Catalyst-Startseite zu sehen. In Produktionssystemen kommt später freilich ein Apache-Server zum Einsatz.


Abbildung 5: Der im Catalyst-Paket mitgelieferte Testserver fährt hoch und gibt bereits implementierte Details der Anwendung bekannt.

HTTP mit Gedächtnis

Wenn ein Browser mit einem Webserver kommuniziert, weisen beide zwischen den einzelnen Requests keinen Zustand auf - falls Session-Cookies und Server-seitig gespeicherte Session-Daten diesen nicht explizit sichern. Ein Quiz, das nach jeder Frage den aktuellen Punktestand vergäße, wäre wenig hilfreich, und so muss der Entwickler wohl in den sauren Apfel beißen und diese nicht ganz triviale Logik implementieren. Catalyst bietet glücklicherweise schon ein vorgefertigtes Session-Management an, ebenfalls als Debian-Paket. Der Aufruf

sudo apt-get install libcatalyst-plugin-session-fastmmap-perl

installiert die notwendigen Perl-Module. Damit das Quiz dem Browser beim ersten Andocken automatisch ein Session-Cookie unterjubelt, mit diesem einen Server-seitigen Speicher indiziert und dort Userdaten speichert, muss man die Zeile

use Catalyst qw/-Debug ConfigLoader Static::Simple/;

der vorher automatisch erzeugten Datei »lib/QuizShow.pm« zu

use Catalyst qw/-Debug ConfigLoader Static::Simple Session Session::State::Cookie Session::Store::FastMmap/;

umbauen. Damit kann eine Applikation jederzeit bequem mit der Methode »session()« des Catalyst-Kontextobjekts auf den Session-Hash zugreifen. Der enthält die Session-Daten im Key-Value-Format; Catalyst sichert sie automatisch unter der im Browser-Cookie gesetzten Session-ID und verwaltet sie auf dem Server.

Das Verfahren funktioniert natürlich nur, wenn der Browser bei jedem neuen Request mit demselben Server spricht und nicht etwa mit einer zufälligen Instanz einer Serverfarm. Für anspruchsvollere Konfigurationen bietet Catalyst darum datenbankbasierte Sessions an.

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Tragendes Rahmenwerk PHP-Anwendungsentwicklung mit Prado
Asyl für Django Webprogrammierung in Python/Django und PHP
Allzweckmittel Rich Internet Applications mit Zkoss 5
Heimschaltwarte Perl steuert Elektrogeräte auch aus der Ferne
Schlüsseldienst Perl-Skript öffnet Bezahl-WLANs
Projekteküche Neues aus der Welt der freien Software und ihrer Macher
Whitepaper
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele

Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
The Role of Open Source in Data Integration

Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.

Download PDF (Registrierung erforderlich)
Kommentare (0)