#
Archive for Oktober, 2006

File Types

Und wo wir doch mal gerade dabei sind, alles selber zu machen:
In der JDK fehlt eine komfortable Art, den Dateityp einer Datei zu bestimmen.
Zwar gibt es im Packet activation Möglichkeiten, über eine DataSource den MimeTyp einer Datei zu ermitteln, aber sehr komfortabel ist dies nicht. Und es wird wahrscheinlich nur die Dateinamenerweiterung benutzt.
Ich werde hier mal erörtern, wie ich das samt Fileheader-Auswertung gelöst habe.
    »more…

ExtendedProperties

Wie ich bereits in meinem letzten Artikel schrieb, war es einfacher eine eigene kleine erweiterte Properties Klasse zu erstellen, als die 1 MB von Commons zu holen.
Hier nun der Code der ExtendedProperties, den man sicherlich noch um viele Getter erweitern könnte, die ich jedoch gerade nicht brauche.
    »more…

Commons

Eigentlich bin ich ein großer Fan der Apache Jakarta Commons Packete, enthalten sie doch teilweise überlebenswichtige Packete, wie etwa das Fileupload, ohne das Fileuploads in Servlets und JSP Seiten sehr schwer wären.

Doch neulich wurde ich auch mit den großen Hacken dabei vertraut: Ich suchte, nichts ahnend, eine Properties-Klasse, welche Properties auch als Integer oder List Objekt zurückliefern kann.
Das entsprechende packet heißt Configuration. Also habe ich dieses Packet in mein Projekt eingefügt und getestet. Prompt wurde mir angezeigt, dass Klassen aus den Packeten IO und Lang fehlen. OK. Diese auch heruntergeladen.
Nächster Fehler: Packete Collections und Logging fehlen. Erst mit diesen allen Packeten kam ich in den Genuß der Properties-Datei.

Ja, das Hauptproblem bei den Commons Packeten ist ihre Abhängigkeit untereinander. Obwohl ich mich für Log4J für das Logging entschieden hatte, wollen andere Packete nun das Commons Logging. Klar, es ist sehr klein, aber ich will es nicht!
Letzten Endes waren es >1 MB an Packeten, nur um einen komfortablere Properties-Lösung zu haben.

Nun werde ich meine eigene Properties-Klasse schreiben, die garantiert nicht größer sein wird als 1 kb.

Schlimmes Ende

So heißt nicht etwa die Prognose für die Menschheit der nächsten Jahre, sondern ein Jugendbuch von Philip Ardagh.
Schlimmes Ende, das ist das Haus, in dem die verrückten Verwandten des etwa 13 jährigen Protagonisten Eddie Dickens leben und in das er jetzt einziehen soll, weil seine Eltern eine komische Krankheit haben. Komisch, nicht nur wie „merkwürdig“, sondern auch wie „ich lach mich kaputt“.

    »more…

Encoding Raterei

Wenn man Text-Dateien / Streams in Java lesen will, sollte man wissen, welches Encoding der Text benutzt. Zwar ist dies für Dateien auf ein und demselben Rechner unproblematisch, da jedes System ein Default Encoding benutzt, aber wenn man zwischen verschiedenen Systemen Texte tauscht, so kann es passieren, dass plötzlich Sonderzeichen kryptisch erscheinen.

Die Java API besitzt per se keine Funktionalität, um sich das Encoding eines Textes ermitteln zu lassen, zumal dies scheinbar auch nicht immer so einfach zu sein scheint. Im Gegensatz zu binären Dateiformaten besitzen Textdateien üblicherweise keinen Header. (Ausnahmen bilden da XML und HTML Dokumente, welche das encoding- / charset-Attribut im Text enthalten, aber auch nicht immer.)

Hilfreich ist da eine kleine Klasse mit dem Namen SmartEncodingInputStream aus dem Paket „Guess Encoding“ von Guillaume Laforge, welche anhand der ersten Bytes aus dem Stream das Encoding „rät“.
Ja, rät. Denn es kann nicht alle hunderte Encodings zu 100% erkennen, hilft jedoch bei den am meisten verbreiteten.

Java==JavaScript?

Einige, wohl verrückte, Entwickler haben es geschafft: Ein Java to JavaScript Crosscompiler.
Ja, wirklich.

Das Java2Script Open-Source Projekt hat bereits die Eclipse SWT-Libraries und diverse Java Packete umgesetzt, so dass man spontan seine SWT-GUI Applikation in Javascript umwandeln kann.

Der Crosscompiler ist als Eclipse-Plugin konzipiert und man kann sich einige Demos auf der Homepage anschauen.
Ich frage micht, ob man dann auch mit Javascript wie in Java auf einem Graphics-Objekt zeichnen kann. Die Darstellung von z. B. diagonalen Kanten in einem Graphen war meines Erachtens in Javascript nicht so einfach möglich.

Vielleicht kann ich ja mein jNeuroJam in eine Javascript-Version umwandeln.

Naja, bin mal gespannt, was die Leutchen noch so alles entwickeln werden.

Haarsträubender WTF

Wie ihr wißt, lese ich regelmäßig the daily wtf, in dem kleine und große Geschichten erzählt werden, bei denen man sich als Tekki „what the fukk ?“ denkt. Doch der neue Vierteiler über „Virtudyne“ übertrifft alle bisherigen Erzählungen. Den muss man gelesen haben, ob Koder, Projektleiter, Manager, Finanzier oder CEO.
Eine klassische .com Geschichte, mit keinem Raise, aber einem $200M Fall. Echt unglaublich.

  • Virtudyne I: The Founding
  • Virtudyne II: The Gathering
  • Virtudyne III: The Savior Cometh
  • Virtudyne IV: The Digital Donkey
  • K(r)ampf mit Office

    Es ist zwar etwas länger her, dass ich meine Diplomarbeit schrieb, aber ein Artikel in the daily wtf über Performance fressende Officeanwendungen erinnerte mich an meinen Kampf mit verschiedenen Officeprodukten während dem Verfassen meiner Arbeit.
    Nachträglich möchte ich hier meine Erfahrungen mit euch teilen.
        »more…