Archiv der Kategorie 'Entwicklung'

undefined

Montag, den 2. April 2007

Interessante Fehlermeldung in JavaScript:
undefined.gif

Lag übrigens daran, daß das Script auf eine eigene defined()-Funktion zurückgreifen wollte, die tatsächlich noch nicht definiert war…

function defined(obj) {
return(typeof(obj) != ‘undefined’);
}

Schönere Graphen

Donnerstag, den 22. März 2007

Für eine intern entwickelte Software habe ich nun die Grafik-Bibliothek überarbeitet:

test.png

Sieht zwar nicht so wahnsinnig spektakulär aus, steckt aber doch einige Arbeit dahinter. Wer schon mal eine Funktion für Kreissegmente mit Anti-Aliasing programmiert hat kann das sicher nachvollziehen. :-)

Ein paar Pixel sitzen noch nicht so ganz perfekt, das wird aber auch noch erledigt. Jedenfalls gibt’s nun eine C++-Klasse für alle notwendigen Grafikfunktionen (natürlich mit Anti-Aliasing) und statt bisherigem Pixeltext dank FreeType2 auch richtig schöne Schriften (inklusive der obligatorischen UTF8-zu-Unicode-Konvertierung). Ach toll… :-)

:gutenacht:

STL-Performance

Mittwoch, den 21. März 2007

Ich habe mich kürzlich etwas über den Performance-Aspekt beim Einsatz der STL in geschwindigkeitskritischen C++-Programmen informiert. Manche Sachen könnte man unter Umständen schon schneller machen, aber:

Life’s too short to spend reinventing [yacc,STL,wheels]

Das ist ein Argument. ;-)

Das Zitat stammt übrigens von jemandem, der die Regentropfen einer Szene in “Das Große Krabbeln” mit STL programmiert hat (siehe hier).

Inder statt Kinder

Dienstag, den 20. März 2007

Lesenswerter Artikel auf dem Heise Newsticker: SAP gibt Entscheidungskompetenz nach Indien ab. Schade, daß heute nicht schon 1. April ist…

Aber noch trauriger finde ich persönlich den Umstand, daß SAP mit dieser massiven Offshore-Entwicklung auch in einem Segment den Preiskampf einläutet, welches bisher noch unglaublich hohe Gewinne eingefahren hat. Klar kann man mittelständischen Unternehmen keine Business-Software für fünf- bis sechstellige Beträge verkaufen, aber wäre es nicht sinnvoller lieber einen geringeren Gewinn einzufahren und dafür die Kompetenz im eigenen Land zu behalten?

PHP 4.4.6, 4.4.7, 4.4.8, …

Freitag, den 2. März 2007

Nach den Problemen mit PHP 4.4.5 wurde gestern die Version 4.4.6 freigegeben. Gleichzeitig startete aber auch der “Month of PHP Bugs” - ein Projekt einiger frustrierter Sicherheitsspezialisten. Die ersten Einträge existieren schon - mal schauen wie lange es dann bis zur Version 4.4.7, 4.4.8, 4.4.9, … braucht. ;-)

A propos… habe ich eigentlich schon erwähnt, daß ich (persönlich) PHP als Platform für “redistributable Applications” nicht zuletzt aus diesem Grunde für völlig ungeeignet halte? Als Hersteller einer PHP-Anwendung hätte ich Angst um die Lauffähigkeit meiner Anwendungen bei jedem einzelnen PHP-Update.

Klar, die C-Laufzeitumgebung ist auch nicht wirklich fehlerfrei, aber definitiv mit einer höheren Stabilität gesegnet als PHP.

Systemaufruf-Visualisierung

Dienstag, den 6. Februar 2007

Stefan hat mir heute einen Link zum Thema “Why Windows is less secure than Linux” geschickt, auf dem zwei Graphen zu sehen sind. Auf diesen werden die Systemaufrufe des Apache Webservers (httpd) und des Microsoft Internet Information Servers (IIS) visualisiert und verglichen. Fazit ist, dass der IIS unsicherer sei, weil er mehr Systemaufrufe ausführe.

Ehrlich gesagt halte ich von dieser Schlußfolgerung nicht sehr viel, da eine hohe Anzahl an Systemaufrufen nicht zwangsweise zu einer unsicheren Software führt. Auch kompakte Programme können scheunengroße Lücken aufweisen, während hochkomplexe Anwendungen auch extrem sicher sein können. Man darf also auch die Sicherheit von Programmen nicht alleine nach deren “Aussehen” beurteilen.

Was ich aber interessant fand, waren die Graphen. Die Aussagekraft hält sich zwar ziemlich in Grenzen, aber trotzdem schauen die cool aus. :-)

Wer sowas nachmachen will, hier ist eine 2-Minuten-Anleitung für sowas.

Benötigt werden strace, GraphViz und Perl.

Als Testobjekt dient die Ausgabe von einem einfachen “ls -l” Befehl. Diese erhalten wir mit dem Befehl

strace -q -v -o trace.txt ls -l

Da schneiden wir nun die Namen der Systemaufrufe heraus:

cut -d ‘(’ -f 1 trace.txt

Wenn wir das durch folgendes winziges Perl-Script pipen, erhalten wir daraus eine schicke .dot-Datei für GraphViz:

#!/usr/bin/perl -w

my $lastline = ‘’;
my %LINKS;

print “digraph G {\n”
.” size=\”6.0\”\n”
.” node [ fontname=verdana, fontsize=10 ];\n”;

while (my $line=<>) {
chomp($line);
if ($lastline ne ‘’ && $lastline ne $line) {
my $link = “$lastline -> $line”;
if (!defined($LINKS{$link})) {
$LINKS{$link} = 1;
print “\t$link\n”;
}
}
$lastline = $line;
}
print “}\n”;

Sorry, die Einrückungen gehen bei Wordpress leider verloren. Als kleines Feature werden doppelte Kanten übrigens herausgefiltert.

Das Perl-Script beispielsweise als “grapher.pl” speichern, und dann so aufrufen:

cut -d ‘(’ -f 1 trace.txt | grapher.pl > trace.dot

Mit “dot” erzeugen wir dann noch eine PNG-Datei aus dem Output:

dot -T png -o trace.png trace.dot

Und fertig ist der Systemaufruf-Graph. :-)

strace-GraphViz

Bei einer etwas komplexeren Anwendung (unserer neuen Admin-Oberfläche - mit integriertem Webserver :-) ) sieht der Output dann übrigens so aus:

out4.jpg

Schaut den anderen Graphen (von der eingangs erwähnten Website) ziemlich ähnlich.

Keine Unschärfe bei Knuth

Samstag, den 25. November 2006

Ich bin ein wenig enttäuscht, dass Knuth im dritten Teil seines Werkes (”Sorting & Searching”) kein Wort über unscharfe Suchalgorithmen, insbesondere phonetische Suche, verliert.

Dabei gibt’s sooo viele tolle Sachen - unter anderem Double Metaphone und Levenshtein (welche ich mir für eine aktuelle Anwendung mal genauer anschauen werde). Vielleicht arbeitet Knuth die ja auch in der nächsten Auflage mit ein. ;-)

Ich werde nun den Computer herunterfahren und anschließend eine scharfe Portion Cannelloni backen. Mahlzeit. :-D

Informatiker-Bibel

Mittwoch, den 15. November 2006

Gestern brachte Amazon ein schwere Buchpaket mit nicht weniger schwerem Inhalt:
The Art Of Computer Programming

Donald E. Knuth - The Art Of Computer Programming. Bisher hatte ich in nur in der Uni-Bibliothek durch diese Bände blättern können (nicht ausleihbar), aber nun hab’ ich mir die mal selber gegönnt. Durch den aufwendigen Leinen-Hardcover-Einband mit Goldprägung am Buchrücken usw. hat Addison-Wesley diese Reihe wahrscheinlich absichtlich zu einem Luxusartikel gemacht. Ich finde es sehr schade, dass es keine günstigen Paperback-Varianten gibt, welche ich letztendlich auch beim Lesen “bequemer” finde.

Aber zum Inhalt: dieses Buch ist ein absolutes MUSS für jeden ernsthaften Softwareentwickler. Es geht darin weder um .NET oder EJBs, sondern um die absoluten Grundlagen der Programmierung. Die ersten drei Bände decken dabei die Bereiche der internen Datenstrukturen (Arrays, verknüfpte Listen, Bäume), Numerik & Arithmetik (Zufallszahlen, Gleitkommaarithmetik) sowie Suchalgorithmen ab. Etliche Bände stehen noch aus; vom vierten Band sind einige Kapitel bereits “vorab” als einzelne Bücher veröffentlich, Band Fünf erwarte ich persönlich am sehnlichsten (Lexikographische Analysen & Parser). Sprachtheorie (Band sechs) und Compiler (Band sieben) werden unter Umständen nie erscheinen - oder zumindest nicht von Knuth verfasst werden können.
Besonders faszinierend ist jedoch die Geschichte hinter dieser Buchreihe. Knuth hat es sich zum Lebensziel gesetzt, ein Buch über alle Grundlagen der Informatik zu verfassen. Begonnen hat er damit vor fast 40 Jahren, und in der Zeit hat sich auch wieder viel geändert, so dass Band 1+2 beispielsweise nun in der dritten Version vorliegen. Knuth ist nunmal “leider” ein Perfektionist, und das führt eben zu dieser extrem langen Publikationsdauer.

Eine Nebenwirkung des Perfektionismus ist übrigens folgende: Knuth belohnt jeden Erstentdecker eines beliebigen Fehlers (also auch Tippfehler!) mit einem Scheck über $2,56 (im Buch befinden sich Hinweise, wie man Fehler melden kann). Lustig ist nur, dass kaum jemand diese Schecks einlöst, sondern die meisten Leute diese eingerahmt über den Schreibtisch hängen. ;-)

Auf Wikipedia gibt es einen sehr interessanten und recht ausführlichen Artikel über The Art of Computer Programming.