Gabi und Sascha
Kategorien : Alle | Berlin | Bücher | Fotografie | Java | Linkhalde | Weichware | Verfassung

Frage man Google ob die Erde eine Kugel oder nicht doch eher eine Scheibe ist, dann muss bei bei der Trefferzahl davon ausgehen, dass die Erde eine Scheibe ist.

Frage: "die erde ist eine scheibe"
Antwort: ungefähr 14.100 Treffer

Frage: "die erde ist eine scheibekugel"
Antwort: ungefähr 1.260 Treffer

Okay, sehr wissenschafftlich ist das nicht.... Bitte liebe Kreationisten, nehmt das nicht als wirklichen Beweis :-)

Im Javamagazin 01.2005 beschreibt der Artikel 'JMX: Überwachung von E-Business-Lösungen' die Erzeugung von JMX ModelMBeans mit Hilfe der Apache Jakarta Commons Modeler Component. Leider orientiert sich der Artikel an der inzwischen stark veralteten Version 1.0 dieser API. In den Beipielcodes werden Methoden und Vorgehensweisen beschrieben, die seit der Version 1.1 als deprecated markiert sind.

Auch ist der Beispielcode auf Seite 21 sehr schwer zu verstehen. Dort ist z.B. nicht klar welche Interfaces implementiert werden müssen (ModelMBean) oder von welchen Klassen man ableiten muss (RequiredModelMBean). Zum großen Verdruss ist auch kein ausführlicher Code auf der mitgelieferten CD vorhanden. Der beschrieben Beispielcode wirft eine ClassCastException, da die Methode ManagedBean.createMBean(Object) hart auf das Interface ModelMBean castet (sowohl Version 1.0 als auch 1.1 der Modeler API).

Durch dieses Beispiel wird leider dann auch der Sinn und Zweck der ModelMBean Spezifikation konterkariert. Diese sieht ja gerade vor, dass die zu managende Ressource nicht als MBean vorliegt, sondern ein POJO (Plain Old Java Object) sein kann, auf welches eine ModelMBean zugreifen kann.

Das Listing 4 des Artikels auf Seite 21 kann besser durch das folgende Codesnippet beschrieben werden:


    final Management mnt = new Management();

    final Thread t = Thread.currentThread();
    final ClassLoader loader = t.getContextClassLoader();

    // Commons Modeler ModelMBean Beschreibung aus Package anziehen.
    final InputStream in =
        loader.getResourceAsStream("de/speexx/playground/sascha/jmxtest/"
                                   + "mbean-descriptors.xml");

    try {
        // Eigentlicher Registrierungscode des Commons Modeles.
        final Registry registry = Registry.getRegistry(mnt, null);
        registry.loadMetadata(in);
        registry.registerComponent(
                mnt,
                "SpeexX:type=CommonsModelerTest,name=CountManagement",
                "objectReference"
        );
    } catch (final Exception e) {
        e.printStackTrace();
    }

Zu allem Überfluss fehlt in dem kompletten Artikel ebenfalls ein Hinweis auf das J2SE 5.0. In dieser Java Version ist die JMX Spezifikation als fester Betandteil enthalten und die Implementierung von Sun kommt mit der jconsole Applikation. Mittels dieser ist es erheblich einfacher das Beispiel nachzuvollziehen.

Hierfür habe ich eine einfaches Beispiel entwickelt, welches unter http://www.speexx.de/blog/files/2005/01/jmx-example-1.0.tar.gz herunter zu laden ist.

Nach dem build des Projektes mittels 'maven jar' kann die Beispielapplikation mit 'run.sh' gestartet werden. Die Ausgabe von 'waiting...' ist erst einmal wenig spektakulär. Spannend wird es, wenn auf einer zweiten Konsole im gleichen Verzeichnis 'run-jconsole.sh' ausgeführt wird. Das Managementprogramm verbindet sich mittles JMX mit dem zu managenden Programm. Dieses wird beim Start durch das Property '-Dcom.sun.management.jmxremote' als solches gekennzeichnet.

Über den Reiter MBeans wir ein im linken Teil ein Baum mit allen registrierten MBeans angezeigt. Hier erscheint auch das registrierte SpeexX ModelMBean.

jconsole mit SpeexX JMX Commons Modeler Example Attributen

Der count Wert ist nach dem Start 0. Nach dem auswählen des Operations Reiters im rechten Fensterteil und einem Klick auf 'incrementCount()' wird der Wert des Attributes um 1 erhöht.

jconsole mit SpeexX JMX Commons Modeler Example nach dem Klich auf die Operation 'incrementCount()'

Dies kann wiederum im über den Reiter Attributes und einem Refresh angezeigt werden:

jconsole mit SpeexX JMX Commons Modeler Example Attributewert nach 'refresh'

Das Beispiel arbeitet nur mit dem J2SE 1.5 oder höher.

10 Tage nach der Version 0.8.2 steht ab sofort die Version 0.9.0 bereit. Wichtigste Neuerung ist die Unterstützung von nested Annotationen bei gleichen Namespace und Localname. Weiter Änderungen finden sich in der Änderungshistorie.

Der 0.9er Zweig wird vermutlich der letzte Release vor der 1.0 sein.

...Angela Merkel vor der nächsten Bundestagswahl 2006 2005 vom Verfassungschutzpräsidenten zu einem Eiersalat eingeladen wird...

Hier die sensationelle Auflösung

Ja, es geht schlimmer!

Humankapital ist zwar das Unwort des Jahres geworden. Aber es gibt noch schlimmere Bezeichnungen für Menschen. Ressource ist so ein Wort. Es vermeidet im Gegangsatz zum Begriff Humankapital sogar jedweden Bezug zum Menschen und setzt Menschen dem Ding gleich. Ganz gleich ob es sich um ein Auto, einen Computer oder einen Meschen handelt, alles wird hier als Ressource bezeichnet.
Von Unternehmen und Unternehmern, die den Menschen so abqualifizieren kann man eigentlich auch nicht mehr erwarten als Verachtung für die eigenen Mitarbeiter. Sie sind austauschbar wie ein Leasingfahrzeug.

Links:
Liste der Unwörter der vergangenen Jahre
Unwort des Jahres Homepage

Gestern habe ich einen interessanten Weblogkommentar zu Thema Aspektorientierter Programmierung (AOP) gelesen, in dem er einige seiner Bedenken gegen dieses Thema formuliert.

Ich beschäftige mich jetzt schon seit mehr als 5 Jahren mit diesem Thema. Schon damals habe ich keinen Wirklich wichtigen Einsatz für die Technik gefunden und ich sehe ihn heute immer noch nicht. Vielleicht bringt AOP in einigen sehr eng abgesteckten Nischendomänen wirklich etwas. Das Gros der Entwicklung wird komplexer und für die Entwickler unübersichtlicher.
Zum einen müssen die Entwickler neue Schlüsselwörter kennen lernen. Sie müssen die neuen Sematiken begreifen und sie müssen verstehen, dass ihre Software Dinge tut, die sie eigentlich gar nicht tuen soll. Auch finde ich, dass viele der mit AOP addressierten Probleme mit konventionellen OO-Techniken erledigt werden können. Manchmal frage ich mich, ob das gute alte Dectorator-Pattern in Vergessenheit gerät ob des ganzen AOP Hypes.

Auch kann ich mich mit dem Pre- und Postcondition Tests nicht anfreunden. Hierfür eignet sich auch das assert Schlüsselwort in Java. Dieses ist zwar nicht so mächtig wie beispielsweise AspectJ, reicht allerdings für den Alltag vollkommen aus, wenn es denn überhaupt verwendet wird. Ansonsten sollten natürlich Tests prüfen, ob der Vertrag der Klasse eingehalten wird. Und dieser Vertrag muss natürlich der Methodensignatur und in den Javadoc beschrieben werden un sollte es nicht noch zusätzlich in einem Aspekt. Die Überprüfung des Vertrages sollte ebenfalls dirket in einer Methode erfolgen. Wenn der Code ausserhalb liegt, dann gibt es irgendwann wieder zu zerfasertte include Systeme wie in C. Nicht gerade ein Gewinn. Schliesslich schätze ich an Java auch, dass alles in einer Datei liegt und es eben keinen Präprozessor gibt.

Am allerschlimmsten finde ich allerdings, das AOP das Konfigurationsmanagement und die Fehlersuche schwieriger macht. Ich debugge eine Klasse und weiss merke erst sehr spät, dass der eigentlich Fehler gar nicht inder Klasse liegt, sondern vielleicht in dem eingewebten Code. Was passiert jetzt? Im Grunde müssen alle Klassen und Systeme, die den eingewebten Code verwenden neu übersetzt werden. Dies kann sich in einem realen Produktionssystem schon manchmal als sehr schwierig herausstellen.

Alles in allem Denke ich, dass AOP ein Hype ist und nicht allzuviel bringt. Es wird seine Nische finden. Vielleicht übersehe ich aber auch noch ein entscheidendes Detail. Aber ich vermute nicht. Und scheinbar geben mir die Kommentare zu Krilills Kommentar zu AOP recht.

Rudi Moshammer, Modezarewitschchen und Lokalpromi aus München, ist von uns gegangen worden. Vermutlich wurde er mit einem Telefonkabel erdrosselt. Wir stellen uns die Frage: War es Daisy? Hatte sie genug von ihm? War es eine Beziehungstat? Darf Daisy jetzt auf die Klamotten verzichten? Darf sie jetzt wieder selber Laufen? Wird Miss Piggy zur Universalerbin? War Rudi vielleicht sogar Miss Piggy?

Wir werden sie weiter über dieses geschmacklose Verbrechen unterrichten.

Okay, ich bedauer jetzt auch meine Rambo Rethorik und gelobe Besserung. Vielleicht...

Die Ocean Annotator API existiert jetzt in der Version 0.8.2. Dabei wurden einige Fehler beseitigt, die dazu führten, dass die API nicht mit dem Sun JDK 1.4.2 verwendet werden konnte. Dabei kam es zu Fehlern in der Serialisierungs API. Die Verwendung der Methode startPrefixMapping hat beim Einsatz der JAXP Transformer API im JDK 1.5 eine leicht geänderte Semantik. Im JDK 1.5 werden die xmlns Attribute gesetzt, ohne dass diese noch in der startElement Attributen gesetzt werden müssen.

Trotz der Anpassungen laufen die Tests unter dem Sun JDK 1.4.2_06 nicht korrekt durch. Hier gibt es Probleme mit der Erzeugung eines DOM-Baums. Mit der Java-Version 1.4.2 von IBM gibt es keine Probleme. Ebenfalls gibt es Probleme unter Eclipse 3.1 M1 beim Ausführen der Tests.
Trotz der beschriebenen Probleme kann die API auch mit dem JDK 1.4.2 von Sun verwendet werden, da die Serialisierung in einen Stream korrekt arbeitet.

Ein interessanter Artikel in diesem Zusammenhang findet sich in der XML Zone von IBM.

Say no to EPatents Auf dem Heiseticker gab es heute eine Medlung, dass IBM 500 Patente für die Open-Source-Nutzung spendet. Da zur Zeit Patente auf Software in der EU, entgegen geltenden Recht, auf computerimplementierte Erfindungen erteilt werden ist dieser Schritt schlicht nicht nötig und nur PR-Geblubber. Gleichzeitig ist die IBM einer der schärfsten Antreiber hinter der Ausweitung des Patentrechts innerhalb der EU. IBM sprechen mit gespaltener Zunge!

Heute waren wir im Museum für Vor- und Frühgeschichte in Berlin. Dort habe ich endlich einmal den goldenen Kulthut bewundern können. Auf diesen Augenblick habe ich so lange gewartet. Und er ist noch beeindruckender als ich es mir vorgestellt habe. Aus einem Stück getrieben mit mit feinen Mustern, die den 19 jährigen Mondzyklus zeigen ist er einfach wunderbar anzusehen und in Szene gesetzt.

Im Museumscafe haben wir dann noch Martin Stei mit seiner Freunding getroffen. Er hat zum Glück wieder einen neuen Job bei seiem Ex-Arbeitgeber. Das erinnert mich daran, dass morgen mein Urlaub zu ende ist. Schade eigentlich, denn eigentlich habe ich gar keine Lust da wieder hin zu gehen.

Wer immer einmal gesagt hat, Männer und Frauen passen nicht zueinander, der hat in dieser Aussage doch einen Funken Wahrheit versteckt.

Ich hatte die letzten drei Wochen Urlaub. Eine Woche davon war ich bei meinen Eltern. Die restliche Zeit waren wir in Berlin. Heute beschwert sich Gabi, dass ich nicht genug derjenigen Dinge gemacht habe, die sie mir aufgetragen hat. Ich habe sie vergessen. Mist. Aber dann kam es hoch, wie es wohl in allen Familien hoch kommt, wenn man gemeinsam Urlaub macht.

"Du hättest ja auch einmal 60°C Wäsche machen können." steht plötzlich im Raum.

"Immer wenn ich mal gesagt habe, ich werde Wäsche waschen, hast du gesagt, daß das doch du machen könntest," war meine matte Antwort.

So ging das dann weiter. Meistens hat sie ja Recht wenn sie an mir rummäckelt. Aber manchmal verstehe ich die Welt auch nicht mehr. Kaum hat man einmal Urlaub muss alls anders sein. Es ist ja nicht so, dass ich nicht helfen will. Aber wie soll das denn gehen, wenn man mich im Normalfall nicht lässt. Ich kann doch dann im Urlaub nicht riechen, dass jetzt alles anders ist. Manchmal vermute ich wirklich, dass Frauen und Männer zumindest im Urlaub @home nicht zusammenpassen.

Eben habe ich sauber gemacht, Staub gewischt. Es hat sie diebisch gefreut mich arbeiten zu sehen, dabei lag sie im Bett und hat gelesen.

Dieses mal hatten wir keinen Weihnachtsbaum. Aber ich habe mich gefragt, was man in Berlin im Januar mit den Weihnachtsbäumen macht. Und wie ich die Berliner einschätze, schmeissen sie sie einfach vor die Tür.

Um so weniger überrascht war ich als das tatsächlich der Fall ist. Einfach raus damit. Draussen ist Sturm, der Baum ist wom Winde verweht, fliegt auf die Strasse, auf die Tramgleise. Egal! Passt schon. Autos knallen dagegen, Strassenbahnen schleifen die Bäume von Station zu Station.

Irgendwann ist es dann wie im Mittelalter, das Fenster geht auf, eine kurze Warnung (wenn überhaupt, wir sind hier in Berlin): Vorsicht, Pisse. Und schon landet der Schiess auf einem.

Die Ocean Annotator API wächst und gedeiht. In den letzten Tagen hat mir Gabi Zeit gegeben massive Änderungen und Erweiterungen einzubauen. Jetzt werden XML Namen richtig behandelt und herausgefiltert. Ein grober Bug im Serialisierungsmechanismus wurde beseitigt und ein Package mit Beispielen für die Verwendung hinzu gefügt.

Inkompatibel zu den Vorgängerversionen hat sich die Reihenfolge von Namespaces und LocalNames in Methoden und Constructoren geändert. So wie es jetzt ist ist es logischer.

Ich denke die Version 0.8 wird die letzte vor dem Release werden. Ich hoffe es.

Gabi und ich waren heute in der Wolkenausstellung in der Alten Nationalgalerie. Ich bin kein grosser Kunstkenner und werde es auch nie sein. Ich kann Menschen nicht verstehen, die sich Bilder begeistert anschauen und stundenlang darüber diskutieren können, was der Maler mit dieser und jener Art der Darstellung ausdrücken wollte. Bilder sind entweder schön, dann ist es mir egal, was sie ausdrücken, oder sie gefallen mir nicht. Dann ist es mir auch egal was sie ausdrücken. So sind in der Ausstellung beispielsweise einige Studien und Zeichnungen von Goethe zu sehen. Er ist ein großartiger Dichter allerdings ein lausiger Zeichner. Wenn die Bilder nicht von ihm gewesen wären, dann würde sich vermutlich niemand ernsthaft für diese Kinderzeichnungen interessieren.

Dafür haben mir ein paar Bilder von Caspar David Friedrich sehr gut gefallen. Das Bilder 'Mondaufgang am Meer' mit einer Gruppe Frauen im Zentrum hat mich schon als Kind faziniert. Im Original wirkt es noch besser. Auch das Bild mit der Abteiruine ist überwältigend.
Bei einigen Bildern und Studien von William Turner war ich ganz hin und weg. Ich dachte bis heute Turner habe vorwiegend Kriegsschiffe gemalt. Aber die Wolkenbilder sind überwältigend gewesen. Am liebsten hätte ich sie sofort mitgenommen...
Allerdingshaben Gabi und ich dabei wieder einmal festgestellt, dass wir einen komplett unterschiedlichen Geschmack haben. Wir konnten uns nur bei zwei Bildern überhaupt darauf einigen, dass sie uns beiden gefallen. Am schönsten fand ich ein sehr schlichtes Bild von Emil Nolde, welches fast nur aus horizontalen unterschiedlichen Farbstrichen bestand (die restlichen Bilder von Nolde waren mir viel zu agressiv). Den des Bildes Namen habe ich schon wieder vergessen, aber ich mochte es sehr; Gabi dagegen hat es überhaupt nicht gefallen.

Auch die Ausstellung der Watzmannbilder haben wir uns angeschaut. Aber die hat uns beiden nicht gefallen. Und die Bilder von Max Liebermanns Garten fanden wir auch nicht gerade herausragend, eher langweilig. Allerdings mochte ich diese Art der Bilder auch so noch nie. Dafür war der Fischotter von Max Gaul, den Liebermann seiner Frau geschenkt hat, sehr schön.

Abtei - Caspar David Friedrich

Letzten Donnerstag haben mir meine Eltern ein Packet mit Lebensmitteln geschickt, das ich dort nach Weihnachten vergessen hatte. Eigentlich hätte es am Silvesterfreitag ankommen sollen. Kam es auch. Allerdings klingelt die Post nicht mehr (oder besser DHL, wie es jetzt heisst, allerdings auch nicht besser), sondern gibt das Packet im Gemüseladen um die Ecke ab. Dann wird ein Brief verschickt, wohl ganz normal mit der Post, welches uns mitteilt, dass unser Packet angekommen ist und im Gemüseladen abgeholt werden kann. Der Brief war natürlich erst am Montag da, Neujahr passiert in diesem Land nicht viel. Also konnte ich das Packet erst gestern Abend abholen.

Ich finde das ziemlich kundenunfreundlich von der Post (DHL). Da geht mindestens ein Tag verloren, diesmal sogar drei, da das Neujahrswochenende dazwischen lag. Zum Glück waren es keine so leicht verderblichen Waren. Wenn es Alternativen gibt sollte man lieber die nehmen.

Heute wäre der errechnete Entbindungstermin. Seit Tagen denke ich daran.