Technische Details

Diese Seite beschreibt in Kürze die verwendeten Tools, Programmiersprachen, Algorithmen und Ideen, die in diesem Projekt verwendet wurden.

Tools

vi
Der vi - in der Variante vim - ist mein tägliches Universalwerkzeug für Programmierung und Administration. Danke an die (Weiter-)Enwickler dieses Faustkeils aus der Computersteinzeit.
Unixartige Betriebssysteme wie Linux und die BSD-Varianten.
Den vi gibt es auch unter dem Allerwelts-Betriebssystem. Aber viele andere schöne Dinge wie Shells, Regexes, Compiler, Programmiersprachen gibt es in unixartigen Betriebssystemen mit dabei und voll integriert.
Andere Betriebssysteme kann man nicht ganz ausschließen, zumindest wenn man fürs Web entwickelt, muss man die verschiedenen Browser testen.
Perl
Die Mächtigkeit der Sprache und ihrer Module ist genauso faszinierend wie der Voodoo ihrer Syntax. Anders gesagt: Unix-Tools im Quadrat für alle Betriebssysteme.
C/C++
Immer verwendet, wenn viel gerechnet wird.
Die erstere ist schlank, schnell und "gefährlich", die zweite gebärdet sich zivilisierter, verleugnet ihren Ursprung aber nicht.
C: "Gib mir einen Pointer und ich hebe die Welt aus den Angeln!"
C++: "Gib ein paar Objekte und ich jongliere dazu."
PostgresQL
Meiner Ansicht nach die Open-Source-Datenbank, wenn man sich nicht in die Lizenz-Politik kommerzieller Anbieter verstricken möchte.
Subversion
Freies Versions-Kontrollsystem. Ob es das beste ist oder das schlechteste weiss ich nicht. Eine wichtige Eigenschaft ist, dass es auch binäre Daten (z.B. Bilder) mit verwaltet.
Gimp
Freies Grafik-Tool. Hat alles, was ich von einem pixelorientierten Grafik-Programm erwarte.

Technik

Analyse
Die Hauptleistung von Sudoku-Rating DE ist die Analyse und Bewertung von Sudoku-Puzzlen. Verwendet wird hier ausschließlich Perl. In einem objektorientierten CPAN-fähigen Modul werden die Methoden für dieLösungsstrategien als Referenzen registriert, die in der Reihenfolge ihrer Registrierung verwendet werden. Das hält das rating flexibel und offen für neue Strategien. Die Analyse wird nicht auf dem Webserver durchgeführt.
(Das Modul ist im Moment nicht öffentlich verfügbar)
Erzeugung und Lösung
Technisch gesehen ist das Perl-Modul in der Lage Spielfelder und Puzzles zu erzeugen und Puzzles zu lösen. Das Problem ist die Dauer des ganzen. Aus diesem Grunde gibt es zusätzlich eine C++-Klasse, die diese Aufgabe in der 100-fachen Geschwindigkeit erledigt. Danken möchte in Donald Knuth für die Entwicklung des dancing-link Algorithmus der in diesem Modul werwendet wird. (Das Modul ist im Moment nicht öffentlich verfügbar)
Speicherung
PostgreSQL wird local als universeller Datenspeicher für die erzeugten Daten verwendet. Die Kommunikation wird mittels Perl-Scripten abgewickelt.
Grafik
Perl-Scripte erzeugen mittels der GD-Bibliothek die Puzzle-Bilder. Die Bilder für die Strategie-Beispiele wurden mit Gimp nachbearbeitet.

Das Tortendiagramm für die Statistik auf der rating-Seite wurde mit dem Perl-Modul Chart::Pie erstellt.

XML
XML mit DTD wird mit dem Perl-Modul XML::Simple erzeugt und gelesen.
XML mit Schema wurde über eine Transformation mit XSLT (XSLT-Datei) und dem Tool xsltproc aus der libxml2-Bibliothek erzeugt.
PDF
Ursprünglich wurden die PDF-Dateien mit dem Perl-Modul PDF::CreateSimple aus den XML-Dateien mit Hilfe von PDF::CreateSimple erzeugt. Diese Dateien waren jedoch extrem groß. Deshalb werden die PDF-Dateien jetzt mit XSLT und XML-FO (XSLT-Datei)) aus den XML-Dateien (Schema) und fop aus dem Apache-Projekt erzeugt.
Web
Die Web-Seite handelt im Moment noch alles statisch ab, bis die Struktur steht, dann kommt Perl.