Levenshtein mit DBIx::Class

Da ich mittlerweile verstärkt mit Catalyst als Framework arbeite und hier als Model-Integration typischerweise DBIx::Class verwendet wird, komme ich nicht umhin, mich weitergehend mit der entsprechenden Syntax auseinanderzusetzen. Dabei mache ich fast jeden Tag die gleiche Erfahrung: DBIx::Class macht die einfachen Anwendungsfälle von SQL noch einfacher, aber die schwierigeren Anwendungsfälle noch viel schwieriger, denn die Klimmzüge, die hier bisweilen in der kruden SQL::Abstract-Syntax zu vollziehen sind, haben es wirklich in sich.

Als Beispiel erstmal der einfache Fall:

my $contact = 

Perl-Modul zur Nutzung der API von InternetX

Soeben habe ich die erste Version des Perl-Moduls „InternetX“ hochgeladen, mit dem sich die API (Handle-Verwaltung, Domainregistrierung, etc.) über eine „perlige“ Schnittstelle steuern lässt, sowohl als .tar.gz als auch als .src.rpm.

Problematisch war zunächst, dass die InternetX-API bei Domainaufträgen nur eine Rückmeldung im Sinne von „Auftrag angenommen“ liefert und die endgültige Rückmeldung erst im Nachhinein per E-Mail kommt. Wir haben uns daher überlegt, dass es doch ganz praktisch wäre, eine Art Eventliste zu realisieren, um diese periodisch nach zu …

IDNA::Punycode und die Abwärtskompatibilität

Für selfHOST haben wir vor längerer Zeit Teile des Backends entwickelt, darunter den Export von Zonen aus der Datenbank ins DNS-System. Besondere Beachtung erhielten hierbei Umlautdomains: In der Datenbank werden diese „ganz normal“, also mit Umlauten, abgespeichert; beim Export in die DNS-Daten kommt das Perl-Modul IDNA::Punycode zum Einsatz.

Das Modul stellt eine Funktion „encode_punycode“ bereit, die den Punycode-String eines Strings mit UTF8-Werten zurückliefert. Davor musste dann noch der Präfix „xn--„. Eine entsprechende Zeile Programmcode sah nun so also etwa so …

Versionshölle: HTML::Mason über RPMforge

Wir setzen zur Handhabung des Supports gerne den Request Tracker ein. Der benötigt in der neuesten Version HTML::Mason >= 1.36. Da wir auf den fraglichen Systemen üblicherweise die yum-Repositories von RPMforge eingebunden haben, nutzen wir „yum install perl-HTML-Mason“, was uns aber nur Version 1.32 verschaffte. Da die zu alt ist, haben wir kurzerhand die aktuellste Version 1.40 mittels cpan2rpm von Hand installiert. Die böse Überraschung erfolgte nach einem späteren „yum upgrade“: Aus dem RPMforge-Repository wurde die 1.32 drübergebügelt, und der …

DBI::selectall_arrayref kann auch Hashes

Oftmals stand ich vor dem Problem, eine Reihe von Datensätzen mittels DBI „auf einmal“ abzufragen und das Ergebnis praktikabel vorliegen zu haben. „Praktikabel“ heißt für mich, jeder Datensatz als Hashref. Nun benötige ich aber oftmals keine speziellen Index pro Datensatz, wie ihn selectall_hashref aber verlangt. Manchmal gibt es auch schlicht keinen passablen Index. Dafür möchte ich die Ergebnisse vielleicht sortiert beziehen. Bisher habe ich mir mit einer Krücke beholfen, die aus dem Hashref, dessen Values die gewünschten Hashrefs der einzelnen …

Viel Spaß mit Date::Calc::Delta_YMD()

Für Berechnungen mit Datumsangaben setze ich üblicherweise auf Date::Calc. Es bekommt zwei Array aus je drei Werten (Jahr, Monat, Tag) als Parameter und liefert die Differenz ebenfalls als Array. Nun würde ich damit gerne berechnen, wie alt jemand ist. Da jemand, der 29 Jahre, 4 Monate und 15 Tage alt ist, effektiv nun mal einfach 29 ist, empfehlen entsprechenderweise auch etliche Foreneinträge, für die Berechnung des Alters doch einfach Delta_YMD zu benutzen und nur die Angabe der Jahre zu verwenden. …