Ich bitte alle Leser um Entschuldigung für die Unannehmlichkeiten.
Die weiteren Artikel sind aber doch recht aktuell ;-))
Inhalt der 15. Ausgabe:
OTRS::CiCS
OTRS ist eines der meist benutzten Help-Desk-Systeme weltweit - und es ist in Perl geschrieben. Das System kann durch Zusatzmodule erweitert werden. Ein solches Zusatzmodul ist OTRS::CiCS. Torsten Thau stellt das Modul vor und geht auch auf das OTRS-Paketmanagement ein.
Shutter - Ein funktionsreiches Werkzeug zur Erstellung von Bildschirmfotos
Tools zur Erstellung von Screenshots gibt es viele - mal mit mehr, mal mit weniger Features. Shutter ist ein solches Tool - mit mehr Features. Mario Kemper zeigt, wie er mit Perl und Gtk2 das Programm entwickelt hat und stellt einige der Features vor.
Regex Debugging
Debugging ist nicht gerade die Lieblingsaufgabe von Programmierern und das Debuggen von Regulären Ausdrücken schon gar nicht. Dieser Artikel zeigt, wie man Reguläre Ausdrücke debuggen kann.
AI::CBR
Künstliche Intelligenz wird in den unterschiedlichsten Bereichen eingesetzt. Darko Obradovic gibt in diesem Artikel einen Einblick in die Methode des "Fallbasierten Schließens" (Case-Based Reasoning), die zur ähnlichkeitsbasierten Suche/Problemlösung verwendet werden kann.
Sauberer Namensraum mit namespace::clean
Durch das Exportieren von Subroutinen kann der Namensraum "zugemüllt" werden. Wie man mit dem Modul namespace::clean Ordnung halten kann, zeigt dieser Artikel.
WxPerl Tutorial - Teil 4
Der vierte Teil des WxPerl Tutorials von Herbert Breunung stellt die verschiedenen "Flächen" vor, auf denen die Widgets einer GUI angeordnet werden können.
Moose Tutorial - Teil 1
Moose verbessert die Objektorientierung von Perl enorm. In dieser Ausgabe startet ein mehrteiliges Tutorial dazu. Der erste Teil behandelt das Thema "Attribute mit Moose" ausführlich.
12. Deutscher Perl-Workshop
Herbert Breunung gibt einen Rückblick auf den 12. Deutschen Perl-Workshop, der Anfang Juni 2010 in Schorndorf stattfand.
... und vieles mehr
Neues von der TPF - was ist in den letzten 3 Monaten bei der TPF passiert?
CPAN-News - Wieder werden 6 neue Module vom CPAN vorgestellt
installieren. Anschließend steht das Kommandozeilen-Tool perlbrew zur Verfügung.
Die grundlegende Konfiguration erfolgt über die Option init - alle erforderlichen Dateien und Verzeichnisse werden als Default im Heimatverzeichnis im Ordner ~/perl5/perlbrew angelegt.
$ perlbrew init
Perlbrew environment initiated, required directories are created under
/home/bob/perl5/perlbrew
Well-done! Congratulations! Please add the following line to the end
of your ~/.bashrc
source /home/bob/perl5/perlbrew/etc/bashrc
...
Wer perlbrew in ein anderes Verzeichnis installieren möchte, setzt dazu
die Umgebungsvariable PERLBREW_ROOT:
Nach dem die o.g. Änderungen in der Datei ~/.bashrc ausgeführt wurden,
aus der Shell abmelden und erneut einloggen, damit die Änderungen wirksam werden.
Mehrere Perls installieren
Mittels perlbrew install kann ein neues Perl installiert werden. Optionen, welche die Konfiguration des neuen Perls beeinflußen, werden über den Schalter -D= eingestellt.
Die möglichen Optionen lassen sich der Datei INSTALL des
jeweiligen Perls entnehmen.
Hier ein Perl 5.12.1 mit Threads:
$ perlbrew install perl-5.12.1 -D=usethreads
Attempting to load conf from /home/bob/perl5/perlbrew/Conf.pm
Fetching perl-5.12.1 as /home/bob/perl5/perlbrew/dists/perl-5.12.1.tar.gz
Installing perl-5.12.1 into /home/bob/perl5/perlbrew/perls/perl-5.12.1
This could take a while. You can run the following command on another shell to track the status:
tail -f /home/bob/perl5/perlbrew/build.log
(cd /home/bob/perl5/perlbrew/build; tar xzf /home/bob/perl5/perlbrew/dists/perl-5.12.1.tar.gz;cd /home/bob/perl5/perlbrew/build/perl-5.12.1;rm -f config.sh Policy.sh;sh Configure -de -Dprefix=/home/bob/perl5/perlbrew/perls/perl-5.12.1 -Dusethreads;make;make test && make install) >> '/home/bob/perl5/perlbrew/build.log' 2>&1
Installed perl-5.12.1 as perl-5.12.1 successfully. Run the following command to switch to it.
perlbrew switch perl-5.12.1
Hier ein Perl 5.12.1 mit Standard-Optionen, also ohne Threads
- über den Schalter -as wird ein passender Name für dieses Perl gewählt.
$ perlbrew install perl-5.12.1 -as perl-5.12.1-nothreads
Attempting to load conf from /home/bob/perl5/perlbrew/Conf.pm
Use the previously fetched perl-5.12.1.tar.gz
Installing perl-5.12.1 into /home/bob/perl5/perlbrew/perls/perl-5.12.1-nothreads
This could take a while. You can run the following command on another shell to track the status:
tail -f /home/bob/perl5/perlbrew/build.log
(cd /home/bob/perl5/perlbrew/build; tar xzf /home/bob/perl5/perlbrew/dists/perl-5.12.1.tar.gz;cd /home/bob/perl5/perlbrew/build/perl-5.12.1;rm -f config.sh Policy.sh;sh Configure -de -Dprefix=/home/bob/perl5/perlbrew/perls/perl-5.12.1-nothreads;make;make test && make install) >> '/home/bob/perl5/perlbrew/build.log' 2>&1
Installed perl-5.12.1 as perl-5.12.1-nothreads successfully. Run the following command to switch to it.
perlbrew switch perl-5.12.1-nothreads
Hier ein Perl 5.12.1 mit Standard-Optionen, also ohne Threads, aber mit Debugging-Informationen.
$ perlbrew install perl-5.12.1 -D=DEBUGGING=both -as perl-5.12.1-nothreads-debug
Attempting to load conf from /home/bob/perl5/perlbrew/Conf.pm
Use the previously fetched perl-5.12.1.tar.gz
Installing perl-5.12.1 into /home/bob/perl5/perlbrew/perls/perl-5.12.1-nothreads-debug
This could take a while. You can run the following command on another shell to track the status:
tail -f /home/bob/perl5/perlbrew/build.log
(cd /home/bob/perl5/perlbrew/build; tar xzf /home/bob/perl5/perlbrew/dists/perl-5.12.1.tar.gz;cd /home/bob/perl5/perlbrew/build/perl-5.12.1;rm -f config.sh Policy.sh;sh Configure -de -Dprefix=/home/bob/perl5/perlbrew/perls/perl-5.12.1-nothreads-debug -DDEBUGGING=both;make;make test && make install) >> '/home/bob/perl5/perlbrew/build.log' 2>&1
Installed perl-5.12.1 as perl-5.12.1-nothreads-debug successfully. Run the following command to switch to it.
perlbrew switch perl-5.12.1-nothreads-debug
Hier ein Perl 5.12.1 mit Threads und Debugging-Informationen.
$ perlbrew install perl-5.12.1 -D=DEBUGGING=both -D=usethreads -as perl-5.12.1-debug
Attempting to load conf from /home/bob/perl5/perlbrew/Conf.pm
Use the previously fetched perl-5.12.1.tar.gz
Installing perl-5.12.1 into /home/bob/perl5/perlbrew/perls/perl-5.12.1-debug
This could take a while. You can run the following command on another shell to track the status:
tail -f /home/bob/perl5/perlbrew/build.log
(cd /home/bob/perl5/perlbrew/build; tar xzf /home/bob/perl5/perlbrew/dists/perl-5.12.1.tar.gz;cd /home/bob/perl5/perlbrew/build/perl-5.12.1;rm -f config.sh Policy.sh;sh Configure -de -Dprefix=/home/bob/perl5/perlbrew/perls/perl-5.12.1-debug -DDEBUGGING=both -Dusethreads;make;make test && make install) >> '/home/bob/perl5/perlbrew/build.log' 2>&1
Installed perl-5.12.1 as perl-5.12.1-debug successfully. Run the following command to switch to it.
perlbrew switch perl-5.12.1-debug
Zwischen den verschiedenen Perls hin- und herschalten
Zunächst werfen wir einen Blick auf das System-Perl:
$ perl -v
This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi
Ein Übersicht aller installierten Perls liefert die Option installed
Über die Option switch kann auf ein anderes Perl umgeschaltet werden.
Da perlbrew die Umgebungsvariable PATH verändert, ist es zwingend
erforderlich, die Shell über diese Änderung per hash -r (manchmal auch
rehash) zu informieren.
$ perlbrew switch perl-5.12.1
$ hash -r
$ perl -v
This is perl 5, version 12, subversion 1 (v5.12.1) built for i686-linux-thread-multi
Zurück zum System-Perl gelangt man über die Option off:
$ perlbrew off
$ hash -r
$ perl -v
This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi
CPAN-Module installieren
Wie bereits erwähnt, verändert perlbrew beim Switchen die Umgebungsvariable PATH und setzt zusätzlich das richtige cpan-Programm in diesen Pfad.
$ perlbrew switch perl-5.12.1-nothreads
$ hash -r
$ cpan
cpan> install YAML
...
Appending installation info to /home/bob/perl5/perlbrew/perls/perl-5.12.1-nothreads/lib/5.12.1/i686-linux/perllocal.pod
cpan> quit
$ perlbrew off
$ hash -r
Das CPAN Testers Project möchte möglichst viele CPAN-Module auf möglichst vielen Plattformen testen. Diese Testergebnisse bieten CPAN-Autoren und Nutzern wertvolles Feedback und helfen die Qualität der CPAN-Module zu verbessern und somit den Wert des CPAN zu erhöhen.
Dank des CPAN-Moduls CPAN::Reporter von David Golden kann jeder, der ein Modul auf seinem Rechner installiert, einen Test-Report automatisch erzeugen und zu den CPAN-Testern übermitteln.
Wegen des starken Wachstums des CPAN-Testers Projects in den letzten Jahren ist eine neue leistungsfähige skalierbare Lösung erforderlich.
Test-Reports können auch über HTTP eingereicht werden.
Test-Reports, Tester und Distributionen werden über eine Meta-Datenbank
verwaltet
Die alte Schnittstelle über SMTP wird am 31.08.2010 eingestellt.
Installation
CPAN::Reporter benötigt das Modul CPAN ab Version 1.9301 und weitere Module, wie z.B. Module::Build, in möglichst aktuellen Versionen - hier bietet sich ein allgemeines Update via Bundle::CPAN an. Weiterhin werden Module für den neuen Transportmechanismus über HTTP benötigt.
Im ersten Schritt werden einige einfache Fragen beantwortet und daraus eine grundlegende Konfiguration erzeugt.
cpan> o conf init test_report
Zunächst wird festgelegt, ob die Testergebnisse zu den CPAN Testern versandt werden sollen.
Email test reports if CPAN::Reporter is installed (yes/no)? [no] yes
Would you like me configure CPAN::Reporter now? [yes] yes
Falls ja wird als nächstes die E-Mail Adresse des Test Reporters abgefragt. Wer über eine PAUSE-ID verfügt, trägt bitte die dort hinterlegte E-Mail-Adresse (pauseid@cpan.org) ein; ansonsten ist jede gültige Adresse okay.
Die Testergebnisse wurden bisher an die Mailserver von perl.org gesandt werden. Da der Versand jetzt über HTTP erfolgt, bleibt dieses Feld einfach leer.
smtp_server? []
Die Testergebnisse können vor dem Versand noch mit einem Editor bearbeitet werden. Als Tester kann man hier noch Hinweise für den Autor einfügen.
Die vorgeschlagene Standardkonfiguration sendet die Reports im Erfolgsfall automatisch und fragt im Misserfolgsfall nach, ob der Report vor dem Versand editiert werden soll.
edit_report? [default:ask/no pass/na:no]
Nun muss die Konfiguration noch gespeichert werden.
cpan> o conf commit
Die Konfigurationsdatei config.ini befindet sich im Heimatverzeichnis des aktuellen Benutzers im Unterverzeichnis .cpanreporter und kann mit einem beliebigen Text-Editor bearbeitet werden.
In diese Datei wird nun als zweiter Schritt der neue Transportmechanismus von Hand eingetragen.
email_from="Thomas Fahle" <cpan@thomas-fahle.de>
send_report=default:ask/yes pass/na:yes
edit_report=default:ask/no pass/na:no
transport = Metabase uri http://metabase.cpantesters.org/beta/ id_file /home/tf/.cpanreporter/metabase_id.json
Der Transportmechanismus erwartet eine Profildatei (id_file) mit einem Shared Secret.
Dieses Profil dient z.B. zu richtigen Zuordnung der Tests und Tester im CPAN Testers Leaderboard.
Wer bereits Tests zu den CPAN-Testern geliefert hat, erhält eine vorgefertigte Profildatei nach Anforderung per E-Mail.
Neue Tester (m/w) können die Profildatei einfach mit dem Kommandozeilentool metabase-profile erstellen:
$ metabase-profile
Enter full name: Thomas Fahle
Enter email address: cpan@thomas-fahle.de
Enter password/secret: 1234567890
Writing profile to 'metabase_id.json'
Diese Datei wird nun im Verzeichnis ~./cpanreporter abgelegt.
Da in dieser Datei das Passwort im Klartext steht, sollte man zu mindestens die Rechte für den Zugriff auf die Datei und auf das Verzeichnis .cpanreporter einschränken, z.B. chmod 600 metabase_id.json.
Hinweis zur Privatsphäre
Testberichte enthalten Informationen über das Testsystem, wie Umgebungsvariablen, Betriebssystem, installierte Bibliotheken usw.
Wer sich Sorgen um die Privatsphäre macht, sollte die Berichte zuvor editieren. Die dazu passende Konfiguration:
edit_report=default:ask/yes pass/na:yes
Werde CPAN-Tester
Es ist wirklich einfach CPAN-Test-Reporter zu sein. Je größer das Netzwerk der Tester, um so besser. Werde CPAN-Test-Reporter.