Heilige Scheiße, Per6 ist offiziell draußen!
Quelle: The Night Larry Wall Unveiled Perl 6 | 10 Zen Monkeys
Heilige Scheiße, Per6 ist offiziell draußen!
Quelle: The Night Larry Wall Unveiled Perl 6 | 10 Zen Monkeys
Mojolicious - Perl real-time web framework. Du hattest ein Problem, du hast Perl genommen. Jetzt hast du zwei Probleme und einen Haufen scharfkantige Klammern, an denen du dich verletzen kannst. Spaß beiseite: nett zu sehen, dass Perl immer noch nicht nur aktiv, sondern auch modern aktiv ist im Web-Umfeld. Immerhin hat Perl ja mal den Standard in dem Bereich gesetzt.
Mojolicious - Perl real-time web framework. Schaut ganz interessant aus, einfach weil es einen recht schlanken Eindruck macht und nicht zu viele Perl-Perversitäten voraussetzt. Klar, kann man auch mit Ruby oder Python haben, Microframeworks sind jetzt nicht so wahnsinnig spannend, aber soll ja noch Leute geben die mit Perl arbeiten.
PerlDancer - The easiest way to write web applications with Perl. Zur Ergänzung meiner Sammlung von Sinatra-angelehnten Microframeworks für Webanwendungen hier noch eines in Perl. Nicht das ich jetzt unbedingt Perl wieder einsetzen wollen würde - ist eher wegen der Vollständigkeit hier aufgeführt.
Lingua::Romana::Perligata -- Perl for the XXIimum Century - Perl. In Latein.
Mail::RFC822::Address - "Die in RFC 822 beschriebene Grammatik ist überraschend komplex. Die Implementierung der Validierung mit regulären Ausdrücken stößt etwas an die Grenzen dessen, was mit regulären Ausdrücken sinnvoll zu tun ist, obwohl Perl damit gut zurechtkommt"
Acme::Don't - Perl-Leute sind seltsam!
Redhat perl. What a tragedy. - wer Redhat benutzt: Perl selber compilieren. Redhat hat da wohl ein ganz dickes Problem.
Sleep - Java Scripting Language - falls jemand wirklich Perl in der Java-Welt vermissen würde, könnte er sich dieses Projekt angucken. Rein aus nostalgischen Gründne verlinkt, weil ich mal ein paar Jahre auf Perl gesetzt habe.
Perlbal - balancing proxy server mit Fokus auf Performance. In Perl. Tonnen an Features, die es erleichtern, ein einzelnes Frontend nach draußen aus vielen Backendsystemen zusammenzusetzen.
Stopping spam with the Anti-Spam-SMTP-Proxy (ASSP) - hmm. Transparenter SMTP Proxy. Leider in Perl - meine Erfahrungen in der Richtung waren eher negativ bisher.
Ancient Languages: Perl - schon älter, aber einfach klasse. Eine bitterböse Abrechnung mit Larry Wall und Perl.
wikiCalc - eine Mixtur aus Tabellenkalkulation und Wiki. Strange. Von Mr. Visicalc himself. Trotz Perl derzeit nur Windows-tauglich. Nunja, Spreadsheets passen für mich zu Perl und Windows - alles schmuddeliger Kram
Komischer Titel, oder? Naja, mir ist einfach nur was aufgefallen bei der Beschäftigung mit Webframeworks und anderen Anwendungen, speziell im Ruby und Pyhton Umfeld. Und zwar die Art und Weise wie Minidaten gespeichert werden und wie zum Beispiel Konfigurationsdaten gehalten werden.
Im Java-Umfeld gibts da eine Inflation von XML-Mini-Languages - Berge von toten Daten. Tot deshalb, weil diese Daten eben nur im XML-Format leben und nur über XML-Werkzeuge bearbeitet und verändert werden können - habe ich zum Beispiel sich ständig wiederholende oder algorithmisch beschreibbare Konfigurationsblöcke (z.B. einen Berg von sich ziemlich ähnlich sehenden URL-Mustern für ein Webframework), kann ich diese nur über XML-Werkzeuge generieren - z.B. mittels XSLT aus einfacheren Formaten generieren. Oder ich schreib mir kleine Tools dafür.
In Ruby sieht die Situation ähnlich aus - nur das da statt XML dann eben YAML genommen wird. Letztendlich ist das aber auch nicht besser - die Konfiguration ist immer noch ein totes File.
Aber sowohl im Python-Umfeld als auch bei diversen anderen dynamischen Sprachen gibt es eine gute Alternative dazu: nimm einfach ein Modul in deiner Programmiersprache. Denn zum Beispiel Pythonmodule leben - ist die Struktur komplexer, aber teilweise repetitiv - einfach eine kleine Python-Funktion schreiben die bei der dynamischen Erstellung der Config hilft. Soll die Config teilweise aus Datenbankinhalten kommen - einfach eine Python-Funktion schreiben die diese Daten zur Laufzeit aus der DB liest und in die Config einmischt. Lebende Konfigurationdaten eben.
Natürlich kommen so Sicherheitsprobleme mit ins Spiel - wir wollen ja nicht den PHP-Fehler mit dem ewigen eval wiederholen. Was dazu also dringend notwendig wäre, wäre eine saubere Sandbox für solche Module. Leider ist genau da in Python ein massives Loch in der Implementierung. Es gab früher mal die Bytecodehacks, die auch wiederbelebt wurden - aber das sind eben nur Hacks. Auch die Methode mittels eingeschränkter Imports und Proxy-Objekten eine Scheinsandbox aufzubauen wie es Zope macht ist nicht der Weisheit letzter Schluss.
Perl bietet hier - wie bei allen Sicherheitsfeatures in Perl üblich wird das natürlich von fast keinem Projekt verwendet - eine sehr saubere Methode über die safe execution. Man kann bis ins kleinste hinein reglementieren was der Code in einer solchen Sandbox darf - und damit ist eine Konfiguration über Perl-Modul definitiv besser abzusichern als in Sprachen ohne so ein Konzept.
Java selber hat natürlich ein ziemlich ausgefeiltes Sicherheitsmanagement - zwangsweise, es soll ja auch in Browsern mit sehr stark beschränkten Rechten laufen. Dieses Security-Modell ist auch für Anwendungen nutzbar und könnte zum Beispiel für Servlets oder eben auch Java-Configs zum Einsatz kommen - vor allem da man mit Java ja auch problemlos Files zur Laufzeit übersetzen und dynamisch laden kann. Erklär mir jetzt mal einer warum die Java-Leute so fixiert auf XML sind, wo sie doch die besten Grundlagen für sichere lebende Daten haben ...
Das Safe-Modell von PHP ignorieren wir hier mal geflissentlich, denn das ist ein Sekt-oder-Selters-Modell - entweder läuft jeder Code unter safemode, oder garkeiner. Was wir bräuchten wäre aber eine selektive Aktivierung unterschiedlicher Sicherheitsklassen für einen einzelnen Codeblock oder Modulimport (ok, Modulimporte hat PHP auch nicht, nur Includes - ich sag ja, wir ignorieren es einfach mal).
Bisher kann man also bei Python nur dann mit lebenden Konfigurationen arbeiten, wenn man sich sicher ist das die Konfigurationen nur von Usern ohne böse Absichten bearbeitet werden. Django zum Beispiel benutzt nur lebende Konfigurationen - es wäre daher eine ziemlich dumme Idee, würde man z.B. die Konfigurationdateien bei zentral gehosteten Anwendungen über das Web editierbar machen.
Wir brauchen dringend eine saubere Sandbox für Python. Ich glaube sogar das wäre ein wichtigeres Teilprojekt als die diversen syntaktischen Erweiterungen die immer wieder angegangen werden.
Crypt::PasswdMD5 ist ein Perl-Modul das MD5 Passwörter so hashed wie es Linux und Solaris auch tun.
Higher-Order Perl ist ein Buch (zur Zeit Papier, aber soll demnächst frei im Netz lesbar sein) das sich mit higher order functions und Perl beschäftigt - könnte ganz interessant sein, Perl bietet da eine ganze Menge Features versteckt unter all den geschweiften Klammern und anderen Sonderzeichen ...
PerlPad ist ein Service für Mac OS X der es ermöglicht in jeden Cocoa-Textfenster Perlcode auszuführen und den Output zu sammeln, oder selektierten Text durch ein Perl-Script zu schicken.
Hurring.com : Code Vault : Python : PHP-Python Serialize : v0.3b ist eine Implementation des PHP serialize() Zeugs in Python. Sehr praktisch für WordPress: in den Optionen werden oft serialisierte Strukturen gespeichert die man so wieder auflösen kann - man kann so z.B. Tools schreiben, die direkt auf der Datenbank aufsetzen, aber in Python geschrieben sind. Der Autor hat das gleiche auch noch mal für Perl gemacht - man kann also zwischen Python, Perl und PHP einfache Datenstrukturen hin und her schieben.
Pugs - pugscode ist eine Perl6 Implementierung in Haskell. Noch verrückter: das ganze Projekt wird primär in einem IRC-Chat koordiniert und die gemeinsame Arbeit wird mit SubEthaEdit gemacht. Ist das schon Nirvana?
Und wer kein Lisp mag oder kann, vielleicht hilft ja SAJAX - Simple Ajax Toolkit by ModernMethod - XMLHTTPRequest Toolkit for PHP das nicht nur PHP sondern auch noch Io, Lua, Perl, Python und Ruby unterstützt.
Der freshmeat.net: Aranha server monitor klingt exakt wie das was ich unter Servermonitoring programmiert habe. Ich benutze allerdings nicht XML-RPC, sondern SOAP. Und ich hab das ganze nicht mit einer XUL Oberfläche, sondern mit einer Weboberfläche versehen. Und ich benutze kein Perl, sondern Python. Strange.

Meins läuft übrigens schon seit Ewigkeiten in der Firma und versieht dort brav seinen Dienst bei der Überwachung unseres Serverzoos.
pirate (python on parrot) - Ansätze eines Python Compilers für Parrot
Stopping spam with the Anti-Spam-SMTP-Proxy (ASSP) - SMTP Proxy mit Bayesian Filtering, der hier ist ohne Teergrube
Maypole / Apache::MVC - Perl Framework zur Erstellung von Webapplikationen
Daring Fireball: Markdown Syntax Documentation - Interessante Textumsetzung nach XHTML für PHP und Perl - ähnlich zu reStructured Text
Index of /~erich/bricolage - Debian Pakete für Bricolage
The Mason Book - Bricolage Anleitung
WAD - Crash Debugger für Script Sprachen (besonders bei segfault nützlich)
Nyetwork Wiki: MiniWiki - Einfaches Wiki als mod_perl Modul für Apache
Perl Monks - The Monastery Gates - Tipps und Tricks rund um Perlprogrammierung