Freitag, 29. Oktober 2010

PHP4 und das domxml

Vor sehr langer Zeit habe ich mal eine PHP4-Anwendung geschrieben, die jetzt auf einen neuen Server migriert werden soll. Natürlich gibt es da kein PHP4 mehr, was auf Grund der recht brauchbaren Abwärtskompatibilität von PHP5 kein allzu großes Problem darstellt. Die Anwendung ist nämlich eher einfach gehalten. Probleme habe ich nur mit den Konstrukten, bei denen ich die rudimentäre Objektorientierung von PHP4 verwendet habe. Was es aber ganz konkret mit PHP5 nicht mehr gibt, ist die domxml Bibliothek. Mit PHP5 kommt das nämlich alles onboard mit. Damit das ganze trotzdem funktioniert gibt es XML transition from PHP4 domxml to PHP5 dom. Einfach includen und schon stehen die alten domxml-Funktionen wieder zur Verfügung. Der Migrationsaufwand tendiert an dieser Stelle gegen null. So etwas gefällt mir natürlich.

Montag, 25. Oktober 2010

Swingen mit Wingdings, Webdings und Symbol

Auf Windowsplatformen gehören die Symbol-Fonts ja irgendwie zum Inventar. Ich erinnere mich an ein frühes Windows und eine Hand voll Fonts, die da mitgekommen sind. Einer davon natürlich Wingdings. Auf meinem guten alten XP finden sich da inzwischen auch noch ein paar mehr Derivate, wie Windings 1 und 2, sowie Symbol. Ich persönlich kann mich nicht erinnern, die Fonts je gebraucht zu haben und in Zeiten von Unicode sind die ja auch zum Teil obsolet geworden. So kann man locker mit einem "\u263b" und Times New Roman einen Smiley zaubern . Nun wurde ich aber mit Zeichen aus den Symbol-Fonts konfrontiert und damit, dass diese nicht darstellbar seien. Datsächlich gibt es dazu auch einen Bugeintrag, der aber nur lapidar erklärt, dass der Font seine Zeichen eben nur in einem bestimmtem Unicodebereich preis gibt. Für viele Benutzer dürfte das eher wie ein Bug aussehen, wenn sie, wie gewohnt, ein 'S' eingeben und trotz Symbol-Font kein Summenzeichen erhalten, wie es in jeder nativen Anwendung der Fall ist. Weil wir das aber brauchen, habe ich da eben mal ein paar Zeilen zu gebastelt. Es ist zwar nicht die feine Englische den String neu zu bauen, aber eine bessere Möglichkeit bietet sich leider nicht. Besser wäre es natürlich, man würde direkt in die View, bei Swing also in die UI-Klassen, eingreifen.

public static String convertToSymbol(final String s) {
        if(s==null) {
            return null;
        }
        
        final StringBuilder sb = new StringBuilder(s.length());
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            sb.append((char)(c | 0x0000F000));
        }
        return sb.toString();
    }

Freitag, 22. Oktober 2010

Bald kein Java mehr auf OS X

Apple will wohl seine proprietären Ambitionen weiterführen und markiert Java als deprecated für OS X. Das heißt in der Praxis, keine Pflege der OS X-Implementierung von Apples Seite. Vielleicht gibt sich Oracle ja her, glauben tue ich das aber nicht. Bisher hat Oracle wenig Uneigennützigkeit an den Tag gelegt, denn das Interesse für OS X wird sich bei Oracle in deutlichen grenzen halten.

Worauf das ganze abzielt lässt sich nur spekulieren. Bisher wurde die Java-Implementierung von Apple auch eher unregelmäßig gepflegt und Sicherheitslücken standen oft lange offen, bis Besserung kam. Man distanziert sich vermutlich von dem ohnehin ungeliebten Kind Java und setzt weiter voll auf Entwicklungen aus dem eigenen Haus. Wer für OS X entwickeln möchte, der soll das vermutlich am besten mit der eigenen IDE XCode tun. Jedenfalls dann, wenn man Wert darauf legt, seine Anwendung auch im zukünftigen Appstore für OS X zu präsentieren.

In meiner subjektiven Konzern-Unbeliebtheitsskala ringen Apple und Oracle derzeit um den ersten Platz. Wenn auch aus unterschiedlichen Gründen.

via http://javabarista.blogspot.com/2010/10/deprecated-java-fur-mac-os-x.html

Update 13.11
Es geht doch. Ehrlich gesagt bin ich überrascht. via heise

Donnerstag, 21. Oktober 2010

Webanwendungen beschleunigen

Ist schon blöd, wenn sich Webanwendungen langsam anfühlen. Die (leider in PHP geschriebene) Bibliothek CSS-JS-Booster nutzt einige Tricks, um den Webseitenaufbau zu beschleunigen. Besonders nett finde ich den, Dateien zu einem HTTP-Request zusammenzufassen. Einen guten Einstiegsartikel zu der Thematik gibt es bei peterkroener.de.

Unschlagbar ist ansonsten noch die Uralttechnik, mit Sprites zu arbeiten. Kurzbeispiel zum reinschnüffeln gibt es hier: www.websiteoptimization.com

Dienstag, 19. Oktober 2010

Oracle macht sich unbeliebt

Ist schon schlimm, was Oracle sich mit den von Sun zugekauften OpenSource-Projekten erlaubt. Erst mit Opensolaris (www.golem.de/1008/77424.html) dann LibreOffice (www.golem.de/1010/78718.html). Microsoft hat ja auch ziemlich lange gebraucht, um zu lernen, wie man mit Communities umzugehen hat. Bei Oracle steht die Erfahrung wohl noch aus. Ich hoffe, LibreOffice kann sich weiterhin behaupten und Oracle lernt im Umgang mit Community-Projekten dazu. Die Arroganz, mit der der Konzern derzeit auftritt, finde ich einfach unerträglich.

Sonntag, 17. Oktober 2010

Auftraggeber und "Etwas ganz einfaches"

Wenn Auftraggeber bei der Anforderung einer Funktionalität mit Sätzen wie "Muss auch gar nicht kompliziert sein" oder "Da reicht etwas ganz einfaches" kommen, schrillen bei mir immer die Alarmglocken. In den allermeisten Fällen reicht die einfache Lösung nämlich nicht und ein Rattenschwanz an Forderungen wird nachgereicht. Folgendes Verhalten stellt sich im weiteren Verlauf häufig ein:

1. Es soll nach Möglichkeit nichts kosten, was aber nicht heißt, dass die ausgelieferte Lösung den Ansprüchen genügt. Dies ist oft der Auftakt um das Gefeilsche einer jeden weiteren kleinen Funktion.
2. Der Auftraggeber meint eine Funktion, die er von woanders kennt, ist sich aber nicht im klaren, was da in Wirklichkeit alles hinter steckt. Wenn die Ideenquelle benannt wird, lässt sich der Aufwand im Vorfeld evaluieren und der Schaden in Grenzen halten. Leider kommt es meist anders und man kann im Nachhinein jede einzelne Funktion auf Zuruf nachpflegen.
3. Eigentlich hat sich der Auftraggeber gar keine Gedanken gemacht, was er eigentlich will. Entsprechend diffus ist die Beschreibung. Insich widersprechende Funktionalitäten sind da keine Seltenheit.

In vielen solcher Fälle meint der Auftraggeber, außerdem auf so etwas wie ein Pflichtenheft verzichten zu können, was in der Praxis heißt, dass ein solches gemäß dem Gesprächsverlauf erstellt werden muss. Die Überraschung ist oft groß, welchen Umfang dieses dann trotz der geringen Funktionalität doch annimmt.

Benoît Mandelbrot und die rekrusive Mathematik

Die Mandelbrot-Formen, oder Apfelmännchen kennt vermutlich jeder, der mit C= oder älteren Computern aufgewachsen ist. Der Entdecker dieser Formen, Benoît Mandelbrot, ist vor kurzem verstorben. Ein Genie, dessen Ideen in der Fachwelt nicht unumstritten waren. Diese im Grunde ganz einfachen, rekursiven Bilder gehörten bei mir, wie wahrscheinlich auch bei vielen anderen, zu einer der frühen Schritte auf dem Weg zur Programmierung. Umfänglich verstanden, was diese Mandelbrot-Formen eigentlich ausmachen, habe ich aber erst viel später. Aus aktuellem Anlass, möchte ich hierzu eine Dokumentation empfehlen, die die Möglichkeiten und das Vorkommen fraktaler Mathematik auf spannende Weise erzählt. Die vier Videos gehören zusammen.















Und nach der Dokumentation hat man auch gleich doppelten Spaß im Klassiker der Mandelbrot-Darstellung ein wenig herumzuklicken: http://spaz.ca/aaron/SCS/fractals/