ich hab so paar Themen an denen ich jahrelang rumkaue denn Ausdauer ist gut. neben Kephra sind es die Perl 6 Tafeln die aus ein paar Wikiseiten der perl-community.de Wiki entstanden und jetzt vielleicht sogar zur offiziellen Perl 6 Nutzerdokumentation werden könnten. Genau, dieser Beitrag wird sowas wie die deutsche Übersetzung meines englischen Blogs für Leute welche die Meldung und manche meiner Twitternachrichten neugierig gemacht haben.
Die kurze Fassung war das die Tafeln nach http://tablets.perl6.org/ umgezogen sind. Die einprägsame URL und die schönere Gestaltung per CSS sind angenehmer für den Nutzer aber nicht der Hauptgrund warum ich das ganze für wichtig halte. Klar mache ich hier nichts weiter als meine Arbeit zu promoten aber es geht auch um was anderes.
1. Das Format
Die docs sind jetzt in markdown geschrieben was erstmal mir weit weniger schmerzen bereitet zu schreiben als die Socialtext Wikisyntax. Es fehlen einige funktionen wie unsichtbare Anker, aber man kann ja raw HTML einfügen. Per pandoc lassen sich auch sofort andere Formate erstelle wie PDF, HTML, POD oder epub.
2. Zusammenarbeit
Ursprünglich wählte ich ja wiki damit jeder mitmachen kann. Praktisch taten das sehr wenige. Aber seit die Tafeln im gleichen Archiv wie viele andere wichtige Perl 6-Sachen liegen machen weit mehr Leute mit. Und das obwohl das clonen und comitten in git ein wenig mehr Aufwand ist. Aber github macht es einfach (kleine Änderungen lassen sich sogar im editor-widget im browser tätigen) und commit bits werden freizügig erteilt. Jede Änderung schreibt der chatbot sofort in den im #perl6 channel per (was ich immer wollte). Rakudo, niecza, testsuite, specs, etc machen es genauso weil es Rückkopplung an die Alteingesessenen und lurker erleichtert und Fehler so schneller erkannt werden. Docs, Tests, Implementationen und Module können sich so gegenseitig zur besten Lösung hochschaukeln und Perl 6 wird dadurch wirklich zu einem MMORPG wie mäsak einst richtig schrieb.
3. Das Format
Es ist nicht nur die Syntax, sondern hauch die hypertext-struktur der Doks die wir ja nicht so in der Kerndokumentation haben. Das ist auch gut so weil weiterhin viel im Terminal o.ä. gelesen wird. Aber weit wir den Mehrwert des Lesens und Lernens a la Wikipedia kennen, sollten wir es auch nutzen. Und ich versuch explizit es so zu schreiben das die Tafeln auch noch funktionieren wenn alle Links rausformatiert werden. Dennoch glaub ich das der nutzen ein wesentlich größer ist wenn es so abläuft: Wenn ein Neuling oder Aussenseiter eine Frage hat, welche die FAQ gut beantwortet nur er versteht darin ein Wort nicht dann kann er mit einem Klick in den Glossar gehen wo es erklärt wird und von dort gleich zu den Beispielen wo es angewandt wird oder er sieht mit welchen syntaktischen mitteln Perl das löst. Das hilft wesentlich Leute zu informieren was Perl ist und auch Vorurteile abzubauen.
Doch das in der Perl 5-Welt zu sehen ist noch reines Luftschloss, da nicht mal die ganzen Anhänge fertig sind geschweige die Tafeln selber. Anhang A, der Hauptindex aller Befehle ist schon umfangreich und gut gestaltet, in Anhang B findet sich vieles davon thematisch sortiert, Anhang D die Perldelta bietet einiges wesentliches, Anhang E - die Appetithappen auch. Derzeit bemühe ich mich vor allem G - den Glossar und F die FAQ zu vervollständigen. Mitarbeit ist natürlich ständig erwünscht und die deutsche Version musst wegen dieser Proportionen der Arbeit leider aufgegeben werden.
Published
on 2012-05-17T15:00:44
Endlich ist es soweit - die Perl-Zeitung Ausgabe 17 ist da! Näherers auf der Homepage http://perl-zeitung.at
Published by Gernot Havranek
on 2012-05-14T13:29:00
Endlich ist es soweit - die Perl-Zeitung Ausgabe 17 ist da!
Näherers auf der Homepage http://perl-zeitung.at
Published by Gernot Havranek
on 2012-05-14T13:30:26
Für das zweite Quartal 2012 stehen drei Grant-Anträge zur Diskussion:
* Easy installation of non-CPAN dependencies von Alexandr Ciornii
* Perl module for Linked Data von Tope Omitola
* Spanish Localization of the Perl Core Documentation von Enrique Nell and Joaquin Ferrero
Die Kommentare aus der Community werden auch bei der Abstimmung im Grants Committee der Perl Foundation berücksichtigt.
Mit den Grants unterstützt die Perl Foundation kleinere und mittlere Projekte, die der Perl Community helfen, mit bis zu 2.000 USD.
Published by Renée Bäcker
on 2012-05-04T05:51:21
Bei schönem Wetter draußen in der Sonne sitzen und ein wenig über die beste Programmiersprache der Welt lesen - das ist doch was ;-) Gut, dass jetzt die Sommer-Ausgabe des Perl-Magazins (http://www.perl-magazin.de) da ist!
Die Abonnenten sollten in den nächsten Tagen ihr Heft in den Händen halten können.
Inhalt dieser Ausgabe:
* WxPerl-Tutorial - Teil 10
Im 10. Teil des WxPerl-Tutorials stellt Herbert Breunung verschiedene Komponenten vor, die bei der Programmierung von Editoren eine Rolle spielen.
Dabei geht es von einfachen Textfeldern bis hin zur Scintilla Editorkomponente, die auch bei Kephra und Padre zum Einsatz kommt.
* XML und Perl - XML::Compile
XML hat unter Perl-Programmierern einen schlechten Ruf. Perl-Leute mögen Programme, die mächtig sind, sich an DWIM ("Do what I mean") halten und effizient arbeiten. Die XML-Umgebung ist extrem geschwätzig, formell und wurde oft von Leuten mit wenig Programmiererfahrung entwickelt.
Und für die Verarbeitung von XML gibt es viele verschiedene Module. Mark Overmeer stellt XML::Compile vor, mit dem die Verarbeitung und Erstellung von XML-Dateien zum Kinderspiel wird.
* Good Practices: App-Entwicklung mit Moose und Freunden
Daniel Brunder zeigt, wie mit verschiedenen Modulen aus dem Moose-Namensraum und Moose selbst sehr einfach Kommandozeilenprogramme entwickelt werden können.
Dieser Artikel zeigt Wege auf, wie sich nahezu mühelos Kommandozeilen-Applikationen schreiben lassen und führt dazu einige Module und Ideen vor, die nicht nur viel Freude bei der Entwicklung garantieren, sondern auch Kollaborationen extrem vereinfachen.
* Spread
In $foo 21 (1/2012) gab es den Artikel "Konfigurationsmanagement und Software-Deployment mit Rex". In bester Perl-TIMTOWTDI-Tradition ist dies nun eine Antwort darauf.
Das Ausgangsproblem: Klassen von UNIX Hosts, die gleich administriert werden sollen. Das bedeutet, dass auf ihnen dieselben Dateien verteilt und dieselben Kommandos ausgeführt werden müssen.
Das Zusatzproblem: Nicht jeder Host ist zu jedem Zeitpunkt erreichbar, z.B. weil er in Wartung ist oder wegen einer Netzstörung nicht erreichbar ist. Trotzdem muss automatisch sichergestellt sein, dass schlussendlich alle Hosts auf dem selben Stand sind.
* Ticket oder nicht Ticket?
Nicht nur diese Frage kann mit Postmaster-Filtern in OTRS beantwortet werden. Viele Tickets werden bei OTRS wie bei den meisten anderen Ticket-/Help Desk-Systemen über E-Mails erzeugt. Die E-Mails werden hier von dem so genannten Postmaster abgearbeitet. Bis dann der User die E-Mail als Ticket zu sehen bekommt, werden verschiedene Stufen abgearbeitet. Die E-Mail wird eingelesen (entweder von einem Postfach abgeholt oder über ein Skript herein geschoben), vorgefiltert, ein Ticket wird erzeugt und nachträglich noch einmal gefiltert.
In diesem Artikel werde ich verschiedene Wege zeigen, wie solche Filter umgesetzt werden können.
* Was ist neu in Perl 5.16?
Noch ist Perl 5.16 nicht erschienen, aber durch die monatlichen (Entwickler-)Releases kann man ständig am Geschehen dran bleiben. Die Entwicklerversionen enden einmal im Jahr in einer stabilen Version, so dass wir bald Perl 5.16 "in den Händen halten" dürfen. Durch die verkürzten Releasezyklen landen nicht so viele neue Features in den stabilen Versionen. Das ist aus Sicht der Wartbarkeit auch gar nicht so übel.
Hier werden die ganzen "kleinen" Bugfixes nicht näher ausgeführt, sondern nur die größeren Änderungen.
* Rezension
Diese Kolumne versteht sich als Dienst für alle an Perl Interessierte, alles einzusammeln was "Perl" auf dem Schild trägt und es unter die Lupe zu nehmen. Denn wer hat schon Zeit einer bezahlten Tätigkeit nachzugehen und das Netz zu überwachen? Um möglichst alles abzudecken, werden manche Werke nur mit wenigen Sätzen im Vorwort abgehandelt. Bei anderen soll detaillierter beschrieben werden, warum sie nach des Autors Meinung (nicht) empfehlenswert sind.
In dieser Ausgabe rezensiert Herbert Breunung die Bücher "Perl Hacks" und "Coders at Work".
* Ein Buchstabendreher verändert die Welt
Manchmal haben kleine Fehler eine große Auswirkung. Ein Beispiel dafür sind die folgenden zwei Zeilen:
$ perl -we "q(di)"
$ perl -we "q(id)"
Useless use of a constant in void context at -e line 1.
Die erste Zeile läuft normal durch, aber bei der zweiten Zeile gibt es eine Warnung. Die besagt, dass der String "id" im void-Kontext sinnfrei ist. Warum ist aber der String "di" erlaubt? Wo liegt hier der Unterschied?
Dieser Artikel erläutert die Antwort auf diese Frage
* CPAN-News
An dieser Stelle zeigen wir wieder sechs Module, die entweder komplett neu sind oder bei denen neue Versionen zur Verfügung stehen.
Published by Renée Bäcker
on 2012-05-02T08:21:37
Für den Französischen Perl-Workshop, der am 29./30. Juni in Straßburg stattfindet, werden Vorträge gesucht.
Published by Renée Bäcker
on 2012-05-02T08:20:30
Der Grant "Improving Devel::Cover" von Paul Johnson wurde akzeptiert.
Published by Renée Bäcker
on 2012-05-02T08:18:30
Heute wurde ein neuer Dienst ins Leben gerufen, mit dem man die Dokumentation von CPAN-Modulen als E-Book bekommen kann: http://perlybook.org. Zur Zeit stehen mit ePub und Mobi zwei Zielformate zur Verfügung, mit denen der Großteil der E-Book-Leser zurechtkommen.
Der Dienst steht noch ganz am Anfang und wird stetig weiterentwickelt. Wir haben den Code auf github gestellt, so dass jeder leicht daran mitarbeiten kann. Natürlich wurde alles mit Perl umgesetzt: Mojolicious als Framework für die Applikation, EPublisher mit Plugins für die Erstellung der E-Books und MetaCPAN::API um an die ganzen Modulinformationen wie das Pod etc. zu kommen.
Falls irgendwelche Fehler auffallen, dann bitte einen Bugreport aufmachen. Wenn irgendwelche Features fehlen, dann bitte einen Feature-Request aufmachen. Ein paar Sachen werden in Kürze noch kommen - eine ROADMAP ist auch auf github zu finden.
Feedback ist jederzeit willkommen: perlybook@perl-services.de
Published by ReneeB
on 2012-04-26T12:29:00
Was kommt dabei heraus, wenn man Open-Source-Ideen, moderne Versionierungskonzepte und die mächtige Kommunikationsinfrastruktur eines sozialen Netzwerks in einen Topf wirft und gut umrührt? Natürlich eine der spannendsten und populärsten Entwicklerplattformen der Welt. Gastautorin Ninja Lamberty über den Social-Coding-Dienst github, der kürzlich seinen vierten Geburtstag feierte und als Hoster von Projekten wie Joomla!, jQuery, Linux Mint, [...]
Published by Alexander Plaum
on 2012-04-19T11:57:53
Das nächste Treffen findet am 08. Mai 2012 um 19:30 Uhr im MoschMosch statt.
Published by Renée Bäcker
on 2012-04-12T08:26:42
Hier wieder eine kurze Übersicht, was so alles besprochen wurde:
YAPC::Europe
Es ist ziemlich schwierig einen Ort für den Social Event zu finden, der die erwarteten ~400 Teilnehmer fasst. Max wird sich aber weiter darum kümmern. Für das Mittagessen sollen die Teilnehmer in die Mensa gehen. Wir wollen versuchen, einen abgetrennten Bereich zu bekommen, damit nicht alle über den Raum verstreut sind.
Bis jetzt haben wir Sponsorenzusagen von rund 23.000 EUR. Es dürfen aber ruhig noch mehr werden. Der Großteil der Firmen auf unserer Liste sind jetzt angeschrieben, mal sehen was noch an Rückmeldungen kommt.
Wir wollen auch Kurse vor und nach der YAPC anbieten. Bisher hat Gabor Szabo schon angeboten, einen Kurs übers Testen zu halten. Wir werden noch weitere Leute ansprechen.
Auch an einem Programm für die zwei Tage nach der YAPC arbeiten wir. Häufig bleiben die Teilnehmer noch etwas länger und wollen sich etwas anschauen...
Das Thema "T-Shirts" ist noch komplett offen.
Sonstiges
Ansonsten gab es viele verschiedene Themen. Unter anderem wurde über Hausbau gesprochen, wie man da viel Geld unterbringen kann, dass manche Entscheidungen vorher schwierig sein können (wo kommen die Steckdosen hin, ...?) und vieles mehr.
Ein weiteres Thema war "Drucken über das Netzwerk" und wie man Drucker mit FTP-Server lahmlegen kann. Es gab auch einen kurzen Erfahrungsbericht von einem Drucker, der an einem Windows-Rechner hängt,der als Druckerserver dient. Das Drucken funktioniert dort häufiger mal nicht ;-)
Auch Perl-Themen kamen zur Sprache: Zum einen habe ich kurz von einer Webseite erzählt, die bald online gehen wird, über die man die Dokumentation von CPAN-Modulen als ebook (.mobi oder .epub) bekommen kann.
Published by Renée Bäcker
on 2012-04-12T08:07:22
Eigentlich sollte das April-Treffen in der letzten Woche stattfinden, musste aber mangels Teilnehmer ausfallen. Jetzt nach den Osterfeiertagen sind alle gestärkt und so findet das Treffen heute (10. April) abend um 19:30 Uhr im MoschMosch statt.
Published by Renée Bäcker
on 2012-04-10T09:06:41
"Das Network Time Protocol (NTP) ist ein Standard zur Synchronisierung von Uhren in Computersystemen über paketbasierte Kommunikationsnetze. NTP verwendet das verbindungslose Transportprotokoll UDP. NTP wurde speziell entwickelt, um eine zuverlässige Zeitgabe über Netzwerke mit variabler Paketlaufzeit zu ermöglichen." Quelle: Wikipedia: Network Time Protocol.
NTP-Server versenden Antworten im NTP Message Format, die sich mit
Net::NTP - Perl extension for decoding NTP server responses von Ask Bjørn Hansen einfach dekodieren lassen.
Beispiel:
Net::NTP exportiert eine einzige Funktion, get_ntp_response(), die als optionalen Parameter auch die Adresse eines NTP-Server annimmt und liefert einen Hash zurück, dessen Schlüssel die einzelnen Abschnitte des NTP Antwort Pakets enthält.
#!/usr/bin/perl
use strict;
use warnings;
use Net::NTP qw(get_ntp_response);
my $ntp_server = shift || 'ptbtime1.ptb.de';
my %response = get_ntp_response( $ntp_server );
my @response_keys = sort keys %response;
foreach my $response_key ( @response_keys ) {
print "$response_key: $response{ $response_key }\n";
}
Das Programm liefert folgende Ausgabe:
Leap Indicator: 0
Mode: 4
Originate Timestamp: 1332443226.50195
Poll Interval: 0.0000
Precision: -21
Receive Timestamp: 1332443226.90883
Reference Clock Identifier: PTB
Reference Timestamp: 1332443217.35515
Root Delay: 0
Root Dispersion: 0.0000
Stratum: 1
Transmit Timestamp: 1332443226.90883
Version Number: 3
Die Schlüssel des %response ensprechen den einzelnen Feldern des NTP Antwortpakets:
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|LI | VN |Mode | Stratum | Poll | Precision |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Root Delay |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Root Dispersion |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reference Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Reference Timestamp (64) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Originate Timestamp (64) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Receive Timestamp (64) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Transmit Timestamp (64) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Key Identifier (optional) (32) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| |
| Message Digest (optional) (128) |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Quelle: RFC 2030
Siehe auch
Published by Thomas Fahle
on 2012-03-22T19:15:00
Am vergangenen Wochenende war ich mal wieder in Chemnitz - wie schon im letzten Jahr war ich bei den Chemnitzer LinuxTagen. Diesmal hatten wir einen eigenen Stand, nachdem wir im letzten Jahr man an den Stand der OTRS-Community durften.
Aber bevor es mit den Linuxtagen losging, gab es freitags in den Räumen von cape-IT noch ein OTRS-Usertreffen. Ich bin mit Hannes verspätet dort eingetroffen, aber trotzdem war es noch sehr interessant. Den Vortrag von Rico zu den Neuerungen in KIX4OTRS habe ich verpasst, aber zur "Plauderrunde" waren wir da.
Hannes hat uns gezeigt, womit er sich so beschäftigt. Sehr interessante Ideen ;-) Andre von Otterhub hat auch noch einen guten Review geschrieben.
Samstag früh ging es dann zu den Linuxtagen, der Stand musste ja noch aufgebaut werden. Ich bin mal wieder mit ziemlich viel Gepäck angereist, Flyer, Banner, Sticker, Bücher, Perl-Magazine etc. mussten alle mit nach Chemnitz.

Wir hatten an den beiden Tagen recht gut zu tun, auch wenn es zwischendrin immer wieder Leerlauf gab. Man hat zwar von Einzelnen die typischen Sprüche über Perl wie "das ist doch nicht lesbar", "ach wenn ich schon die ganzen Dollarzeichen sehe" gehört, aber insgesamt waren es gute Gespräche, die wir dort geführt haben. Ich habe auch wieder viele neue Kontakte geknüpft... und neue Ideen gesammelt. Ich muss mir z.B. mal die Archivista-Box anschauen.
Am Sonntag habe ich auch noch einen Vortrag über Jenkins mit Perl gehalten. Ich hoffe, dass die Videoaufnahmen bald im Netz landen. Dann werde ich das hier verlinken.
Mehr oder weniger direkt nach dem Vortrag musste ich dann schon zum Bahnhof, weil die Heimfahrt über 7 Stunden dauerte und ich noch sonntags ankommen wollte.
An dieser Stelle möchte ich mich auch bei Markus bedanken, der den Stand organisiert hat und bei Wolfgang, Steffen und Florian, die am Stand geholfen haben.
Published by ReneeB
on 2012-03-22T05:25:00
Ich bin schon ueber eine Woche hinterher, hier der Vollstaendigkeit halber meine Zusammenfassung vom 2. und 3. Tag.
Das Highlight war Steffen Ullrich's Web 2.0 Security Workshop. Parallel dazu lief der Perl-6-Track. Der Tag endete mit den Lightningtalks. Hier hat mir besonders Lars Dieckow's "Lightningtalk-Marathon" gefallen. Statt nur einen Thema hatte er gleich ein halbes Dutzend (oder sogar mehr).
Am 3. Tag stand ein XML-Workshop mit Mark Overmeer an. Als Steffen-Ullrich-Fan habe ich mir aber Deep Inspection mit Perl angehoert. Ueberhaupt war es der Steffen-Tag: Gleich im Anschluss Steffen Winkler und nach der Mittagspause Stefan Hornburg mit Modern PerlCommerce.
Den Abschluss bildeten Lightningtalks und danach folgte das Highlight des Tages: Eine Fuehrung durch das Rechenzentrum und "IT-Museum". Besonders letzteres war sehr interessant. Bilder habe ich leider keine gemacht, vielleicht veroeffentlicht Roland seine ... :)
Alles in allem drei sehr schoene Tage. Verglichen mit dem 13. Workshop ein riesiger Schritt in die richtige Richtung, zurueck zur alten Staerke. Vielen Dank an die Organisatoren.
Published by Uwe Voelker
on 2012-03-16T21:57:00
Gestern waren wir nur eine kleine Runde. Lag es an dem verschobenen Termin? Auf jeden Fall waren wir nur zu viert. Im Grunde hatten wir nur drei große Themen:
Vereinsgründung
Aus verschiedenen Gründen mussten wir die Satzung wegen Anmerkungen des Amtsgerichts abändern. Gestern haben wir die fehlenden Unterlagen fertig gemacht, so dass die Eintragung ins Vereinsregister hoffentlich bald erfolgt ist.
YAPC::EU 2012
Wir haben neue Sponsoren für die YAPC::Europe: cPanel wird Platin-Sponsor und Net-A-Porter wird Gold-Sponsor. Mit weiteren Unternehmen stehe ich derzeit in Kontakt. Leider mussten wir auch eine Absage hinnehmen. Trotzdem bin ich mit dem bisherigen Verlauf der Sponsorensuche zufrieden.
Das Social Event war auch ein Thema - oder vielmehr die Frage wo man das Event stattfinden lassen kann. Da kamen etliche Vorschläge wie der alte Flugplatz in Bonames, eine Kantine an der Hauptwache und die Saalburg auf. Max wird sich mit den Betreibern der jeweiligen Orte in Verbindung setzen. Gar nicht so einfach, einen geeigneten Platz für rund 400 Leute zu finden.
In den kommenden zwei Wochen gibt es auch wieder einiges für das YAPC-Blog. Also schön aufmerksam lesen ;-)
Auch ein mögliches Freizeit-Programm für die Tage vor und nach der YAPC waren Thema gewesen. Einige Leute werden früher anreisen oder später wieder nach Hause fahren. Für diese Leute wollen wir ein paar Vorschläge sammeln, was man so alles in Frankfurt machen kann. Wer hier vorschläge hat, Kommentare sind herzlich willkommen.
Deutscher Perl-Workshop
Eigentlich wäre unser Treffen in der letzten Woche gewesen, aber da ein Großteil der Frankfurt Perlmongers auf dem Deutschen Perl-Workshop in Erlangen war, wurde es auf diese Woche verschoben. Wir haben uns über einige Vorträge unterhalten - wie z.B. "Sicherheit bei Web 2.0" von Steffen Ullrich, der gewohnt gut vorgetragen hat. An dieser Stelle nochmal ein Dank an die Organisatoren, die Sponsoren und die Vortragenden.
Max hatte dort in einem Lightning Talk sein neuestes Modul vorgestellt. Als wir darüber gesprochen haben, kam auch die Idee auf, dass man bei der YAPC mit der Gesichtserkennung den Registrierungsprozess beschleunigen könnte. Aber so weit ist das Modul noch nicht.
Published by Renée Bäcker
on 2012-03-14T11:47:38
Am ersten Tag berichtete Renee Baecker ueber Hudson/Jenkins. Auf Arbeit setzen wir Jenkins bereits ein (mit Chuck-Norris-Plugin) - interessant fuer mich war der Devel::Cover-Report. Das werde ich mal noch einbauen...
Nach dem Mittagessen sprach Lars Dieckow ueber "Threadsicherheit von setlocale in Webanwendungen". In kurz: Solange niemand gettext threadsicher macht, sollte man es nicht mit Threads verwenden.
Es folgte Peter Rabbitson mit "Benchmarking is hard" und seinem DBIx::Class-Vortrag. Aber nicht zwei Vortraege hintereinander, da war noch jemand dazwischen...
...mein Vortrag ueber Mojo::UserAgent.
Der m. M. beste Vortrag des Tages: Marc Lehmann ueber staticperl und Urlader. staticperl baut ein statisch gelinktes Perl. Urlader ist ein (perl-unabhaengiger) Ersatz fuer PAR::Packer. Fuer sein Spiel deliantra hat Marc einige Widrigkeiten von PAR erlebt und deshalb eine Alternative geschaffen. Er kommunizierte auch die Nachteile klar: hohe Einstiegshuerde, vieles muss per Hand gemacht werden. Trotzdem sehr interessant und einen Blick wert!
Morgen steht das Social Event und die ersten Lightning Talks an.
Published by Uwe Voelker
on 2012-03-06T14:36:00
Bald ist es soweit: Von Montag bis Mittwoch findet in Erlangen der 14. Deutsche Perl-Workshop statt. In meinem Vortrag stelle ich Mojo::UserAgent vor. Folien folgen im Laufe der Woche.
Ausserdem zeige ich noch in einen Lightning-Talk wie man den Speicherverbrauch von Perl-Modulen misst.
Auf nach Erlangen!
Published by Uwe Voelker
on 2012-03-03T21:10:00
... ab 1. März käuflich zu erwerben. Preis wie immer: € 1,80
Inhaltsverzeichnis:
Umgebungsvariablen anzeigen lassen
Warnungen sammeln
Encoding DosBox
Dialog Yes/No
ProgressBar ohne Modul
Twitter-Api Programmierung mit Perl: Die "Single-User"-Lösung
Was ist los in der Perl-Welt...
Kommerzielle Werbung
Gemeinnützige Werbung
Perl-Zeitung aktuell & Gewinnspiel
Vorschau & Abschluss
http://perl-zeitung.at
Published by Gernot Havranek
on 2012-02-17T11:33:00
Eigentlich findet unser monatliches Treffen immer am 1. Dienstag des Monats statt. Im März werden wir aber eine Ausnahme machen! Da sehr viele von uns beim Deutschen Perl-Workshop in Erlangen sind, verschieben wir das Treffen um eine Woche.
Unser nächstes Treffen ist also am 13. März 2012 um 19:30 Uhr im MoschMosch!
Um einen genügend großen Tisch reservieren zu können, bitte kurz auf der Mailingliste oder hier Bescheid geben. Natürlich freuen wir uns auch über kurzfristigen Besuch.
Published by Renée Bäcker
on 2012-02-10T17:27:09
Wir suchen aktuell, Autoren die regelmäßig für die Perl-Zeitung schreiben möchten.
Haben Sie Interesse?
Melden Sie sich bei uns!
Kontakt
Published by Gernot Havranek
on 2012-02-09T13:08:00
Das PDL-Entwicklerteam hat die neue Version 2.4.10 der Perl Data Language vorgestellt. Die Sprache erweitert Perl um zusätzliche Funktionen, die in erster Linie bei wissenschaftlichen Berechnungen Vorteile gegenüber der Verwendung anderer Sprachen wie MATLAB oder Scilab bieten sollen. Dazu setzt PDL unter anderem auf einen eigenen Datentyp, der speziell für die Verarbeitung N-dimensionaler Matrizen geeignet sei.
Die nun vorgestellte Version der PDL ergänzt eine Option zur Auto-Parallelisierung der PDL-Thread-Schleifen, unterstützt allgemein POSIX-Threads auf allen kompatiblen Plattformen und PDL-Datentypen mit einer Größe von mehr als 2 Gibibyte (auf 64-Bit-Systemen). Zudem stellen die Entwickler einen ersten Entwurf ihres PDL-Handbuchs als PDF zum Download zur Verfügung. (rl)
Published by Gernot Havranek
on 2012-02-08T18:57:00
Heute kam die neue foo, mit den bereits angesprochenen Artikeln. Was als eine Folge des Wx-tutorials geplant war musste ich nochmal teilen, aber die rezensionen werden langsam richtig gut. Prompt kam am gleichen Tag Leserpost, was mich sehr freute.
Und die nächsten sind in Planung (Camel und Coders at work von peter Seibel, daß ich nochmal etwas gegen Visionäre der Programmierung antreten lasen will). So nach und nach will ich alle Perl-Klassiker , wichtige Neuerscheinungen, auch Allgemein-Programmier-Klassiker und einiges links und rechts besprechen. Deswegen auch immer 2 Rezensionen in eienr Ausgabe. Könntet ihr euch vorstellen auch Rezension zu einem CSS 3-Buch in der foo lesen zu wollen? Ich will das wirklich wissen.
Danke.
Published
on 2012-02-01T22:36:46
Gerade wird es so richtig kalt - aber beim Perl-Magazin ist es schon Frühjahr. Die 21. Ausgabe des Magazins ist heute erschienen und die Abonnenten sollten in den nächsten 1-2 Tagen Post bekommen.
Inhalt dieser Ausgabe:
* VMware und Perl
Virtualisierung ist mittlerweile ein großes Thema. Mit VMware und Perl kann man virtuelle Maschinen automatisch ansprechen.
Stefan Oberwahrenbrock zeigt, welche VMware-Produkte es gibt und wie man diese mit Perl ansprechen kann.
* Continuous Integration für Perl-Projekte mit Jenkins
Nichts ist schlimmer, als eine fehlerhafte Software an Kunden auszuliefern. Deshalb sollten Tests und das Zusammenbauen der unterschiedlichen Komponenten regelmäßig auf dem Programm stehen.
Dieser Artikel zeigt, wie Jenkins für Perl-Projekte eingesetzt werden kann.
* Perl in the Cloud - OpenShift Express by Red Hat
Das Thema "Cloud" ist derzeit in aller Munde, jeder will rein und immer mehr Anwendungen wandern in die Cloud.
Thomas Fahle zeigt in diesem Artikel, wie man eigene Anwendungen mit OpenShift von RedHat in die Cloud bringt.
* Rezension - Perl komplett
Herbert Breunung stellt in dieser Ausgabe wieder zwei Bücher vor - Die "Perl Pocket Reference" von Johan Vromans und "Der Perl-Programmierer" von Jürgen Plate.
* Konfigurationsmanagement und Software-Deployment mit Rex
Mit Rex kann das komplette Deployment und die Konfiguration von Servern automatisiert werden. Die Steuerdateien für Rex sind in Perl geschrieben.
Jan Gehring zeigt, wie die sogenannten "Tasks" geschrieben werden und welche Möglichkeiten Rex bietet.
* Ein CPAN für eigene Module
Wie stelle ich Kunden die entwickelten Perl-Module zur Verfügung? Diese Frage stellt sich wahrscheinlich für viele Perl-Programmierer.
Man kennt ja das CPAN, warum also nicht die gleiche Struktur für eigene Projekte nutzen.
Dieser Artikel zeigt, wie man mit Pinto ein CPAN für eigene Module aufbaut.
* WxPerl Tutorial - Teil 9: Mächtige Widgets
Im neunten Teil des WxPerl-Tutorials zeigt Herbert Breunung eine Übersicht über viele Widgets, die man in wxPerl-Programmen nutzen kann. Er geht dabei den Weg von einfachen Widgets über einfache Auswahlwidgets bis zu den Auswahlwidgets für den gehobeneren Anspruch.
Published by ReneeB
on 2012-01-31T22:31:00
Endlich können wir das Datum und den Ort der diesjährigen YAPC::EU bekanntgeben: Die YAPC::Europe 2012 wird vom 20.-22. August 2012 an der Goethe Universität in Frankfurt stattfinden.
Die Webseite werden wir regelmäßig mit neuen Informationen bestücken. Die wichtigsten Informationen wird es auch im Blog geben.
Published by ReneeB
on 2012-01-22T22:11:00
Die Erlanger Perlmongers haben das Programm des 14.Deutschen Perl-Workshops online gestellt. Teilweise gibt es zwei Track, die meiste Zeit ist es aber nur ein einzelner Track.
Published by ReneeB
on 2012-01-15T23:01:00
Im Februar 2010 haben mein Kollege Johannes Plunien und ich die Hamburger Perlmongers wieder "belebt". Danach fanden (bis auf wenige Ausnahmen) jeden Monat Treffen statt. Als Gaeste konnten wir Stefan Hornburg und Renee Baecker begruessen.
Insgesamt habe ich vielleicht 10 Vortraege gehalten, meist die Premiere meiner YAPC- oder Perl-Workshop-Vortraege. Auch einige "Hamburger" haben interessante Projekte und Module vorgestellt. Trotz allem Einsatz bin ich mit der Beteiligung nicht zufrieden. Die Teilnehmerzahl schwankt zwischen 4 und 10 (mit dem Durchschnitt wohl so bei 5).
Deshalb gibt es jetzt etwas neues: Einen Mojolicious-Workshop!
Am 28.1.2012, 10 Uhr in dem Raeumen vom Attraktor e. V. wird Marcos Rebelo eine Einfuehrung in Mojolicios geben. Anschliessend wird in kleinen Gruppen an konkreten Projekten gearbeitet. Wer eigene Ideen hat, kann diese gern verfolgen. Mojolicious-Kenntnisse werden nicht vorausgesetzt, aber Perl-Kenntnisse sollten vorhanden sein. Die Einfuehrung ist in Englisch, es sind aber genuegend Muttersprachler dabei, die Fragen auch in Deutsch beantworten koennen.
Ich freue mich auf den 28.!
Published by Uwe Voelker
on 2012-01-07T21:23:00
Damit mein ich die Arbeit runterreißen. Ich bin etwas müde weil ich das geplante abarbeitete, daher gibt es wenig Überraschendes zu berichten, zumindest äußerlich. Die Rezension zur Taschenreferenz + "der Perl-Programmierer" sind fertig und erscheinen in ca 2 wochen, der Benchmarkartikel in der Perlzeitung schon letzte Woche, nächste Woche auch der sechste teil (nr. 5) im freiesmagazin. Ja, die wiederkehrenden Pflichten können eine Mühle sein, aber Arbeit macht bekanntlicherweise frei, denn der Müßiggang begünstigt die Fäulnis der Seele und nur Übung macht den Meister. Die Sprüche hat man oft gehört doch sind sie Teilweise Relikte aus einer zeit als noch Handwerk überall war, alles repariert und ersetzt werden konnte, es weniger Müll gab, die Musik noch selbst gespielt wurde und das Essen eine wesentlich höhere Qualität hatte. Ich saß in der Architekturvorlesung, als der Professor sagte das nach heutigem statischem Wissen einige Kirchen nicht stehen dürften. So viel zum Thema Fortschritt. Der Absatz ist komplett ohne Witzigkeit oder Ironie. Ich vermisse nur Kultur als etwas auf Wissen und Können basierendes, daß als Gut durch Generationen weitergereicht wird. Das ist mehr als nur der Umstand, daß den Dingen vom Fließband Gefühle und das individuelle fehlt. Echtes Können und Beherrschung seines Handwerks, darum wird es für mich wohl auch 2012 gehen.
Was nehm ich mir also vor für 2012. Uuh 2012, die Mayakrieger werden aufwachen und sich einen Kaffe bestellen. Das Leben ist wunderbar und Probleme sind dazu da gelöst zu werden. Wer was anderes behauptet ist Terrorist. Also 2012:
* KephraXP soll benutzbarer Editor werden, zumindest das einfache editieren, einfacher Umgang mit git und hg, editieren von Dateien auf Servern, sich Informationen aller art (snippets, suchbegriffe, regexes,) für mich merkt und all die Handgriffe abnimmt die das Artikelschreiben aufwändiger machen als nötig. mehr dazu in eigenem Post.
* WxPerl: teile 9-12 des Tutorials erscheinen wohl dieses jahr in der foo, womit diese Serie auch abgeschlossen sein wird (soweit ich es jetzt Überblick.) Das Buch dazu will ich wenigstens zur Hälfte schreiben und einige kleinere Programm und Module will ich in der sparte sehen. Mit Dist::Zilla sollte es einfacher als bisher gehen und mit Tie::Wx::Widget hab ich meine erste saubere Distro gemacht.
* App::Gui::Docular das ist eines der wxprogramme aber kann für sehr viel mehr gut sein als nur wx, hat grosses Potential, aber eins nach dem anderen. Mi den graphischen Spielzeugen Spirograph und Harmonograph werd ich anfangen. die stell ich in den Namensraum "App" weil die mit Kommandozeilenparameter auch Ergebnis als Datei absetzen können sollen.
* Perl 6 grant, will ich bis zur YAPC abgeschlossen haben. ein kleines Projekt bei dem ich Perl 6 nutze wäre schön.
* und natürlich einige Artikel, aber vielleicht nicht so viel, dafür mit mehr Vorlauf geschrieben. (Rückblickend würde ich gerne so viel verbessern an den abgelieferten Sachen...) Einiges davon auch ausserhalb der Programmiererei, denn das ich kein Atheist bin ist kein Geheimnis. sagen wir mal ich bin Skeptiker, aber kein jähzorniger, ungebildeter Rüpel wie einige der Jungs von der GWUP. Es gibt noch wichtigere Dinge als Software und meine erste Arbeit dazu kam ganz gut an.
* da ich mich jetzt beinah täglich ans piano setze sollte auch hier einiges mehr gehen in 2012. hab manchmal Ideen zu Melodien und eine Software in Perl mit der man Musik machen kann wäre perfekt. zum abspielen mag ich Traktor gerne, aber Reaktor ist mir zu groß. Vieleicht gibt es doch gutes open-source-Programm.
Published
on 2012-01-04T21:19:05
Es ist wieder so weit - Perl Adventskalender 2011 sind online:
Via:
PreshBlog: Perl Advent Calendars for 2011
Published by Thomas Fahle
on 2011-12-01T17:15:00
OpenShift by Red Hat soll die Entwicklung von Open-Source-Anwendungen für die Cloud vereinfachen.
Dieser Plattform-as-a-Service stellt eine Infrastruktur für verschiedene Programmiersprachen und Web-Frameworks zur Verfügung.
Red Hat unterscheidet zwischen den Produktvarianten Express, Flex und Power.
Die kostenlose Express Variante (Registrierung erforderlich) erlaubt u.a. die Verwendung der dynamischen Programmiersprache Perl in Version 5.10.1, der Datenbanken MySQL in Version 5.1 oder SQLite in Version 3 und (ganz wichtig) die Installation von CPAN-Modulen.
Die bekannten und beliebten Perl Web-Frameworks Dancer, Mojolicious und Catalyst können verwendet werden.
Schritt für Schritt
Dieser Beitrag geht zuerst Schritt für Schritt durch die Installation, Initialisierung und Konfiguration von OpenShift Express. Danach wird ein betont einfaches, aber nützliches Perl-Programm erstellt und gezeigt, wie dieses in die Cloud ausgeliefert (deployed) wird.
Registrierung
Zur Verwendung von OpenShift Express ist eine Registrierung mit einer gültigen E-Mail-Adresse erfoderlich. Alternativ kann auch ein bestehender RHN-Account verwendet werden.
Installation der Client-Tools
OpenShift funktioniert unter Mac OSX, Linux und Windows - für diesen Beitrag verwende ich CentOS 6 (64-Bit in einer eigenen virtuellen Maschine).
Für die Client-Tools bietet RedHat eine eigenes YUM-Repository an, das wie folgt installiert wird.
# wget https://openshift.redhat.com/app/repo/openshift.repo
# mv openshift.repo /etc/yum.repos.d
Damit alle Paket-Abhänigkeiten aufgelöst werden, musste ich auch die EPEL- und RPMForge-Repositories hinzufügen.
Nun können die Client-Tools installiert werden:
# yum install rhc
Initialisierung
Alle Apps eines Users werden in einen eigenen Namensraum (Domain) installiert. Apps sind dann nach dem Schema http://$app-$domain.rhcloud.com öffentlich erreichbar. Dazu gleich mehr.
Das Kommando rhc-create-domain erzeugt einen neuen Namensraum, die Konfigurationsdatei express.conf und SSH-Schlüssel (libra_id_rsa) zur Git-Authentifizierung.
$ rhc-create-domain -n yourdomain -l user@example.com
Password: <user password>
Generating Openshift Express ssh key to /home/UserName/.ssh/libra_id_rsa
Generating public/private RSA key pair.
Created directory '/home/UserName/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/UserName/.ssh/libra_id_rsa.
Your public key has been saved in /home/UserName/.ssh/libra_id_rsa.pub.
.
.
Contacting https://openshift.redhat.com
Adding rhlogin to /home/UserName/.openshift/express.conf
Creation successful
You may now create an application. Please make note of your local config file
in /home/UserName/.openshift/express.conf which has been created and populated for
you.
Jetzt noch Git (minimal) konfigurieren
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
und dann kann endlich die erste App erstellt werden.
Appgerüst erzeugen
Das Kommando rhc-create-app erzeugt das Gerüst der neuen App. Über die Option -a wird der Name der Applikation angegeben. Die Option -t legt den Typ der Applikation, hier perl-5.10, fest. Typen werden in der Dokumentation auch gerne als cartridge bezeichnet.
$ rhc-create-app -a X1 -t perl-5.10
Password:
Attempting to create remote application space: X1
Now your new domain name is being propagated worldwide (this might take a minute)...
Pulling new repo down
Warning: Permanently added 'x1-thomasfahle.rhcloud.com,184.73.107.7' (RSA) to the list of known hosts.
Confirming application 'X1' is available
Attempt # 1
Success! Your application 'X1' is now published here:
http://X1-thomasfahle.rhcloud.com/
The remote repository is located here:
ssh://ce3eb6cc3b1942a2a61a76db6ff63274@X1-thomasfahle.rhcloud.com/~/git/X1.git/
To make changes to 'X1', commit to X1/.
Successfully created application: X1
Die neu erstellte Applikation mit dem Namen X1 innerhalb des Namensraumes thomasfahle ist sofort unter der URL http://x1-thomasfahle.rhcloud.com/ erreichbar.
Wer lieber seine eigene Domain verwenden möchte und über einen eigenen Nameserver verfügt, kann einen DNS Alias einrichten.
Orientierung im Gelände
Die neu erstellte Applikation befindet sich im Verzeichnis $app, hier X1.
$ tree X1
X1
|-- deplist.txt
|-- libs
|-- misc
|-- perl
| |-- health_check.pl
| `-- index.pl
`-- README
Das Verzeichnis perl ist die DocumentRoot der Webapp. Alle hier abgelegten Dateien sind öffentlich. Die Datei index.pl dient als DirectoryIndex.
Die Datei deplist.txt nimmt eine Liste der zu installierenden CPAN-Module auf, pro Zeile ein Modul ohne Versionsnummer.
Beispiel:
Test::Base
YAML
Dancer
Plack::Handler::Apache2
Das Verzeichnis misc ist nicht öffentlich und kann für eigene Zwecke genutzt werden.
Das Verzeichnis libs ist ebenfalls nicht öffentlich und dient als Speicherort für eigene Module.
Sinn und Zweck der Datei health_check.pl ist mir nicht ganz klar geworden.
Weiterhin gibt es noch ein verstecktes Verzeichnis .openshift zur Steuerung des Build-Prozesses. Dazu später mehr.
Das erste Programm: Umgebungsvariablen
Einige Konfigurationseinstellungen, z.B. für Datenbanken, sind als Umgebungsvariablen abgelegt.
Daher erstellen wir als erstes einfaches Beispiel keine Hallo-Welt-App, sondern eine nützliche App, welche die Umgebungsvariablen anzeigt.
Das Programm wird unter dem Namen printenv.pl im Ordner perl abgelegt.
#!/usr/bin/perl
use strict;
use warnings;
# printenv -- demo CGI program which just prints its environment
print "Content-type: text/plain\n\n";
foreach my $key ( sort( keys(%ENV) ) ) {
my $val = $ENV{$key};
$val =~ s|\n|\\n|g;
$val =~ s|"|\\"|g;
print qq~$key = $val\n~;
}
exit();
Zur Veröffentlichung (Deployment) der App verwendet OpenShift Git. Sobald die Datei hinzugefügt und commited wurde, kann diese per git push in die Cloud ausgeliefert werden.
$ git add printenv.pl
$ git commit -m 'Umgebungsvariablen App'
$ git push
Counting objects: 6, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 594 bytes, done.
Total 4 (delta 1), reused 0 (delta 0)
remote: Stopping application...
remote: Waiting for stop to finish
remote: Done
remote: Running .openshift/action_hooks/pre_build
remote: strict is up to date. (1.04)
remote: skipping F/FL/FLORA/perl-5.15.4.tar.gz
remote: Running .openshift/action_hooks/build
remote: Running .openshift/action_hooks/deploy
remote: Starting application...
remote: Done
remote: Running .openshift/action_hooks/post_deploy
To ssh://ce3eb6cc3b1942a2a61a76db6ff63274@X1-thomasfahle.rhcloud.com/~/git/X1.git/
ee74341..e31f2ec master -> master
Das Programm ist nun unter der URL http://x1-thomasfahle.rhcloud.com/printenv.pl erreichbar.
Hinweis: Alle Daten innerhalb des Git-Repositories werden dabei auf dem OpenShift Express Server zunächst gelöscht und dann neu eingespielt.
Hinweis: Da Umgebungsvariablen auch Benutzernamen und Passwörter enthalten können, sollte dieses Programm nicht auf dem Cloud-Server verbleiben.
Zum Bau und zur Auslieferung der Applikation werden die Programme im Ordner .openschift/action_hooks/ ausgeführt. Um sich die Umgebungsvariablen anzeigen zu lassen, genügt es in die Datei build die Anweisung export einzufügen. Dann werden die Umgebungsvariablen bei jedem push angezeigt.
$ cat .openshift/action_hooks/build
#!/bin/bash
# This is a simple build script and will be executed on your CI system if
# available. Otherwise it will execute while your application is stopped
# before the deploy step. This script gets executed directly, so it
# could be python, php, ruby, etc.
export
Eigene Umgebungsvariablen können derzeit nicht gesetzt werden.
Logfiles
Das Kommando rhc-tail-files ermöglicht den Zugriff auf die Logdateien auf dem Cloud-Server.
$ rhc-tail-files -a X1
Password:
Attempting to tail files: X1/logs/*
Use ctl + c to stop
==> X1/logs/error_log-20111122-000000-EST <==
[Tue Nov 22 16:43:18 2011] [notice] Apache/2.2.15 (Unix) mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
==> X1/logs/access_log-20111122-000000-EST <==
xx.xxx.xxx.IP - - [22/Nov/2011:16:47:04 -0500] "GET /printenv.pl HTTP/1.0" 200 2323 "-" "Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.24) Gecko/20111107 Ubuntu/10.04 (lucid) Firefox/3.6.24"
Der Zugriff auf die error_log Dateien erleichert das Debuggen erheblich.
Snapshots
Das Kommando rhc-snapshot erstellt einen Snapshot der Applikation und liefert diesen als gezippte tar Datei zurü:
$ rhc-snapshot -a X1
Password:
Pulling down a snapshot to X1.tar.gz
Stopping application...
Waiting for stop to finish
Done
Creating and sending tar.gz
Starting application...
Done
Wenn man die Datei X1.tar.gz auspackt, sieht man alle Verzeichnisse und Dateien der Applikation.
$ tar -xzvf X1.tar.gz
$ cd app-verzeichnis
$ tree
.
|-- git
| `-- X1.git
| |-- branches
| |-- config
| |-- description
| |-- HEAD
| |-- hooks
| | |-- applypatch-msg.sample
| | |-- commit-msg.sample
| | |-- post-commit.sample
| | |-- post-receive
| | |-- post-receive.sample
| | |-- post-update.sample
| | |-- pre-applypatch.sample
| | |-- pre-commit.sample
| | |-- prepare-commit-msg.sample
| | |-- pre-rebase.sample
| | |-- pre-receive
| | `-- update.sample
| |-- info
| | |-- exclude
| | `-- refs
| |-- objects
| | |-- 0a
| | | `-- bed1546ab3d6aee5b42c68f57100f52949b4bf
| | |-- 10
| | | `-- cd54466b8f66bb40d6c50ab5519bf7727e51dd
| | |-- 1d
| | | `-- b60ffa4e6b41be6ed92a6a2b3343c70b301fb6
| | |-- 2f
| | | `-- a0243ca6abb34233618e9ea809871be855a225
| | |-- 40
| | | |-- 0b36608e5e4405636bf7394c546ec18de53252
| | | `-- c24d558d8a1196d4170f56182b8f69fbe6741f
| | |-- 5e
| | | `-- 1c48b299eb8c1fd204b69e520236d3a2a3217e
| | |-- 6a
| | | `-- e37b40a1cd342e2661bdf06b65fc4731e1af1e
| | |-- 9b
| | | `-- 594ba566f5036940fd00dfeca9cd38e51579a8
| | |-- a5
| | | `-- 7d1f5806d714a998130b9517a4240de0c39fe3
| | |-- b5
| | | `-- 3bde9fe6346b3d54d39b9d970308cc25080cbe
| | |-- c0
| | | `-- df17bb0b3dbdb4da6c06ad6fe4e070e3061485
| | |-- c1
| | | `-- d6344439cdc822df02c54bb39aabb5ccd4a7de
| | |-- d5
| | | `-- 64d0bc3dd917926892c55e3706cc116d5b165e
| | |-- df
| | | `-- 8d841a9e8c1afd175e0061bb7b762d708b0c58
| | |-- e3
| | | `-- 1f2ec741b91b2d4ddc9500991cc660a8cf037d
| | |-- e6
| | | `-- 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
| | |-- ed
| | | `-- 5eb993715da4af89ce517eedb2c3879994e10e
| | |-- ee
| | | `-- 74341ac408153e9bfe02fe55669533ccdfdbba
| | |-- f1
| | | `-- 25e7fa5f3603669e173695b284d170ddd7b62f
| | |-- info
| | | `-- packs
| | `-- pack
| | |-- pack-e8aca9b5d216bb7c5a7ac884d5cdcb6c0a9faabe.idx
| | `-- pack-e8aca9b5d216bb7c5a7ac884d5cdcb6c0a9faabe.pack
| |-- packed-refs
| `-- refs
| |-- heads
| | `-- master
| `-- tags
`-- X1
|-- ci
|-- conf
| `-- magic -> /etc/httpd/conf/magic
|-- conf.d
|-- data
|-- logs
| |-- access_log-20111122-000000-EST
| |-- access_log-20111123-000000-EST
| |-- error_log-20111122-000000-EST
| `-- error_log-20111123-000000-EST
|-- modules -> /usr/lib64/httpd/modules
|-- perl5lib
|-- repo -> runtime/repo
|-- run
|-- runtime
| `-- repo
| |-- deplist.txt
| |-- libs
| |-- misc
| |-- perl
| | |-- health_check.pl
| | |-- index.pl
| | `-- printenv.pl
| `-- README
`-- tmp
45 directories, 53 files
Persistent Storage
Wie oben bereits erwähnt, werden bei der Auslieferung (git push) alle Dateien, die sich innerhalb des Git-Repositories befinden, auf dem Cloud-Server gelöscht und neu eingespielt.
Persistente Daten, z.B. SQLite Dateien, müssen daher ausserhalb des Git-Repositories auf dem Server aufbewahrt werden. Dazu stellt OpenShift Express den Ordner data zur Verfügung.
Der Pfad zum Ordner data kann aus der Umgebungsvariablen OPENSHIFT_DATA_DIR ermittelt werden.
#!/usr/bin/perl
use strict;
use warnings;
print "Content-type: text/plain\n\n";
my $data_dir = $ENV{OPENSHIFT_DATA_DIR};
my $file = 'test.txt';
open (OUT, ">" , "$data_dir/$file" ) or die $!;
for ( 1 .. 10 ) {
print OUT "$_\n";
}
close(OUT) or die $!;
exit();
Die im Ordner data gespeicherten Daten lassen sich per rhc-snapshot vom Cloud-Server holen.
$ tree
.
|-- ci
|-- conf
| `-- magic -> /etc/httpd/conf/magic
|-- conf.d
|-- data
| `-- test.txt
|-- logs
| |-- access_log-20111122-000000-EST
| |-- access_log-20111123-000000-EST
| |-- error_log-20111122-000000-EST
| `-- error_log-20111123-000000-EST
|-- modules -> /usr/lib64/httpd/modules
|-- perl5lib
|-- repo -> runtime/repo
|-- run
|-- runtime
| `-- repo
| |-- deplist.txt
| |-- libs
| |-- misc
| |-- perl
| | |-- health_check.pl
| | |-- index.pl
| | |-- printenv.pl
| | |-- read.pl
| | `-- write.pl
| `-- README
`-- tmp
Siehe auch
Published by Thomas Fahle
on 2011-11-24T11:22:45
WWW::Google::PageRank von Yuri Karaban ermittelt den Google Pagerank für Websites.
Pagerank ermitteln: get()
Die Methode get() liefert im skalaren Kontext den Pagerank, im Listenkontext den Pagerank und zusätzlich ein HTTP::Response Objekt zum Debuggen zurück.
Beispiel: get() im skalaren Kontext
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Google::PageRank;
my $pr = WWW::Google::PageRank->new( host => 'toolbarqueries.google.de' );
my @urls = qw!
http://perl-howto.de
http://yahoo.de
http://web.de
!;
foreach my $url (@urls) {
print "URL: $url ", scalar( $pr->get($url) ), "\n";
}
Das Programm liefert folgende Ausgabe:
URL: http://perl-howto.de 4
URL: http://yahoo.de 8
URL: http://web.de 7
Beispiel: get() im Listenkontext
#!/usr/bin/perl
use strict;
use warnings;
use WWW::Google::PageRank;
my $pr = WWW::Google::PageRank->new( host => 'toolbarqueries.google.de' )
or die $!;
my @urls = qw!
http://perl-howto.de
http://yahoo.de
http://web.de
http://example.tld
!;
# Debug
foreach my $url (@urls) {
print "URL: $url ";
my ( $pagerank, $response ) = $pr->get($url);
if ( defined $pagerank ) {
print "PageRank: $pagerank\n";
}
else {
print "Fehler: ", $response->status_line, "\n";
warn $response->as_string, "\n";
}
}
Das Programm liefert folgende Ausgabe (die lange XML-Ausgabe des as_string() habe ich weggelassen):
URL: http://perl-howto.de PageRank: 4
URL: http://yahoo.de PageRank: 8
URL: http://web.de PageRank: 7
URL: http://example.tld Fehler: 403 Forbidden
Siehe auch:
Published by Thomas Fahle
on 2011-11-21T17:17:53
Auch wenns nach Nabelschau klingt, ich bin stolz auch nur Testleser der Pocketref gewesen zu sein. Dabei gehts nicht um den Aufwand. Links pflege ich auch sonst. Und auch sonst waren es nur wenige Stunden perldoc lesen, was ich eh für das Tutorial, das ich gerade schreibe, tun musste. Die Coremodule sind leider rausgefallen und neues Material kam sehr sparsam (mehr Details in der nächsten $foo).
Auf meinem ersten Perl Workshop 2005 in Dresden gewann ich in der Tombola die dritte (5.6 er) Version (die einzige mit der lustigen Einleitung von Larry). Und ich lernte damit quasi die Tiefen der Sprache. Johan war es auch der meinen CPAN - Account freischaltete (Synchronizität ?). Das einige meiner Vorschläge jetzt im Buch sind, seh ich als Schulterklopfen der alten Bärte. Und ich sehe mich nicht mehr als den Anfänger :). Und wenn euch was juckt, macht mit. In der Perlgemeinschaft mitmachen ist manchmal einfacher als man meint.
Published
on 2011-11-19T00:04:18
Perl::Critic ist ein statischer Source Code Analyzer für Perl, der die Einhaltung der Perl Best Practices - Standards and Styles for Developing Maintainable Code, prüft.
Twit.tv hat ein Interview mit Jeffrey Thalhammer, dem Erfinder von Perl::Critic veröffentlicht.
Das Interview führt Randal Schwartz zusammen mit Aaron Newcomb.
In dem sehenswerten Video gehen die drei auf die Hintergründe und die Geschichte von Perl::Critic ein, zeigen Beispiele für die Verwendung und finden mit Perl::Critic gleich ein paar Bugs.
Enjoy!
Perl::Critic ausprobieren
Wer Perl::Critic einfach mal ausprobieren möchte, kann eine Datei mit Perl Source Code auf der Website http://www.perlcritic.org/ (Some Ways Are Better Than Others) hochladen und prüfen lassen.
Siehe auch:
Via:
Perl-News: FLOSS-Weekly: Interview mit Jeffrey Thalhammer - Perl::Critic
Published by Thomas Fahle
on 2011-11-14T21:00:00
... war ein kleiner aber schöner. Das meiste dazu schrieb ich bereits. und dank wombats und der 29,- Spezialpreise der Bahn nicht mal teuer. die wiener sind wirklich ganz eigner haufen. das merkte man nicht nur zur YAPC 2007 die sehr gut gewesen sein soll. Bei diese Treffen gehts ja eh meist darum mal Leute zu treffen die in manchem einen besser verstehen können als alles was einem sonst das Jahr über begegnet.
Published
on 2011-11-07T23:31:05
Am letzten Tag standen folgende Vorträge auf dem Programm:
Perl in der Wolke (Denis Banovic)
Denis zeigte Stackato (welches auf VMware CloudFoundry basiert) am Beispiel einer Dancer-Anwendung.
Captive::Portal - eine hochskalierende Hotspotlösung (Karl Gaissmaier)
Interessanter Vortrag über "WLAN-Anmeldeseiten".
Tanz! (Stefan "racke" Hornburg)
Eine Einführung in Dancer (ein Webframework). Typisch sind die vielen exportierten Funktionen - man muß es halt mögen... Folien
Nach der Mittagspause standen auf dem Programm:
Perl vs. JavaScript - eine Differentialdiagnose (Rolf "LanX" Langsdorf)
Rolf möchte Perl 5 nach JavaScript konvertieren. Im Vortrag ging er auf die Unterschiede (und Gemeinsamkeiten) der beiden Sprachen ein.
Deutsch oder Englisch? Über die Sprache in Perl-Modulen (Richard "Horshack" Lippmann)
Ein sehr amüsanter Vortrag über das Dilemma verschiedensprachlicher Programmierer.
Bessere Dokumentation schreiben (Herbert "lichtkind" Breunung)
"Programmieren ist wie ein Sturz die Treppe runter..."
Qualitätsmanagement bei GeNUA (Steffen Ullrich)
- kaum Unittests, vermehrt Livetests
- Styleguide an Perl Best Practices orientiert
- 1,4 Mio. Zeilen Perl-Code
Hg vs. Git (Herbert "lichtkind" Breunung)
Eine Einführung in Versionskontrolle und ein Vergleich von Mercurial und Git.
Perl für Vortragende (Renee Bäcker)
Renee verrät Damian Conway's Tricks für Live Demos.
Damit enden drei schöne Tage. Vielen Dank an die Organisatoren. Eine gute Generalprobe für die YAPC::EU 2012.
Published by Uwe Voelker
on 2011-10-21T15:33:00
Usergroups bieten den direkten, persönlichen Austausch über Techie-Themen, oftmals in netter abendlicher Runde bei Vereinen, Firmen oder auch in Kneipen. Hier können Informatiker Gleichgesinnte treffen, sich bei Vorträgen weiterbilden oder sich über den Arbeitsalltag austauschen. Nicht zuletzt sind bereits einige Aufträge oder Stellen über Usergroup-Kontakte vergeben worden. O’Reilly unterstützt die Usergroups bereits seit vielen Jahren, [...]
Published by Corina Pahrmann
on 2011-10-13T13:20:30
Ein O’Reilly-Post am Morgen lässt den Tag gut beginnen. Deshalb zeige ich hier eine kleine Perl-Anwendung für Windows, mit der ich den Titel und einen kleinen Auszug des aktuellsten Posts hier im oreillyblog angezeigt bekomme. Die Anwendung besteht im Prinzip aus drei Teilen: 1. Der Teil für den Taskschedulereintrag 2. Der Teil, der den RSS-Feed [...]
Published by Nathalie Pelz
on 2010-10-06T12:49:09
Mit PostgreSQL und DBI sowie DBD::Pg ist es möglich, SQL-Queries im Hintergrund asynchron laufen zu lassen – und währenddessen in Perl weitere Berechnungen anzustellen, anstatt nur auf die Daten zu warten. Insbesondere bei Multi-Core-CPUs oder einer Trennung von Datenbankserver und Anwendung ist dies eine sehr praktische Sache.
Und einfach ist es obendrein!
Bei dem jeweiligen Aufruf von $dbh->do, $dbh->prepare oder $dbh->prepare_cached muss nur das Attribut PG_ASYNC hinzugefügt werden. Besonders praktisch ist das bei INSERT und UPDATE Queries, wenn also keine Rückgabewerte ausgewertet werden müssen, da kann man im neuen Query einfach noch auf den Rest des alten warten:
use DBD::Pg qw(:async); # Async-Konstanten einbinden
# ... und später Query vorbereiten:
my $sth = $self->dbh->prepare( "INSERT INTO table ...",
{ pg_async => PG_ASYNC + PG_OLDQUERY_WAIT } );
# ... und dann zum Beispiel in einer Schleife aufrufen
while ( my @parameter = calculate_next_insert() )
{
$sth->execute( @parameter );
}
# ...
Wenn man also zwischen mehreren INSERT-Statements noch Eingabedaten berechnen muss, kann dies Zeit sparen. Vor weiteren Queries oder dem Commit sollte man dann noch mit $dbh->pg_result() auf das Ergebnis des letzten asynchronen Queries warten.
Mehr Beispiele und die Darstellung aller Features gibt es in der DBD::Pg Dokumentation.
Published by Alvar Freude
on 2010-08-12T21:23:23
Der Deutsche Perl-Workshop vom 07.-09. Juni 2010 ist die jährliche Konferenz meist deutschsprachiger Anwender und Entwickler der Programmiersprache Perl. Veranstaltungsort ist wieder die Barbara-Künkelin-Halle in Schorndorf. Der Schwerpunkt des von der Deutscher Perl-Workshop GbR und der Wirtschaftsförderung Region Stuttgart GmbH veranstalteten Workshops ist „Modern Perl“. Dabei spielen zum Beispiel die Module Catalyst, Moose und DBIx::Class [...]
Published by Tina Koch
on 2010-06-04T06:34:02
Seit einigen Wochen gibt es auf perl.org auch eine Blog-Plattform für
Perl-Entwickler: blogs.perl.org wird von Dave Cross
and Aaron Crane betrieben und arbeitet auf Basis von Movable Type, einer
ausgereiften, in Perl geschriebenen Weblog-Software.
Weiterlesen
Published by jochen
on 2010-03-16T08:18:09
Im April startet Freistil-Consulting einen neuen Perl-Meisterkurs. Das 10-wöchige Online-Seminar wendet sich insbesondere an Einsteiger in die Programmiersprache.
Im Perl-Meisterkurs lernen Sie jeden wichtigen Aspekt der Perl-Programmierung kennen, begleitet von einem erfahren Perl-Entwickler und -Trainer. Die Lerninhalte sind umfangreich, aber in handhabbare Abschnitte aufgeteilt.
Weiterlesen
Published by webmaster
on 2010-03-02T15:33:36
Vom 7. bis 9. Juni 2010 findet der 12. Deutsche Perl-Workshop in Schorndorf bei Stuttgart statt. Zielgruppe des Workshops sind alle Perl-Anwender und die, die es werden wollen.
Der Workshop steht und fällt mit den Vorträgen, die 5, 20 oder 40 Minuten lang sein können.
Alle Themen, die mit Perl oder dem Perl-Umfeld, insbesondere dem Thema „Modern Perl“, zu tun haben, können als Vorträge für den Workshop interessant sein. Die Einreichungsfrist für Vorschläge wurde auf Freitag, den 05. März 2010 verlängert.
http://conferences.yapceurope.org/gpw2010
Der Deutsche Perl-Workshop ist die jährliche Konferenz meist deutschsprachiger Anwender und Entwickler der dynamischen Open-Source-Programmiersprache Perl. Der Schwerpunkt des von der Deutscher Perl-Workshop GbR und der Wirtschaftsförderung Region Stuttgart (WRS) verstaltelten Workshops ist „Modern Perl“. Dabei spielen zum Beispiel die Module Catalyst, Moose und DBIx::Class eine wichtige Rolle. Catalyst als sehr flexibles Webframework, Moose mit einer postmodernen Objektorientierung für Perl und DBIx::Class als Schicht zwischen Anwendung und Datenbanken.
Published by Alvar Freude
on 2010-02-17T20:42:23
In diesem Beitrag unserer kleinen Perl-Reihe zeigt Renée Bäcker, wie Spielen noch mehr Spaß machen kann: Wenn man es nämlich automatisiert und so nebenbei noch die Automatisierungsmöglichkeiten von Perl erproben kann. Dann mal auf die Plätze, fertig, los: Nein, heute geht es nicht darum, Spiele mit Perl zu programmieren – darum kümmern sich andere. Ich [...]
Published by Ariane Hesse
on 2009-12-10T12:29:52
So wie schon das Akismet-Plugin hat auch das Twitter-Plugin HashTag für Movable Type ein Proxy-Problem und ignoriert die MT-Systemeinstellung für Proxies. Auf diesem hier Server hat das Jail (das ist quasi eine virtuelle Maschine) aus Sicherheitsgründen nicht wirklich Internet-Zugriff, daher kommen auch keine Tweets nach draußen.
Also muss mal wieder ein Patch her, dann klappts auch mit dem Proxy; der Patch muss auf plugins/HashTag/lib/HashTag/Plugin.pm angewendet werden und passt zur aktuellen Beta-Version 2.5:
--- original_Plugin.nopm.pm 2009-07-17 23:45:12.000000000 +0200
+++ Plugin.pm 2009-11-27 19:38:58.000000000 +0100
@@ -137,6 +137,10 @@
require LWP::UserAgent;
my $ua = LWP::UserAgent->new;
+ # set HTTP Proxy when set in config file (AF)
+ if (my $proxy = MT::ConfigMgr->instance->HTTPProxy) {
+ $ua->proxy('http', $proxy);
+ }
$ua->credentials('twitter.com:80','Twitter API',$cfg->{tw_username} => $cfg->{tw_password},);
Mit dem Patch ließt das Plugin aus der passenden Konfigurations-Direktive HTTPProxyin mt-config.cgi die Angaben für den Proxy und setzt diese.
Published by Alvar Freude
on 2009-11-27T18:44:56
Vor kurzem wurde Perl.org, die Anlaufstelle für Perl-Entwickler aller Welt, einem Relaunch unterzogen und erstrahlt seither in einem neuen, modernen Layout.
Natürlich zählt der Inhalt mehr, aber für den Nutzungskomfort und die Außenwirkung des Portals ist das neue Layout auf jeden Fall ein wichtiger Schritt nach vorn.
Published by jochen
on 2009-11-15T16:38:28
Die Version 10.1 von Perl 5 ist da!
Eine Weile hat es gedauert, aber nun ist Perl 5.10.1 da, wie Renée berichtet.
Sehr interessant scheint mir die dtrace Unterstützung, da gibt es sicherlich einiges zu experimentieren. Einige Änderungen am Smart-Match sind nicht rückwärtskompatibel, ungewöhnlich für eine kleine Versionsänderung. Außerdem gibt es einige Performance-Optimierungen, Bugfixes sowie die üblichen Aktualisierungen der mitgelieferten Module. Siehe auch: alle Änderungen.
Ach, und wenn ich schon dabei bin: Perl 6 kommt im nächsten Frühjahr. Perl 6 ist nicht der Nachfolger von Perl 5.10 (das wird Perl 5.12), sondern eine neue Sprache, erscheint im Frühjahr 2010.
Published by Alvar Freude
on 2009-08-23T17:03:06
Am 5. Oktober 2009 startet Freistil-Consulting einen weiteren Perl-Meisterkurs. Das 10-wöchige Online-Seminar wendet sich insbesondere an Einsteiger in die Programmiersprache.
Im Perl-Meisterkurs lernen Sie jeden wichtigen Aspekt der Perl-Programmierung kennen, begleitet von einem erfahren Perl-Entwickler und -Trainer. Die Lerninhalte sind umfangreich, aber in handhabbare Abschnitte aufgeteilt.
Weiterlesen
Published by webmaster
on 2009-07-26T18:04:59
...oder hieß das Laienfilter? Hab jetzt keine Zeit, nachzuschauen. Hier einfach der Link zu der neuen Software, die das Internet sauberer macht. Sie ist nämlich in Perl geschrieben!
Published by webmaster
on 2009-04-26T20:30:08
Mit use utf8; lässt sich im Perl-Code einschalten, dass alle im Source definierten Strings usw. als UTF-8 interpretiert werden. Dazu muss der Source natürlich auch in UTF-8 sein.
Mit Eclipse bzw. dem EPIC Perl-Plugin und dessen Syntax-Check gibt es da aber zumindest unter OS X und Windows ein Problem, es wird zum Beispiel die folgende Fehlermeldung angezeigt:
Malformed UTF-8 character (unexpected non-continuation byte 0x7a,
immediately after start byte 0xc4) at 210.text-converter.t line 23.
Das liegt daran, dass Eclipse auch korrekt als UTF-8 gespeicherten Source im Standard-Encoding an Perl zum Syntaxcheck weiterreicht: das korrekte UTF-8 wird also in ein anderes Encoding gewandelt. Und das ist unter OS X das MacRoman aus alten Zeiten vor OS X – und das ist natürlich kein valides UTF-8!
Abhilfe
Korrekterweise sollte das Perl-Plugin die Datei natürlich im für die Datei eingestellten Zeichensatz weiterreichen. Also einfach gar nicht konvertieren. Bis das passiert kann man sich aber auch anders behelfen:
Man füge die folgende Zeile in der eclipse.ini ein:
-Dfile.encoding=UTF-8
Die eclipse.ini findet man unter OS X unter Eclipse.app/Contents/MacOS bzw. im Application Bundle von Eclipse (im Finder Rechtsklick, „Paketinhalt zeigen“) im gleichnamigen Ordner via Terminal.
Unter Windows ist die Datei vermutlich an einem vergleichbaren Ort.
Alternativ kann man Eclipse den Parameter beim Start via Kommandozeile auch manuell mitgeben.
Als Nebenwirkung werden nun zum Syntaxcheck auch Dateien, die in Latin-1 codiert sind, für den Syntaxcheck nach UTF-8 gewandelt.
Published by Alvar Freude
on 2009-03-23T12:02:47