Abstracts

Blog- und Wiki-Mining mit Perl
Vortragender Ramon Wartala
Sprache deutsch
Typ/Dauer long/40min
Zusammenfassung
Nicht nur unter dem Zeitaspekt ist es kaum noch möglich, die
wachsende Zahl an Weblogs und Wikis, inhaltlich zu verfolgen. Aktuelle
Newsfeed-Reader holen zwar in regelmäßigen Abständen die neusten
RSS-Feeds vom Netz auf den heimischen PC. Doch welche Weblogs welches
Thema beinhalten, zeigt sich erst, wenn man diese auch gelesen hat. Da
nützt es auch wenig, wenn man sich nur auf die Blogs von Freunden und
Bekannten stützt. Es könnte ja doch von irgendwoher ein
interessanter Blog zu einem Thema geschrieben werden, welches mich im
Moment gerade interessieren könnte.

Als Rettungsanker in der Flut von Wikis und Blogs könnten sich
Techniken des Maschinellen Lernens (NLP) und des Information Retrieval
(IR) eignen. Das populärste Beispiel für die Anwendung solcher
Techniken sind Suchmaschinen. Doch auch weniger prominente Vertreter
dieser Techniken, welche sich heutzutage auch unter dem Namen "Text
Mining" versammeln, werden schon in kommerziellen Anwendungen der
Pharmaforschung, des Patentrechts und im Investment Banking
erfolgreich eingesetzt. Überall dort, wo eine "unüberschaubare"
Fülle von Informationen schnell überblickt werden soll.

Mit Hilfe einiger Perl-Module und ein wenig IR-know-how lassen sich
diese Techniken auch auf das Eingangs erwähnte Problem anwenden.

Der Vortrag soll einen Überblick über die theoretischen und
praktischen Aspekte von Text Mining im Kontext von Wikis und Weblogs
mit Perl aufzeigen. Hauptaugenmerk soll dabei auf eine Technik gelegt
werden, welche unter dem Namen "Clustering" bekannt ist und mit Perl
besonders einfach auf großen Textmengen angewendet werden kann. Dabei
werden Texte bzw. Blogs zu sog. Clustern ähnlichen Inhalts
zusammengefasst. Die dabei gebildeten Cluster-Descriptoren geben einen
schnellen Überblick über die enthaltenen Themen. So lässt sich sehr
einfach durch eine Fülle von Blogs thematisch navigieren.

Themen Überblick
- Stellenwert von Weblogs und Wikis
- Warum Text Mining
- Kennzahlen von Dokumenten und Dokument-Kollektionen mit Perl
  erzeugen
- Clustering von Weblogs
- Wikipedia als Corpus
- Visualisierung von Blog-Themen-Clustern mit Perl

Verwendete Module
        - LWP::UserAgent
        - WWW::Wikipedia
        - Text::WikiFormat
        - XML::RSS::Parser
        - Lingua::DE::Sentence
        - Lingua::Stem
        - Lingua::StopWords
        - GraphViz::...
        - Palm::Doc
        - HTML::Summary
							
NLP/NLU Internet Portal
Vortragender Richard Jelinek
Sprache deutsch
Typ/Dauer long/40min
Zusammenfassung
Konzepte, Funktionalität und technologische Grundlagen des PetaMem
NLP/NLU Portals werden vorgestellt. NLP steht für "natural language
processing" und umfasst alle Verfahren zur Verarbeitung natürlicher
Sprache, NLU steht für "natural language understanding" und umfasst
Verfahren und Methoden, welche das semantische Verständnis
natürlicher Sprache durch Computer zum Ziel haben. Das Portal ist
erst in seinen Anfängen und der sichtbare Teil zeigt bislang nur ein
Bruchstück des Zusammenspiels dreier Systemkomponenten mit einer
Gesamtkomplexitt von knapp 650.000 LOC (ohne externe CPAN Module).

Dieser - technisch orientierte - Vortrag wird folgende Punkte
ansprechen:
   * technische Aspekte des Portals
     - historie (Yawps, Perl/Mason)
     - verteilte Client/Server Architektur
     - Accounting und Framework für Bezahlmethoden
     - Hard- und Software-Infrastruktur
   * Funktionalität
     - Basics (diakritik, sprachidentifikation,...)
     - Fun (palindrome, anagramme, scrabble,...)
     - Advanced (prozedurale wörter, morphologie,...)
     - Übersetzung (wörterbücher, maschinelle Übersetzung,...)
     - Semantische Inferenz (Thesauri, semantische Vergleiche,...)
     - Forschung (Corpora IR, POS Tagger, NLA,...)
   * Ökonomische Aspekte
     - freie und komerzielle Nutzung
     - Vereinbarungen mit Drittanbietern
     - "Use more, pay less"
     - Firmen vs. private Nutzer
   * Soziale Aspekte
     - Bereitstellen wertvoller Ressourcen
     - Fördern und Hilfestellung bei der Schaffung einer Community
   * Ausblick und "Future Plans"
     - nach Bedarf/Zeit

Natürlich darf und wird eine Live-Demo des aktuellen CVS Snapshots
nicht fehlen. Bis dahin vergnüge man sich auf http://nlp.petamem.com

							
Neues über Parrot
Vortragender Leopold Tötsch
Sprache deutsch
Typ/Dauer long/40min
Zusammenfassung

							
Spreadsheet::SimpleExcel
Vortragender Renée Bäcker
Sprache deutsch
Typ/Dauer mlm/5min
Zusammenfassung
Häufig ist es - auf Wunsch von Kunden - notwendig, Daten in
Excel-Sheets darzustellen. Dabei kommt es meistens nicht auf
Formatierungen oder ähnliches an, sondern nur um die bloße
Darstellung der Informationen.

Spreadsheet::SimpleExcel soll die Erstellung solcher Dateien
erleichtern. Das Modul ist entstanden, weil Benutzer meiner Programme
zur "schnelleren Auswertung" von Informationen aus der Datenbank,
diese in einer Excel-Datei brauchen. Da dies immer wieder die gleiche
Intention war und es mir zu viel war, das Problem direkt mit
Spreadsheet::WriteExcel zu lösen, habe ich einen Wrapper um
Spreadsheet::WriteExcel geschrieben.

Die Vereinfachung gegenüber Spreadsheet::WriteExcel besteht darin,
dass es wesentlich weniger Methoden gibt und man einigen Code sparen
kann!

Und es gibt einige Methoden, die man bei Spreadsheet::WriteExcel
nicht hat, wie das Sortieren von Daten (nach _einer_ Spalte) oder die
Ausgabe als Skalar zu bekommen.
							
Einführung in Class::DBI
Vortragender Max Maischein
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
Class::DBI ("CDBI") ist, hochtrabend ausgedrueckt, ein "Object
Relationship Mapper" ("ORM"). Anders gesagt, es stellt die Tabellen
einer Datenbank als Klassen und die Zeilen in einer Tabelle als
Objekte dar.

Was macht Class::DBI so interessant?

Class::DBI wird von vielen Modulen und Programmen verwendet, da es den
Programmierer im Wesentlichen vor dem Einbetten von SQL in das
Perlprogramm schuetzt und verknuepfte Objekte
(Film->Schauspieler->Geburtsdatum) direkt als Perl-Objekte zur
Verfuegung stellen kann. Man kann CDBI als schlichte Persistenzlösung
verwenden oder um einen Objektwald wie eine Filmdatenbank aufzubauen.
Wenn man Maypole verwenden möchte, sind Kenntnisse in CDBI eine
unverzichtbare Voraussetzung.

Einsatz von Class::DBI

Das Modul fing als relativ duennes Datenbankmodul zwischen
DBI/Ima::DBI und Anwendungen an, und will keine Persistenzlösung fuer
allgemeine Objekte sein, sondern zielt klar auf die zeilenweise
Manipulation einer Tabelle ab, im starken Kontrast zur SQL-sichtweise,
die ganze Mengen von Zeilen bzw. Spalten einer Tabelle manipuliert.

Effektives Class::DBI

Um Class::DBI effektiv einzusetzen gibt es einige Tricks, mit denen
man die Performance von Anwendungen steigern kann, oder den von Hand
geschriebenen Code minimieren kann.

* Handgeschriebenes SQL
* Class::DBI::Loader
							
Einführung in Maypole
Vortragender Max Maischein
Sprache deutsch
Typ/Dauer long/40min
Zusammenfassung

Was ist Maypole?

Maypole ist ein datenbankorientiertes Web-Anwendungs-Framework, das
auf dem Model-View-Controller ("MVC") Konzept aufbaut. Auf Deutsch:
Maypole macht aus einer Datenbank eine Webanwendung.

Wofuer kann man Maypole verwenden?

Maypole bringt sehr nette Voreinstellungen mit, die mit wenigen Zeilen
Code eine Weboberflaeche ueber eine Datenbank legt, mit der einzelne
Zeilen bearbeitet, angelegt und gelöscht werden können.

Maypole teilt die Anwendung in drei Teile:
* die Datenbank ("Model", meistens Class::DBI)
* die Darstellung ("View", meistens Template::Toolkit)
* den Controller ("Controller", Perl)

Was braucht man fuer Maypole?

* Class::DBI, oder zumindestens SQL sollte man etwas können
* Template Toolkit, oder zumindestens ein anderes Templatesystem
* Apache+mod_perl - hilfreich, seit 2.0 aber nicht mehr notwendig

Beispielanwendung - Filmdatenbank

Wo sind die Probleme von Maypole?

* Magie, mehr Magie, noch mehr Magie
* Tests
* Erweiterbarkeit fuer nicht vorgesehene Erweiterungen
							
Object Oriented Documentation
Vortragender Mark Overmeer
Sprache englisch
Typ/Dauer short/20min
Zusammenfassung
Everyone who was has created a module with a reasonable set of
packages has experienced the limitations of POD. The syntax of POD is
simple to learn, and documenting a single package with POD is in reach
of even the worst programmers.

However, POD has serious limitations. You may argue about the common
syntax of POD, but that's matter of taste and outside the scope of
this talk. Real limitations of POD are:
 + visual in stead of logical markup, so formatters can not be smart
 + no support for object orientation
 + copy-paste parts needed between packages within the same module

As author of a few large Object Oriented modules, I have hit the
limitations of POD too often. The usefulness and quality of the
documentation is rapidly decreasing when the program grows. After two
private implementations for a solution, there now is a public release
for "Object Oriented Documentation", named OODoc.

OODoc adds logical markup to POD. When a distribution is created, real
POD and HTML can be produced from this extended POD. The connection is
made between "as simple as possible" for the developer of the code,
and "as browsable as possible" for the user of the module.

The basics of OODoc are explained by some examples, as for instance
can be seen at http://perl.overmeer.net/oodoc/html/
							
Wiederverwendbare Erweiterungen zur LibXSLT
Vortragender Tom Schindl
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
XML::LibXML und XML::LibXSLT sind mittlerweile die meist verwendeten
Perl- Module, um mit XML zu arbeiten. Vor allem bei der Verwendung von
XSL(T) ist es aber sehr oft mühsam Erfolge zu erzielen.

Größtes Problem bei großen XSLT-Anwendungen ist meistens das
mühevolle Debuggen, weil XSLT keinerlei Debugfunktionen mit
Debug-Levels zur Verfügung stellt.

Im großen und ganzen beschränkt sich die Möglichkeit auf die
Ausgabe im Enddokument, was einem einfachen print auf in perl ähneln
würde. Dies ist wie jeder weiß in der heutigen Zeit mit diversen
Debugging-Modulen z.B. log4perl eine suboptimale Lösung.

Wie vielleicht nicht allgemein bekannt, besitzt die XML::LibXSLT die
Möglichkeit sich selbst Erweiterungen zu den in XSLT und eXSLT
definierten Funktion zu schreiben und als Callbacks zu registrieren.

Unter den weitere Möglichkeiten die sich aus dieser
Zusatzfunktionalität der XML::LibXSLT ergegeben, wäre besonders
noch die sich durch die Unzulänglichkeit der XSL-Spezifikation nicht
Verfügbarkeit von Laufvariablen zu nennen, aber auch die Möglichkeit
auf Datenbankinhalte direkt zu zugreifen.
							
AxKit - modernes Web-Publishing mit Perl und XML
Vortragender Jörg Walter
Sprache deutsch
Typ/Dauer tutorial/3h
Zusammenfassung
Web-Publishing ist geprägt von immer wiederkehrenden Problemen und
häufig wechselnden Anforderungen an die visuelle Gestaltung,
neuerdings gepaart mit Anforderungen für mobile Geräte. In diesem
Vortrag wird das XML Framework "AxKit" vorgestellt, welches aktuelle
Technologien wie XSLT, XML, SVG und Server-Side Scripting mit
althergebrachtem HTML verbindet und dabei ein Maximum an
Flexibilität, Wartbarkeit und Kompatibilität erreicht.
Weiterführend wird die Umsetzung von aktuellen Programmiertechniken
in AxKit vorgestellt, z.B. wie man das MVC-Paradigma in das Web
überträgt oder Objektorientierung durch die Zustandslosigkeit von
HTTP erreicht.

Der Vortrag hat neben Perl einen Schwerpunkt in XML. Es wird kritisch
betrachtet, wo die Dynamik von Perl hinderlich ist, und welche
Alternativen es gibt. Es werden daher ebenso Techniken erläutert, die
rein auf XML/XSLT basieren wie auch die vielzähligen Möglichkeiten
von AxKit aufgezeigt, die semi-statischen Inhalte von XML/XSLT mit
dynamischen Elementen zu versehen, ohne die Vorteile der statischen
Verarbeitung zu opfern. Neben den fortgeschritteneren Themen kommen
aber auch diejenigen nicht zu kurz, die einfach nur (X)HTML mit Perl
in einer Datei mischen wollen.

Der Vortrag besteht aus 6 aufeinander aufbauenden Teilen:

* Ax...wer? - AxKit als Ersatz für HTML, PHP, CGI, mod_perl, ASP, JSP, ...
* aber warum? - Probleme der modernen Web-Entwicklung mit AxKit lösen
* Nutze die Macht! - AxKit sinnvoll ausreizen
* Die Fäden verbinden... - Technologiemix als Kernprinzip
* ... und nicht den Faden verlieren - Wartbarkeit mit AxKit ist kein Problem
* Fazit: Rückblick, weiterführende Literatur und Dokumentation, Support

							
Grundlagen für Maypole: Template Toolkit 2
Vortragender Jürgen Peters
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
							
Grundlagen für Maypole: Modul NEXT
Vortragender Jürgen Peters
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
							
Comas, ein mod_perl basierendes Konferenz-Management-System
Vortragender Rolf Schaufelberger
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
Für die Organisation des Perl-Workshops wurde im Vorfeld ein Perl
basierendes Conferenz-Management-System erfolglos gesucht. Per Zufall
fand ich dann das Programm COMAS , ein mod_perl / Postgres basierendes
System, welches in Mexico entwickelt wurde. Interessant ist der
Ansatz, die Logik nahezu vollständig in die Datenbank zu verlagern.
Der Funktionsumfang der aktuellen Version wird vorgestellt und
erläutert.
							
RIPS - ein integriertes System zur Entwicklung von interaktiven Anwendungen
Vortragender Bernd Dulfer
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
*RIPS* ist ein integriertes System zur Entwicklung von interaktiven
Anwendungen in Perl.

Es besteht aus einem Editor und einem Launcher.

Mit dem Editor wird die Oberfläche der Anwendung gestaltet und der
Source-Code geschrieben.

Der Laucher dient zur Ausführung der Applikation. Dies kann entweder
über eine plattformunabhängige Sourcedatei geschehen oder der
Launcher wird zusammen mit der Applikation in ein PAR gepackt.

Da sowohl Editor als auch Launcher selbst als PAR zur Verfügung stehen,
ist es zur Nutzung von RIPS nicht nötig, Perl installiert zu haben.

Mehrere Gedanken führten im Zusammenspiel zum Beginn der Entwicklung von
RIPS:

GUI Programmierung 'zu Fuß' ist aufwendig und man braucht lange, um
ein Toolkit zu beherrschen. Aus diesem Grund ist ein 'Klicki-Klacki'
Programm, mit dem die grafische Oberfläche erstellt wird, durchaus
sinnvoll.

Perl Applikationen erfordern ein installiertes Perl, es sei denn, man
'kompiliert' sie in irgendeiner Form. Deshalb baut RIPS stark auf PAR,
das in meinen Augen das einzig vernünftige Werkzeug für diesen Zweck
ist.

Keins der mir bekannten Systeme bietet die Möglichkeit in Perl zu
programmieren. Vielleicht kenne ich einfach zu wenige ;-)

Das einzige System, das Perl erlaubt, ist der *Kommander*. Er ist aber
leider in der Integration von Perl und GUI sehr umständlich und nur
unter KDE verfügbar.

Perl zu lernen ist aufwendig und macht mehr Spaß, wenn man sich um
die GUI keine Gedanken machen muß. Wer einmal versucht hat einem
zehnjährigen Programmieren beizubringen, hat festgestellt, daß einem
sehr schnell die Ideen ausgehen, wenn man nicht von Beginn an mit
einer grafischen Oberfläche arbeiten kann.

Perls Plattformunabhängigkeit muß gewahrt bleiben. Dies wird durch
ein plattformunabhängiges Speicherformat gewährleistet. Für die
jeweilige Plattform ist ein Programm vorhanden, das die Ausführung
der Applikation übernimmt.

*Status*

RIPS ist im Moment bestenfalls im Beta Status (eher pre-alpha ;-). Zum
Zeitpunkt des Workshops sollte ein Sourceforge Projekt aufgesetzt
sein, um die Nutzung und Entwicklung von RIPS zu ermöglichen.

*Der Vortrag*

Kein /Tod durch Slideshow/ sondern eher eine kurze Vorstellung des
Was, Warum und Wie. Und dann natürlich eine ausführliche Demo des
Systems mit Diskussion der Stärken und Schwächen.
							
Tie::Hash vereinfacht die Nutzung von Locale::Maketext
Vortragender Steffen Winkler
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
Erfahrungsbericht über Locale::Maketext, der gleichzeitig zeigt, wie
einfach Tie::Hash sein kann.

* Zuerst wollte ich ganz kurz zeigen, wie man mit Locale::Maketext
  normalerweise umgeht, also mehrsprachige Ausgaben erzeugen kann.
* Dann zeige ich, daß man sich wirklich nur auf die Methoden von
  Tie::Hash beschränken kann, die typisch für die Anwendung sind.
* Dann kommt der Teil, welcher die Vorteile zwischen beiden zeigt.
  Sub's oder Objektmethoden lassen sich nicht so praktisch in Strings
  auflösen. Bei Hashes geht das wesentlich einfacher.

							
Perl vs. SAP im Firmenalltag
Vortragender Steffen Ullrich
Sprache deutsch
Typ/Dauer long/40min
Zusammenfassung
GeNUA (www.genua.de) ist u.a. ein Hersteller von
Hochsicherheitsfirewalls. Wir haben ca. 70 Mitarbeiter, darunter wohl
ca. 15 gute perl Programmierer.

Es gibt in der Firma 3 sehr große perl-Projekte: GeNUAdmin zur
Verwaltung einer Sammlung heterogener Systeme innerhalb und außerhalb
der Firma, der Firewall GeNUGate, welcher fast ausschließlich in perl
geschrieben ist und schließlich das TNT, welches CRM, Buchhaltung,
Projektmanagment, Trouble-Ticket-Handling, Zeiterfassung uvvm unter
einer Tk-Oberfläche mit Anbindung an einer Postgresql Datenbank
erfasst. Der Vortrag konzentriert sich auf letzteres.

TNT wurde 1996 vom Firmenchef als Rewrite seiner Tcl/Tk Version
angefangen und ist inzwischen auf ca. 100.000 Zeilen perl-Quelltext
angewachsen. Ab 2001 kam ich als zusätzlicher Programmierer teilzeit
zu dem Projekt.

Während der Jahre der Entwicklung wuchsen die Firma und damit die
Anforderungen an das TNT. Durch die Programmiersprache perl konnten
viele Änderungen schnell und mit wenig Aufwand eingebracht werden,
einige der Problemstellungen sind im folgenden aufgeführt:

- Bugbehandlung: tritt ein Fehler im Program auf, so wird dieser
  möglichst abgefangen und dem Nutzer ein Fenster präsentiert, wo er
  den Bug incl. zusätzlicher Infos sowie automatisch attachter
  Logfiles und Stacktrace ohne Aufwand direkt an die Entwicklung
  mailen kann

- Code stabilität: 2001/2002 wurde schrittweise der Code mit 'use
  strict' versehen. Da hier nicht ein einfaches Deklarieren aller
  Variablen ausreichend ist wurde ein Modul 'mystrict' (wird
  vorgestellt) geschaffen, mit denen man gezielt Teile als strict oder
  nicht strict ausführen lassen konnte, abhängig vom Mitarbeiter,
  der das TNT benutzte (Buchhaltung reagiert am sensibelsten auf
  Probleme). Natürlich wurden viele Bugs während dieses Prozesses
  gefunden.

- Resourcenverbrauch: Der Programmcode wuchs immer weiter. Da die
  Masse der Mitarbeiter nur ein Teil der Funktionalität brauchte
  wurde ein Modul 'OnDemand' (wird vorgestellt) entwickelt, das
  transparent benötigte Module nachlädt. Ebenfalls gab es Probleme
  mit Memory leaks, teilweise verursacht durch Bugs in Tk. Mit Hilfe
  von "Cookies" die an die Objekte attached wurden, konnten die
  größten Lecks einfach geortet und beseitigt werden.

- Sicherheit: Um die Möglichkeiten der Nutzer zu beschränken wurde
  das Pg-Modul im TNT durch DBI mit DBD::Pg abgelöst. Im nächsten
  Schritt wurde dann DBD::Pg durch DBD::Proxy abgelöst, mit einem
  eigenen Proxyserver, der in der Lage ist SQL-Statements
  umzuschreiben bzw. zu blockieren sowie eine sichere, verschlüsselte
  Authentisierung der Nutzer durchzuführen

- Performance: Teile des Codes benutzen mit Tk::Table realisierte
  Tabellen. Um die Eingaben komfortabler zu machen sind Teile der
  Zellen mit Widgets wie Tk::BrowseEntry und Tk::DateEntry realisiert,
  welche ein Popup öffnen können. Mit zunehmender Nutzung dieser
  Widgets sank jedoch massiv die Performance, da die Popups bereits
  zum Zeitpunkt Erstellung des Widgets mit erstellt wurden. Die beiden
  Tk Klassen wurden daher durch eigene Klassen mit fast gleichem
  Interface abgelöst, welche das Popup erst dann erstellen, wenn es
  benötigt wird
							
InputFilter.pm - ein Framework zur Überprüfung von CGI Formulareingaben
Vortragender Wilhelm Weber
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
Die Eingabe in Webformulare und die anschliessende ungeprüfte
Übernahme in eine Anwendung zur Weiterverarbeitung führt immer
wieder zu Sicherheitsproblemen. SQL Injection, Mailformularmissbrauch,
Überschreiben von Systemdateien sind nur einige Beispiele für die
entsprechenden Probleme.

Mit Hilfe des Perl Moduls InputFilter.pm versuche ich ein allgemeines
Hilfsmittel zur Verfügung zu stellen um diese Probleme einfach in den
Griff zu bekommen.

Das aufgerufene CGI Script wird dabei als endlicher Automat mit drei
Zuständen angesehen. FIRSTTIME, STORE und ERROR. Ein Objekt vom Typ
InputFilter wird mit den Datentypen der Formularfelder initialisiert.
Es existieren bereits einige vordefinierte gängige Typen (email, ip,
string, text), es können aber auch eigene Datentypen zusammen mit
einem regulären Ausdruck und weiteren Eigenschaften (min, max, ... )
definiert werden. Bei der Überprüfung der Eingabe wird dann der
Zustandsübergang des Automaten ausgelöst.
							
Perl 5.8.6 Was Boring (And Why You Should Be Excited by This)
Vortragender Nick Clark
Sprache englisch
Typ/Dauer long/40min
Zusammenfassung
There's a lot happening in Perl 5.8.x -- Jarkko Hietaniemi has passed
the reigns over to a new pumpking, and with this comes some changes to
Perl maintenance. But despite adopting "release early, release often,"
priority one is actually to make releases as uneventful as possible.

Last German Perl Workshop the current version of Perl 5.8 was 5.8.4;
at abstract submission time the current version is 5.8.5, but by this
German Perl Workshop 5.8.6 will be current. By adopting a time rather
than feature-based release cycle I can be confident about when the
release will be, but right now totally ignorant as to what will be in
it (well, apart from no new bugs, and fewer of the old ones).

Come to this talk to learn about the current stable branch of Perl.
I'll present a brief history of Perl releases from 5.8.0, warts and
all, so you'll know where the problems are. Learn the reasoning behind
my decision to move to a time based release cycle, what the priorities
are, how these influence the content of the stable releases, and how
they let you plan your perl deployment. See how far Perl maintenance
has come in the past 18 months, learn where is it going, and discover
why it affects you differently depending on whether you are an end
user or an author of modules on CPAN.
							
On optimising: When Perl is not quite fast enough
Vortragender Nick Clark
Sprache englisch
Typ/Dauer tutorial/3h
Zusammenfassung
This is a tutorial on how make Perl scripts go faster, without having
to use C or XS. In it you will learn ways I've found to make your
troublesome slow scripts go faster, and how you can try to avoid some
problems in the first place.

You may think that optimising is the only way to makes scripts go
faster, but the tutorial starts with ways to cheat, as that's a much
better solution, because it usually takes much less effort, and gives
more time for you to go and do something more fun than writing boring
Perl. (Such as writing Acme:: modules)

The tutorial will demonstrate the techniques using specific real code
as examples, showing code before and after, which I'll run
interactively to give a feel for what sort of thing can be achieved.

The tutorial is evolved from the talk I gave at YAPC::EU Munich, with
a more logical order, code examples I didn't have time to show there,
and time to explain what's going on in them at a relaxed pace. The
programs will be going faster, not me.
							
Introduction to Perl 6
Vortragender Allison Randal
Sprache englisch
Typ/Dauer long/40min
Zusammenfassung
This talk is an introduction to Perl 6, the next major version of
Perl. The primary focus is on the syntax of Perl 6: what's changed
from Perl 5, what's the same, and what you can do with the language
today. Topics include operator changes, the extended importance of
closures, smart matching, switches and loops, exceptions, argument
binding, aliasing, properties, and exciting new features like
junctions and grammars.

Beyond the syntax, we'll briefly look at the some of reasons behind
the changes. What makes one feature more desirable than another? What
makes it Perlish? What makes it DWIM? How on earth does Larry decide?
You'll leave with a better understanding of the changes in Perl 6, and
the fundamental nature of Perl itself.
							
Bookmarks im Knowledge Garden
Vortragender Jürgen Christoffel
Sprache deutsch
Typ/Dauer long/40min
Zusammenfassung
Benutzt Du Bookmarks in Deinem Browser? Findest Du diese Sammlung von
Bookmarks übersichtlich und gut organisiert oder unübersichtlich,
zufällig und deshalb meist unbenutzt?

Mit Perl, einem Wiki und optional etwas Javascript, sowie unter
Mithilfe von z.B. Google, Archive.Org kann man diese Bookmarks in eine
brauchbare "Knowledge Base" verwandeln. Die Wikiseiten fungieren als
erweiterte Bookmarks, die kategorisiert und quer verlinkt werden
können. Einer der Nebeneffekte des Verfahrens ist, dass man seine
erweiterten Bookmarks nun bei Bedarf von unterwegs aus nutzen kann,
wenn man sie auf einem Server online bereitstellt.

Im Vortrag zeige ich, wie man die Bookmarks diverser Browser
extrahiert, in ein Wiki einträgt und im Browser durch Aliase ersetzt,
die durch das Wiki gehen, in dem dann beliebige Annotationen manuell
oder auch automatisch gemacht werden können.

Solch ein Wiki kann auch potentiell durch mehrere Leute gleichzeitig
genutzt werden, wodurch wir uns bereits im Bereich der "social
bookmarks" bewegen. Auf die dabei auftretenden Probleme gehe ich kurz
ein.
							
Externe Annotationen in Bibliotheks-Datenbanken
Vortragender Jürgen Christoffel
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
Die Benutzerschnittstellen von Bibliotheks-Datenbanken sind auch zu
Beginn des 21. Jahrhunderts meist auf dem Niveau des vorigen
Jahrhunderts, d.h. sie bieten kaum so nützliche Dienste wie z.B.
Amazon, wo Benutzer (Leser) Kommentare zu den eingetragenen Büchern
zum Nutzen anderer Leser hinterlassen können.

Mit Perl und einem Wiki kann man auch solch altmodischen Datenbanken
zumindest mit einem Bein ins 21. Jahrhundert helfen, indem man die
Zugriffe indirekt durch das Wiki startet und die Ergebnisse mit dem
Inhalt des Wikis geeignet verknüpft. Ich stelle im Vortrag einen
Prototypen für eine öffentlich zugängliche Datenbank vor.

BTW: ich hoffe, mir fällt noch ein besserer Titel ein.
							
PPI - Parse::Perl::Isolated
Vortragender Nathanael Obermayer
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
"Only perl can parse Perl" - seit etwas mehr als zwei Jahren stimmt
dieses Zitat nicht mehr vollständig. Im Jahr 2002, pünktlich zu
Nikolaus, wurde das Modul Parse::Perl::Isolated von Adam Kennedy in
der ersten Version auf CPAN veröffentlicht. Das Modul, kurz PPI
genannt, ermöglicht es, innerhalb eines Perl-Programms ein anderes
Perl-Modul zu parsen und einen Syntax-Tree zu erstellen. Mit diesem
Syntax-Tree ist es möglich, das Programm zu analysieren, um so
beispielsweise automatisch Dokumentationen zu generieren, sogenannte
Refactorings durchzuführen, oder auch Statistiken über den
Perl-Quelltext zu erstellen.

Die TIMTOWTDI-Philosophie führt in großen Projekten mit vielen
Programmierern fast zwangsläufig zu inkonsistentem Quelltext: einzelne
Personen lösen dieselben Aufgaben auf unterschiedliche Art und Weise.
Um den Quelltext zu verstehen, muss daher jedes Team-Mitglied einen
sehr guten Überblick über alle verschiedenen Lösungsmöglichkeiten
haben. Zur Vermeidung dieses Problem werden häufig sogenannte Coding
Guidelines eingesetzt.

Hier kommt PPI ins Spiel: mit Hilfe des Moduls ist es möglich,
Perl-Quelltext auf die Einhaltung solcher Guidelines zu überprüfen.
Durch die Überprüfung des Syntax-Baums können ebenfalls typische
Programmierfehler erkannt werden.

An Beispielen werden die Grundlagen des Parse::Perl::Isolated-Moduls
vermittelt, ebenso seine Einschränkungen (zur Zeit ist das Modul noch
Work-In-Progress, die API stabilisiert sich aber langsam).

							
Einführung in Apache::PageKit
Vortragender Boris Zentner
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
Was ist Apache::PageKit?

Apache::PageKit ist ein umfangreiches Web-Applikation Framework, das
auf dem MVCC Konzept basiert. Dies bedeutet, das die Application in
Model, View, Content und Controller aufgeteilt wird. Wobei

* Model - Application code.
* View - eine eigene Templatesprache, sehr aehnlich HTML::Template.
  Oder ein XSLTstylesheet. Dieses View wird übersetzt und kann
  kombiniert mit einem Templatesystem ( HTML::Template,
  HTML::Template::Expr oder Tempate Toolkit ).
* Content - ein XML File.
* Controller - PageKit

entspricht. Hierbei sind Model, View und Content optional und beliebig
kombinierbar, solange entweder ein Model oder ein View vorhanden ist.

PageKit bietet von haus aus ein Objektorientiertes Model für die
Entwicklung des modelcodes. Von Anfang an werden dem nutzer Session
management, Sticky Forms, language localisation, authentication, form
validation, online editing und ein ausgeklügeltes Cachemanagement zur
Verfügung gestellt.

Voraussetzungen für den Betrieb von Apache::PageKit

     * perl 5.006001 oder besser
     * mod_perl 1 oder 2
     * Apache 1 oder 2
     * libapreq 1 oder 2
     * Apache::SessionX
     * DBI
     * Compress::Zlib
     * Data::FormValidator
     * Digest::MD5
     * HTML::FillInForm
     * HTML::Template
     * HTML::Template::XPath
     * HTML::Clean
     * Text::Iconv/Encode
     * libxml2 library
     * XML::LibXML

Layout einer Application

Besonderheiten

* Applikationen können ohne oder mit kleinen Änderungen von von
  mod_perl 1 auf mod_perl 2 portiert werden.
* Ein wechsel zwischen HTML::Template und TT2 ist mit einer Zeile im Configfile erledigt.
* ...

Beispiele
							
Mein Traum: Multitasking mit Komfort
Vortragender Heiner Kuhlmann
Sprache deutsch
Typ/Dauer bof/20min
Zusammenfassung
Stellt Euch vor: Multitasking unter Perl ist so einfach wie
Telefonieren.

Fork können wir vergessen, eine Task ist eine Instanz einer
Task-Klasse. Tasks kommunizieren miteinander, wie wir telefonieren.

Ich rufe jemanden an. Wenn er nicht innerhalb einer bestimmten Zeit
antwortet, lege ich einfach auf, arbeite weiter und versuche es
später noch einmal. Nimmt der Angerufe ab, tauschen wir Informationen
aus und und lassen uns dabei nicht stören.

Wann und auf welcher Leitung ich Anrufe annehme bestimme ich.

Welche Vorteile ein derartiges Tasking-Konzept in Perl hat und auf
welche Weise es implementiert werden kann soll diskutiert werden - mit
Betonung auf diskutieren.
							
Mein liebstes Modul: PAR
Vortragender Heiner Kuhlmann
Sprache deutsch
Typ/Dauer mlm/20min
Zusammenfassung
PAR hat sich bewährt, eine komplexe Anwendung portabel und einfach
installierbar zu machen. In dem Beitrag wird zunächst auf Stricke und
Fallen eingegangen, die mit jedem Release von verwendeten - nicht PAR
- Modulen neu auftauchen. PAR bietet die Möglichkeit, alle
benötigten Module einer Anwendung elegant zu verpacken. Es ist nicht
mehr notwendig, zig Module zu installieren - selbst auf einen System
mit rudimentärem Perl. Darüber hinaus ist es möglich, den
Quell-Kode zu verändern - auch dann, wenn dieser nur teilweise
vorliegt.
							
Perl/Tk für Praktiker
Vortragender Heiner Kuhlmann
Sprache deutsch
Typ/Dauer tutorial/1,5h
Zusammenfassung
Perl/Tk ist eine einfache Toolbox für den Bau grafischer
Oberflächen, die sich seit langem bewährt. Um schnell
funktionierende Oberflächen aufbauen zu können muss man allerdings
die Tk-Philosophie verstanden haben. In diesem Beitrag soll einerseits
anhand eines einfachen Beispiels dargestellt werden, wie
Tk-Oberflächen konstruiert werden und andererseits auf welche Weise
ein "vernünfiges" dynamisches Verhalten erreicht wird. Der
Schwerpunkt liegt auf der Konstruktionsweise einer Tk/Anwendung.
Letztlich wird das Problem das keineswegs Tk-spezifische Problem des
Einfrierens der Oberfläche eingegangen.
							
Perl/OpenLDAP
Vortragender Reinhard Voglmaier
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
Im Moment bin ich dabei mit OpenLDAP und dem OpenLDAP herumzuspielen.
Die Hilfestellungen von der OpenLDAP Gruppe hierzu sind leider etwas
duerftig, dem ist es warscheinlich zuzurechnen, dass Wenige dieses
Backend benutzen. Im Moment schreibe ich ein Proxy Perl Backend fuer
OpenLDAP.

Ich wuerde erstmal kurz was ueber LDAP im allgemeinen und dann ueber
OpenLDAP speziell erzaehlen. Dann auf mein Project eingehen (Perl
OPenLDAP backend, dass Net::LDAP benuetzt). Kurz Net::Ldap vorstellen
und dann naeher auf die Einbindung des Perl Interpreters in C
Programme eingehen. Danach "perlembed" am Beispiel des OpenLDAP perl
backends erlaeutern und danach zeigen wieso die Kompilierung und
Ausfuehrung des Perl Backends von OpenLDAP manchmal daneben geht. Am
Schluss möchte ich mein Proxy Server fuer das OpenLDAP Perl backend
detailliert beschreiben und als Ausblick weitere
Verwendungsmöglichkeiten des Perl backends zeigen.
							
Nicht alltägliche Perl/Tk Features
Vortragender Lorenz Domke
Sprache deutsch
Typ/Dauer tutorial/1,5h
Zusammenfassung
Mit Perl/Tk lassen sich auf einfache Weise grafische Oberflächen
erstellen. Dabei kommt man mit den elementaren Widgets wie Buttons,
Chechbuttons, Radiobuttons, Entry- und Text-Feldern sowie scrollbaren
Listen schon ziemlich weit. Wenn man allerdings anspruchsvollere GUIs
erstellen will, reicht das nicht aus.

Der Vortrag zeigt u. a. folgende weiterführende Möglichkeiten:
* Erstellen eigener Widgets, die sich nahtlos in Perl/Tk einfügen,
  mit "Construct Tk::Widget" am Beispiel eines Mini-Kalenders
* Steuerung von Scrollbars am Beispiel eines visuellen Browsers für Image Directories
* Verwendung von XPM Icons für Buttons und "inline" Definition der XPM Images
* Interaktive Grafik am Beispiel eines Rechenschiebers, der mit der Maus bedient werden kann.
							
Java PetStore Blueprint in Maypole
Vortragender Sebastian Riedel
Sprache deutsch
Typ/Dauer long/40min
Zusammenfassung
"Java PetStore Blueprint in Maypole" hat sich ... komplett geändert,
da ich gerade ein Nachfolgeprojekt für Maypole namens Catalyst
gegründet habe.

Catalyst wird zwar erst in ein bis zwei Wochen veröffentlicht dürfte
dann aber mehr als genug Stoff für einen 40er bieten.

Über Catalyst:

Catalyst ist ein Aspekt Orientiertes MVC Web Application Framework.
(Das ist etwas komplett Neues)

Das heisst es bietet nicht nur die Trennung von Model, View und
Controller sondern zusätzlich die Möglichkeit Aktionen in Aspekte zu
abstrahieren, mit AOP typischen Point-cuts und Advices.

Klingt etwas kompliziert, ist aber recht simpel, und resultiert darin
noch weniger Code zu benötigen als mit Maypole. ;)

Ausserdem gibt es eine strikte Trennung zwischen Design und
Implementierung, was die Arbeit in grossen Teams zum Kinderspiel
macht.

Das heisst mein Vortrag würde mit einer kleinen Einführung in die
Aspekt Orientierte Programmierung beginnen und über Themen wie
Blueprints und Design Patterns zu Catalyst führen.

Wenn die Zeit reicht werde ich noch Themen wie YAML,
Authentifizierung, Session Management, Transaktionen, Exceptions und
I18N anschneiden.
							
codesnippets.services.openoffice.org: Wie mache ich eine einfache Website mit AxKit
Vortragender Tom Schindl
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
AxKit ist ein Framework ähnlich dem aus dem Java-Bereich bekannten
Cocoon- Projekt, dass mit zur Hilfenahme von diversen Perl-Modulen,
auf XML basierende Webinhalte einfach auf zu bereiten. Durch seine
Modulare Aufbauweise kann AxKit einfach erweitert werden. Wie einfach
das geht wird anhand der http://codesnippets.services.openoffice.org
von OpenOffice demonstiert.

							
SVG: Wie verwendet man XML::LibRSVG um Bitmaps on-the-fly zu generieren
Vortragender Tom Schindl
Sprache deutsch
Typ/Dauer mlm/5min
Zusammenfassung
XML::LibRSVG ist das Perl-Binding zur librsvg-Bibiliothek. Wie kann
ich XML::LibRSVG einsetzen, um schnell und einfach Grafiken zu
erzeugen.
							
Threads in Perl
Vortragender Gerald Richter
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
* Abgrenzung und Einordnung
** 5.005 Threads versus IThreads
** Perl Threads versus OS Threads
** Threads versus Prozesse
** Threads versus POE
* Threads in der Praxis
** Starten und Beenden von Threads
** Teilen von Daten
** Locking und Serialisierung von Threads
** Kommunikation zwischen Threads
* Fallstricke
** Speicherverbrauch
** Perfomance
							
Terabytes of Images with Perl
Vortragender Mark Overmeer
Sprache englisch
Typ/Dauer short/20min
Zusammenfassung
Perl has lost a lot of users to PHP when it comes to building
websites, but still a lot of people are building websites using Perl
and some Template toolkit. In my case, I build a website in Perl
without template system.

During the talk, I will discuss how I build my Satellite Imaging
system purely in Perl. The website currently contains over 5 TeraByte
of disk-space on a set of cheap PCs. The distributed nature of the
application, the huge size of the images, and the limited resources
for development scream are a real challenge.

The presentation will discuss some design descissions and their
outcome, tools which I use to get the work done, show some examples
how I create pages without template system but still efficiently, and
demonstrate the system in action.
							
Experiences of Perl 5 and Perl 6, common ways for misunderstandings
Vortragender Allison Randal, Nick Clark
Sprache englisch
Typ/Dauer short/20min
Zusammenfassung
I had a chat with Allison Randal about this. I guess what I have
learned is common ways for misunderstandings to happen, and how to try
to avoid them, in large, distributed open source projects. In
particular, how e-mail goes wrong.

We think together we could probably do a 20 minute talk based on our
experiences of perl 5 and perl 6, mostly based around illustrative
extracts of e-mail exchanges from the perl lists. (This may sound
vague, but offhand I was able to think of a couple examples of
misunderstandings that happened that are easy to present, and I've not
had a dig through the archives yet).

It might be a bit light on content, but it would be amusing.
							
Lizenzmanagement von Web-Inhalten mit mod_perl-Handlern
Vortragender Jens Klöcker
Sprache deutsch
Typ/Dauer long/40min
Zusammenfassung
Eine der immer wieder kehrenden Aufgaben im professionellen
Web-Management ist ein flexibler Schutz von Web-Inhalten. Die
Lösungen hierzu reichen von komplexen Contentmanagement-Systemen bis
hin zu einfachsten Mechanismen wie der HTTP-Basic Authentifizierung.

Am Beispiel der Software DLS ContentAccessControl®, die
hauptsächlich im E-Learning-Umfeld eingesetzt wird, wird gezeigt, wie
sich ein einfacher und trotzdem flexibler Zugriffsschutz mit
integriertem Lizenzmanagement durch eine Kette von mod_perl-Handlern
realisieren lässt.

Eingegangen wird dabei insbesondere auf die unterschiedlichen Aufgaben
der zum Einsatz kommenden Apache-Handler und deren Zusammenspiel mit
Hilfe der durch mod_perl bereit gestellten Funktionen. Eine
Vorstellung der mit Apache::Template realisierten
Administrationsoberfläche zeigt anschließend, wie mit relativ
einfachen Mitteln eine robuste Oberfläche für diesen Mechanismus
realisiert wurde.
							
Kamele im Spotlight: Eclipse mal anders
Vortragender Philipp Traeder
Sprache deutsch
Typ/Dauer short/20min
Zusammenfassung
Was viele Java-Entwickler schon lange geniessen, ist endlich auch für
Perl verfügbar: EPIC bietet einen komfortablen Perl-Editor mit
integriertem Debugger, Syntax Highlighting, Code Templates und vielem
mehr. Durch die Integration in die modulare Entwicklungsumgebung
Eclipse hat der Perl-Entwickler somit sämtliche Werkzeuge in einer
Applikation zur Hand - sei es PerlDoc, ein Regular Expression Tester,
ein CVS-Client oder ein Datenbank-Frontend.

Dieser Artikel stellt einige Kernfunktionen vor und demonstriert, wie
durch das Zusammenspiel von Eclipse und EPIC professionelle
Perl-Entwicklung effizienter werden und noch mehr Spaß machen kann.
							
Key Signing Party
Vortragender Jost Krieger
Sprache deutsch
Typ/Dauer long/40min
Zusammenfassung
Dieses Jahr soll auf dem Workshop auch eine (?:GnuPG|PGP)-Keysigning-Party
stattfinden.

Wer sich jetzt fragt, was die Abkürzungen bedeuten, der sei zunächst auf
die viele Information auf den Seiten hinter www.gnupg.org verwiesen.

Wer zwar mit den Abkürzungen etwas anfangen kann, nicht aber mit dem Begriff
Keysigning-Party, der möge sich besonders das HOWTO unter
http://www.cryptnet.net/fdp/crypto/gpg-party/gpg-party.de.html
zu Gemüte führen (oder vielleicht die englische Variante, die deutsche
ist stellenweise etwas hölzern).

Warum jetzt eine Keysigning-Party auf dem Workshop?

1. Alle solchen Zusammenkünfte sind besonders geeignet, da man so
   an Signaturen von Leuten kommt, die nicht aus der unmittelbaren
   Umgebung stammen. Das verbessert das globale "Web-of-Trust".

2. Kryptographie wird von vielen Perl-Modulen benutzt/unterstützt,
   ohne jeden Funktionstest findet sich speziell für PGP und GnuPG:

   Crypt::GPG, GPG, Mail::GPG,
   PGP::FindKey, PGP::Mail, PGP::Pipe, PGP::Sign,
   Crypt::OpenPGP, Acme::PGPSign, Crypt::PGP2, Crypt::PGP5, Crypt::PGPSimple,
   MIME::Decoder::PGP, Mac::Apps::MacPGP, Mail::Audit::PGP,
   Mail::IspMailGate::Filter::PGP, Penguin::PGP,

3. Das Recht auf informationelle Selbstbestimmung ist heute zwar gerade
   erst ins Bewusstsein gedrungen, aber schon gefährdet. Es wird Zeit,
   dass man es auch in Anspruch nimmt.

Wer teilnehmen möchte, liest sich bitte Punkt 3 des HOWTO gut durch
(natürlich müsst ihr keine Schlüssel generieren, wenn ihr schon einen
habt usw.).

Damit ich für die Party eine schöne Liste erstellen kann, sendet bitte
*bis zum 5.2.2005, 24 Uhr* an die Adresse

Jost.Krieger+ksp@rub.de

1. dass ihr teilnehmen möchtet,
2. euren GPG/PGP-Schlüssel oder ersatzweise, falls ihr Keyserver
   benutzt, die KeyID *und* einen Fingerprint.

Wenn Ihr wollt, könnt ihr die Email verschlüsseln, die Keyserver kennen
die Email-Adresse.

Zur Party auf der Tagung bringt bitte Folgendes mit:

1. euch selbst (kein Mensch, keine Signatur :-)),
2. einen Lichtbildausweis (also für Deutsche den Personalausweis, für
   andere ein Äquivalent oder einen Reisepass),
3. eure KeyID, -Typ, -Länge und -Fingerprint auf Papier
   (wenn ihr es auswendig lernt, geht das auch ...),
4. etwas zum Schreiben,
5. keinen Computer.

Was gestellt wird, ist

1. eine ausgedruckte Liste zum Vergleichen und Abhaken,
2. freundliche Worte,
3. organisierte Durchführung der Identifikation (hoffe ich),
4. keine geistigen Getränke (Spenden sind natürlich willkommen).

Damit es ein voller Erfolg wird, solltet ihr nach der Party (evtl. nach
dem Workshop) bitte nicht vergessen, mit Hilfe eurer (sicher
aufbewahrten) Kreuzchenliste die Schlüssel der Leute, bei denen alles in
Ordnung war, zu signieren und zurückzuschicken bzw. hochzuladen.

Ich hoffe auf rege Beteiligung.

Gruß Jost Krieger |8-))
							
eof