Monday, January 31, 2011

Ausgabe Nr 17 des Perl-Magazins "$foo" ist da!

Ein neues Jahr beginnt und auch das Perl-Magazin (http://perl-magazin.de) ist wieder da. Mit der 17. Ausgabe gehen wir in das 5. Jahr von "$foo".

Die Hefte für Abonnenten gehen morgen früh mit der Post raus...


Inhalt dieser Ausgabe:

* JMX4Perl

Um auf Java EE Management Server Interfaces mit zugreifen zu können, gibt es das Modul jmx4perl. Das Modul setzt einen Agentenbasiertern Ansatz um. Dr. Roland Huß berichtet in diesem Artikel, wie man das Modul in eigenen Programmen einsetzen kann.

* Perl und SVG

SVG ist vielleicht nicht die Neuigkeit schlechthin, aber es ist immer wieder sehr nützlich und gut. Dieser Artikel zeigt, wie mit Perl und verschiedenen Modulen - auch unter Perl 6 - SVG-Graphiken erstellt und verändert werden können.

* OTRS-Community-Meetings

Die Community spielt bei der Software OTRS, die komplett in Perl geschrieben ist, eine immer wichtigere Rolle. Alexander Halle berichtet vom ersten OTRS Community Meeting und lädt zum zweiten Treffen ein.

* In HTML5 eintauchen mit WebSockets und Perl

Die nächste Generation von HTML steht vor der Tür. Welche Möglichkeiten WebSockets bieten und wie man solche WebSockets mit Perl benutzen kann, beschreibt Viacheslav Tykhanovskyi in seinem Artikel.

* Was ist neu in Perl 5.14

Im April wird es das nächste stabile Release von Perl geben - Perl 5.14. Seit Perl 5.12.x hat sich wieder einiges getan. Die wichtigsten und spannendsten Änderungen werden in diesem Artikel gezeigt.

* WxPerl Tutorial VI - Menüs, Toolbars, ...

Seit Jahrzehnten verstehen Entwickler unter Applikationen Programme für Endanwender mit graphischer Oberfläche. Diese Folge widmet sich den Teilen, die bisher dazu fehlten: Menü, Werkzeugleiste, Statuszeilen sowie Tastatur und Mauseingaben.

* Moose Tutorial III - Vererbung

Nachdem in den letzten beiden Ausgaben die Themen "Attribute" und "Methoden" behandelt wurden, ist in dieser Ausgabe das Thema "Vererbung" an der Reihe. In der nächsten Ausgabe werden dann "Rollen" besprochen. Einige Programmierer bevorzugen "Rollen" gegenüber der "Vererbung". Beides hat seine Daseinsberechtigung.

* Rezension "Effective Perl Programming"

Thomas Kappler hat das Buch "Effective Perl Programming" gelesen und gibt einen Einblick in das Buch.

* Rezension Bücher zur IT-Geschichte

Gleich über zwei Bücher berichtet Herbert Breunung: "Coding for Fun" und "Computergeschichte(n)-nicht nur für Geeks", die beide im Galileo-Verlag erschienen sind.

* HowTo: Parallel::Iterator

In diesem Artikel zeigt Thomas Fahle, wie man mit Parallel::Iterator mehrere Aufgaben parallel erledigen kann.

* Verschiedenes

Auch in dieser Ausgabe gibt es wieder die Neuvorstellung von 6 CPAN-Modulen, Neues von der TPF und Termine

Saturday, January 29, 2011

Vortrag auf den Chemnitzer LinuxTagen

So langsam muss ich planen, auf welchen Veranstaltungen 2011 ich teilnehmen will. Es gibt ja jede Menge Möglichkeiten. Ich werde auf jeden Fall nach Chemnitz auf die LinuxTage fahren, denn ich werde dort auch einen Vortrag halten - über Perl::Critic.

Dazu muss ich meinen alten Perl::Critic-Vortrag nochmal überarbeiten...

Ich würde mich freuen, wenn viele Leute nach Chemnitz kommen.

Friday, January 07, 2011

Pod::Simple::XHTML und Pod in UTF-8

Ich bin fast fertig mit der ersten Runde beim Versuch $foo auch als epub zu generieren. Die Ergebnisse sehen auch schon einigermaßen gut aus. Innerhalb des Umwandlungsprozesses benutze ich Pod::Simple::XHTML und die Artikel liegen in Pod vor - gespeichert als UTF-8.

Der Parser wurde bisher so benutzt:

my $parser = Pod::Simple::XHTML->new;
$parser->parse_file( 'article.pod' );

So kam dann aber "Müll" bei den Umlauten raus. Der Doctype und die charset-Angabe im Metatag waren korrekterweise auf UTF-8 gestellt.

Ein Blick in den Code von Pod::Simple::XHTML hat gezeigt, dass der Text durch HTML::Entities::encode_entities läuft. Also musste hier etwas schieflaufen.

In der Doku von HTML::Entities nichts bezüglich UTF-8 gefunden. Also schnell ein Testskript geschrieben und folgendes festgestellt:

use HTML::Entities;
my $text;
{
local $/;
open my $fh, '<', 'article.pod'; $text = <$fh>;
close $fh;
}

print encode_entities( $text );

bringt falsch Entities. Ein

use HTML::Entities;
my $text;
{
local $/;
open my $fh, '<', 'article.pod'; binmode ":encoding(utf-8)"; $text = <$fh>;
close $fh;
}

print encode_entities( $text );

funktioniert. Ich muss also den IO-Layer nehmen, damit die Perl die Datei gleich als UTF-8 einliest (über IO-Layer habe ich hier mal was Kurzes geschrieben).

Also liegt das Problem nicht bei HTML::Entities. Aber wie kann ich Pod::Simple::XHTML sagen, dass die Text UTF-8 sind? In der Doku nichts gefunden. Nachgeschaut, wie die Datei beim parse_file geöffnet wird. Heraus kam

{
local *PODSOURCE;
open(PODSOURCE, "<$source") || Carp::croak("Can't open $source: $!"); $self->{'source_filename'} = $source;
$source = *PODSOURCE{IO};
}

Also nix mit IO-Layern und auch die 2-arg-Form von open (siehe auch diesen Blogpost).

Bei Pod::Simple ist es so, dass auch neuere Releases rückwärtskompatibel gehalten werden bis pre-5.8. Da funktioniert das mit den IO-Layern nicht. So geht das also nicht.

Was aber Pod::Simple unterstützt ist parse_file( *FILEHANDLE ). Also setze ich das jetzt so ein:

open my $pod_fh, '<:encoding(utf-8)', 'article.pod' or die $!; my $parser = Pod::Simple::XHTML->new;
$parser->parse_file( $pod_fh );

Saturday, January 01, 2011

Neues Unternehmen

Gestern war der letzte Tag von Smart-Websolutions Windolph und Bäcker GbR. Aus zeitlichen Gründen ist mein Kompagnon ausgestiegen. Da ich weiter als selbständiger arbeiten will und auch das Perl-Magazin weiterführe, habe ich ein neues Unternehmen angemeldet. Dazu gibt es auch eine neue Webseite: Perl-Services.de

$foo wird es also auch weiterhin geben und ich werde weiterhin sehr viel mit Perl zu tun haben ;-)

planet.perl-magazin.de

Der Vorschlag eines Aggregators deutschsprachiger Perl-Blogs wurde schon vor längerer bei den Frankfurt Perlmongers diskutiert. Gestern habe ich mich dann mal hingesetzt, Perlanet installiert und eingerichtet.

Perlanet braucht HTML::Tidy, was widerum tidyp braucht. Auf meinem Server gibt es das nicht als Paket, also musste ich mir das selbst bauen. Danach klappte die Installation von Perlanet und HTML::Tidy einwandfrei.

Das Ding ist schnell konfiguriert. Dann noch Cronjob eingerichtet, der momentan alle Stunde läuft - und schon steht planet.perl-magazin.de.

Dort gibt's auch die Liste mit den eingebundenen Blogs. Falls noch etwas fehlt, dann bitte Bescheid geben.