Redner merken
Die Methode »told()« springt das Plugin-Framework jedes Mal an, wenn jemand im Chatroom seine Stimme erhebt. Neben einer Referenz auf das Plugin-Objekt erhält »told()« einen Message-Hash, der unter den Schlüsseln »who« und »body« das Kürzel des Absenders und den Inhalt der Nachricht mit sich führt.
Das Modul holt anschließend mit der Method »now()« des »DateTime«-Objekts die aktuelle Uhrzeit ab, genau so, wie Cache::Historical den Zeitstempel erwartet. Der Parameter »time_zone« ist bei »now()« auf den Wert »local« gesetzt, damit das »DateTime«-Objekt in der aktuellen Zeitzone beheimatet ist.
Die Methode liefert einen leeren String an das Framework zurück, um so zu signalisieren, dass sie keine Nachricht zurück in den Chatroom schickt, denn das Plugin möchte einfach stillschweigend mitprotokollieren.
Das Skript in Listing 3 startet einen Bot, der das neue Log-Modul lädt und sich dann mit dem Channel auf dem IRC-Server verbindet. Wahlweise ist auch ein Array von Channels möglich, in die der Bot gleichzeitig eindringt.
Die Methode »load()« in Zeile 17 findet das Modul »Log.pm« entweder im aktuellen Verzeichnis oder im Plugin-Verzeichnis des Framework, meist in »/usr/local/lib/perl5/site_perl/5.x/Bot/BasicBot/Pluggable«. Der Loglevel des Skripts ist mit Log4perl auf »$ERROR« gesetzt, wer möchte, dass das Skript zu Debug-Zwecken auf »Stderr« detaillierte Meldungen über eingefangene Nachrichten und den Speichervorgang weitergibt, setzt ihn dagegen auf »$DEBUG«.
01 #!/usr/local/bin/perl -w
02 use strict;
03 use Bot::BasicBot::Pluggable;
04 use Log::Log4perl qw(:easy);
05
06 Log::Log4perl->easy_init({
07 level => $ERROR,
08 layout => "%F{1}-%L %m%n"
09 });
10
11 my $bot = Bot::BasicBot::Pluggable->new(
12 channels => ["#perlsnapshot"],
13 server => "irc.freenode.net",
14 nick => "snapshot-logger",
15 );
16
17 $bot->load("Log");
18
19 # Connect to IRC server
20 $bot->run();
|

|
Abbildung 3: Der Perl-Snapshot-Logger in Gestalt eines Bot lauscht hier in eine beliebige Konversation hinein.
|
Hinter den Kulissen
Wer sehen will, wie die abgespeicherten Daten auf der Festplatte liegen, darf gerne einen Blick hinter die Kulissen des Speichermoduls werfen: Wie Abbildung 4 zeigt, legt es ohne Zutun des Bot-Programmierers eine SQLite-Datenbank mit einem passenden Schema an und speichert jede eingehende Nachricht in einer Tabellenzeile ab. Die Einträge sind mit einer ID durchnummeriert, enthalten den Zeitstempel in der zweiten Kolumne, den Chatroom in der vierten und die Nachricht schließlich in der fünften. Die dritte Spalte »upd_time« ist hier ohne Bedeutung, sie dient internen Zwecken. Da das Modul nur ein Feld pro Wert bereitstellt, presst »Log.pm« einfach Sender und Nachricht in einen String und separiert sie mit einem Doppelpunkt und einem Leerzeichen.

|
Abbildung 4: Das Modul Cache::Historical legt die gespeicherten Daten in einer SQLite-Datenbank zusammen mit einem Zeitstempel ab.
|
Doch diese Darstellung sollte nicht interessieren, bietet Cache::Historical doch die Methode »values()« an, die alle unter einem Key (dem Chatroom) gespeicherten Nachrichten in chronologischer Reihenfolge zurückgibt. Listing 4 zeigt die Implementierung, Abbildung 5 die Ausgabe des Skripts.
01 #!/usr/local/bin/perl -w
02 use strict;
03 use Cache::Historical 0.03;
04
05 our $SQLITE_FILE = "irclog.dat";
06
07 my $cache = Cache::Historical->new(
08 sqlite_file => $SQLITE_FILE,
09 );
10
11 for my $result ( $cache->values("#perlsnapshot") ) {
12 my($dt, $msg) = @$result;
13
14 print "$dt $msgn";
15 }
|

|
Abbildung 5: Das Skript »logdump« gibt die in der SQLite-Datenbank mitgeschnittene Konversation auf Verlangen auf der Standardausgabe wieder aus.
|
| 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)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|