Visit Linkwerk.com
Mar 4 2010

Cebit 2010: Qualität in der Softwareentwicklung

Auf großes Interesse ist der Linkwerk-Vortrag über Open-Source-Tools zur Qualitätssteigerung in der Software-Entwicklung gestoßen. Seit Anfang 2009 bauen wir unsere Maßnahmen zur Qualitätsverbesserung strukturiert durch Open-Source-Tools aus. Getreu unserem Motto, Know-how aus Erfahrung, bildet der Einsatz der genannten Tools in unseren Kundenprojekten die Basis für den heute auf der Cebit 2010 gehaltenen Vortrag.

Foto vom Cebit-Vortrag 2010. Quelle: http://twitpic.com/16jcvg

Foto vom Cebit-Vortrag 2010. Quelle: http://twitpic.com/16jcvg

Continue reading


Feb 11 2010

Das maven-release-plugin und Assemblies

Oft sind es die kleinen Dinge im Leben. Da hat man ein Problem, man frisst sich durch seitenweise Foren, Dokumentation, ist kurz vorm Verzweifeln, und schlussendlich lag die Lösung die ganze Zeit direkt vor einem. Aber von vorne … Continue reading


Sep 17 2009

Tests, HSQL und Apache DBCP

Wenn Software-Projekte auf Datenbanken angewiesen sind, wird das Testen oft unangenehm. Sollen Tests auf eine externe Datenbak angewiesen sein, und soll deren Adresse im Test-Code verankert liegen ? Elegant ist das nicht, und mit Embedded- und In-Memory-Datenbanken bietet sich eine gute Alternative. Continue reading


Sep 16 2009

Lazy umount

Bei unseren Versuchen mit der neuen USV (siehe Artikel von gestern) hat sich ein Rechner A hartnäckig geweigert, herunterzufahren. Als Ursache vermute ich die Reihenfolge, in der die USV die Rechner A und B abgeschaltet hat. Dummerweise ist B, der NFS-Server für A, zuerst ‘runtergefahren. Möglicherweise war ein dadurch hängender NFS-Filehandle o.ä. auf A dafür verantwortlich, dass A nicht auch abschaltete.

Heute kam mir die Idee, auf allen im Notfall herunterzufahrenden Rechnern, die NFS-Platten auszuhängen. Wie stellt man das an, wenn das Device “busy” ist? — Die Manpage brachte die Lösung: Es gibt eine Option, die ich noch nicht kannte. Sie nennt sich lazy umount und die Manpage verrät folgendes darüber:

 -l     Lazy  unmount.  Detach  the filesystem
        from the filesystem hierarchy now,
        and cleanup all references to the
        filesystem as soon as it is not busy
        anymore.  (Requires kernel 2.4.11 or
        later.)

Eine Blick ins Netz zeigt, dass die Option von einigen Benutzern mit guten Erfahrungen eingesetzt wird. Also versuchen wir es auch mal in unseren Notfall-Shutdown-Skripten.


Sep 15 2009

Digitus USV: Günstig, mit verbesserungsfähiger Software

Zur Absicherung einiger Rechner haben wir eine Digitus-USV angeschafft. Der Kostenvorteil gegenüber namhaften Geräten war so hoch, dass es keinen Grund gab, es nicht mit dem unbekannten Namen zu probieren.

Continue reading


Sep 10 2009

CUPS und Firefox? Besser Lynx!

Nach dem Umstieg auf eine neuere CUPS-Version stellten sich Probleme ein. Die Steuerung über die Web-Oberfläche von CUPS hängt an einigen Stellen. Die Ursache habe ich zunächst bei CUPS gesucht — doch weit gefehlt.

Continue reading


Sep 9 2009

RAID nach dem Booten nicht verfügbar (Ubuntu)

Wir haben kürzlich einen unserer Ubuntu-Server von 6.06 LTS auf 8.04 LTS umgestellt. Mit der Anleitung auf ubuntu.com und dem Tool do-release-upgrade war der Umstieg kein Problem. Einzig das vor dem Upgrade vorhandene RAID ging dabei verloren.

Continue reading


Sep 2 2009

xmllint und Kataloge

Ist es sinnvoll einen Artikel über ein Software-Feature zu schreiben, wenn die gesamte Aussage des zu schreibenden Artikels in der Software-Dokumentation bereits enthalten ist? Falls Du grundsätzlich “Nein” sagst, kannst Du hier aufhören zu lesen und einfach einen Blick in die Doku von xmllint werfen.

Wenn andererseits immer wieder die gleiche Frage an mich herangetragen wird und ich sie mir gelegentlich selbst stelle (sic!), ist es zumindest für mich sinnvoll den Artikel zu schreiben; in Zukunft kann ich immer wieder darauf verweisen oder nachlesen. Also, hier geht’s los. Es geht um Verwendung von XML-Katalogen mit xmllint.

Continue reading


Sep 1 2009

Mylyn, Trac und die Authentifizierung …

Jüngst haben wir unser internes Trac-System inklusive aller genutzten Plugins erneuert. Inbesondere soll hier das XML-RPC-Plugin erwähnt werden. Nach Installation des neuen Tracs (Version 0.11.5 und Version 1.0.6 des Plugins) und der Migrierung aller Daten unseren alten Instanz, war als nächstes das Umstellen der Arbeitsplätze auf die neue Instanz an der Reihe.

Da wir viel mit Eclipse entwickeln liegt es nahe Mylyn einzusetzen, um mit unserem Trac zu interagieren. Doch beim Umstellen auf die neue Instanz und Validieren der Benutzerdaten antwortete Eclipse mit der folgenden Meldung

No Trac repository found at url: Required API calls are missing, please update your Trac XML-RPC Plugin to revision 1950 or later.

Abgesehen von neuen Versionen der Software und der Plugins kommt in der neuen Instanz die selbe Konfiguration zum Einsatz. Und nicht zuletzt entspricht die neue Version des XML-RPC-Plugins einer SVN-Revision jenseits der 6000, also definitv “1950 or later”.

Eine Suche nach der Fehlermeldung bringt einen auch erstmal nicht grossartig weiter. Nach längerer Suche war der Fehler aber dann doch gefunden. Eines der installierten Plugins ist der AccountManager, der es erlaubt Trac von HTTP Authentication auf Form-based Authentication umzustellen. Damit er sich mit dem Standard-Modul von Trac nicht in die Quere kommt, muss man dieses in der trac.ini mit dem Eintrag

[components]
trac.web.auth.LoginModule = disabled

deaktivieren. Der von Mylyn verwendete Trac Connector wiederum versucht aber, sich mit HTTP Authentication einzuloggen, die aber durch Form-based Authentication des Account-Manager-Plugins ersetzt wurde. Lösung für das Problem ist das HttpAuthPlugin, das es erlaubt konfigurierbare Pfade mit HTTP Authentication bereit zu stellen. Die nötigen Einträge in der trac.ini sind

[components]
httpauth.* = enabled

[httpauth]
paths = /xmlrpc, /login/xmlrpc

Damit sind nach einem Neustart von Trac die für die XML-RPC-Kommunikation nötigen Pfade mittels HTTP Authentication zugänglich, und der Trac-Connector funktioniert wieder wunderbar.

Im Grunde eine Kleinigkeit, aber letztendlich einer dieser Kleinigkeiten, die einen dann doch einen ganzen Tag kosten können. In der Hoffnung anderen diesen Aufwand zu ersparen, ist das Ganze hier festgehalten.