Archiv für Juni 2009

Scala: Mit X wird’s IO

Sonntag, 28. Juni 2009

Nach dem ersten Blick auf die neue Hype-Sprache Scala fiel mir vor allem der unterdimensionierte IO-Funktionsumfang auf. Aufgrund der Kompatibilität zu Java kann man diesen Teil mit “nativem Code” implementieren. Schöner wäre es allerdings diese Funktionen auch in einem “scala-ischen” Stil umsetzen zu können, da insbesondere die IO-Funktionen in Java teilweise sehr umständlich nutzbar sind.

Erste Hilfe verspricht da die Community-Bibliothek scalax. Zur Veranschaulichung ein kleines Shell-Script zum Darstellen eines Verzeichnis-Inhaltes:

#!/bin/sh
exec scala "$0" "$@"
!#

import java.io.File;
import scalax.io.FileExtras;

def fileExtras = new FileExtras(new File("./"));
def walk = fileExtras.tree.elements;

walk.foreach(arg => println(arg));

Der Vorteil einen Walk zu benutzen ist dass er u.a. die Methode foreach bereitstellt, der man eine Callbackfunktion übergibt, die für jedes Element angewendet wird. Im Beispiel ist das die triviale Funktion println.

Trac: So schnell legt man sich ein (Python-)Ei …

Sonntag, 21. Juni 2009

Nachdem ich mir vor einiger Zeit ein Upgrade von Ubuntu gegönnt hatte, habe ich mir Trac nicht weiter angeschaut – bis heute. Ahnungslos fing ich an Wiki-Seiten zu erstellen, mir zu überlegen wie ich die Tickets konfigurieren will, etc. Ich wägte mich auf der sicheren Seite bis ich anfing meine Notizen als Attachments hochladen zu wollen. Und plötzlich schallerte ein digitales “HAHA” durch das System, denn nach mehreren Versuchen tat sich nichts. Weder auf der Seite noch in der Log-Datei.

Ohne jetzt auf die darauf folgende Odyssee mittels Googles ach so effektivem Suchalgorithmus eingehen zu wollen, fand sich die Lösung dann nach dem Ausschalten aller Trac-User-Heulattacken, die sich so durch die Bug- und Mailing-Listen ziehen.

DAS Problem

Wie so oft liegt das Problem nicht an der Stelle, die man sieht, sondern dahinter – weit dahinter in diesem Fall. Nämlich bei Ubuntu selbst. Es ist ja lieb gemeint, dass man immer die aktuelle Python-Version über Synaptic einbaut, aber dann sollte man das auch bei allen anderen Packages versuchen, die man so anbietet. In diesem Fall Trac. Denn was ist passiert? Leider sind die Versionen Trac 0.11.1 (Ubuntu Repository) und Python 2.6 (ebenfalls Ubuntu Repository) nicht kompatibel, was wohl auch schon eine Weile bekannt ist und selbst in Ubuntu-Foren ausgiebig “angeheult” wurde.

DIE Lösung

Man deinstalliere Trac über Synaptic und führe folgende Zeile aus:

sudo easy_install http://svn.edgewall.org/repos/trac/tags/trac-0.11.4

Danach erhält man u.a. eine nette Nachricht:

Installed /usr/local/lib/python2.6/dist-packages/Trac-0.11.4-py2.6.egg

Mit dem Enthusiasmus des aufgekommenen, osterlichen Eier-Such-und-Finde-Gefühls den Apache neustarten, evtl. das Environment upgraden und Tada: Alles schick!