Wednesday, December 22, 2010

Mein Perl-Jahr 2010

Wie schon in den letzten Jahren, möchte ich jetzt auch wieder einen Rückblick auf das vergangene Jahr werfen.

Neben vielen kleineren Dingen habe ich hauptsächlich für die OTRS AG gearbeitet, das wird auch noch bis Januar 2011 so weiter gehen. Danach werde ich andere Sachen machen. Ich werde sicherlich davon berichten.

In diesem Jahr bin ich auch von Kephra auf Padre umgestiegen. Hauptgrund war, dass ich in Padre innerhalb kürzester Zeit eigene Plugins integrieren konnte, die mir das Leben vereinfachen. Aber so ganz werde ich Kephra natürlich nicht verlassen!

Ansonsten habe ich auch wieder zwei Blogposts für O'Reilly geschrieben.

Im Februar ist die mittlerweile 13. Ausgabe von $foo erschienen. Hier ist auch ein Artikel von den XING-Machern erschienen.

Im März hatten wir die Gelegenheit, Perl auf der CeBIT zu vertreten. Ich war echt überrascht, wie viele Leute zu uns an den Stand gekommen sind. Bei uns war eigentlich immer etwas los. Beim Stand vom Linuxhotel durfte ich dann auch einen Vortrag über Perl halten.

Mitte April wurde Perl 5.12.0 veröffentlicht. Seitdem haben sich die Releasezyklen bei Perl geändert. Es gibt jetzt ein monatliches Development-Release (das letzte wurde am 20. Dezember veröffentlicht - Perl 5.13.8) und mehrmals im Jahr ein stabiles Release. Aktuell ist Perl 5.12.2 (mit Perl 5.12.3 in Vorbereitung).

Im Mai gab es dann die 14. Ausgabe von $foo. Ebenfalls im Mai gab es die große Perl-Umfrage 2010, deren erste Ergebnisse dann auf dem Deutschen Perl-Workshop bekanntgegeben wurden. Die abschließenden Ergebnisse sind mittlerweile auch online.

Am Deutschen Perl-Workshop konnte ich leider nicht teilnehmen, weil ich beruflich voll ausgelastet sind. Leider waren wohl etwas weniger Leute in Stuttgart dabei.

Im Juli gab es dann das erste Release von Rakudo *, einer benutzbaren Perl 6 Implementierung. Ich habe begonnen, damit etwas rumzuspielen - mehr aber auch nicht. Pünktlich dazu haben wir natürlich ein Perl 6 Paket von $foo geschnürt.

An der YAPC::EU im August konnte ich leider auch nicht teilnehmen. Zu der Zeit habe ich an der SaaS-Lösung von OTRS (OTRS OnDemand) mitgearbeitet. Aber im nächsten Jahr bin ich sehr wahrscheinlich wieder mit dabei. Ebenfalls im August gab es die 15. Ausgabe von $foo.

An einer Veranstaltung im August konnte ich trotz der vielen Arbeit teilnehmen: Die FrOSCon stand auf dem Plan. Wir hatten dort einen Stand und wieder einen Perl-Raum, in dem viele Vorträge gehalten wurden. Ich möchte mich hier auch nochmal bei den Helfern bedanken. Nach der FrOSCon habe ich mir auch einen Slideshare-Account eingerichtet, auf dem ich meine Vorträge in Zukunft hochladen werde.

Auch im September war ich unterwegs: In Zürich fand das FrOSCamp statt. In der Schweiz scheint das Thema "Open Source" nicht ganz so weit verbreitet zu sein. Auf jeden Fall hätte ich mir mehr Besucher gewünscht. Aber das kann sich ja im nächsten Jahr noch steigern. Auch auf dem FrOSCamp hatten wir einen Stand und ich habe ein paar Vorträge gehalten. Wie immer ist aber der Kontakt zu anderen Leuten aus dem Open Source Bereich sehr nett und wichtig.

Im November gab es die 16. Ausgabe von $foo. Ende November fand auch unser traditioneller Frankfurter Perl-Community Workshop statt. Diesmal waren wir im Jugendclub U68 des DGB. Ich hoffe, wir werden in Zukunft wieder dorthin gehen.

In der 8. Ausgabe der Perl-Zeitung sind zwei Artikel von mir erschienen.

Der Dezember war vollgepackt mit Perl-Sachen: Erst war ich in Stuttgart, wo mich Dirk Deimeke und Roman Hanhart von Deimhart interviewt haben. Zwei Tage später war ich in Hamburg und war bei einem Treffen der Hamburg Perlmongers.

Da mein Kompagnon und ich die Auflösung unserer GbR beschlossen haben, mussten einige Dinge für 2011 erledigt werden. Neues Gewerbe anmelden etc. Dabei habe ich auch einige Sachen auf einen neuen Server gezogen und bald landen alle Mail bezüglich $foo in einem OTRS.

Außerdem arbeite ich zur Zeit an OPAR, einem CPAN für OTRS-Erweiterungen. Ich denke, ich kann noch im Januar 2011 die Betaphase starten.

Was es sonst noch gab: Ich setze jetzt Dist::Zilla bei der Entwicklung von Perl-Modulen ein. Das Modul löst ein selbstgeschriebenes Programm ab, das mich bei der Veröffentlichung und anderen Schritten von Modulen unterstützt. Ein sehr gutes Modul.

Gabor und ich haben die Perl Ecosystem Group gestartet, mit der wir etliche Aktivitäten rund um Perl unterstützen wollen. Auch für die Unternehmen, die dort Mitglied sind, wird es einige Aktivitäten geben, die wir am ausarbeiten sind.

In Perl 5.14, das im nächsten Jahr erscheint, werden sich einige Patches von mir wiederfinden. Es sind nur Kleinigkeiten und ich würde mir wünschen, mehr Zeit für solche Sachen zu haben, aber es ist ein Anfang ;-)

Über das Jahr verteilt, war ich natürlich ein paar Mal bei den Frankfurter Perlmongers.

Friday, December 10, 2010

Nikolaus-Treffen der Hamburg Perlmongers

Anfang der Woche war ich privat in Hamburg, habe die Chance jedoch genutzt, mal bei den Hamburg Perlmongers vorbeizuschauen. In der kleinen aber feinen Runde habe ich dann über "Selbstvermarktung" gesprochen. Nichts Perlspezifisches, hatte aber mit der Perl-Community zu tun. Außerdem habe ich noch über "Perl für Vortragende" gesprochen: Wie man mit Perl Live-Demos sicher zeigen kann.

Das muss ich bei Gelegenheit mal als Screencast aufnehmen...

Tuesday, December 07, 2010

DeimHart 20: Perl

Am Samstag war ich in Stuttgart im Shackspace. Dort habe ich mich mit Dirk Deimeke und Roman Hanhart von DeimHart getroffen. Auf dem FrOSCamp hat Dirk mich gefragt, ob ich nicht für ein Interview über Perl zur Verfügung stehen würde.

Im Shackspace haben wir dann erstmal eine kleine Führung durch die Räume bekommen. Hardware-Freaks kommen hier auf ihre Kosten und die Mitglieder haben ein paar echt interessante Sachen gemacht (Türöffner mit WLAN, einloggen per SSH). Momentan sind die Mitglieder auf der Suche nach einer neuen (größeren) Bleibe und sind für Unterstützung dankbar.

Wir sind dort echt freundlich aufgenommen worden - und nochmal Danke für die Möglichkeit, dort das Interview aufzunehmen.

Die Aufnahme war auch gleich Premiere für das neue Aufnahme-Equipment, so dass erst ein wenig Ausprobieren angesagt war. Als das alles aufgebaut war, gab es noch eine kurze Vorbesprechung und dann ging es auch schon los. Wir haben über eine Stunde über alles mögliche gesprochen. Da es auch eher wie ein Gesprächen zwischen Freunden war und kein typisches Interview, ging die Zeit sehr schnell vorbei und ich habe mich sehr wohl dabei gefühlt.

Ich denke, das Interview ist ganz gut verlaufen, aber hört selbst: http://deimhart.net/index.php?/archives/104-Folge-20-Perl.html

Sunday, December 05, 2010

Perl in der Schule - Teil I

Ich habe schon an verschiedenen Stellen geschrieben, dass ich die Sichtbarkeit von Perl erhöhen möchte und dass ich auch mal in der Schule Perl vorstellen möchte. Am vergangenen Donnerstag (02.12.) war es dann soweit - ich habe mit einer Mini-Einführung in einer 11. Jahrgangsstufe angefangen.

Für mich war es wie ein Flashback 10 Jahre zurück - der Gong, die Stühle,.... Das ganze fand an der Ricarda-Huch-Schule in Dreieich-Sprendlingen statt. Mit zwei Lehrern hatte ich vorher kurz besprochen, was wir machen möchten. Da das Ganze nur zweimal eine Doppelstunde ist, kann man natürlich nicht allzu viel machen. Aber die Schüler sollen Perl mal gesehen haben und auch kleine Skripte schreiben. Nix großes, aber doch soviel, dass keine Angst vor Perl da ist.

Nachdem ich ganz allgemeine Sachen zu Perl gesagt habe, habe ich die Datentypen in Perl vorgestellt und ein paar kleine Übungen machen lassen. Für die meisten gab es doch ein Erfolgserlebnis als die ersten Perl-Skripte liefen.

Perl-Meister werde ich in der kurzen Zeit keine hervorbringen können, das ist auch nicht mein Ziel. Aber vielleicht erkennen eins oder zwei Schüler ihr Talent bei Perl und bleiben uns so erhalten ;-)

Toll finde ich auch das Bemühen an der Schule, Linux etwas mehr zu forcieren und als Alternative zu Windows zu zeigen.

Ich freue mich schon auf den nächsten Teil...

Thursday, December 02, 2010

Weihnachten beim Perl-Magazin

Bei diesen Temperaturen hält man sich doch gerne in der kuschelig-warmen Wohnung auf. Damit einem nicht langweilig wird, bietet das Perl-Magazin wieder diese Weihnachtspakete an:

Alle Ausgaben der Jahre 2008 bis 2010 - immer Jahreweise gebündelt. Mehr Infos gibts auf http://perl-magazin.de

Tuesday, November 30, 2010

Perl-Adventkalender

Kurz vor Weihnachten werden überall die Adventkalender ausgepackt, für Kinder häufiger mit Süßigkeiten. Aber auch für Perl-Programmierer gibt es Adventkalender. Hier ein paar Links:

* Uwe wird in seinem Blog Module vorstellen
* Der Dancer-Adventkalender
* Der Catalyst-Adventkalender
* Perl 6 Adventkalender
* Ricardos Adventkalender
* Perl Adventkalender
* Plack Adventkalender

Und wer Japanisch kann, kann sich am JPerl-Adventkalender versuchen, die 5 Tracks anbieten werden. Wenn man Github glauben darf, wird auch perlchina.org einen Adventkalender anbieten.

Naja, und einen Weihnachtsmarkt gibt es auch in Perl ;-)

Monday, November 29, 2010

Frankfurter Perl-Workshop 2010 - Tag 2

... und der zweite Teil des Workshops beginnt - wie gestern schon - um kurz nach 10. Bis jeder eingetrudelt ist, ist es kurz vor 11, aber wir haben ja Zeit. Außerdem hat Eric heute Mikros und ein kleines Mischpult mit dabei. Außerdem haben Eric und Wieland die Vorträge mit kleinen Kameras aufgenommen. Die Vorträge wirds dann hoffentlich bald in irgendeiner Form geben. Sobald es da was Neues gibt, werde ich das hier posten...

Ich beginne mit dem Vortrag über Moose, der einen groben Überblick über die Möglichkeiten mit Moose liefert. Eigentlich wollte ich den Vortrag noch etwas aufbohren, aber da ich als erstes dran war, hatte ich keine Zeit mehr. Beim nächsten Mal sollte ich vielleicht früher mit den Änderungen anfange ;-) So war es die Version, die ich auch auf dem FrOSCamp gehalten habe (Video).

Nach mir hat Rolf die Arbeit der letzten Nacht vorgestellt: Er hat mit B::Deparse eine Art Makros für Perl 5 entwickelt. Da er direkt mit B::Deparse arbeitet, ist das Ganze ohne Sourcefilter zu lösen. Um an Variablen von Closures zu kommen, benutzt er PadWalker. Da nicht jeder PadWalker kannte, habe ich aus einem alten Vortrag die Folien über dieses Modul gezeigt.

Herbert hat dann zwei Vorträge gehalten. Der erste war über Kephra. Er hat hier seine Ideen für die Zukunft des Editors gezeigt. Da waren echt einige Nettigkeiten drin.

Im zweiten Vortrag hat der Rebol vorgestellt. Ich persönlich werde mich mit dieser Programmiersprache eher nicht beschäftigen, auch wenn es da einige witzige Ansätze gibt (z.B. ein extra Datentyp "money"). Aber man muss ja auch mal über den Tellerrand schauen.

Nach der Mittagspause habe ich dann meinen Vortrag über Log::Log4perl gehalten. Leider wollte "recordmydesktop" nicht so wie ich wollte, so dass es hier erstmal keinen Screencast gibt.

Um IPC á la Erlang ging es in Max' Vortrag. Er hat dabei das Modul AnyEvent::MP und seine Pläne für ein AEMP::Queue vorgestellt. Ich überlege, ob ich das nicht für eines meiner aktuellen privaten Projekte mal ausprobieren sollte, weil ich da die Sachen gut an "Worker" aufteilen könnte.

Die Sprache Erlang war dann Thema von Haralds Vortrag. Ich hatte mich vorher noch nicht mit der Sprache auseinander gesetzt, aber was Harald vorgestellt hat, fand ich sehr interessant. Damit werde ich mich wohl mal beschäftigen. Nicht in den nächsten Wochen, aber ich hoffe, im nächsten Jahr mehr Zeit für so etwas zu finden.

Vielen Dank an Harald und Thomas für die Organisation des Events und an die anderen Vortragenden für tollen Talks. Ich hoffe, ich werde die Gäste auch beim nächsten Frankfurter Perl-Workshop sehen.

Frankfurter Perl-Workshop 2010 - Tag 1

Über das Jahr verteilt gibt es eher selten Vorträge bei Frankfurt.pm, dafür haben wir dann immer am Ende des Jahres ein ganzes Wochenende nur für Vorträge. Zum Teil benutzen wir diesen Workshop auch als Testumgebung für Vorträge, die auf dem Deutschen Perl-Workshop oder anderen Veranstaltungen gehalten werden sollen.

In diesem Jahr war es am gerade vergangenen Wochenende (27./28.11.) soweit. Wir sind in diesem Jahr mal nicht im Club Voltaire - unserem Veranstaltungsort der letzten Jahre - gewesen, sondern im DGB-Jugendclub U68. Ich persönlich halte den Raum im Jugendclub für besser geeignet.

Nicht nur Frankfurter nahmen an dem Workshop teil: Wir hatten auch Gäste aus dem Rheinland, aus der Nähe der holländischen Grenze und noch einige andere. Ingesamt waren wir am Samstag 13 Teilnehmer.

Wir sehen die Einteilung des Workshops eher gelassen und haben keinen festen Zeitplan. Am Anfang haben wir erstmal die Vortragsvorschläge gesammelt und Max hat freiwillig den Anfang gemacht. Mit dem Thema "Webautomation mit WWW::Mechanize::Firefox" wurde der Workshop begonnen. Man kann mit dem Modul sehr interessante Sachen machen. Max hat dabei auch nochmal kurz seinen Multiuserfähigen Editor Zaphod in einer neuen Version gezeigt. Als Hauptproblem bei der Automation hat er Probleme mit dem Encoding hervorgehoben.

Im Laufe des Vortrags kam dann das Gespräch auch auf Selenium, so dass ich im Anschluss an Max' Vortrag in einem improvisierten Lightning Talk Selenium kurz vorgestellt habe. Wer sich mehr für Selenium interessiert kann auch meinen drei Jahre alten Vortrag oder einen älteren Screencast anschauen. Auf Rolfs Frage, ob man damit auch dynamisch zusammengebaute Formulare testen/ausfüllen kann, haben wir das kurzerhand an der OTRS 3.0 Demoseite ausprobiert und mussten feststellen, dass es nicht ohne das manuelle Nachbearbeiten der aufgenommenen Aktionen geht. Man muss in der Aufnahme der Selenium IDE ein "waitForElement" einbauen, weil die IDE die Aktionen zu schnell abspielt.

Herbert hat dann noch Perl 6 Operatoren gezeigt und dabei auch den "lol"-Kontext (List of Lists) vorgestellt. Was ich bei Perl 6 wirklich gut finde ist, dass es einen dedizierten numerischen und Stringkontext gibt, den man auch direkt abfragen kann.

Vor der Pause habe ich dann noch einen Vortrag über "Perl für Vortragende" gehalten, in dem ich ein paar Module vorgestellt habe, mit denen man sich Vorträge erleichtern kann. Danach sind wir zur Mittagspause in unser "Stammlokal" MoschMosch gegangen.

Nach der Mittagspause ist Harald auf das Thema "UTF-8" eingegangen. Aber nicht wie man mit Encode etc arbeitet, sondern was dahinter steckt. Welcher Aufwand dahintersteckt, wenn man die Sortierreihenfolge ändern will und was das mit DUCET und CLDR zu tun hat. Ich fand das sehr interessant mal einen Einblick in die Tiefen solcher Dinge zu erhalten.

Danach haben wir eine IDE/Editor-Session angefangen. Den Einstieg hat Rolf gegeben, indem er emacs gezeigt hat und seine Ideen von "Standards" für Editoren/IDEs vorgestellt. Ich habe danach Padre vorgestellt. Das ganze war *kein* Editorenkrieg, sondern einfach die Vorstellung der Editoren/IDEs und was man gegenseitig lernen kann.

Damit war der erste Tag zu Ende...

Wednesday, November 10, 2010

Hamburger Perlmongers

Am 06. Dezember werde ich beim Treffen der Hamburger Perlmongers vorbeischauen. Ich werde auch zwei Vorträge mitbringen. Der erste Vortrag ist über "Selbstvermarktung" (gewünscht von Uwe Völker) und der zweite Vortrag ist ein Überraschungsvortrag.

Ich würde mich freuen, wenn das Haus "voll" wird.

XING-Termin für das Treffen: https://www.xing.com/events/perl-mongers-hamburg-treffen-595548
Vorschau auf das Treffen in Uwes Blog: http://blog.uwevoelker.de/2010/11/vorschau-perl-monger-hamburg-treffen-im.html

Tuesday, November 09, 2010

Frankfurter Perl-Community Workshop 2010

Auch in diesem Jahr machen die Frankfurt-Perlmongers wieder einen kleinen Workshop. Dieser findet in diesem Jahr am 27./28. November im DGB-Jugendclub statt. Wir würden uns über neue Gesichter bei dem Workshop freuen.

Die Teilnahme an sich ist kostenlos. Man muss sich nur um Essen, Getränke und ggf. Unterkunft kümmern.

Wer vorbeikommen will, sollte sich im Wiki eintragen.

Der Workshop findet in ganz lockerer Atmosphäre statt und wir haben auch keinen festen Zeitplan für die Vorträge. Auch ganz spontane Vorträge und Diskussionen sind keine Seltenheit.

Monday, November 08, 2010

Nachtrag FrOSCamp 2010

Ich bin es irgendwie gewohnt, dass Aufzeichnungen von Vorträgen erst Monate nach der Veranstaltung oder sogar gar nicht im Netz auftauchen. Deshalb habe ich es total verpasst, dass die Aufzeichnungen der FrOSCamp-Vorträge schon wenige Tage nach der Veranstaltung online waren.

Mit dabei sind auch meine drei Vorträge und der RDF-Vortrag von Thomas Kappler.

Hier noch die URL zu den ganzen Vorträgen: http://www.multimedia.ethz.ch/conferences/2010/froscamp

Sunday, November 07, 2010

Zwei Erdbeeren bitte...

Ich schreibe hin und wieder Artikel für das Perl-Magazin, in denen es um Programme für Windows geht. Die meisten Artikel kommen aus meinen alltäglichen Programmierarbeiten heraus. Damit ist auch sichergestellt, dass die Codebeispiele funktionieren, die die Leser herunterladen können.

Bei der Recherche für meinen Artikel, der in der nächsten Ausgabe (Nr. 18 - Frühjahr 2011) erscheinen wird, bin ich auf einen Hinweis gestoßen, dass eines der verwendeten Modul unter neueren Perls nicht funktioniert. Unter Windows verwende ich ein StrawberryPerl 5.8.9, was mich seit langer Zeit treu begleitet und mich noch nie im Stich gelassen hat ;-)

Neue Perl-Versionen habe ich unter Ubuntu laufen, so dass ich meine Programme, die beruflich entstehen, sowohl unter Windows als auch unter Ubuntu und auch mit verschiedenen Perl-Versionen testen kann. In dem Artikel geht es aber um ein Modul speziell für Windows. Da bringen mir die neueren Perl-Versionen unter Ubuntu nicht wirklich was.

Also muss eine neue Perl-Version unter Windows her. Zum Glück gibt es StrawberryPerl auch in den Versionen 5.10.1 und 5.12.1. Die 5.10er-Version scheidet im Prinzip aus, weil dort entweder der Pfad unter C:\ oder der Pfad unter D:\ hardcodiert drinsteht.

Mit Perl 5.12.1 ist es aber endlich möglich, StrawberryPerl an einen beliebigen Ort zu installieren.

Also das Perl installiert. Naja, Installation ist zu viel gesagt. Die .zip-Datei heruntergeladen, entpackt und die Batchdatei "portableshell.bat" gestartet und schon kann man loslegen. Richtig installieren will ich das Perl nicht, da ich Standardmäßig weiterhin mein altes StrawberryPerl benutzen will.

Wenn die Batchdatei gestartet wird, kann man alles machen: Perl-Programme starten, Module installieren, ...

Wie es mit dem oben erwähnten Modul weitergeht, werde ich noch nachreichen...

Dank an Curtis Jewell, der sich immer um die StrawberryPerl-Releases kümmert.

Friday, November 05, 2010

Perl Ecosystem Group

Zusammen mit Gabor Szabo habe ich die Perl Ecosystem Group gestartet. Diese Organisation soll die Verbindung zwischen Unternehmen, die Perl einsetzen, und der Perl Community verbessern.

Unsere Ziele sind:
  • Unternehmen helfen mehr gute Perl-Programmierer zu finden.
  • Spenden von Unternehmen an die Perl-Community weiterleiten.
  • Perl und Perl-basierte Open Source Projekte promoten.
  • Finanzielle Unterstützung der Entwicklung von Perl und Perl-basierten Projekten (z.B. durch die Organisation von Hackathons)
  • Vereinfachen von Finanzierungen für Entwicklung und Wartung von einzelnen CPAN-Modulen oder Perl-Projekten (z.B. über "Bug-Bounties")
  • Organisation von Perl-Trainings an verschiedenen Orten.
  • Unternehmen helfen, die Qualtiät ihres Perl-Codes zu verbessern (mit Perl::Critic und anderen Tools).
  • Perl als anerkannte Sprache in führenden Unternehmen etablieren.
Wir haben also viel vor.

Die Organisation wird über die Beiträge der Mitglieder und über Einmalspenden finanziert. Zur Zeit haben wir 3 Mitglieder: Uri Bruck, Jonathan Hogue und Oded S. Resnik von Raz Information System

Wir brauchen natürlich noch mehr Unterstützung. Zum Einen über Mitglieder und zum Anderen sind wir für jeden Kontakt zu Unternehmen froh, die Perl einsetzen.

Monday, November 01, 2010

Winter-2010-Ausgabe des Perl-Magazins "$foo" ist da!

Pünktlich zum 1. November 2010 erscheint die Winter-Ausgabe des Perl-Magazins. Wir haben wieder viele interessante Themen.

Inhalt dieser Ausgabe:

* Zeitbasierte Konfiguration

Bis 20 Uhr soll diese Konfiguration gültig sein, danach jene Konfiguration. Kein Problem. Dieser Artikel zeigt einen Lösungsansatz für zeitbasierte Konfigruation.

* Perl wird bunt - Simple DirectMedia Layer

Anhand des Spiels Solitaire zeigt Tobias Leich, wie man mit SDL und Perl auch Spiele und Multimedia-Anwendungen programmieren kann.

* Moose Tutorial II - Methoden mit Moose

Zu Objekten gehört auch ein "Verhalten" - was in der Objektorientierten Programmierung über Methoden dargestellt wird. In diesem Artikel werden Möglichkeiten von Moose gezeigt, die die Standard-Methoden von Perl 5 erweitern.

* WxPerl Tutorial V - Fenster

Herbert Breunung zeigt im fünften Teil des WxPerl Tutorials wie in WxPerl-Anwendungen mit Fenstern umgegangen wird.

* Wie erweitere ich Perls Syntax - List Comprehensions

Rolf Langsdorf zeigt in diesem Artikel, wie mit Funktionen und Perls Prototypen die Syntax von Perl erweitert werden kann.

* Zentyal

Zentyal ist ein Linux Server, hauptsächlich für kleine und mittlere Unternehmen. Wie Zentyal mit eigenen Module erweitert werden kann, zeigt Javier Amor Garcia in diesem Artikel.

* Regelmäßige Backups

... sind mit dem Tasksystem von Windows kein Problem mehr. In dem Artikel wird das Modul Win32::TaskScheduler vorgestellt, mit dem regelmäßige Aufgaben für Windows eingrichtet werden können.

* HowTo: App::perlbrew

In seinem HowTo stellt Thomas Fahle das Modul App::perlbrew vor, das die Installation und Verwendung mehrerer Perl-Versionen in einem eigenen Verzeichnis stark erleichtert.

* und vieles mehr...

CPAN-News: Sechs Modul-Neuvorstellungen, TPF-News: Was gibt's neues bei der Perl Foundation und natürlich die Termine der nächsten 3 Monate

Wednesday, October 27, 2010

Plat_forms Contest sucht noch nach Perl-Teams

Nach 2007 wird es im Januar 2011 die zweite Auflage des Plat Forms Contest geben. Es wäre sehr schön, wenn sich wieder drei Teams finden würden, die daran teilnehmen. Im Wiki der Perl Foundation gibt es eine Seite, um auch mehrere Einzelpersonen zu einer Gruppe zusammen zu suchen.

Also zwei Mitstreiter suchen, und ein Team anmelden. Die Anmeldefrist geht bis 30.11.2010 und der Contest findet am 18./19. Januar 2011 statt.

Plat Forms ist ein Wettbewerb, in welchem Gruppen der Spitzenklasse aus drei Programmierern gegeneinander antreten, um die gleichen Maßgaben an ein webbasiertes System innerhalb von zwei Tagen umzusetzen. Dabei kommen unterschiedliche Technologieplattformen zum Einsatz (z.B. Java, .NET, Perl, PHP, Python, Ruby, Scala, Smalltalk usw.).

Der Sinn ist es, nicht die beste Webentwicklungsumgebung zu bestimmen, sondern neue Erkenntnisse über die echten (statt behaupteten) Vor- und Nachzüge und fulgurativen Eigenschaften jeder Plattform zu erlangen. Die Bewertung untersucht viele Gesichtspunkte jeder Lösung, sowohl äußerliche (Nutzbarkeit, Funktionsweise, Zuverlässigkeit, Sicherheit, Leistung usw.) als auch innerliche (Aufbau, Modularität, Verständlichkeit, Anpassungsfähigkeit usw.).

Tuesday, October 19, 2010

Article Driven Development

In der Softwareentwicklung wird ja häufig gesagt, dass man "$Anything driven development" betreibt, sei es "Feature Driven Development" oder "Test Driven Development". Ich habe jetzt eine neue Form für mich entdeckt: "Article Driven Development". Für die 8. Ausgabe der Perl-Zeitung von Gernot Havranek habe ich einen Artikel über Data::Tabulate geschrieben.

Beim Schreiben des Artikels wollte ich den Code etwas näher erläutern und dabei festgestellt, dass man ihn wartbarer und auch noch schneller machen kann. Nach ein paar Benchmarks und einem zweiten Blick auf den Code war ich zufrieden. Besserer Code und schneller.

Das map-grep-Konstrukt ist für Perl-Einsteiger sicherlich weniger Lesbar als eine Schleife.

Dank den Tests bei dem Modul wusste ich auch, dass die Funktionalität weiterhin so ist, wie es sein sollte.

Wenn man Artikel über etwas schreibt lernt man jede Menge dazu - und man bekommt neue Ideen. Vielleicht schlummert ja in einem der Leser dieses Blogs ein Autor für mein Perl-Magazin ;-)

Wednesday, October 06, 2010

Neuer Blogpost bei O'Reilly

Gerade wurde ein neuer Blogpost von mir im O'Reilly-Blog veröffentlicht: http://community.oreilly.de/blog/2010/10/06/gut-informiert-in-den-tag-mit-perl/ .

Mit solchen Desktop-Notifications kann man viel machen - nicht nur Blogposts anzeigen lassen. Ich benutze sie zum Beispiel auch, um Vorträge zu halten (Quellcode). Solche Spielereien machen immer wieder Spaß und wenn etwas nicht sofort klappt, dann sitze ich häufig einige Tage, bis ich endlich mein Ziel erreicht habe.

Was ich auch noch unbedingt mal machen will: Den Mindstorm-Roboter von Lego mit Perl fernsteuern. Noch fehlt mir eine "coole" Idee. Wenn mir was eingefallen ist, wird es hoffentlich auch im O'Reilly-Blog zu lesen sein.

Sunday, September 19, 2010

FrOSCamp Zürich 2010

Am Donnerstag 16.09.2010 bin ich in Richtung Zürich aufgebrochen, um am 1. FrOSCamp teilzunehmen. Im Vorfeld hatte ich nach Unterstützung aus der Schweizer Perl-Community gefragt. Leider war die Resonanz ziemlich niedrig. Einige, die sich bei mir gemeldet hatten, waren schon mit anderen Ständen auf dem FrOSCamp beschäftigt.

Donnerstag abend bin ich dann am Zürcher Hauptbahnhof angekommen und habe den Weg zum Hotel angetreten. Irgendwo habe ich mich verlaufen, so dass ich in irgendwelchen Seitengassen gelandet bin, die nicht mehr auf meinem Plan aus Google Maps verzeichnet waren.

Mit rund 45 Minuten Verspätung war ich dann doch noch am Hotel. Dort habe ich mitgeteilt bekommen, dass ich "noch viel vor mir" hätte. Auf meinen verwunderten Blick teilte man mir mit, dass ich ein Versuchskaninchen wäre, weil mein Zimmer ganz neu renoviert wäre und ich dann doch bitte Feedback geben soll, wie ich das Zimmer finde - es hat sich gelohnt. Ich habe ein tolles Zimmer bekommen.

Abends durfte ich dann das Zürcher Preisniveau bei Essen erfahren: Eine Portion gebratener Nudeln zum Mitnehmen für knapp 15 sFr (~11,40 EUR). Aber es war lecker. Im Bett habe ich dann meinen Vorträgen noch den letzten Schliff verpasst.

Am nächsten Morgen bin ich dann relativ früh aufgestanden. Ich wusste noch nicht genau, wo der Veranstaltungsort (ETH Zürich) war und ich hatte mir vorgenommen, alles zu Fuß zu laufen. Mit dem ganzen Material für unseren Stand. Kurz vor acht Uhr war ich dort und habe mit dem Aufbau der Sachen begonnen.

Ziemlich früh kam dann auch Dirk von Ubuntu vorbei und hat mir einen Adapter für deutsche Stecker auf das schweizer System gebracht. Ich hatte erst wenige Tage vor der Reise realisiert, dass die Schweizer ein eigenes System haben. Aber immer wieder super, wenn man so hilfsbereite Leute kennt.

Kurz darauf kam auch Roman. Ein weiteres Gesicht, das ich zwar schon länger über das Internet kannte - und auch wohl schon auf YAPC::EUs gesehen hatte - aber hier erst wirklich kennenlernte. Roman hatte sich bereit erklärt, mir an den zwei Tagen am Stand zu helfen. Den Freitag musste er auch fast alleine am Stand verbringen, weil ich insgesamt 3 Vorträge gehalten habe.

Die Vorträge sind ganz gut gelaufen. Meinen Perl::Critic-Vortrag sollte ich dringend mal überarbeiten. Der hätte wesentlich besser laufen können.



Meine beiden anderen Vorträge:

Padre:


Moose:


Am Nachbarstand war auch wieder PostgreSQL vertreten. Auch 'ads' war wieder mit von der Partie, so haben wir uns schon das x-te Mal in diesem Jahr auf einer Veranstaltung getroffen. Die PostgreSQL-Leute sind allesamt sehr nett.

Abends war noch der Social Event des FrOSCamp, aber weder Roman noch ich haben daran teilgenommen. Wir waren beide zu K.O.

Am nächsten Morgen ging es dann wieder um acht Uhr weiter. Heute stand für mich kein Vortrag an; ich konnte also die ganze Zeit am Stand sein.

Insgesamt war das FrOSCamp noch relativ klein (von der Besucherzahl), aber trotzdem sehr gut. Ich hoffe, die Organisatoren machen das im nächsten Jahr wieder.

Was ich auch extrem gut fand war, dass alle Vorträge aufgenommen wurden. Aber nicht mit Videokamera wie bei der YAPC::EU, sondern das VGA-Signal wurde direkt abgegriffen und die Tonspur wurde auch direkt aufgenommen. Ich hoffe, die Leute von der ETH Zürich stellen die Aufnahmen bald online.

Insgesamt hatten wir interessante Gespräche, auch wenn wir nicht überlastet waren. An den zwei Tagen ist mehrmals angesprochen worden, dass ein aktives Zürich.pm gewünscht ist. Wäre toll, wenn ich im nächsten Jahr einfach zwei Tage früher kommen könnte und dann ein Zürich.pm-Treffen stattfindet ;-)

Ganz besonders möchte ich an dieser Stelle Roman danken, mit dem es richtig Spaß gemacht hat, den Stand zu betreiben und über alles mögliche zu reden!

Wednesday, September 08, 2010

Mein Log::Log4perl-Vortrag auf der FrOSCon 2010

Etwas verspätet, aber jetzt habe ich es endlich mal geschafft, den Blogartikel über meinen Log::Log4perl-Vortrag zu schreiben.

Ich hatte schon beim CfP für den Perl-Developer-Room die Idee, einen Vortrag über Log::Log4perl zu halten. Dabei war die erste Idee, wie sonst auch die Folien mit OpenOffice zu machen. Knapp zwei Wochen vor der FrOSCon hat Thomas Fahle dann einen Blogpost über Gtk2::Notify und Log::Dispatch::Gtk2::Notify veröffentlicht. Der hat mich auf die Idee "Warum einen Logging-Vortrag nicht mit Logging realisieren" gebracht. Ich konnte ja nicht ahnen, dass das jede Menge Arbeit bedeutet.

Meine Idee war es, die Folieninhalte in einer YAML-Konfiguration festzulegen und dann die Inhalte in Notifications darzustellen. Das ganze sollte in einer Ubuntu-VM passieren. Also dort ein Testskript für Notifications geschrieben:

 #!/usr/bin/perl
use warnings;
use strict;

use Gtk2::Notify -init, 'testapp';

for my $x ( 0 .. 3 ) {
my $notification = Gtk2::Notify->new( 'Hallo', 'Test' . $x );
$notification->set_hint_int32( 'x', $x * 100 );
$notification->set_hint_int32( 'y', $y * 50 );
$notification->set_timeout( 12_000 );
$notification->show;

sleep int rand 10;

$notification->close;
}


Notifications werden angezeigt, aber das Ausblenden und das Bestimmen der Position funktioniert nicht, außerdem war die Breite der Notifications fest. Der Daemon für die Notifications war Notify-OSD. Dann habe ich ein Tool gefunden, mit dem ich wenigstens die Breite der Notifications beeinflussen konnte. Aber die anderen Probleme blieben. Damit war es nicht wirklich tauglich für den Vortrag.

Von einem Kollegen habe ich dann den Tipp mit notification-daemon aus dem Galago-Projekt bekommen: Ausblenden funktioniert, Position bestimmen funktioniert. Aber wieder feste Breite. In den Sourcen habe ich gesehen, dass die Themes das hardcodiert haben. Also anpassen und selbst kompilieren.

Dafür waren zig Sachen notwendig, die teilweise nicht in den Repositories waren und auch selbst kompiliert werden mussten. Das hat alles seine Zeit gebraucht. Nachdem ich ein extra Theme erzeugt hatte und das im notification-daemon aktiviert hatte, waren die Vorbereitungen abgeschlossen.

Der Code für das Theme und das kompilierte Paket sind in dem Paket zu dem Vortrag zu finden.

Die Vortragsfolien habe ich - wie schon gesagt - in einer YAML-Datei abgelegt.

 ---
slides:
-
summary: Perl@FrOSCon 2010
body: Logging für Perl-Programme
-
summary: Logging - allgemein
body: Ein Protokoll, was während des Programmlaufs so alles passiert.


Ein Skript liest diese Datei aus und blendet mit Log::Log4perl die Notifications ein. Das schon existierende Log::Dispatch::Gtk2::Notify konnte ich allerdings nicht benutzen, weil es die Notifications nicht so lange offen hält bis die nächste Notification angezeigt werden soll. Es macht sich in einem Vortrag natürlich schlecht, wenn mitten im Satz die Notification mit den Informationen verschwinden. Also noch ein neues Modul geschrieben...

 package Log::Log4perl::Appender::Notification;

our @ISA = qw(Log::Log4perl::Appender);

use warnings;
use strict;
use Log::Log4perl::Config::Watch;
use Gtk2::Notify -init, 'Perl@FrOSCon';

my $notification;

sub new {
my($class, @options) = @_;

my $self = {
name => "unknown name",
@options,
};

bless $self, $class;

return $self;
}

sub log {
my($self, %params) = @_;

return if $params{message} !~ /^SUMMARY/;

$notification->close if ref $notification and $notification->isa( 'Gtk2::Notify' );

my ($summary,$body) = $params{message} =~ m{
SUMMARY: \s+ (.*?) \s+
BODY: \s (.*)
}xms;

my $icon = '/usr/share/app-install/icons/podbrowser.png';
if ( $summary eq 'Frage' ) {
$icon = '/usr/share/icons/gnome/32x32/status/dialog-question.png';
}
elsif ( $summary eq 'Antwort' ) {
$icon = '/usr/share/icons/gnome/32x32/status/dialog-warning.png';
}

$notification = Gtk2::Notify->new( $summary, $body, $icon );
$notification->set_timeout( 1_000_000 );
$notification->set_hint_int32( 'x', 0 );
$notification->set_hint_int32( 'y', 20 );

$notification->show;
}

1;


Wie kann ich durch die Folien "navigieren", wie kann ich auf Fragen reagieren? Also musste das Skript, das die "Folien" anzeigt, noch mehr können. Mit IO::Prompt habe ich dann immer eine Tastatureingabe abgefangen und dann darauf reagiert.

   # ask for any input to show the next slide.
prompt -1, -echo=>'';

if ( $_ eq 'd' ) {
$counter--; # we want a former slide
}
elsif ( $_ eq 'q' ) {
my $summary = 'Frage';
chomp( my $body = );
splice @slides, ++$counter, 0, { summary => $summary, body => $body };
}
elsif ( $_ eq 'a' ) {
my $summary = 'Antwort';
chomp ( my $body = );
splice @slides, ++$counter, 0, { summary => $summary, body => $body };
}
else {
$counter++;
}

Insgesamt ziemlich viel Aufwand für einen einzelnen Vortrag, aber ich werde den Vortrag auch nochmal auf dem Frankfurter Perl-Community Workshop halten. Bis dahin muss ich wieder eine Erweiterung machen, weil ich nicht nur in Notifications geloggt habe, sondern auch Twitter-Meldungen erstellt habe. Und Twitter erlaubt jetzt nur noch OAuth für die Authentifizierung.

Monday, August 23, 2010

FrOSCon 2010 - Tag 2

Gestern abend habe ich Hotel noch an den Folien von meinen Vorträgen gearbeitet. Ich schaffe es einfach nicht, Vorträge mal ein paar Tage vor der Veranstaltung fertig zu haben.

Heute war ich nicht am Stand (bzw. nur zum Aufbau), weil wir heute einen Raum bekommen haben, in dem wir Perl-Vorträge halten konnten. Um 10 Uhr ging es mit der Begrüßung los. Kurze Einführung in den heutigen Tag und auch Diskussion darüber, wie Perl zum Zwiebel-Logo gekommen ist. Anscheinend ist die Zwiebel wirklich nicht bekannt, denn wir wurden schon in der Früh am Stand gefragt seit wann denn die Zwiebel das Logo ist.

Der erste Vortrag war von Herbert - "Testen mit Perl". Er hat dabei ziemlich viele Module kurz vorgestellt, die man zum Testen von Software und vor allem für Perl-Programme nehmen kann. Da waren für mich auch eins, zwei neue Module dabei, die ich mir mal anschauen muss.

Als zweites hat Jens Rehsack über App::Report::Generator gesprochen. Ein Tool, mit dem man für Monitoring-Daten Reports erstellen kann. Die Ausgabe erfolgt z.B. mit Template-Toolkit Templates für verschiedene Formate. Jens hat dabei auch noch andere Module wie DBD::Sys vorgestellt.

Vor der Mittagspause habe ich dann noch meinen Vortrag über Devel::NYTProf gehalten. Ich denke und hoffe, dass er ganz gut angekommen ist. Die Folien habe ich auf Slideshare hochgeladen:



Nach der Mittagspause war der Vortrag an der Reihe, der mich 3 Tage Vorbereitung gekostet hat - Logging mit Log::Log4perl. Warum mich das so viel Zeit gekostet hat? Werde ich in einem weiteren Blogpost erläutern (und dort auch den Code etc. zur Verfügung stellen). Folien gibt es hiervon keine, weil die Präsentation aus einem Programm besteht.

Im Vortrag über WWW::Mechanize::Firefox hat Max Maischein dann gezeigt, wie man mit Perl den Firefox fernsteuern kann und was man damit so alles machen kann.

Auch die nächsten beiden Vorträgen hatten was mit dem Web zu tun. Im Vortrag über Web::Scraper hat Max Maischein gezeigt, wie man aus Webseiten Informationen herausziehen kann. Web::Scraper ist ein Perl-Port des Ruby-Skripts scrapi. Ich benutze das Modul auch sehr gerne, da es ausdrucksstark ist und man sehr schnell und lesbar an die gewünschten Daten kommt.

Eine kurze Einführung in das Micro-Webframework Dancer hat dann Thomas Fahle gegeben. Dafür hat er mit wenigen Zeilen und ein paar zusätzlichen CPAN-Modulen eine kleine Webapplikation gebaut. Damit konnte man sehen, wie schnell man eine Anwendung erstellt hat.

Danach war wieder Max Maischein an der Reihe. Diesmal war es kein Web-Thema, sondern "Office-Automatisierung" und wie man aus VB-Code zu Perl-Code kommt. Ich kannte den Vortrag schon und Max hat darüber auch mal einen Artikel geschrieben. Mir selbst hat das schon das eine oder andere Mal geholfen.

Ich habe dann zum Abschluss noch zwei Vorträge gehalten. Der erste war über Padre und der zweite über BMATrainer. Padre ist eine IDE in Perl, für Perl. Ich hatte keine Folien vorbereitet, sondern habe Padre mal gezeigt und über verschiedene Sachen gesprochen. Das war nicht ganz so gut. Für das FrOSCamp im September muss ich also dann noch Folien machen ;-)

BMATrainer ist ein kleines Simulationsprogramm für Brandmeldeanlagen. Ich habe einfach gezeigt, wie ich die Anwendung entwickelt habe - z.B. die GUI mit Hilfe von wxFormBuilder erzeugt habe etc. Hier habe ich die Folien auch auf SlideShare veröffentlicht:



Und der Code ist auf GitHub zu finden. Leider habe ich meinen Arduino zu Hause vergessen, so dass sich eine LiveDemo nicht gelohnt hat.

Danach war der verdiente Feierabend und die Heimreise angesagt.

Im Laufe des Tages konnten wir auch ein paar Bücher an die Zuhörer verschenken. O'Reilly hat uns drei Bücher zur Verfügung gestellt und mitp hat uns noch mit zwei Büchern und Taschen überrascht. Ich möchte beiden Verlagen an dieser Stelle ganz herzlich für diese Unterstützung danken! Natürlich waren das alles Perl-Bücher und diese kamen gut an. Es ist schön zu sehen, dass auch solche kleinen Veranstaltungen bedacht werden.

Als Fazit lässt sich sagen, dass die FrOSCon wieder sehr erfolgreich war. Die Zuhörerzahl war etwas niedriger als im letzten Jahr, aber ich hatte den Eindruck, dass das in anderen Entwicklerräumen ähnlich war. Vielleicht lag das auch an der in Köln stattfindenden GamesCom.

Danke an die FrOSCon-Orga für die tolle Veranstaltung, für den Perl-Stand und den Perl-Entwicklerraum. Hat wieder viele Spaß gemacht.

Ich möchte aber vor allem den Helfern am Perl-Stand und den Vortragenden im Perl-Entwicklerraum danken:

Saturday, August 21, 2010

Perl-Nachwuchs

Heute wurde ein interessanter Thread auf der Mailingliste von German.pm gestartet. Der Anlass war mein Vorwort in der aktuellen $foo, in der ich folgendes geschrieben habe:
"Um auch wieder mehr junge Programmierer für Perl begeistern zu können,
müsste vielleicht etwas an Schulen und Universitäten gemacht werden.
Hier fände ich eine Initiative von Perlmonger-Gruppen sehr interessant."

Darauf kam die Frage auf, was Schulen denn tun können und welche Initiative von Perlmonger-Gruppen ausgehen könnten.

Ich habe mittlerweile gelernt, dass das Schulsystem in Deutschland teilweise sehr unterschiedlich ist (das ist ja dank Föderalismus Ländersache) und dass es nicht immer Spielräume in den Schulen gibt was für Sprachen im Informatikunterricht eingesetzt werden.

Ich habe aber das Glück, dass ich bei einem kleinen Versuch mit Perl in der Schule dabei sein darf. Ich werde darüber berichten...

Was ich mit "Initiative von Perlmonger-Gruppen" meinte: Perlmongers könnten z.B. Profs und/oder Lehrern bei der Ausarbeitung von Lehrmaterial bei Perl-Fragen helfen und Vorschläge unterbreiten. Evtl. gibt es ja noch andere Perlmongers, die mal in der Schule in einer Projektwoche oder einfach mal für zwei, drei Stunden etwas machen würden.

Weiterhin kam das Thema auf, dass Kontakte zwischen Lehrern, die "Perl" unterrichten durchaus sinnvoll wäre.

Insgesamt eine sehr interessante Diskussion. Leider (zumindest in diesem Fall) ist das Archiv von German.pm nur den Abonnenten zugänglich. Wer sich für das Thema interessiert, kann die Liste ja abonnieren. Ein paar weitere Meinungen können sicherlich nicht schaden. Auch wer Lehrer ist und "Perl" unterrichtet kann sich ja mal melden (auch gerne an perl (#) renee-baecker.de).

Unter German.pm ist eine Sammlung der deutschsprachigen Perlmonger-Gruppen zu verstehen. Sollten Gruppen fehlen, dann bitte einfach im Wiki hinzufügen.

FrOSCon 2010 - Tag 1.5

Den ersten Tag der FrOSCon 2010 habe ich nur zu einem kleinen Teil mitbekommen. Ich konnte leider nicht früher kommen. Um 16.30 Uhr habe ich das Gelände der FrOSCon betreten. Schon vor der Tür habe ich Jens, einen der Sprecher von morgen, getroffen. Es ist doch immer wieder schön, Leute persönlich zu treffen, die man vorher nur über das Internet kannte.

Nachdem ich mich registriert hatte, wollte ich zu unserem Stand gehen. Weit bin ich allerdings nicht gekommen, weil ich Simon Wilper getroffen habe. Simon kenne ich mittlerweile ein paar Jahre, hauptsächlich von der FrOSCon und über Ruhr.pm. Mit Simon habe ich mich später auch noch richtig gut unterhalten. Unter anderem über Win32::GuiTest, X11::GUITest und X11::GUITest::record.

Naja, am Stand habe ich dann Roland, Thomas und Herbert getroffen. Nach einem kurzen Plausch wollte ich die netten Damen von O'Reilly besuchen, habe sie aber nicht gefunden. Ich hoffe, ich treffe sie morgen. Wir haben von O'Reilly auch wieder ein kleines Paket für unsere Vorträge bekommen. Hierfür schonmal ein ganz dickes Dankeschön!

Mit Jens habe ich dann noch über das Erstellen von Zeitschriften gesprochen und wie man so etwas bekannter machen kann. Das erinnert mich daran, dass vor 3 Jahren auf der FrOSCon der erste Kontakt zu Lehmann's Buchhandlung entstanden ist. Mittlerweile gibt es $foo ja auch in der Berliner Filiale.

Abends gab es dann den Social Event. Bei Kölsch und Bratwurst haben wir uns mit netten Leuten unterhalten. Erkan von Frankfurt.pm war auch da, sowie ein paar andere Personen z.B. von unserem Nachbarstand von Ubuntu.

Ich habe dann mal so überlegt, dass das meine dritte oder vierte FrOSCon ist und ich noch keinen einzigen Vortrag in den Haupttracks gehört habe. Für mich ist es gerade hier wichtiger, viele neue Leute kennenzulernen.

Vielen Dank schonmal an die Helfer vom Perl-Stand! Morgen geht es weiter und ich hoffe, die Bierdeckel, die Postkarten und der ganze Rest wird alles verteilt, damit ich nicht so viel mit nach Hause nehmen muss ;-)

So, damit der Post noch mehr Perl-Bezug bekommt, hier eine kurze Liste an Perl-Modulen, die ich in meinen ganzen Gesprächen erwähnt habe:


Und nochmal der Hinweis auf die Vorträge morgen. Jeder Besucher ist gern gesehen. Wir sind mit unserem Raum (C119) auch etliche Meter weiter nach vorne gerutscht gegenüber letztem Jahr. Mehr Platz! Wenn es wieder überfüllt sein sollte, sollten wir im nächsten Jahr vielleicht noch einen größeren Raum bekommen ;-)

Wednesday, August 04, 2010

YAPC::EU 2011 in Riga

Die YAPC::Europe 2011 wird in Riga stattfinden. Die Veranstaltung wird voraussichtlich vom 15.-17. August 2011 im Konferenzzentrum Riga gastieren. Thema wird "Modern Perl" sein.

Auf der Webseite der Konferenz sind weitere Informationen zu finden.

Herzlichen Glückwunsch an Andrew Shitov, der schon einige Perl-Events im Raum Russland, Ukraine,... organisiert hat. Ich bin mir sicher, dass es eine gute YAPC::EU wird - ich freue mich jedenfalls schon darauf.

Wir von Frankfurt.pm werden es wohl nächstes Jahr wieder versuchen. Jetzt kann man sich aber schon so langsam Gedanken über einen Vortrag machen ;-)

Thursday, July 29, 2010

Ein Perl-Magazin-Paket passend zur Veröffentlichung von Rakudo

Zur Veröffentlichung von Rakudo Star haben wir vom Perl-Magazin jetzt noch ein Paket für alle geschnürt, die sich für Perl 6 interessieren:

http://www.perl-magazin.de/index.cgi?action=static;file=perl6

In dem Paket sind alle Hefte enthalten, die einen Teil des Perl 6 Tutorials von Herbert Breunung beinhalten (insgesamt 8 Ausgaben). Das Paket kostet nur 35 Euro.

Rakudo Star - Perl 6 auf Parrot

Es ist zwar nicht Perl 6.0.0, aber mit Rakudo Star gibt es eine erste brauchbare Perl 6 Implementierung. Langsam und nicht für den Produktiveinsatz gedacht, erlaubt es doch einen guten Einblick in Perl 6.

"Rakudo Perl" ist die Umsetzung der Perl 6 Spezifikation auf der Virtuellen Maschine "Parrot". Es gibt noch weitere Implementierungen wie "Pugs" oder KindaPerl6, aber die meisten Perl 6 Entwickler arbeiten an Rakudo.

Ich habe die Chance des "Rakudo Star"-Releases genutzt und mir einige Sachen angeschaut und einfach mal damit herumgespielt. Das meiste kommt einem schon bekannt vor - gerade wenn man "modernes Perl" mit Perl > 5.10 und Moose benutzt. Aber ein paar Änderungen gibt es doch. So wird für Methodenaufrufe nicht mehr der Pfeil ("->") benutzt, sondern wie in vielen anderen Sprachen auch der Punkt ("."). Und der Ternär-Operator (" ? : ") als verkürztes if-else-Konstrukt wurde auch etwas geändert: " ?? :: ". Nach meinem persönlichen Empfinden sind manche Änderungen etwas gewöhnungsbedürftig, aber es gibt viele tolle Sachen in Perl 6.

Die Regulären Ausdrücke und "Grammars" sind viel mächter und flexibler als in Perl 5 (bzw. "Grammars" gibt es in Perl 5 gar nicht). Es gibt ein besseres Objektsystem und auch Methodensignaturen, die man in Perl 5 allerdings mit Zusatzmodulen (Moose, MooseX::Declare, Method::Signatures) auch bekommen kann.

Ein paar Module sind auch schon für Perl 6 verfügbar: LWP::Simple, ein einfaches Datenbank-Modul, SVG, YAML, ... Man kann also schon anfangen, "richtige" Software damit zu schreiben.

Noch mehr Lesestoff:

Im Perl-Magazin gab es in den Ausgaben 4 bis 11 ein Perl 6 Tutorial von Herbert Breunung.

Für Perl 5 Programmierer gibt es ein sehr gutes Tutorial von Moritz Lenz mit dem Thema "Perl 6 für Perl 5-Programmierer".

Und auch heise hat einige Artikel zum heutigen Tag parat:

Rakudo Star: Perl 6 ist da
Perl 6: Ja, ist denn schon Weihnachten
Rakudo *: Zwischenschritt auf dem Weg zu Perl 6

Gabor Szabo
hat ein paar Screencasts zur Einführung in Perl 6 aufgenommen.

Jetzt wünsche ich allen noch viel Spaß mit Perl 5 und Perl 6!

Wednesday, July 28, 2010

15. Ausgabe des Perl-Magazins "$foo"

Die neue Ausgabe des Perl-Magazins ist heute veröffentlicht worden. Leider gibt es einen fast veralteten Artikel darin: Zum Zeitpunkt des Drucks war noch nicht bekannt, dass die Email-Schnittstelle der CPAN Tester zum 31.08.2010 abgeschaltet wird. Mehr zum Thema CPAN Testers 2.0 gibt es unter http://perl-howto.de/2010/07/cpan-tester-20-cpan-tester-werden-ist-ganz-einfach.html

Die restlichen Artikel sind aber noch ganz aktuell ;-)

Ich möchte auch nochmal darauf hinweisen, dass es $foo in Berlin auch im Buchhandel gibt: bei Lehmann's Buchhandlung in der Hardenbergstraße 5.




Inhalt dieser Ausgabe:

* OTRS::CiCS

OTRS ist eines der meistbenutzten 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

* Termine - Was ist los in den nächsten 3 Monaten?



Sunday, July 25, 2010

Perl@FrOSCon 2010 - Vorträge und Stand

Ein paar Tage später als geplant, gibt es weitere Neuigkeiten zum Perl-Raum auf der FrOSCon 2010. Wir haben ja einen Raum für Sonntag, den 22. August 2010, bekommen und wir haben einige Vorträge organisiert:

10.00 - 10.10 - Begrüßung - Renée Bäcker
10.15 - 10.55 - Testen mit Perl - Herbert Breunung

11.15 - 11.55 - Perls Antwort auf cfg2html - Jens Rehsack
12.00 - 12.30 - Profiling mit Devel::NYTProf - Renée Bäcker

14.00 - 14.40 - Logging in Perl-Anwendungen - Renée Bäcker
14.45 - 15.05 - WWW::Mechanize::Firefox - Max Maischein

15.15 - 15.55 - Web::Scraper - Max Maischein
16.00 - 16.20 - Dancer - Thomas Fahle

16.30 - 17.10 - VB2Perl - Max Maischein
17.15 - 17.35 - Padre - Renée Bäcker

17.45 - 18.25 - BMATrainer - Renée Bäcker

Den Zeitplan werde ich auch noch im Pentabarf-System der FrOSCon eintragen, damit es für noch mehr Leute einsehbar ist. Dort wird es dann auch genauere Beschreibungen zu den Vorträgen geben.

Außerdem haben wir die Nachricht bekommen, dass es auch einen Perl-Stand geben wird. Wer mithelfen möchte, kann sich im Wiki der Perlfoundation eintragen. Um Material kümmere ich mich.

Ich hoffe, wir haben in diesem Jahr wieder so einen Erfolg wie im letzten Jahr.

Wednesday, June 30, 2010

Bewerbung um die YAPC::EU 2011

Sooo, noch gute 4 Stunden Zeit, bis die Deadline für Bewerbung zur Ausrichtung der YAPC::Europe im nächsten Jahr. Frankfurt.pm hat sich schon vor rund einem halben Jahr dazu entschieden, sich zu bewerben.

In den letzten Wochen wurde dann intensiv an der Bewerbung gearbeitet und soweit abgeschlossen, dass ich vorhin die PDF-Datei erzeugen und gerade an das Venue-Komitee der YEF schicken konnte.

Wer sich dafür interessiert, kann sich unsere Bewerbung unter http://frankfurt.perlmongers.de/?YapcEu2011Bid anschauen.

Noch ein paar Bemerkungen am Rande:

Die PDF-Datei ist aus dem Pod-Format mit dem Modul Pod::Pdf erzeugt worden (mit kleinen eigenen Anpassungen).
Die Kommunikation läuft über ein OTRS-System, das uns von Martin Edenhofer zur Verfügung gestellt wurde.
Auf der diesjährigen YAPC::EU wird der Ausrichter für nächstes Jahr bekanntgegeben - drückt uns die Daumen.

Tuesday, June 29, 2010

Perl in der Schule

Überall hört man "Fachkräftemangel" oder "Nachwuchsförderung". Aber nicht nur im normalen Job sollte man sich um den Nachwuchs kümmern.

Ich habe mich gestern abend mit einem Lehrer aus meiner Nähe getroffen. Wir wollen zwischen Herbst- und Weihnachtsferien den ersten Teil eines Versuchs starten: Perl in der Schule.

Ich werde da mal 2 Doppelstunden eine Kurzeinführung in CGI-Programmierung mit Perl machen. Nein, ich werde nicht den Formmailer aus Matts Script Archive zeigen. Solche Dinge müsste man aus dem Internet radieren können. Man kann auch einfache CGI-Programme sauber und sicher mit Perl schreiben. Was ich genau machen werde, werde ich aber noch mit dem Lehrer abstimmen - mir fehlt dann doch die Erfahrung, vor Schülern zu stehen.

Nächstes Jahr im Sommer kommt dann der zweite Teil: eine Projektwoche, in der eine Einführung in Perl geboten werden soll.

Ich habe in der Vergangenheit schon mehrfach mit verschiedenen Leuten über eine ähnliche Idee gesprochen und ich bin mal gespannt, wie dieser Versuch klappt.

Wenn es gut funktioniert, habe ich die Hoffnung, dass wir das auf weitere Schulen ausweiten können. Ich werde auf jeden Fall davon berichten.

Vor allem für die Projektwoche, habe ich vor die Live-DVD von Thomas einzusetzen. Damit steht sofort alles zur Verfügung und man kann die Schüler vielleicht dazu animieren, einfach manche Sachen selbst weiterzuführen.

Tuesday, June 15, 2010

Perl@FrOSCon 2010 - CfP

Die Organisatoren der FrOSCon 2010 haben uns auch in diesem Jahr wieder einen Raum für einen Tag für Perl-Vorträge zur Verfügung gestellt. Am 22. August 2010 wird es also wieder Perl-Vorträge geben.

Insgesamt haben wir 7 Stunden für die Vorträge zur Verfügung. Die Vorträge sollten entweder 20, 40 oder 60 Minuten lang sein und logischerweise etwas mit Perl zu tun haben.

Der Raum, der uns zur Verfügung steht, fasst ca. 40 Personen und im letzten Jahr waren bei den Vorträgen zwischen 20 und 40 Leuten anwesend.

Bitte reicht die Vortragsvorschläge bis zum 15. Juli per E-Mail an froscon2010@perl-magazin.de ein. Bis zum 22. Juli werden wir dann ein Programm zusammenstellen und euch darüber informieren.

Der Vortragsvorschlag sollte eine kurze Zusammenfassung über den Vortragsinhalt sowie eine Längenangabe beinhalten.

Thursday, May 20, 2010

Perl-Umfrage 2010

Kieren Diment hat die Arbeiten an der Perl-Umfrage 2010 (http://survey.perlfoundation.org/) vorerst abgeschlossen. Jetzt seid ihr an der Reihe ;-)

Auf dem 12. Deutschen Perl-Workshop (http://perl-workshop.de) wird Diment eine erste Analyse der neuen Daten vorstellen.

Saturday, May 01, 2010

Autocompletion-Felder mit jQuery

Hier nur ein kurzes Beispiel, wie mit jQuery und einem ganz simplen CGI-Skript ein Autocompletion-Feld erstellt werden kann.

Als erstes mal die HTML-Datei:

<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" href="http://view.jquery.com/trunk/plugins/autocomplete/jquery.autocomplete.css" type="text/css"/>
<script src="http://dev.jquery.com/view/trunk/plugins/autocomplete/jquery.autocomplete.js"></script>
<script src="http://dev.jquery.com/view/trunk/plugins/autocomplete/lib/jquery.bgiframe.min.js"></script>
<script src="http://dev.jquery.com/view/trunk/plugins/autocomplete/lib/jquery.dimensions.js"></script>
<script type="text/javascript">
$(document).ready( function() {
function formatItem(row) {
return row[0] + " (<strong>id: " + row[1] + "</strong>)";
}

function formatResult(row) {
return row[0].replace(/(<.+?>)/gi, '');
}

$("#auto_test").autocomplete( "auto.cgi", {
width: 260,
selectFirst: false
} );
});
</script>
</head>
<body>
<input type="text" id="auto_test"/>
</body>
</html>


Und hier noch das einfache CGI-Skript:

#!/usr/bin/perl

use strict;
use warnings;
use CGI;

my $cgi = CGI->new;
print $cgi->header;

my %params = $cgi->Vars;
for my $key ( keys %params ) {
print "$key -> $params{$key}\n";
}

Wednesday, April 28, 2010

Ausgabe 14 vom Perl-Magazin $foo

Seit heute gibt es die 14. Ausgabe von "$foo", dem Magazin für Perl-Programmierer. Die Abonnenten werden im Laufe der nächsten Tage ihre Hefte bekommen.

Inhalt dieser Ausgabe:

* Performance großer Webseiten - Teil 2

Dr. Johannes Mainusch von XING erläutert in diesem Teil einiges dazu, wie wichtig Performance bei Webseiten ist. Auch einen kurzen Blick unter die Motorhaube bei XING gibt der Autor. Gleichzeit möchte der Artikel die "Awareness" für Performance erhöhen.

* Perl hilft der Feuerwehr - Teil 2

Im zweiten Teil über die Brandmeldeanlagen-Simulation geht es darum, wie der Pluginmechanismus umgesetzt wurde und wie ein Arduino-Brandmelder angeschlossen wurde.

* XMLSocket-Klasse in Verbindung mit Perl-Sockets

Markus Schaffer zeigt an einem Beispiel, wie er mit einem Flash-Film, das ein Socket zu ein Perl-Programm aufbaut, Daten in "Echtzeit" auf seine Webseite bekommt.

* Perl 6 - Der Himmel für Programmierer

Herbert Breunung geht im dritten Update auf die Neuerungen in der Perl 6-Landschaft ein.

* Was ist neu in Perl 5.12?

Eine neue Perl-Version wurde veröffentlicht. Dabei gibt es auch wieder einige Änderungen. Dieser Artikel zeigt die größten Änderungen in der neuen Version.

* Perl Scopes Tutorial - Teil 4

Im vierten Teil des Perl Scopes Tutorials geht Ferry Bolhár-Nordenkampf auf lexikalische Pragmas ein. Weiterhin geht er auf die Schlüsselwörter "my", "our" und "state" ein.

* Eine Shell für Perl - Devel::REPL

Oft möchte man eine Kleinigkeit in Perl ausprobieren, einfach mal testen, ob der Befehl überhaupt das gewünschte Ergebnis bringt oder nicht. Und dann jedesmal einen Einzeiler mit "perl -wle '...'" daraus machen ist zu viel Tipparbeit. Hier wäre eine Perl-Shell ganz nützlich. Dieser Artikel zeigt Devel::REPL - ein Modul, das genau dafür gemacht ist.

* Komplexe Datenstrukturen mit Data::Dumper sichtbar machen

Der Inhalt von Datenstrukturen ist manchmal ein Rätsel, vor allem dann, wenn die Daten aus fremden Modulen eingelesen werden oder über weitverzweigte if-Konstrukte befüllt werden. Spätestens dann, wenn ein Hash Referenzen enthält bekommt man mit print %hash nur noch die bekannte Hexausgabe HASH(0x814cc20) und man ist nicht viel schlauer als vorher. Colin Hotzky zeigt, wie man mit Data::Dumper die Datenstrukturen "schön" anzeigen lassen kann.

* WxPerl Tutorial - Teil 3

Im dritten Teil des WxPerl Tutorials zeigt Herbert Breunung wie die Layout- oder Geometriemanager - auch Sizer genannt - in WxPerl-Anwendungen eingesetzt werden können um eine saubere Anordnung der Bedienelemente zu gewährleisten.

* App::cpanminus

Thomas Fahle stellt in seinem "HowTo"-Artikel den neuesten CPAN-Client vor: App::cpanminus. Er zeigt, wie man mehr aus dem Client holen kann.

* Merkwürdigkeiten in Perl

Ein kurzer Artikel darüber, was man bei der Verwendung von Regulären Ausdrücken beachten muss und man Variablen wie $1, $2 usw. verwendet.

* ... 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

* Termine - Was ist los in den nächsten 3 Monaten?

LISP und Perl - zwei gute Partner ;-)

Heute bin ich auf einen interessanten Artikel im Internet gestoßen: "Using LISP as a Code Generator for Perl Win32::GuiTest". Es geht dabei darum, aus der REPL heraus GUI-Applikationen testen zu können. Win32::GuiTest ist für die Tests sehr gut geeignet - ich selbst habe ja schon in $foo darüber berichtet und schon Vorträge darüber gehalten - und der Artikel zeigt schön, dass man gewisse Sachen gut mit einem Sprachenmix machen kann...

Thursday, April 22, 2010

Switch.pm aus dem Perl-Core entfernt

Nicholas Clark hat diese Woche Switch.pm aus dem Perl-Core entfernt. Switch.pm war lange Zeit die einzige Möglichkeit, so etwas wie ein Switch-Statement in Perl zu benutzen. Java, C++ und sogar Pascal haben das schon lange.

Warum wurde das jetzt entfernt?

Weil Switch.pm ein Sourcecode-Filter ist und dadurch nicht wirklich zuverlässig ist. Das switch war also kein wirkliches Sprachelement von Perl, sondern war "irgendwie" aufgesetzt.

Und seit Perl 5.10 gibt es auch etwas viel besseres: given/when!

Warum nicht der gleiche Name wie bei anderen Sprachen? Weil given/when viel mächtiger ist als das switch/case in den meisten anderen Sprachen. Das when benutzt nämlich den Smart-Match-Operator. Auf den Smart-Match-Operator werde ich in nächster Zeit in einem weitern Blogpost eingehen. Hier aber ein kurzes Beispiel für given/when:

    use feature qw(switch say);

my $var = 1;

# welche Variable soll betrachtet werden
given( $var ) {
when( 1 ){ say '$var ist 1'; }
when( 2 ){ say '$var ist 2'; }
default { say '$var ist weder 1 noch 2' }
}

given/when muss mit "use feature qw(switch)" aktiviert werden. Im Gegensatz zu Switch.pm sind das jetzt Elemente der Sprache und kein Codefilter mehr.

Wednesday, April 21, 2010

Sie suchen Perl-Entwickler?

Wie letzte Woche schon gepostet, wird es einen Perl-Stand auf dem LinuxTag in Berlin geben. Gabor möchte dort auch Job-Angebote von Firmen veröffentlichen. Wer also möchte, dass sein Job-Angebot für Perl-Entwickler in einer Broschüre auf dem LinuxTag erscheint, sollte mit Gábor Szabo Kontakt aufnehmen.

Hier noch der Link zum Original-Blogpost von Gábor: http://szabgab.com/blog/2010/04/1271829580.html

Tuesday, April 13, 2010

Perl-Stand auf dem LinuxTag Berlin

Heute kam die Bestätigungsmail, dass es auch auf dem LinuxTag in Berlin (09.-12. Juni) einen Perl-Stand geben wird. Wie auf der CeBIT werden wir ein paar Projekte vorstellen und zeigen, dass Perl eine ganz tolle Programmiersprache ist. Gábor und ich brauchen auch in Berlin wieder Unterstützung für den Stand. Es wäre schön, wenn wir ein wenig Hilfe bekommen würden...

Gábor wird auch einen Vortrag halten.

Wer helfen will, sollte sich im Wiki eintragen. Der Stand läuft unter dem Titel "Perl und Perl-bezogene Projekte". Wer also ein (OpenSource) Perl-Projekt dort repräsentieren will, kann sich mit uns in Verbindung setzen...

Saturday, April 03, 2010

Frühjarsputz bei PAUSE

Heute habe ich mal Frühjahrsputz gemacht - nicht zu Hause, sondern bei PAUSE.

PAUSE ist der "Perl (programming) Authors Upload Service" und ist der Dienst, über den CPAN-Autoren ihre Distributionen auf CPAN verwalten können. Hier können Co-Maintainer eingetragen, Namensräume reserviert oder auch Distributionen hochgeladen werden.

Üblicherweise lädt man einfach die Distributionen hoch. Vorallem wenn man es - wie ich - automatisiert macht. Die ganze Zeit habe ich ein eigenes Framework für automatisierte Tests und Uploads verwendet, aber ich werde mir mal Dist::Zilla anschauen. Aber das ist ja jetzt nicht das Thema.

Wie gesagt, man lädt die Dateien hoch und kümmert sich kaum um seinen Account. Dabei sammeln sich Unmengen an Dateien an, die man eigentlich nicht mehr braucht - die alten Versionen der eigenen Distributionen.

brian d foy hat jetzt die CPAN-Autoren aufgerufen, die nicht mehr benötigten Dateien aus dem CPAN zu löschen, da diese unnötig Platz einnehmen und das Spiegeln auf die verschiedenen Server lange dauert.

Aber keine Angst, gelöschte Distributionen gehen nicht verloren, weil sie im BackPAN auf jeden Fall erhalten bleiben.

Ich habe bei fast allen meiner Distributionen nur die aktuellste Version auf dem CPAN gelassen...

Wednesday, March 24, 2010

Unendliches Perl...

Heute ging es im Forum von Perl-Community.de um das Finden der "größten" Zahl aus den Ergebnissen einer Datenbankabfrage. Das ganze sollte im Perl-Programm gelöst werden und nicht in der Abfrage (was ja mit "MAX()" sehr einfach gewesen wäre). Grob skizziert:

    while ( hole_zeile_aus_ergebnis ) {
# mach was um groeszte Zahl zu finden
}
print groeszte_zahl


Mein Vorschlag war

    my $max;
while ( @row = $dbh->fetchrow_array ) {
$max = $row[2] if not defined $max or $row[2] > $max; # in $row[2] stecken die Zahlen
}
print $max;


Tina kam dann mit einem Vorschlag

    my $max = "-Infinity";
while ( @row = $dbh->fetchrow_array ) {
$max = $row[2] if $row[2] > $max;
}


Funktioniert wohl auf den meisten Systemen, aber eben nicht auf allen. Ich habe ein Windows mit Perl 5.8.9 und dort liefert das Ergebnis für die Zahlen -10, -20 und -1 nicht "-1" sondern es bleibt "-Infinity".

Warum?

Auf den meisten Systemen kann man "Unendlich" durch "Infinity" darstellen, dort wird auch "-1" ausgegeben. Bei anderen Systemen wird "Unendlich" aber anders dargestellt und hier wird "-Infinity" als String angesehen. Im numerischen Kontext wird daraus "0". Und "0" ist natürlich größer als die negativen Zahlen.

Also Vorsicht, wenn man "Unendlich" in einem Programm verwenden will, das auf allen möglichen Plattformen mit allen möglichen Konfigurationen läuft.

Übrigens...

In Perl 6 wird das einheitlich immer "Inf" bzw. "-Inf" sein.

Tuesday, March 16, 2010

Ein Modul für RegEx-Interessierte

(Ein Auszug aus einem Artikel in der Ausgabe 4 von $foo - Perl-Magazin)

Eine graphische Ausgabe von Regulären Ausdrücken kann mit dem Modul GraphViz::Regex von Leon Brocard erzeugt werden. Das ist natürlich vor allem für Leute interessant, die in der Schule oder sonstwo schon etwas von "Automaten" gehört haben.

Das Modul versucht nämlich aus dem Regulären Ausdruck einen Automaten zu erzeugen. Somit kann man auch "per Hand" versuchen, zu einem gegebenen String nachzuvollziehen, warum der RegEx einen Treffer erzeugt oder eben auch nicht. So kann man auch Personen, die mit Regulären Ausdrücken nicht unbedingt etwas zu tun haben, die Ergebnisse näherbringen.

Mit diesem Programm kann ein Graph erstellt werden.

Und so sieht der Graph für den Regulären Ausdruck aus:

Friday, March 12, 2010

Nachtrag zur CeBIT - Video mit Gábor online

Gábor wurde auf der CeBIT vom Linux Magazin interviewed. Neben ein paar allgemeinen Fragen kam natürlich auch die Frage nach Perl 6 auf. Ich finde seine Antwort sehr sehr gut!

Schaut es euch einfach an: http://www.linux-magazin.de/NEWS/Video-Perl-Projekt-gibt-sich-die-Ehre

Vielleicht habe ich Glück und mein Vortrag wird bei RadioTux noch veröffentlicht. Von den meisten anderen Vorträgen sind die Aufnahmen schon online. Ob es von meinem Vortrag eine Aufnahme gibt, weiß ich nicht.

Devel::Cover für CGI-Programme

Devel::Cover ist ein super Tool, mit dem man prüfen kann, ob die Testsuite für ein Programm/Modul wirklich den gesamten Code testet. 100% Abdeckung zu erreichen ist äußerst schwierig. Und selbst bei 98% Testabdeckung heißt es nicht, dass in der Software keine Fehler mehr sind - wie Curtis 'Ovid' Poe diese Woche feststellen musste.

Devel::Cover misst die Abdeckung für verschiedene Sachen:
  • Statements
  • Branches
  • Conditions
  • POD
  • Subroutines
100% Abdeckung bei Statements sagt nicht besonders viel aus. Nimmt man als Beispiel "print 'yes' if $x || $y", dann kann man 100% erreichen, indem man $x einen "wahren" Wert gibt. Aber man hier nicht alle Fälle getestet.

Am meisten nutze ich die Abdeckung der "Conditions". Da hier von Devel::Cover alle Kombinationen von Bedingungen angezeigt werden und ob man das getestet hat. Hier kann man noch große Lücken in den Tests aufdecken:


Zu genau will ich hier aber gar nicht auf Devel::Cover eingehen.

Man braucht nicht immer eine Testsuite, um mit dem Tool etwas sinnvolles zu tun. Gestern wurde ich gefragt, ob und wie man einfache CGI-Programme damit überprüfen kann. Hintergrund ist der, dass unnötiger Code identifiziert werden sollte, damit das aufgeblähte Skript etwas zusammengeschrumpft werden kann.

Das CGI-Skript braucht keine Parameter, so dass ein einziger Durchlauf reicht, um unnötigen Code zu identifizieren. Bei etwas komplexeren Skripten muss man mehrere Läufe mit unterschiedlichen Bedingungen starten.

Mit zwei zusätzlichen Zeilen in der Apache-Config kann man Devel::Cover für alle CGI-Skripte aktivieren:

SetEnv DEVEL_COVER_OPTIONS "-ignore,CGI,-silent,1"
SetEnv PERL5OPT "-MDevel::Cover"


Und für ein einziges Skript fügt man diese Zeile in das Skript ein:

use Devel::Cover qw(-ignore CGI -silent 1);


Mit PERL5OPT kann man dem Perl-Interpreterer Optionen mitgeben. In diesem Fall ist das "-MDevel::Cover", was bewirkt, dass Devel::Cover eingebunden wird. Die Optionen für Devel::Cover sagen folgendes aus:

-ignore,CGI => Erstelle für Dateien, die CGI im Namen/Pfad haben keine Auswertung
-silent,1 => Mache keine Ausgaben
Vor allem letztere Option ist wichtig, da sonst ein "Premature end of header" kommt. Devel::Ignore gibt nämlich eine Auswertung auf STDOUT aus, bevor das Skript einen Header senden konnte. Ist das ausgeschaltet, erstellt Devel::Cover einfach nur die Datenbank, die dann in HTML umgewandelt werden kann.

Chemnitzer LinuxTage

Auf den Chemnitzer LinuxTagen wird wohl wieder einiges los sein. Ich kann leider nicht vor Ort sein (hoffentlich im nächsten Jahr).

Trotzdem möchte ich hier auf einige Sachen hinweisen:

OTRS-LiveStreaming: ((otrs)) hat nicht nur einen eigenen Stand, es gibt auch einen Workshop und einen Vortrag von Martin Edenhofer. Diese werden mit LiveStreaming übertragen, so dass auch alle Daheimgebliebenen etwas davon haben.

Weitere OTRS-Themen: Rico Barth von der c.a.p.e IT zeigt, wie IT Service Management mit Open Source abgedeckt werden kann.

Erkan Yanar von Frankfurt.pm klärt die Frage "(A)GPLv3: Wieso? Weshalb? Warum?"

Andreas Scherbaum, einer unserer "CeBIT Open Source Project Lounge"-Kollegen, gibt einen Workshop zu "PostgreSQL optimieren".

Sunday, March 07, 2010

Erster Commit im Padre-SVN

Sewi hat mir im Laufe der CeBIT auch ein Commit-Bit für das Padre-SVN gegeben. Jetzt habe ich es zum ersten Mal genutzt. Ein paar weitere Commits werden wohl in den nächsten Tagen folgen...

Gábor sitzt hier bei mir zu Hause und hat sein "OK" für den Commit gegeben. Mit dem Patch ist es so, dass beim Speichern einer Session der Name der aktuellen Session im DropDown-Feld angezeigt wird.

Und hier ganz grob, wie man in WxPerl einen Eintrag eines DropDown-Felds auswählen kann:

Saturday, March 06, 2010

Perl@CeBIT - Tag 5

Es ist geschafft! 5 Tage CeBIT! Unser diesjähriger CeBIT-Triathlon heißt: Stehen, Laufen, über Perl reden.

Unser insgesamt 9-köpfiges Team hat diese drei Disziplinen mit Bravour gemeistert. Ein paar Zahlen, die den bisherigen Einsatz dokumentieren:

* Rund 80 Kilo Werbematerial rund um Perl wurde unter die Leute gebracht.
* 1 Autopanne
* Ca. 25 Liter Getränke vertilgt (darunter der harte körperliche Einsatz eines unserer Helfer bei der Völkerverständigung mit russischen CeBIT-Ausstellern)
* 1 große Packung mit kleinen Schokoladentafeln
* und noch vieles mehr...

Heute waren unter den Besuchern der CeBIT sehr viele Jugendliche, die man vorher überhaupt nicht gesehen hat. Thomas hatte sehr viel Erfolg dabei, die Broschüren unter den Besuchern zu verteilen und einen Teil zu unserem Stand zu lotsen. Auch so kann Perl-Programmierer-Nachwuchs generiert werden ;-)

Schon gestern abend hatte Torsten geklärt, dass wir heute einen ungeplanten Lightning Talk auf der "CeBIT Open Source Forum"-Bühne halten können. Doch wer sollte das machen? Es waren keine Folien vorbereitet. Geplant war, den Vortrag ganz am Schluss zu halten. Aber dann kam alles anders! Schon am Anfang hat ein Vortragender viel weniger Zeit benötigt als geplant. Britta kam auf uns zu und meinte, dass das eine gute Gelegenheit für den Lightning Talk wäre. Jetzt musste innerhalb von wenigen Minuten jemand bestimmt werden, der den Vortrag hält. Und die Wahl fiel auf Gábor.

Ich denke, dass der Vortrag über Padre sehr gut ankam. Viele Leute haben ihre Tour durch die Halle unterbrochen, um Gábor zu lauschen.

Ansonsten gab es eigentlich keine besonderen Vorkommnisse. Um 18 Uhr haben wir dann unseren Stand abgebaut. Da wir das meiste Material verteilt hatten, blieb nicht viel übrig, das weggeräumt werden musste. Um halb sieben habe ich dann das Gelände verlassen und bin Richtung Hotel gefahren.

Abschließend möchte ich mich bei Gábor, Torsten, Sebastian, Thomas, Bernhard, Michael, Robert und Oliver für die Unterstützung und Hilfe beim Perl-Stand bedanken!

Jetzt wartet die Nachbereitung in der nächsten Woche. Die Leute, mit denen wir hier Kontakt bekommen haben, müssen kontaktiert werden und wir müssen unsere Erfahrungen aufschreiben, damit wir es in Zukunft einfacher haben.

Die CeBIT war für uns ein voller Erfolg!

Friday, March 05, 2010

Perl@CeBIT - Tag 4

Heute wird es wohl eher ein kurzer Bericht, weil die CeBIT langsam an mir "nagt". Das rumstehen, rumlaufen und den ganzen Tag mit Besuchern sprechen ist ziemlich anstrengend. Aber das geht nicht nur mir so, wenn ich bei uns in die Runde schaue...

Heute war wesentlich weniger los als gestern, aber trotzdem gab es wieder viele Gespräche. Und die Pläne, zusammen mit PostgreSQL im nächsten Jahr einen eigenen Stand zu machen, werden weiter verfolgt. Wenn es so klappt, wie wir uns das im Moment vorstellen, könnte das sehr interessant für Besucher werden.

Heute habe ich einige Bekannte getroffen, von denen ich es nicht unbedingt erwartet habe. Zwei ehemalige Schulkameraden und einen Entwickler von e-tecture. Für e-tecture habe ich vor ein paar Jahren als externer Perl-Programmierer gearbeitet und bin immer noch regelmäßig in Frankfurt.

Am Stand hatten wir heute den Schwerpunkt "OTRS". Einigen Besuchern konnte ich eine kurze Einführung in das System geben und die vielen Vorzüge der Software schmackhaft machen. Bei manchen steht eine Evaluierung von Tools an. Vielleicht habe ich es ja geschafft, ein paar Pluspunkte für OTRS zu nennen, die dann entscheidend sind.

So langsam gehen unsere Giveaways zur Neige. Die mitgebrachten Hefte vom Perl-Magazin "$foo" sind schon komplett verteilt, genauso die Postkarten mit Daten der nächsten Perl-Events. Auch die LiveDVDs kommen gut an.

Von den Broschüren haben wir aber noch jede Menge. Davon haben wir wohl etwas viel gedruckt. Mal schauen, was morgen noch weggeht.

Achso, heute abend wurde deutlich, dass Green-IT schon wieder out ist: White-IT ist hier der Trend -- denn der Winter ist zurück. Ich bin aus der Halle rausgekommen und stand mitten im Schnee. Ich hoffe, dass das bis Sonntag wieder alles weg ist...