Freitag, 28. Mai 2010

Maven Shade Plugin

Shade ist ein nützliches Maven Plugin, mit dem man sogenannte BIGJARs bauen kann, also JARs die alle notwendigen Libs enthalten. Dies ist z.B. beim Testen der Applikation in der Kommandozeile sinnvoll. Leider gibt es zwei Plugins die auf SHADE hören, wenn ich es in Eclipse hinzufügen möchte. Das Plugin, das ich suchte muss mit dem Suchstring maven-shade gesucht werden.
Nach dem man das richtige Plugin der POM hinzugefügt hat muss man es natürlich konfigurieren:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-shade-plugin</artifactId>
 <version>1.3.3</version>
 <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>de.fbn.bio.benchmark.Benchmark</mainClass>
                </transformer>
              </transformers>
            </configuration>
          </execution>
        </executions>
</plugin>

Mittwoch, 26. Mai 2010

Fedora 13 eigenet sich nicht gut als Java Entwicklungsplattform

Mal wieder ein Leider. Nach dem ich ein frisches Fedora eingespielt hatte, Java als OpenJDK war vorhanden, installierte ich ein Eclipse via Paketmanager (GUI). Ich dachte toll, ist ja einfach. Dieses war leider ein Eclipse für C/C++, das stand nur nirgens und es fehltem ihm auch wesentliche Bestandteile. Dies merkte ich nach der Installation von M2Eclipse. Ich deinstallierte also Eclipse und installierte ein Neues.
Immer noch liefs nicht wie erwartet. Als javac wurde der ecj verwandt und OpenJDK bedeut nicht, dass man ein JDK hat.  Maven wollte ein JDK, das ja eigentlich da war. Also installierte ich ein JDK von Sun, leider waren dann immer noch alle Pfade noch beim Alten. Also das einfache Aufsetzen eine Java-Entwicklerplattform sieht anders aus. Fedora möchte scheinbar eine einfache und nutzerfreundliche Linux-Variante sein, nur leider muss man einiges über Fedora wissen, damit man es nutzen kann. Hier steckt noch viel Arbeit drin. Ich wechsel wohl jetzt den Computer.

Neue Version des Eclipse LaTeX-Plugins, Texlipse 1.4 erschienen

Wir haben schon lange auf eine neue Version von Texlipse gewartet, endlich ist sie da. Neu ist, dass es eine LaTeX-Perspektive gibt, und man sie sich nicht mehr selber bauen muss. Vor allem wurden auch Bugs gefixt. Ich werde die neue Texlipse-Version bei Gelegenheit testen.

Update-Site:
http://texlipse.sourceforge.net/

Mittwoch, 19. Mai 2010

Running Jackrabbit on Tomcat

Apache Jackrabbit ist ein Java-basiertes Content Repository. Es ist möglich es als Stand-alone Installation zu betreiben oder es in Tomcat als Webapp zu installieren. Mein Kombination ist Windows, Tomcat 6.0.26 und Jackrabbit 2.1.0. Mir sind mehrere Dinge aufgefallen:

  • Vor der Installation muss ins lib Verzeichnis von Tomacat noch die jcr-2.0.jar kopiert werden und anschliessend muss Tomcat neu gestartet werden. Wichtig ist die Version 2.0 von JCR und nicht die Version 1.0 zu benutzen, wie fälschlicher Weise noch in der Dokumentation steht.
  • Das installierte Jackrabbit, zumindest die Weboberfläche scheint nicht ganz fehlerfrei zu sein. Alle Fehler waren durch die falsche JCR-Version verursacht.
  • Neue Content Repositories werden im Verzeichnis CATALINA_HOME angelegt. Wenn diese Variable nicht explizit gesetzt wurde, schätzt Tomcats Startskript das Verzeichnis. Das Resultat ist das Verzeichnis aus dem Tomcat gestartet wurde. Dieses Faeture ist leider nicht dokumentiert und ich habe auch keinen einfachen Weg gefunden dies zu konfigurieren.
  • Bei der Suche nach Hilfe via Google viel mir auf, das es leider einen Vibrator gleichen Namens gibt, der leider Googles Ergebnisliste häufig dominiert.
Das Jackrabbit WebDAV-Repository lässt sich ohne weiteres unter Mac OS X 10.6 im Finder als Mit Server verbinden ... als Laufwerk einbinden. Unter Windows kann man es als Webresource einbinden oder mittels Netdrive als Laufwerk mounten. Alternativ soll auch der Befehl net funktionieren, nur leider bei mir nicht. Unter Linux kann man sich das WebDAV-Repository als Laufwerk mounten. Dazu muss man als User root folgende Zeile verwenden: mount -t davfs http://mir:8080/jackrabbit/repository/default/ /home/ebert/testset/dav
Natürlich kann man auch /etc/fstab um den WebDAV-Eintrag erweitern.

Leider fand ich auch keinen Client, der Versionierung und Locking unterstützt, damit gehen wichtige Funktionen des WebDAV verloren.

Dienstag, 18. Mai 2010

Distributed Computing

Wenn es um ein Number Crunching Problem geht, steht man vor der Frage, ob man nicht einen Computer-Cluster bzw. eine Menge von Desktop-PCs an Stelle eines Servers einsetzen sollte. Natürlich ist Distributed Computing seit Seti@Home ein hippes Thema, doch bringt Distributes Computing mit PCs nüchtern betrachtet Vorteile gegenüber der Nutzung eines grossen Servers?
In meinem Fall habe ich einen Referenz-Server, d.h. ich muss mittels Ditribueted Computing mindestens die selbe Rechenenleistung erreichen wie der Server. Natürlich muss ich vorher abschätzen, ob dies ein realisitsches Ziel ist. Die Aufage ist extrem gut parallelisierbar und damit sowohl für den Einsatz auf einem Multi-Core-Server als auch auf einem Rechner-Cluster gut geeignet. Zum abschätzen der zu erwartenden Performance der Computer bei meinem Problem nehme ich den SPECint_rate_base2006, weil er gut zu meinem Problem passt und weil SPEC-Werte für viele Systeme auf der Seite der SPEC zu finden sind. Das Referenz-System erreicht einen SPECint_rate_base2006 Wert von 268. Die Desktop-PCs schätze ich mit einem Wert von 11 (Pentium 4) und einer Arbeitszeit von 14  h pro Tag. Damit ergiebt sich folgende Formel:
P * C * h =  R * 24 ; wobei C die Anzahl der Desktop-PCs ist die benötig werden um die  Leistung des Referenzsystem R bei einer Arbeitszeit der PCs von h Stunden zu erreichen. P ist die durchschnittliche PC-Leistung. Nach dem Umstellen erhält man C = R * 24 / P / h. Für meinen Fall ergab diese Formel das ich 42 PCs benötige. Das ist eine Menge. Besser wird dieser Wert, wenn man neben den PCs auch dedizierte Server einsetzt oder die Desktop-PCs ersetzt. Mit einem Zwei-Sockel-Server (SPECint_rate_base2006  = 158) ergibt sich dann einen PC Anzahl von nur 18. Distributed Computing lohnt sich nur, wenn ausreichend ungenutzte Rechenkapazität in Form von PCs zur Vergung steht. Weiterhin wurd in der Formel nicht beachtet, dass man die Aufgaben an verschiedene Clients mehrfach vergibt, um durch Überkreuzprüfung die Richtigkeit der zurückgelieferten Werte sicherstellt.
Ein weiterer Vorteil des Ditrubted Computing Ansatzen mit PCs besteht darin, dass diese Lösung automatisch mitwächsed. Normale PCs werden alle 2 bis 3 Jahr ausgetauscht und damit erneuert sich auch der PC-Cluster, es sind keine zusätzlichen Investitionen nötig. Aber es ist davon auszugehen, dass der Aufwand für das Datenmanagement beim Distributed Computing leicht erhöht ist und dass die Software angepasst werden muss.

Montag, 17. Mai 2010

Nutzen von UML

"Ich stelle fest, dass es zwei Wege gibt, ein Software-Design zu erstellen, entweder so einfach, dass es offensichtlich keine Schwächen hat, oder so kompliziert, dass es keine offensichtlichen Schwächen hat."
T. Hoare
UML ist ein wichtiges Thema in der Ausbildung von Informatikstudenten an den Universitäten. Deshalb ist es nicht verwunderlich, dass alle Uni-Absolventen glühende Verfechter von UML sind. Aber wie sieht es mit der Bedeutung von UML in der Programmierrealität aus? Dazu hatte ich eine kleine nicht repräsentative Umfrage in der Java Usegroup gestartet und möchte hier die Ergebnisse zusammenfassen.
Obwohl eine Mehrheit kein oder kaum UML einsetzt, sind sowohl die Probleme als auch gute Werkzeuge bekannt. Häufig wird UML eingesetzt zum Dokumentieren, zur internen und externen Kommunikation und zur Anforderungsanalyse. UML wird auf einem hohen Abstraktionslevel eingesetzt. Neben diesen Anwendungen gab es auch Forderungen an UML bzw. an die UML-Werkzeuge. Die wichtigsten sind die Integration in die IDEs, die Möglichkeit des Roundtrips und damit einer agilen Entwicklung mit UML. UML wird als statisch und kompliziert in der Anwendung wahrgenommen. Damit stellt sich die Frage, liegt dies an UML oder an den Werkzeugen?

Mittwoch, 12. Mai 2010

Wiki auf Tomcat

Auf Grund meiner Wissensmanagement-Affinität setze ich  zur Dokumentation meiner Arbeitergebnisse ein Wiki ein. Dies macht meine Ergebnisse einfacher nutzbar und erschließt leichter neue Benutzer. Als bekenntder Tomcat-Fan suchte ich nach einer Java-Wiki-Lösung die auf einem Tomcat läuft. Meine Wahl fiel auf VQWiki (http://www.vqwiki.org/). VQWiki steht für Very Quick Wiki und dies kann ich nur bestätigen. Download der WAR-Datei von Sourceforge, deployen - ferig, keine weiter Installation oder Konfiguration. Am besten benennt man die WAR-Datei noch um (z.B. vqwiki-2.8.1.war -> wiki.war), um die spätere URL über der das Wiki zu erreichen sein wird, zu vereinfachen. VQWiki benutzt nicht die vom Mediawiki (Wikipedia) bekannt Syntax ein aber dies ist kein Problem. Schön gelöst ist die Admin-Administration, es wird angenommen, dass der erste Benutzer der Admin ist, eine sehr schöne Lösung.