Author: Joachim Weinbrenner

Icons für Eclipse

Auf meinen Entwicklungskisten gibt es meist mindestens zwei Installationen von Eclipse. Die eine ist für meine Java-Entwicklung angepasst, die andere für das PHP-Zeugs. D.h. ich habe auch zwei Knöpfchen in meinem Startpanel. Und hier geht das Problem los: die Standard-Icons sehen leider identisch aus.

Meine Lösung war pragmatisch: Ich hab mir einfach zwei entsprechende Icons „gegimpt„:

eclipse-icon-java eclipse-icon-php

Ok, besonders hübsch sind sie nicht (bin ja kein Grafiker und hatte auch keine Lust die groß zu verfeinern) aber sie erfüllen ihren Zweck!

Wer sie gerne verwenden möchte, nur zu, deswegen hab ich sie ja hier veröffentlicht! Fertige xpm-Dateien (und die hier abgebildeten png’s) kann man hier herunterladen.

Am Rande bemerkt: Derzeit tut sich sehr viel in Sachen Java-Entwicklungsumgebungen. Netbeans hat sich sehr gut entwickelt, eine Testinstallation (6.8 beta) hat mich begeistert. Und Inellij Idea gibt es jetzt auch in einer kostenlosen ‚Community Edition‘. Aber das ist alles vielleicht mal einen eigenen Blog-Eintrag wert.

Share

Hibernate Validator 4 – Validierung, wo sie hin gehört

Vor gut zwei Wochen erschien die Version 4 des Hibernate Validators. Dabei handelt es sich um eine komplett neue Codebasis, es ist nun die Referenzimplementierung des JSR-303: Bean Validation. Der Hauptvorteil der Benutzung von Hibernate Validator ist, dass die Überprüfungen da stattfinden, wo sie maßgeblich sind, nämlich im Model. Statt also in allen Schichten (GUI/Web, Business Layer, Data Acess, …) eine eigene Prüfung zu implementieren (und sich damit leicht Inkonsistenzen und doppelten Code einzuhandeln) erfolgt die Validierung ausschließlich in den Domänen Objekten.

Die Validierung erfogt über Constraints, die als Annotationen angegeben werden. Es sind schon einige Constraints enthalten, für besondere Zwecke lassen sich eigene erstellen. Hier mal ein einfaches Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// (imports usw. weggelassen)
public class Kunde {
 
    @NotNull(message = "Ein Kunde muss einen Namen haben")
    private String nachname;
 
    @Past(message = "Geboren in der Zukunft?")
    private Date geburtstag;
 
    @Size(min=6, max=20)
    @NotNull
    private String passwort;
 
    // Getter Setter usw.
}

Highlights der Version 4 sind:

  • Native Integration in JPA 2 und JSF 2 (für SEAM Experten nichts neues, hat dort schon mit Version 3 von Hibernate Validator funktioniert)
  • Groups: Es lassen sich Gruppen definieren, welche die Validierung bestimmter Constraints anstoßen
  • Typsicherheit: Es wird sichergestellt, dass ein Constraint zum Datentyp des Properties passt.
  • stark verbesserte Testsuite
  • uvm. …

Noch ein Hinweis: Hibernate Validator kann unabhängig von einer Verwendung des Hibernate ORM eingesetzt werden.

Meine Empfehlung: Unbedingt anschauen!

Share

inittab/respawn unter Ubuntu

Kürzlich hatte ich einen Prozess, der auf meinem Laptop unter Ubuntu Linux immer laufen sollte. Leider ist er mir aus unbekannten Gründen immer wieder abgestürzt, besonders nach dem Aufwecken aus dem Ruhezustand.

Egal, dachte ich mir, trags in die inittab ein – doch halt, unter Ubuntu ist das ein bisschen anders. Ubuntu verwendet upstart. Aber keine Panik, das ist ganz einfach. Um einen Prozess zu starten, muss lediglich eine Datei in /etc/event.d angelegt werden. Soll dieser Prozess nach einer Beendigung (z.B. o.g. „Absturz“) automatisch wiedergestartet werden, muss das Schlüsselwörtchen ‚respawn‘ enthalten sein.

Am einfachsten kopiert man sich die Datei /etc/event.d/tty2 als Vorlage und ändert dann in der letzten Zeile den exec Befehl.

Die Datei sollte dann etwa so aussehen:

start on runlevel 2
start on runlevel 3
 
stop on runlevel 0
stop on runlevel 1
stop on runlevel 4
stop on runlevel 5
stop on runlevel 6
 
respawn
exec /kompletterpfad/befehl
Share

JSF2 Linksammlung

Die neue Version von JSF (Java Server Faces) hat einige Verbesserungen mit sich gebracht. Hier sammle ich eine kleine Liste von Links zur Einführung in die Materie, die ich aktualisiere, wenn ich auf etwas Interessantes stoße.

To be continued … (freue mich über jeden interessanten Link!!!)

Share