Softwareentwicklung

deUt 1.0

Gerade habe ich Diergo Utils 1.0 released. Eine kleine Hilfsbibliothek für einen einfachen Umgang mit Java 5 Iterables.

iBATIS 3 und Spring 2 - Resourcen

Das Spring Framework 2.x enthält Unterstützung zur Verwendung von iBATIS, leider aber nur für Version 2. Mit ein wenig eigenem Code kann das kurz vor dem Release stehende iBATIS 3 aber auch einfach eingebunden werden.

Die DataSource wird jetzt über Spring injected. Ein Problem bleibt aber noch. Je nach Angabe der Resource in Spring, findet iBATIS die Konfiguration, insbesondere ausgelagerte Mapper nicht unbedingt, z.B. bei einer Webapp, die als WAR deployed wird.mehr...

iBATIS 3 und Spring 2 - die DataSource

Das Spring Framework 2.x enthält Unterstützung zur Verwendung von iBATIS, leider aber nur für Version 2. Mit ein wenig eigenem Code kann das kurz vor dem Release stehende iBATIS 3 aber auch einfach eingebunden werden.

Die zu verwendende DataSource ist typischerweise als Bean in der Spring-Konfiguration enthalten und das Transaktionsmanagement wird auch von Spring erledigt. Die iBATIS Configuration wird aber ebenfalls über XML konfiguriert. Während das Transaktionsmanagement noch durch die Konfiguration MANAGED machbar ist, bereitet die DataSource Probleme.mehr...

Escape für Reguläre Ausdrücke

Möchte man eine beliebige Zeichenkette ohne Funktion von reservierten Zeichen dieses Formates als Literal einfügen, so so müssen diese Zeichen in der für das Format typischen Art außer Funktion (escaped) werden. Zu einigen Formaten gibt es in Java Unterstützung, wie URL-Encoding in J2EE. Bei anderen fehlt diese Unterstützung leider.

EIn typisches Beispiel sind reguläre Ausdrücke.mehr...

ISP Workshop

Ende Mai habe ich bei Hypoport einen Workshop zum Interface Segregation Principle gehalten. Wer möchte, kann sich hier die Folien ansehen.

Collections.unmodifiable und andere Katastrophen

Das Collection Framework der Java Runtime Bibliothek ist aus meiner Sicht ein Beispiel für relativ schlechtes Design, das durch die Bequemlichkeit (es ist ja eh da) trotzdem eine hohe Verbreitung hat.mehr...

Stack Overflow

Endlich mal eine wirklich gute Site für Softwareentwickler. Bei Stack Overflow tummeln sich viele Entwickler und beantworten Fragen anderer.

Es gibt eine brauchbare Regulierung durch Bewertung der Antworten durch die Community. Viele Features (z.B. Abwertung) werden erst mit entsprechender Bewertung der eigenen Antworten verfügbar.

Diergo CSV 1.1

Heute habe ich meine OpenSource CSV-Projekt in Version 1.1 released. Die Bibliothek kann jetzt beim Parsen automatisch den Trenner ermitteln.

Java Preferences unter Mac OS X

Beim Debuggen einer Funktion, die die Java Preferences (java.util.prefs.Preferences) benutzt, stellte sich auf dem Mac die Frage: Wo werden die Daten eigentlich gespeichert?mehr...

Warum extends?

Java 5 bietet Generics, so dass man im Quelltext auch bei der Verwendung des Collection Frameworks ohne Casts auskommt. Aber wann und warum werden Wildcards verwendet?mehr...

Generic Arrays

Arrays in Java sind nicht immer einfach zu behandeln. Dies gilt ganz besonders für die Bearbeitung und das Kopieren bei der Verwendung von Generics.mehr...

Comma Separated Values

Nachdem ich mich über eine wenig schöne Implementierung geärgert habe, beschloss ich selbst einen Parser für Comma Separated Values zu schreiben. Und wenn dann gleich richtig: als Open Source Projekt.

Mit ant läuft es

In Java-Projekten ist ant das Mittel der Wahl, wenn es um Build-Tools geht. Es ist weniger komplex als Maven, schneller und plattformunabhängiger als make und funktioniert im Gegensatz zu Eclipse auch als Batch z.B. für Continious Build. Trotzdem gibt es gute und weniger gute Buildfiles. mehr...

Versteckt in der Doku

Ich habe die VTL Referenz sicherlich schon zigmal gelesen, aber gerade manches fällt einem doch erst spät auf. Die Autoren der Apache Velocity Dokumentation hatten durchaus Humor (Man achte auf die Namen und Werte der Variablen):

Examples:

Variable reference: #set( $monkey = "bill" )
String literal: #set( $monkey.Friend = "monica" )
Property reference: #set( $monkey.Blame = $whitehouse.Leak )
Method reference: #set( $monkey.Plan = $spindoctor.weave($web) )
Number literal: #set( $monkey.Number = 123 )
Range operator: #set( $monkey.Numbers = [1..3] )
Object array: #set( $monkey.Say = ["Not", $my, "fault"] )

RailsConf Europe 2007

Montag bis Mittwoch war ich mit vielen Kollegen auf der RailsConf Europe.mehr...

ID-Vergabe in Datenbanken kompatibel gestalten

In vielen Fällen werden Datenbanktabellen angelegt, wo eine numerische ID-Spalte von der Datenbank automatisch auf einen eindeutigen Wert gesetzt werden soll. Leider ist dies mit Standard-SQL nicht einheitlich zu lösen, da die INSERT-Anweisungen danach nicht identisch sind.mehr...

Extreme Programming at Work

Heute hat Stefan Salinger von der FU-Berlin bei Infopark Tilo und mich bei der Arbeit beobachtet. Genauer wurde eine Paarprogrammierung aufgenommen. Ende Februar soll die Auswertung fertig sein…