Donnerstag, 26. März 2009
Kaffee Klatsch
Link:
Kaffee Klatsch - Das Magazin rund um Software-Entwicklung
Mittwoch, 25. März 2009
Remote JBoss Client Development
Zunächst die TCP Tunnel (local->remote) 1098 und 1099 sowie 4443 und 4444 zum JBoss Server aufbauen. Testen am besten per Telnet auf die Ports. Leider ist das nur die halbe Miete, weil die IP der Maschine, wo der JBoss läuft, noch nicht erreichbar ist. Das lässt sich aber umgehen, in dem man einen Loopback Netzwerkinterface einrichtet, das die IP der JBoss Maschine auf den localhost, wo die Tunnel auf Verbindung warten, weiterreicht.
Für Windows bietet sich die Kombination von Putty und dem Microsoft Loopback Adapter an, den man einfach als Netzwerkkarte einbinden kann.
Links:
Einrichten des Loopbackadapters: http://support.microsoft.com/kb/839013
Einrichten von Putty Tunnel: http://realprogrammers.com/how_to/set_up_an_ssh_tunnel_with_putty.html
Samstag, 7. März 2009
Niemals mit den Datentypen Float oder Double Geldbeträge berechnen!
javathreads.de
Freitag, 6. März 2009
Bildinhalte erkennen
Zum Thema gibt es außerdem noch die Java API Face Recognition, die den Eigenfaces Algorithmus für die Gesichtserkennung einsetzt.
Weitere Infos zum Thema im Linux Magazin.
Links:
OpenCV Wiki
OpenCV Download
[Update]
Ebenfalls eine sehenswerte Java Implementierung ist The Face Annotation Interface (faint). http://faint.sourceforge.net/
Blogbeitrag mit Beispiel zu FAINT http://technoroy.blogspot.com/2008/06/faint-search-for-faces.html
Sonntag, 1. März 2009
Versteckte Schätze
Egal in welches Gebiet man sich vorwagt, es gibt für eigentlich alles eine mehr oder weniger gut geeignete Java API. Es ist nur nicht immer ganz einfach eine passende zu finden. Zum Manipulieren von EXIF Bilddaten bin ich vor einiger Zeit auf die Sanselan API gestoßen. Ganz zufrieden war ich damit jedoch nie. Mangelnde Dokumentation, komplizierte Bedienung und die kontinuierliche Verweigerung, die in Jpeg EXIF eingebettete Thumbnails zu laden, waren einige Eigenheiten, die mir nicht gefallen haben. Durch Zufall ist mir gestern eine gut verteckte API in die Finger geraten, die durch Einfacheit besticht, die Thumbails lädt und die EXIV Daten auch wieder zurückschreiben kann. Eine Dokumentation existiert zwar scheinbar nicht, aber die API ist nahezu selbsterklärend. Gefunden habe ich dieses Goldstück im Java Image Manager (Jim) Projekt - einem Bildverwaltungsprogramm, das auf den ersten Blick mit einer ehr gewöhnungsbedürftigen Oberfläche und wenig Funktionsumfang daherkommt. Ein Blick ins Innere hat sich dafür umso mehr gelohnt. Die jim-io.jar, die mit dem Programm mitkommt, enthält so ziemlich alles, was ich von einer solchen API erwarten würde und auch der Sourcecode ist wieder mit dabei. Bleibt nur noch zu hoffen, dass sich keine schwerwiegenden Bugs finden, die mir die Freude über diesen Fund wieder nehmen. Hier noch ein paar Codefragmente zum Umgang mit jim-io.
public Metadata readMetadata(File imageFile) throws MetadataException {
final JpegReader reader = new JpegReader();
final Metadata metadata = reader.readImage(imageFile);
final Iterator directoryIterator = metadata.getDirectoryIterator();
while (directoryIterator.hasNext()) {
Directory directory = directoryIterator.next();
if(directory instanceof ThumbnailTiffDirectory) {
byte[] thumbnailData = ((ThumbnailTiffDirectory)directory).getThumbnailData();
}
System.out.println(directory.getName());
Iterator tagIterator = directory.getTagIterator();
while (tagIterator.hasNext()) {
Tag tag = tagIterator.next();
System.out.println(tag.getTagName() + "="+ tag.getDescription());
}
}
return metadata;
}
public void updateMetadataTag(Tag tag, Object value) {
tag.update(value);
}
public void writeMetadata(Metadata metadata, File output) throws JpegProcessingException {
JpegWriter writer = new JpegWriter();
writer.writeImage(metadata, output);
}
Update Die Library entstammt eigentlich aus dem Metadata Extractor Projekt. Dank der Refactorisierungsmöglichkeiten moderner IDEs war das allerdings nicht mehr wirklich ersichtlich.
Update 2Ergänzende Links zum Thema Exifdaten:
http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html
http://commons.wikimedia.org/wiki/Commons:Manipulation_von_Metadaten