Java, Maven, JBoss AS, Windows – eine unheilvolle Kombination

So … wie vielleicht schon aus einigen meiner letzten Beiträge erkennbar geworden ist, bin ich eigentlich kein großer Fan des Betriebssystems “Windows”. Während es für viele Nutzer vielleicht eine gute Wahl sein mag, ist es für Softwareentwickler (die nicht unbedingt Windows-Anwendungen entwickeln) schon nicht mehr optimal. Aber was gar nicht geht: Windows als Server.

Mit genau einem solchen Server hatte ich nämlich heute einige Stunden lang Spaß. Man nehme ein Maven-Projekt, in dem es einen Sourcepfad /src/main/java/de/test/meinProjekt/ gibt. Darunter hat man Klassen, alles ist gut, alles funktioniert.

Jetzt nehme man an, es werden Dateien in das Package/Verzeichnis /src/main/resources/java/de/test/meinprojekt/ gepackt. Sieht nach harmlos aus, ist aber katastrophal! Wer findet den Fehler?

Genau: das große “P” im ersten Pfad funktioniert gut, solange man keinen gleichlautenden Pfad mit anderer Groß-/Kleinschreibung im Parallelverzeichnis hat. Durch diese kleine Unaufmerksamkeit ist die gesamte Applikation beim Starten im JBoss nämlich mit einer total zusammenhangslosen Fehlermeldung gar nicht erst gestartet. Es scheint, als beachte der Classloader des JBoss’ das Casing der Pfade/Packages, was ja auch richtig ist. Im entstandenen Archiv, welches von Maven unter Windows zusammengebaut wurde, stehen die Sachen aber alle im gleichen Ordner mit kleinem “p”. Deswegen werden sie vom Classloader nicht gefunden.

Fiese Sache!

Zu meiner Verteidigung: der Package-Namen mit dem großen P stammte nicht von mir. Ich würde sowas doch niemals tun … *hüst*

Fortschritt, der sich selber überholt

Ich mag mein Fedora-System. Linux im Allgemeinen sowieso. Aber beim Lesen dieses Blogeintrags, auf den ich über Planet Fedora gestoßen bin, ist mir eines mal wieder bewusst geworden und unangenehm aufgefallen:

So sehr ich dafür bin, dass ständig neue Programme entwickelt werden, so unpraktisch ist es, dass es ständig neue Programme gibt. In obigem Blogeintrag werden die Programme Shotwell und Gnote erwähnt. Shotwell ist ein Foto-Managementprogramm und tritt die “Nachfolge” von F-Spot an, da es das standardmäßig installierte Programm zur Fotoverwaltung in Fedora 13 sein wird. Gleiches gilt für Gnote, das Tomboy als Programm für Notizen ersetzt.

Auch wenn ich den Vorteil der neuen Programme sehe, so ist der Aufwand, der durch die ständige Neuorganisation aufgrund der neuen Programme entsteht doch erheblich. Ich beneide ein wenig die Leute, die seit Jahren Programme wie iTunes für ihre Musik einsetzen oder Picasa für ihre Fotos. Sie haben wenigstens nicht das Problem, dass aufwändig und in stundenlanger Kleinarbeit erstellte Bibliotheken mit dem nächsten Release neu erstellt werden müssen. Gerade bei den Sachen, die sich über einen langen Zeitraum ansammeln, also hauptsächlich Fotos und Musik ist dieser ständige Wechsel einfach nervig!

Daher, liebe Softwareentwickler: Bitte stellt sicher, dass wenn schon ein Wechsel der Programme forciert wird, wenigstens alle Daten sauber übernommen werden können!

Nokia E-Serie – Schein oder Sein?

Ich habe mir zum Vergleich ein Nokia E71 und ein Nokia E75 geholt.
Das E75 kam zuerst an – Tastaturbeleuchtung defekt, direkt wieder eingeschickt. Der große Gewinner hierbei: DHL. Ansonsten fühlte es sich aber ganz gut an, zumindest soweit ich das in 10 Minuten beurteilen konnte.

Dann bekam ich mein E71. Weil es ja schon was älter ist, habe ich es erstmal an den Nokia Software Updater angeschlossen. Eine neue Firmware war tatsächlich verfügbar, also runtergeladen, installiert. Daten gehen dabei verloren, macht aber ja nix, ist ja noch nichts drauf. (Wieso braucht man für ein Firmware-Update eigentlich eine SIM-Karte?) Update wird laut Anzeige erfolgreich abgeschlossen, das Telefon startet neu – und verlangt die Eingabe des Sperrcodes. Hm, Handbuch angeschaut – 12345. “Fehlerhafter Code”. WTF? Nochmal – wieder falsch. Google angeschmissen – ich bin nicht allein: http://discussions.europe.nokia.com/discussions/board/message?board.id=swupdate&thread.id=48243

[UPDATE]

Der korrekte Sperrcode lautet 0000

Die Eingabe ist nur nicht ganz so einfach, da nach Eingabe der vierten Null im Display nur noch 000 angezeigt wird, denn das scheint in einigen Ländern eine Notrufnummer zu sein. Zur Lösung muss man einmal die Löschen-Taste drücken, dann kann man die vierte Null normal eingeben, das wird dann vom Handy akzeptiert.

Trotz gefundener Lösung ein inakzeptables Verhalten!

[UPDATE ENDE]

Bilanz: Zweimal Nokia E-Serie, zweimal keine 30 Minuten Funktionalität genießen können. Mein Sony Ericsson K800i läuft übrigens seit über drei Jahren problemlos …

Fedora 11 ist da!

Endlich, nach nur einigen kleinen Verzögerungen, ist es endlich erschienen: Fedora 11, genannt “Leonidas”!

Was alles neu ist, das lässt sich den Release Notes entnehmen. Technischere Details zu einigen der Neuigkeiten kann man auch auf der “Feature List”-Seite im Wiki nachlesen.

Wem jetzt schon das Wasser im Munde zusammenläuft, oder wer Fedora oder Linux allgemein einfach mal ausprobieren möchte, der sollte nicht zögern, sich dieses Meisterstück herunterzuladen, am Besten per BitTorrent (ja, das ist auch in Deutschland legal …): http://torrent.fedoraproject.org/

Damit tut ihr gleichzeitig auch was gutes und helft, Fedora zu verteilen, ohne dass die Download-Server überlastet werden.

Viel Spaß!

Und ich kümmer mich mal weiter um meine Diplomarbeit …

Der kleine Unterschied

Man beachte den kleinen Unterschied zwischen PHP und Python, der mich einige Zeit erstmal gekostet hat:

PHP:

<?php
class T {
    var $x = array();
}
$a = new T();
array_push($a->x, 1);
echo count($a-&gt;x); // <strong>Ausgabe: 1</strong>
$b = new T();
array_push($b-&gt;x, 2);
echo count($b-&gt;x); // <strong>Ausgabe: 1</strong>

Dagegen ein nahezu äquivalentes Konstrukt in Python:

class T:
&nbsp;&nbsp;&nbsp;&nbsp;x = []
a = T()
a.x.append(1)
print len(a.x) # <strong>Ausgabe: 1</strong>
b = T()
b.x.append(2)
print len(b.x) # <strong>Ausgabe: 2</strong>

Die Erklärung findet sich übrigens hier:

Objects have individuality, and multiple names (in multiple scopes) can be bound to the same object. This is known as aliasing in other languages. This is usually not appreciated on a first glance at Python, and can be safely ignored when dealing with immutable basic types (numbers, strings, tuples). However, aliasing has an (intended!) effect on the semantics of Python code involving mutable objects such as lists, dictionaries, and most types representing entities outside the program (files, windows, etc.).