B-Spline Spielzeug

19. Juni 2010

Im Rahmen der Lehrveranstaltung Computergrafik wurden unter anderem B-Splines besprochen. Da man mit der “rohen” Mathematik dieser Kurven erst mal wenig anfangen kann, habe ich die B-Splines in einer kleinen Java Anwendung implementiert. Nach dem Start sieht man eine B-Spline wie sie in einer der Übungsaufgaben im Praktikum Computergrafik durchgenommen wurde.

Screenshot

Die ausführbare JAR-Datei gibt es hier:
B-Spline Spielzeug Version 0.5
(Benötigt eine installierte Java Laufzeitumgebung)

Fixing hgwebdir.cgi on Windows (zlib.error: Error -3 while decompressing)

25. Oktober 2009

Today, I tried to setup hgwebdir.cgi to access my mercurial repositories using Apache on Windows. Everything went fine until I tried to clone one of the repositories on my laptop:
Traceback (most recent call last):
File "hg", line 38, in
File "mercurial\dispatch.pyc", line 16, in run
File "mercurial\dispatch.pyc", line 27, in dispatch
File "mercurial\dispatch.pyc", line 43, in _runcatch
File "mercurial\dispatch.pyc", line 449, in _dispatch
File "mercurial\dispatch.pyc", line 317, in runcommand
File "mercurial\dispatch.pyc", line 501, in _runcommand
File "mercurial\dispatch.pyc", line 454, in checkargs
File "mercurial\dispatch.pyc", line 448, in
File "mercurial\util.pyc", line 402, in check
File "mercurial\commands.pyc", line 636, in clone
File "mercurial\hg.pyc", line 286, in clone
File "mercurial\localrepo.pyc", line 2177, in clone
File "mercurial\localrepo.pyc", line 1466, in pull
File "mercurial\localrepo.pyc", line 2043, in addchangegroup
File "mercurial\revlog.pyc", line 1210, in addgroup
File "mercurial\changegroup.pyc", line 30, in chunkiter
File "mercurial\changegroup.pyc", line 14, in getchunk
File "mercurial\util.pyc", line 925, in read
File "mercurial\httprepo.pyc", line 19, in zgenerator
zlib.error: Error -3 while decompressing: invalid distance too far back

After digging through hgwebdir.cgi, cgi.py, webutil.py, socket.py, etc., I found the cause of the problem:
Python opens stdout in text mode.
That’s OK on Linux (because there seems to be no difference between text mode and binary mode), but it is a problem on Windows, where in text mode, \n is translated to \r\n. This breaks any binary file transfer that contains \n.

I found a solution here: Change the first line of hgwebdir.cgi from
#!C:\Python26\python.exe
to
#!C:\Python26\python.exe -u
to tell Python to open stdout in binary mode. Problem solved.

Geldverschwendung

6. August 2009

… bei der Bundesagentur für Arbeit, oder:
Wie man die Wirtschaft auch ankurbeln kann.

Man bestellt einfach 170.000 PCs für 68 Millionen Euro, die in ihrer Leistung weit über dem liegen, was benötigt wird. Laut Artikel die derzeit größte Ausschreibung in Europa.

Link: Spiegel Online

Ein Kaktus blüht

26. Juni 2009

Gesten hat sich unser Kaktus dazu entschlossen endlich zu blühen. Da er das nur 1–2 Mal im Jahr tut, hab ich das ganze mal in einem Zeitraffer festgehalten. Kamera + Stativ + Laptop (für das zeitgesteuerte Auslösen). Leider war der Kamera-Akku relativ schnell (nach ca. 3,5 Stunden) leer, sonst hätte ich noch länger aufgenommen.

Hier nun das Video:

Vorschaubild Kaktus Zeitraffer

Systemtheorie, 3. Hausaufgabe

25. Juni 2009

(Eine) Lösung für die 3. Hausaufgabe in Systemtheorie als PDF

Quellcode Update

3. Mai 2009

Der allseits gefürchtete Stern des vierten Arbeitsblatts in Programmieren 2, und die Quellcodes zu den Blättern 3 und 4 in Algorithmen und Datenstrukturen sind jetzt online.

Gegen Zensur

21. April 2009

Wer sich nicht von Zensur-Ursula vorschreiben lassen will, welche Seiten er aufrufen darf, und welche nicht, der sollte sich einen anderen DNS Server als den des Providers zulegen. Hintergrund: Unter dem Deckmantel »Wir wollen Kinderpornographie im Internet bekämpfen« werden »Sperrlisten« an (bisher fünf) Provider verschickt, die die aufgelisteten Domains blockieren. Die Listen sind »geheim«, d.h. kein Datenschützer, Richter, o.ä. bekommt sie zu sehen. Dadurch wird der willkürlichen Zensur von Seiten Tür und Tor geöffnet. Gleichzeitig ist das Verfahren so löchrig wie ein Käse aus einem unserer Nachbarländer. Da nur die Namensauflösung im vom Provider betriebenen DNS Server blockiert wird, reicht es aus, einen anderen DNS Server im Router einzutragen. (Die Regierung hat übrigens so viel Angst davor, das die Sperrlisten an die Öffentlichkeit gelangen könnten, das man gleich die »kleinen« Provider von der Sperrung ausgenommen hat. Da könnte ja jemand die Liste unter der Hand weitergeben.)

Meine Empfehlung: OpenDNS als Ersatz-DNS. Hier werden einem einige nette Funktionen geboten:

  • Statistiken
  • Shortcuts zu bestimmten Seiten (das könnte man natürlich auch im Browser haben)
  • Shortcuts zu bestimmten Seiten (das könnte man natürlich auch im Browser haben)
  • Phishingschutz
  • Sperrlisten
  • Aktuell: Conficker status. (»OpenDNS has detected no suspicious queries related to the Conficker virus from your network.«)

Bei OpenDNS kann man wenigstens selbst bestimmen, was geblockt wird, und was nicht. Wer also schon immer mal myspace blockieren wollte, wird hier fündig.

Einige der Funktionen sind daran gekoppelt, das man, ähnlich wie bei DynDNS, seine aktuelle IP Adresse anmeldet. Sehr einfach geht dies mit Unterstützung im Router. Wer einen Linksys Router besitzt, kann z. B. die Tomato Firmware installieren, und dort bequem seine OpenDNS Daten eintragen:

Programmieren 2 – Java – Blatt 3

7. April 2009

Unter »Quellcodes« ist nun der Code zu Programmieren 2 Übungsblatt 3 (und ein bisschen mehr) verfügbar.

Neue Quellcodes

30. März 2009

Nachdem das ganze für Programmieren 1 schon gut funktioniert hat, stelle ich jetzt auch meine Lösungen für die Aufgaben aus Programmieren 2 (Java) online.

Die Betonung liegt auf »meine«, d.h. es sind keine Musterlösungen. Wer Fehler findet oder Verbesserungsvorschläge hat, darf diese gerne melden :-)

OpenOffice Update – Crash

20. Februar 2009

Nachdem ich OpenOffice schon länger nicht mehr gestartet hatte, wurde ich heute mit folgendem Hinweis begrüßt:
oooupdate_step1

Gut, lassen wir das Update halt laufen:

oooupdate_step3

Und was passiert nach ca. zehn Sekunden? OpenOffice schmiert ab. Man wird mit folgendem Fenster begrüßt:

oooupdate_step4

Startet man nun die Dokumentwiederherstellung, startet auch OpenOffice neu, und man landet wieder bei Schritt 1. Abhilfe: Das Setup für OpenOffice 3.0.1 selbst von der Website laden. (Wieso gibt es eigentlich kein »echtes« Update von Version X auf Version X+1?)