This post is password protected. To view it please enter your password below:


Letzes Wochende bin ich mit dem ICE von Zürich nach Dresden in Sachsen gefahren. Samstag hin und am Sonntag zurück. Anlass war ein Treffen ehemaliger Sportler der KJS Altenberg. Leider sind recht wenig Leute gekommen. Insbesondere hat es nicht ein Trainer geschafft vorbeizukommen. Trotzdem habe mich gefreut Mitschüler und Lehrer von früher wieder mal zu treffen und ein paar Worte zu wechseln.

Danke nochmals an Anita und Dirk für das Taxi von Dresden nach Altenberg und zurück. Danke an die Organisatoren des Treffens - Rico, Barni, Teddy & Noi und natürlich auch Dank an Frau Kamprath für die Dia’s.

Netbeans Fonts

June 25th, 2008

Rohan Ranade (alias gridbag) hat in seinem letzten Blogeintrag nach Kombinationen der Schriften in Netbeans unter Linux gefragt. Ich benutze ProFont von Tobias Jung unter Gentoo Linux. Die Schrift ist wirklich gut zum Programmieren.

Hier also meine Einstellungen:

Read the rest of this entry »

Wer in Spring Hibernate Event Listener eintragen will macht dies folgendermassen (vergleiche auch Spring Dokumentation Kapitel 12.2.2):

<beans>
  <bean id=”loadListener” class=”org.nautsch.MyLoadEventListener” />

  <bean id=”myDataSource” class=”org.apache.commons.dbcp.BasicDataSource” destroy-method=”close”>
    <property name=”driverClassName” value=”org.hsqldb.jdbcDriver”/>
    <property name=”url” value=”jdbc:hsqldb:hsql://localhost:9001″/>
    <property name=”username” value=”sa”/>
    <property name=”password” value=”"/>
  </bean>

  <bean id=”mySessionFactory” class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”>
    <property name=”dataSource” ref=”myDataSource”/>
    <property name=”mappingResources”>
      <list>
        <value>product.hbm.xml</value>
      </list>
    </property>
    <property name=”hibernateProperties”>
      <value>
        hibernate.dialect=org.hibernate.dialect.HSQLDialect
      </value>
    </property>
    <property name=”eventListeners”>
        <map>
            <entry key=”load”><ref local=”loadListener” /></entry>
        </map>
    </property>
  </bean>

</beans>

Wer wissen möchte welche Schlüssel es für die EventListener gibt sollte sich mal den Source der Klasse org.hibernate.event.EventListeners anschauen. Dort gibt es einen statischen Block der alle Keys mit den dazugehörigen Typen definiert:

       static {
                eventInterfaceFromType = new HashMap();
 
                eventInterfaceFromType.put("auto-flush", AutoFlushEventListener.class);
                eventInterfaceFromType.put("merge", MergeEventListener.class);
                eventInterfaceFromType.put("create", PersistEventListener.class);
                eventInterfaceFromType.put("create-onflush", PersistEventListener.class);
                eventInterfaceFromType.put("delete", DeleteEventListener.class);
                eventInterfaceFromType.put("dirty-check", DirtyCheckEventListener.class);
                eventInterfaceFromType.put("evict", EvictEventListener.class);
                eventInterfaceFromType.put("flush", FlushEventListener.class);
                eventInterfaceFromType.put("flush-entity", FlushEntityEventListener.class);
                eventInterfaceFromType.put("load", LoadEventListener.class);
                eventInterfaceFromType.put("load-collection", InitializeCollectionEventListener.class);
                eventInterfaceFromType.put("lock", LockEventListener.class);
                eventInterfaceFromType.put("refresh", RefreshEventListener.class);
                eventInterfaceFromType.put("replicate", ReplicateEventListener.class);
                eventInterfaceFromType.put("save-update", SaveOrUpdateEventListener.class);
                eventInterfaceFromType.put("save", SaveOrUpdateEventListener.class);
                eventInterfaceFromType.put("update", SaveOrUpdateEventListener.class);
                eventInterfaceFromType.put("pre-load", PreLoadEventListener.class);
                eventInterfaceFromType.put("pre-update", PreUpdateEventListener.class);
                eventInterfaceFromType.put("pre-delete", PreDeleteEventListener.class);
                eventInterfaceFromType.put("pre-insert", PreInsertEventListener.class);
                eventInterfaceFromType.put("pre-collection-recreate", PreCollectionRecreateEventListener.class);
                eventInterfaceFromType.put("pre-collection-remove", PreCollectionRemoveEventListener.class);
                eventInterfaceFromType.put("pre-collection-update", PreCollectionUpdateEventListener.class);
                eventInterfaceFromType.put("post-load", PostLoadEventListener.class);
                eventInterfaceFromType.put("post-update", PostUpdateEventListener.class);
                eventInterfaceFromType.put("post-delete", PostDeleteEventListener.class);
                eventInterfaceFromType.put("post-insert", PostInsertEventListener.class);
                eventInterfaceFromType.put("post-commit-update", PostUpdateEventListener.class);
                eventInterfaceFromType.put("post-commit-delete", PostDeleteEventListener.class);
                eventInterfaceFromType.put("post-commit-insert", PostInsertEventListener.class);
                eventInterfaceFromType.put("post-collection-recreate", PostCollectionRecreateEventListener.class);
                eventInterfaceFromType.put("post-collection-remove", PostCollectionRemoveEventListener.class);
                eventInterfaceFromType.put("post-collection-update", PostCollectionUpdateEventListener.class);
                eventInterfaceFromType = Collections.unmodifiableMap( eventInterfaceFromType );
        }

iWoz

May 4th, 2008

Letztes Wochenende war ich mit meinen Kindern in der Bibliothek um wieder einmal Kinderbücher, Bibi Blocksberg-CD’s und ein paar Spiele für die Kleinen zu holen. Was sticht mir doch da ins Auge: iWoz von Steve Wozniak. Also habe ich mir das Buch ausgeliehen und gestern zu Ende gelesen. Ich wollte doch herausbekommen ob es an dem Film Silicon Valley Story auch etwas Wahres hat. :)

Was ich aus dem Buch mitnehme lässt sich an folgendem Sachverhalt gut zeigen. In über der Hälfte des Buches geht es darum, wie sich Woz Wissen aneignet, Sachen baut, sich für Dinge interessiert und schlussendlich alle Erfahrung und Wissen im Bau des Apple I gipfeln. Er lernt Schritt für Schritt alles was er benötigt. Es ist die Summe seiner Tätigkeiten die es ihm ermöglichte die Idee für den Apple I zu bekommen und nicht andersherum.

Wer in einer Netbeans Platform Application das Beans Binding benutzen will, stösst auf folgenden Fehler wenn man in Matisse binden möchte:

...package org.jdesktop.beansbinding does not exist

Das entsprechende JAR wird nicht gefunden. Und da es derzeit kein Modul für das Beans Binding gibt, muss man das JAR-File in einem Library Wrapper Module selber dem Projekt hinzufügen. Die entsprechende Datei ist unter <netbeanshome>/java2/modules/ext/beansbinding-1.2.1.jar zu finden. Also legt man in seiner Suite ein neues Library Wrapper Module an und nimmt diese Datei als Jar. Alle Module die das Binding benutzen wollen können nun unter den Properties–>Libraries–>Add Dependency diese Library anziehen und schon ist der Fehler weg.

Netbeans 6.1 ist da

April 28th, 2008

Zwar ist Netbeans 6.1 noch nicht auf der Frontpage, downloaden kann man es aber schon:

Read the rest of this entry »

AUA. Heute hatte ich einen Bug. Wie in einem Post geschrieben erstelle ich mit JasperReport ein paar einfache Briefe in PDF. Das Erstellen läuft auf einem Websphere Application Server. Es fehlten aber auf einmal Zeichen in einem kleinen Textfeld. Read the rest of this entry »

Frohe Ostern 2007

March 23rd, 2008

Ich wünsche allen frohe Ostern 2007. Auch wenn die folgenden Bilder zeigen, dass sich hier der alte Winter in seiner Schwäche nicht in die Berge zurückgezogen hat:

Read the rest of this entry »

Bruce Perens zurück zur OSI

March 19th, 2008

Inswischen pfeifen es die Spatzen vom Dach (hier, hier). Bruce Perens möchte gern wieder im Aufsichtsrat der OSI sein und hat gute Gründe dafür. Auf seiner Webseite kann man ihn unterstützen.

Meine Unterstützung hat er.

Netbeans hat eine schöne Funktion welches sich “Favorites” nennt. Dies ist ein kleines Fenster in das man beliebige Verzeichnisse mounten kann. Es ist so einfach möglich eben mal eine Datei zu editieren, ohne gleich ein Projekt anlegen zu müssen.

Read the rest of this entry »

Operator Overloading ist eine feine Sache. Groovy erweitert z.B. die Klasse java.lang.Process um die Methode “or(Process right)”. “or” wird in Groovy auf den Operator “|” gemappt. Dadurch kann man die Ausgabe eines Prozesses zu einem anderen “pipen”

test.groovy:

#!/usr/bin/env groovy
def p1 = "ls -al".execute()
def p2 = “grep test”.execute()
p1 | p2
p2.waitFor()
println p2.text

Krusader

March 7th, 2008

Neben Konqueror benutze ich Krusader als Dateimanager. Eigentlich benutze ich Krusader sogar am meisten. Das zwei Ansichtenkonzept, welches man auch von Total Commander, Midnight Commander oder ganz früher vom Norton Commander kennt, finde ich sehr angenehm zu benutzen. Und Krusader kann noch soooooo viel mehr als nur die Dateien von einer Seite auf die andere zu schieben. Read the rest of this entry »

Neues Gentoo Buch

February 27th, 2008

Heute hat Gunnar Wrobel auf seinem Blog die Fertigstellung sein neues “Gentoo Linux” Buches bekanntgegeben. Sicherlich sind alle Informationen auch im Netz verfügbar, aber wenn sich schon jemand die Arbeit macht, alle Infos in ein Medium zu packen, dass ich auch im Bus benutzen kann, dann muss ich es eben gleich mal bei meinem Online-Lieblingsbuchladen bestellen. Im Beispielkapitel geht es um das Bauen von ebuilds …  so muss lesen und ebuilds bauen ;)

Ich arbeite derzeit als einziger in einem Projekt mit Netbeans 6.0.1. Alle anderen Entwickler benutzen Eclipse. Nun haben wir in diesem Projekt strenge Richtlinien was die Code-Formatierung angeht und ich musste feststellen, dass Netbeans bei weitem nicht so viele Optionen bei der Formatierung hat wie Eclipse. In meinem Fall stört mich eigentlich nicht viel:

  • Aus dem Fileheader werden immer die Leerzeilen gelöscht. Überhaupt gibt es für Kommentare soweit ich es überblicke keine Einstellmöglichkeiten.
  • zwischen Membervariablen werden immer die Leerzeilen gelöscht (Siehe Issue 121956).
  • Es ist nicht einstellbar, dass beim Speichern der Datei die Formatierung und das “Organisieren der Import-Statements” ausgeführt wird.

Es sind keine grosse Sachen, aber sehr lästig, wenn man in einem Projekt mit unterschiedlichen IDE’s arbeitet. Am schönsten wäre es natürlich, wenn man die Einstellungen von Eclipse einfach importieren könnte. ;)

Einen Export der Formatierungen gibt es in Netbeans derzeit nicht. Alle Einstellungen sind aber in einer Datei gespeichert, die man seinen Kollegen weitergeben kann, damit sie die gleichen Einstellungen benutzen können. Die Datei ist zu finden unter:

<homedir>/.netbeans/6.0/config/Preferences/org/netbeans/modules/java/source/CodeStyle/default.properties

Es gibt auch viel Gutes zu berichten. Das folgt aber in einem anderen Post.

Boycott Trend Micro

February 20th, 2008

Weil ich ein zufriedener Benutzer von ClaimAV bin und Softwarepatente im Allgemeinen nicht mag, unterstütze ich den Aufruf zum Boycot von Trend Micro den die FSF und Scriptum Libre ausgerufen haben.

Derzeit arbeite ich u.a. daran ein PDF-Dokument mit Java zu erzeugen. Es ist ein einfacher Brief mit einer Anschrift, Ort, Datum, Betreff und dem Briefinhalt. Ein paar Sachen sollen dynamisch eingefügt werden. Es ist also eine recht einfache Sache. Da im Projekt schon iText im Einsatz ist, habe ich damit angefangen. Mit der Hilfe des Buches IText in Action” von Bruno Lowagie - und insbesondere den Code-Beispielen - hatte ich innerhalb eines Tages die Aufgabe gelöst. Jar-Files in den Classpath und ca. 100 Zeilen Java-Code (kann ihn leider hier aus rechtlichen Gründen nicht zeigen) und die Sache war geschaft. Ich habe mit ColumnText die Texte absolut positioniert.

Nun hat aber ein Kollege gemeint, dass es ja sehr unschön sei, dass die Layoutinformation im Java-Source vergraben sei. Stimmt. Innerhalb des Java-Codes steht nun wo welche Information auf dem Brief stehen soll. Soll das Layout geändert werden, dann muss auch mein Code geändert werden.

Naja, also mal schnell umgeschaut und die zwei Platzhirsche im Bereich Java-Reporting nämlich JasperReports und Birt angeschaut. Wie schon des öfteren geschrieben wird bei uns sehr viel mit Eclipse gemacht und deshalb habe ich als erstes mal Birt angeschaut. Nach einem halben Tag war ich noch nirgends, insbesondere war mir nicht vollständig klar, wie die Laufzeitumgebung auf dem Server aussieht und was ich alles deployen muss. Also habe ich mich an JasperReports gesetzt und siehe da innerhalb von zwei Stunden mit 10 Zeilen Code und einem Report mit IReport erstellt, war das erste PDF gebaut. Einfach die jar-Files von JasperReports mit auf dem Server deployen - fertig. Die mitgelieferten Beispiele in Form von Reports und Java-Source sind ein guter Einstieg.

Inzwischen sind auch die Briefe komplexer geworden und ich war froh nicht mehr alles per Hand mit iText ausprogrammieren zu müssen.  Alles in Allem ist JasperReports eine echte Empfehlung.

Nokia 6110 Navigator und SDHC

February 1st, 2008

Es funktioniert. Das Nokia 6110 Navigator läuft bei mir auch mit einer 4GB mirco-SDHC Karte. In der Beschreibung zu diesem Handy steht, dass es nur mit SD-Karten bis 2GB funktioniert. Es läuft aber wunderbar und ich habe jetzt viel viel Platz. :)

Nokia und Trolltech

January 28th, 2008

das grosse Unternehmen Opensource-Firmen kaufen ist in Mode. Erst kauft SUN MySQL und nun möchte Nokia gern Trolltech haben. Den kauf von SUN finde ich gut, denn SUN hat sich zu Open Source gekannt und bietet Java nun auch mit Open Source Lizenzen an. Mein neues Nokia 6110 (habe ich seit letzter Woche) kommt aber nur mir M$-Software zum Synchronisieren daher…

Nokia könnte aus Qt und KDE eine grosse Sache machen. Das würde mich sehr freuen. Ich bin sehr gespannt wie sich das entwickelt. Die Aussicht das ich mein Handy direkt mit KDE PIM synchronisiere gefällt mir. :)

Gerade habe ich mein erstes Live-Template in Netbeans geschrieben. In Eclipse war das toArray als Code Template enthalten und ich habe es vermisst. Read the rest of this entry »