Thursday, May 31, 2007

Bloggen vom Linuxtag

Wer wissen möchte, wie relativ untechnische, ungeekige, Medizin- und Philosophiestudentinnen den Linuxtag wahrnehmen, dem sei Evas Artikel "Bloggen vom Linuxtag" (und noch nachfolgende Artikel) ans Herz gelegt.
Erste Impression:

Mehr Maenner als auf dem Deutschlandtag der Jungen Union.

Zweite Impression:

Die Tastaturbelegung dieses Rechners kann nicht herausgefunden werden von den Herren Informatikern um mich herum, weswegen ich auf gut Glueck und ohne Umlaute und unter Verzicht auf die meisten Satzzeichen schreiben muss. So ist das bei freien Softwareprojekten. Das sei wie Katzen hueten, habe ich heute schon gelernt.

Thursday, May 17, 2007

Eclipse-Emma-Plugin: EclEmma

Emma ist ein Werkzeug zur Überdeckungsanalyse für Javacode. Man kann damit Basisanalysen erstellen wie gut JUnit-Tests die verschiedenen Zweige im Code überprüfen.

Doch der Einsatz der Emma-Bibliothek alleine ist ziemlich aufwendig. Man muss manuell den Code instrumentalisieren und Berichte aus den gesammelten Informationen erstellen. Mit einem guten ant-Skript ist dies kein Ding, aber für den einzelnen Entwickler/Unittester doch zu viel Aufwand.

Mit EclEmma (momentan Version 1.2.0) gibt es ein sehr gutes Eclipse-Plugin, das den ganzen Prozess extrem abkürzt. Die Coverageprüfung integriert sich als zusätzlichen Lunchmode (neben Debug und Run). Damit wird das Durchführen einer Coverageprüfung ein Kinderspiel. Der Code wird automatisch instrumentalisiert und die Resultate werden automatisch ermittelt und dargestellt.

Apropo Ergebnisse:
Bei der Anzeige der Ergebnisse zeigt sich der wahre Vorteil des Plugins. Ähnlich wie bei der Edition für Tester von Visual Studio 2005 werden die Überdeckungsinformationen direkt im Codeeditor angezeigt. Extrem übersichtlich. Man sieht direkt, wo die Tests noch nicht ausreichen.

Ich kann das Plugin nur empfehlen. Man erhält ohne großen Aufwand einen echten Mehrwert bei der Überdeckungsanalyse. Es ist nicht einmal notwendig die Projekteinstellungen zu verändern.

"USA Erklärt" für Grimme-Preis nominiert

Das Blog "USA Erklärt", welches ich im Februar empfohlen habe, wurde jetzt für den Grimme-Preis nominiert.

Viel Glück von meiner Seite.
Ich fände es gut, wenn eine Seite gewinnt ,die durch ihren Inhalt besticht (wie USA Erklärt) und nicht nur durch schickes Design (wie IMHO einige der Mitbewerber)

Nachtrag zu Jabber

In dem Artikel "Fazit vom 1. Webmontag" habe ich geschrieben, dass mir der Jabber-Vortrag überzeugt hat und ich nochmal versuche werde von ICQ nach Jabber zu wechseln.

Naja, nach einigen Beschwerden ich sei ja nie online oder würde auf Nachrichten nicht antworten, bin ich heute zumindest zu 50% zurückgewechselt: Das ICQ-Gateway vom Jabberserver nutze ich nicht mehr.

Ich konnte zwar ICQ-Kontakte sehen und selbst auch Konversationen beginnen. Für mich sah also alles gut aus. Aber mein Online-Status wurde nicht gesehen und eingehende Konversationen wurde nicht weitergeleitet. Von der anderen Seite sah es also gar nicht gut aus.

Fazit:

  1. Es hat nicht so gut funktioniert wie gehofft, aber ich werde Jabber weiterhin als Zweit-Account nutzen.
  2. Die Idee und auch die Umsetzung von Jabber finde ich super. Aber die Massenträheit, ...
  3. Wenn einige Leser sich gewundert haben, dass ich nie online war und nie geantwortet habe. Ich bin nicht schuld, die Technik ist schuld ;-)

"Writing Better (Java) Code: A Conversation with Brian Goetz

In dem Interview mit dem unhandlichen Titel "Writing Better Code: A Converstion With Sun Microsystems Technology Evangelist Brian Goetz" im Sun Developer Network verbringt sich ein sehr interessanter Artikel über Javaprogrammierung und insbesondere zur Fragen der Performance.

Insbesondere will Goetz, der Hauptautor von "Java Concurrency in Practice"(amazon.de,ub.upb.de), mit einigen Performancemythen aufräumen.
So stellt er der Befürchung, threadsichere-Programmierung sei nur mit einem Verlust an Performance möglich, entgegen, dies sei vor 10 Jahren wahr gewesen aber heute nicht mehr:

Every major JDK release has reduced the overhead of synchronization over the previous version. Yes, there’s still overhead, but people worry too much about that and not enough about writing clean, correct code.

Interessant ist auch die Antwort auf die Frage wie Entwickler am besten schnellen Javacode schreiben:

The answer may seem counterintuitive. Often, the way to write fast code in Java applications is to write dumb code — code that is straightforward, clean, and follows the most obvious object-oriented principles. This has to do with the nature of dynamic compilers, which are big pattern-matching engines. Because compilers are written by humans who have schedules and time budgets, the compiler developers focus their efforts on the most common code patterns, because that’s where they get the most leverage. So if you write code using straightforward object-oriented principles, you’ll get better compiler optimization than if you write gnarly, hacked-up, bit-banging code that looks really clever but that the compiler can’t optimize effectively.
[...]
My advice is this: Write simple straightforward code and then, if the performance is still not "good enough", optimize. But implicit in the concept of "good enough" is that you need to have clear performance metrics. Without them, you’ll never know when you’re done optimizing. You’ll also need a realistic, repeatable, testing program in place to determine if you’re meeting your metrics. Once you can test the performance of your program under actual operating conditions, then it’s OK to start tweaking, because you’ll know if your tweaks are helping or not. But assuming "Oh, gee, I think if I change this, it will go faster" is usually counterproductive in Java programming.

Thursday, May 10, 2007

Wie man OOP nicht lehren sollte

Einer der wichtigen Regeln zur Vererbung ist, dass eine Klasse b nur von einer Klasse a ableiten sollte, "wenn jedes b auch ein a ist" zum Beispiel jeder "Button" ist ein "Control", aber nicht jedes "Prisma" ist ein "Dreieck":

Hier ist eine alte Klausuraufgabe, die ich (nicht an der Universität) vor langer langer Zeit "lösen" musste (Schon mal ein großes [sic!] an dieser Stelle, Rechtschreibfehler nicht von mir):

Definieren Sie Java-Klasse (Dreieck), die ein gleichwinkeliges Dreieck beschreibt. Hierfür benutzen Sie den geeigneten Datentyp für die Klassenvariable (Seitenlänge). Anschließen schreiben Sie eine Klasse, die ein main()-Methode beinhaltet, um die Flächen und den Umfang von zwei Dreieck-Objekten mit Seitenhängen 40.3 und 30.5 zu erstellen, die Flächen und den Umfang zu berechnen und die Seitenlängen und die berechneten Daten auszugeben.
[...]
Erweitern Sie die Dreieck-Klasse so, daß sie einem Prisma beschreibt, dessen Oberfläche und Volumen später benötigt werden. Achten Sie darauf, daß dem Benutzer der Klasse Prisma die Dareieckfläche verdeckt bleibt.

Ja, da kommen Erinnerungen wieder hoch. ;-)

P.S. Nein, ich gebe nicht die Quelle an. ;-)
Darum geht es in diesem Artikel auch gar nicht.

Tuesday, May 08, 2007

Stöckchen von Fredo gefangen

Ich habe mein erstes englisches Stöckchen von Frederick gefangen. Aber ich wechsele trotzdem mal wieder die Sprache. Nicht dass ich etwas gegen Englisch hätte, aber in einem Blog nur einen Stöckchenartikel auf Englisch zu schreiben, ist wenig sinnvoll.

Das Stöckchen geht an einen Vertreter des Chaos-Blogs, wenn die solche Sachen mitmachen.

Bücher:
Derzeit lese ich das Buch "Versuchungen der Unfreiheit" von Ralf Dahrendorf, in dem er sich damit beschäftigt, warum einige öffentliche Intellektuelle in Zeiten der Prüfungen nicht den Versuchungen der Unfreiheit (Faschismus, Kommunismus) erlegen sind.

Insgeheim warte ich auf die 2.0-Version eines meiner (früheren) Lieblingsbücher: "Mikrosklaven" von Douglas Coupland. Das Originalbuch ist spielt vor mittlerweile 14 Jahren und ist nicht mehr zeitgemäß. Zeit für "Mikrosklaven 2.0″. Zu Schreiben gäbe es genug.

Zeitungen:
Ich lese nur selten (meist auf langen Zugfahren) Zeitungen. Mir fehlt einfach die Zeit dafür. Wenn ich eine Zeitung aufschlage, dann meine Lokalzeitung "Die Glocke", Welt (kompakt) oder "Die Zeit".
Ersatz für die Tageszeitungen sind meine abonnierten RSS-Feeds, aber bei diesem Stöckchen geht es ja explizit um "gedrucktes" Lesbares.

Technische Bücher:
Im Moment liegt das "Dragonbook" über Compilerbau und "Effektiv C++ programmieren " von Scott Meyer auf meinem Nachttisch.
Ich warte auf die Lieferung von "Building Scalable Web Sites" von Cal Henderson.

Studium:
Nachdem ich den ganzen "Code Quality" und "Effektiv Java programmieren"-Sachen vom SmartTeams-Vortrag beiseite geräumt habe, sind einige Paper zum Thema "Data Dissemination in Large-Scale Sensor Networks" wieder aufgetaucht: PG-Vortrag steht an.

Tipps zur Softwareentwicklung für "SmartTeams"

Ich habe eben für die Projektgruppe "SmartTeams" einen Vortrag mit Tipps zur Softwareentwicklung gehalten.
Ziel war es die wichtigsten Themen zur Programmierung mit Java, zu den Möglichkeiten von Java 1.5 und zur Wartbarkeit von Code in eine Präsentation zu packen.

Als 45 Minuten Präsentation geplannt, wurden aber schon viele Folien bewusst ausgelassen und es fehlen immer noch Themen, die auf jeden Fall hätten enthalten sein müssen wie zum Beispiel Serialisierung, Cloneable und die Vorteile von Unveränderbarkeit. Behandelt wurden aber immerhin:

  • Schnittstellen als Typen anstatt Klassen
  • Vererbung und Komposition
  • Performance
  • Java Collections API
  • Java 1.5
  • Vertrag von equals() und hashCode()
  • Ausnahmebehandlung
  • Kommentare

Folien: (pdf, 2MB)

Weiterführende Links:

Kommentare und weitere Fragen bitte in den Kommentaren zu diesem Artikel

Monday, May 07, 2007

Pflichtenheft der Bachelorarbeit online [Update]

Zusätzlich zu der Bachelorarbeit habe ich auch das Pflichtenheft (64 Seiten) der Bachelorarbeit online gestellt.

Vielleicht hilft das Pflichtenheft anderen Studenten bei der Erstellung von Pflichtenheften für Studienarbeiten.

In Kürze wird auch die entwickelte Anwendung live gehen.

[Update: Link zum Pflichtenheft wurde korrigiert]

Wednesday, May 02, 2007

Schöne Panoramabilder meiner Uni

Schöne Panoramabilder meiner Uni gibt es bei Olaf zu sehen.

Schön grün und eine ganz nette Atmosphäre.
Interessent wäre es zum Vergleich Bilder der gleichen Orte im Winter zu haben.
Dann ist die Uni Paderborn grau und ziemlich hässlich.

Präsentation zur Architektur von LiveJournal

LiveJournal ist ein bekannter amerikanischer Bloghoster, der seine Serversoftware auch als Open Source verfügbar macht.

Dessen Gründer Brad Fitzpatrick (2005 würde LiveJournal an Six Apart verkauft) berichtet in diesem Video über deren Softwarearchitektur, deren Ansatz zu skalieren und die dafür eingesetzte meist-selbstentwickelte und als Open-Source veröffentlichte Software.

Der Foliensatz der Präsentation sind auch separat verfügbar.

[via Tech Presentations]