Donnerstag Juni 22, 2006

Today's Links

FLVTool2 - Ein Tool in Ruby zum Manipulieren von Macromedia Flash Video files (FLV).
ccMixter - Wer auf der Suche nach Songs für sein Podcast/Videocast ist, findet hier Songs unter der Creative Commons Lizenz.
Gardens Point Ruby.NET Compiler - Ruby für .NET
Ajax Projects
Best Video Sources Online
WeeklyShot - Photography Contest and Group Photoblog
PodGuide.tv - A guide to the best video content for your iPod.
Photoblogs.org - The Photoblog Resource

CGArena: Freie CG-Magazine

Wer sich für Computergrafik mit Photoshop, 3D Max, After Effects, usw. interessiert, findet bei CGArena ein paar freie Magazine mit interessanten Tutorials.


Mittwoch Juni 21, 2006

Cool! Der Abmahnsong schlecht hin.

"Es ist zum kotzen...", so lautet Nilzenburger's Artikelüberschrift. Recht hat er! Der Song ist auf jeden Falls hörenswert (und sei's nur für's kopfschütteln). Hoffentlich steigt er bald in die Charts ein. Vielleicht kapieren die Politiker dann auch mal, was hier in Deutschland in diesem Zusammenhang so abgeht! Ich find's auch zum KOTZEN!


Today's Links

Girls.c64.org v2 - Preserving the sexy side of the Commodore 64 ;-)
toxic - An Open Source Global Illumination Renderer
Secure iDisk with WebDAV+SSL+PAM on Debian/Apache2
Art of Illusion - Ein freies Open Source 3D Modelierungs- und Renderingstudio.
SCJP 5 Questions And Answers - Für alle angehenden Sun Certified Java Programmer

Dienstag Juni 20, 2006

Netzer mit Hut - Zu cool ;-)



Fussball per telnet verfolgen ;-)

http://www.ascii-wm.net/#

Viel Spaß!

Today's Links

Flofox Revisited - Flock Theme for Firefox
AllYouCanUpload.com - Hier kann man seinen Bilder kostenlos uploaden und hosten.
UTF-8 and Unicode FAQ for Unix/Linux - Eine ziemlich umfangreiche und gute FAQ zu diesem Thema.
A look at the FreeNAS server
BackupPC Installation And Configuration in Debian
UADE - Unix Amiga Delitracker Emulator
Amiga Music Preservation (AMP)

Donnerstag Juni 15, 2006

Today's Links

.htaccess file generator - Macht genau das ;-) Recht praktisch.
Scratched Remix TTF - 9800 Free Fonts - Mal wieder ein neuer Zeichensatz gefällig?

Dienstag Juni 06, 2006

Today's Links

Java2Excel - Die Java Lib wandelt java.util.Collection's in einfache Exceltabellen um.
Prophet64 is a suite of very user friendly music applications for the Commodore 64 platform.
Download Now: The Free iPod Book 2.0
Four Classic Problems with Scripted Testing
Log4j: A Debugging Perspective (Part1)
Log4j: Revealing the Full Power (Part2)
Java Tips - Jede Menge davon ;-)
xen-forum.net - Das erste inoffizielle und unabhängige Forum zum Thema Open Source Virtualisierung mit Xen für den deutschsprachigen Raum.
Netdisco is an Open Source web-based network management tool.
The Google data APIs provide a simple standard protocol for reading and writing data on the web.
Google Hacking to Locate MP3s

Sonntag Juni 04, 2006

VDR: Streamdev Plugin + VLC 0.8.5

Wer bisher immer Probleme hatte, mit VLC vom VDR über das Streamdev Plugin einen Stream abzugreifen und dabei den Videostream, aber leider keinen Ton hatte, dem kann geholfen werden! VLC 0.8.5 ist die Lösung. Diese Version ist seit kurzer Zeit draussen und spielt nun endlich auch Ton ab ohne irgendwelche Spezialkonstrukte.

Wer sich für den VLC noch eine Sender-Playliste automatisch erstellen lassen möchte, findet in diesem Forumseintrag auf vdr-portal.de Entsprechendes.

How to play Rock N Roll? ;-)

Der gute Mann hier rockt ja voll ab ;-)

Samstag Juni 03, 2006

Today's Links

FLVTool2 - Ein Tools zum Manipulieren von Flash Video Files.
AVInfo - Zeigt AVI, MPEG, OGG/OGM, MKV, IFO header Informationen an.
VdrTransXvid - Konvertiert VDR Aufnahmen direkt ins Xvid Format
pgTop - Ein Top-Clone für PostgreSQL
Compass is a first class open source Java Search Engine Framework
MySQL - Started to use replication
flickrj - Java wrapper for the Flickr API.
ISO Recorder - Eine Windows Freeware zum Brennen und Erzeugen von ISOs auf CD/DVD
Burning or Writing DVDs Under Debian system
Creating Scripts with Monad

Freitag Juni 02, 2006

DEBIAN 3.1: Update auf Kernel 2.6.16

Ja, ja... Manchmal tut man Dinge, die man lieber nicht hätte tun sollen, aber dann doch noch einigermaßen glimpflich abgelaufen sind. Gestern kam ich auf die komische Idee, ich müßte meinen Kernel 2.6.12-ct-1 auf den 2.6.16-1-k7 von backports.org updaten. Meine Hoffnung war/ist, das sich die Systemstabilität etwas erhöht. Zwischen 2.6.8 und 2.6.12 war schon eine deutliche Besserung zu vermerken.

Nun. Nachdem ich gesehen habe, das backports.org auch einen Kernel 2.6.16-1-xen-k7 zur Verfügung stellt und ich Xen schon immer mal testen wollte, hab ich den Kernel installiert. Das das Update nicht so einfach wird, war fast klar, da ja z.B. Hotplug durch udev ersetzt wurde und damit z.B. die Technotrend/Nexus TV-Karten nicht mehr auf Anhieb funktionieren. Nun gut. Also apt-get aufgerufen und Kernel installiert. Bei den zu deinstallierenden Paketen stand der Bootloader Grub dabei. Wieso will der Grub deinstallieren? Dafür soll dann Lilo drauf. Hmmm... Naja. Was soll's. Also akzeptiert und der Download startet. Ging alles soweit, bis liloconfig aufgerufen wurde. Das meinte dann, dass es /dev/hda1 nicht findet und den Bootloader nicht installieren kann. Ah ja... Das ist toll. Nun ja. Diesen Schritt also übersprungen und die Grub-Konfig angepaßt. Nur komisch, das es unter /boot kein initrd File gibt. Tja blöd. Kein initrd und Lilo will nicht. Downgrade wollte ich auch nicht mehr machen, da das Kernelupdate soviele andere Pakete upgedatet hat, das ich mich nicht mehr getraut habe, den Downgrade durchzuführen. Also Rechner nochmal mit dem alten Kernel durchgestartet. Das ging zum Glück gut. Dann also nochmal liloconfig aufgerufen. Diesmal kam dann die Meldung, das er Lilo nicht installieren kann, da das Image zu groß ist. Ok. Jetzt reichts.

Xen-Kernel raus, 2.6.16-1-k7 rein. Grub Config läuft dieses mal automatisch. Rechner durchgestartet. Läuft. Blos die TV-Karten funken nicht mehr. Er lädt alle Module und was man sonst so braucht, initialisiert aber den Karte nicht. Also unter vdr-portal.de gesucht. Die meisten Lösungen waren aber für Hotplug. Das ist aber mit ab Kernel 2.6.15 eigentlich obsolet. udev ist zunächst mal die Zukunft (fragt sich blos wie lange...). Also entsprechend gepostet. Der entscheidende Hinweis war dann, das stradis-Modul zu entfernen und das Modul unter /etc/modprobe.d/blacklist einzutragen, damit es nicht mehr automatisch geladen wird. Und schon funkte dann auch der TV-Kartentreiber wieder. Feini fein :-)

Die Sache mit Lilo und Xen war recht ärgerlich. Der erste Eindruck vom "normalen" 2.6.16 ist recht positiv. Das Paketmanagement und der Kernel ohne Xen von backports.org funktionieren recht gut. Scheint alles recht rund zu laufen.

Dienstag Mai 30, 2006

POSTGRESQL: Migration Oracle / Postgres

Oracle und Postgres sind sich in so mancher Hinsicht recht ähnlich. Darum sieht man jetzt auch viele Projekte, in denen von Oracle zu Postgres migriert wird. Für viele Anwendungen ist Postgres mehr als ausreichend. Nun... Entsprechend vorbereitet, klappt das auch recht gut, wenn einem nicht ein bestimmtes Datentypen/Index-Problem um die Ohren fliegt und das beim Lasttest dann auch nicht auffällt, weil man genau die URL zufälligerweise nicht getestet hat ;-)

Das sieht dann z.B. so aus:

test=> EXPLAIN SELECT * FROM tab1 JOIN tab2 ON tab2.rel2objects=tab1.relation_id WHERE tab2.oid=7929;
                                               QUERY PLAN
Hash Join  (cost=4.11..42522.51 rows=64 width=573)
  Hash Cond: (("outer".relation_id)::text = ("inner".object_assign)::text)
  ->  Seq Scan on tab3  (cost=0.00..34034.29 rows=1131129 width=77)
  ->  Hash  (cost=4.11..4.11 rows=1 width=496)
        ->  Index Scan using idx_tab2 on tab2  (cost=0.00..4.11 rows=1 width=496)
              Index Cond: (oid = 7929)
(6 rows)

Der Hash Join (was mehr oder weniger ein Full Table Scan ist) zeigt es schon: Die Datenbank erwartet Kosten zwischen 4.11 und 42522.51 und beim Seq. Scan sehen wir das über 1,1 Mio. Datensätze durchgegrast werden. Für eine Webapplikation nicht so ganz gut. Und warum ist das so? Wir haben doch entsprechende Indizies, aber die DB nimmt sie nicht her! Hmmm... Bei Oracle war der Execution Plan einwandfrei. Bauen wir die Query mal wie folgt um:

test=> EXPLAIN SELECT * FROM tab1 JOIN tab2 ON tab2.rel2objects::integer=rel_o.relation_id WHERE tab2.oid=7929;
                                            QUERY PLAN
Nested Loop  (cost=0.00..13.53 rows=18 width=573)
  ->  Index Scan using idx_tab2 on tab2  (cost=0.00..4.11 rows=1 width=496)
        Index Cond: (oid = 7929)
  ->  Index Scan using idx_tab1 on tab1  (cost=0.00..9.15 rows=18 width=77)
        Index Cond: (("outer".object_assign)::integer = tab3.relation_id)
(5 rows)

Alles was ich geändert habe, ist der Integer-Cast (... tab2.rel2objects::integer=...). Der Witz an der Sache ist, das rel2objects vom Datentyp Varchar ist und relation_id ist ein Integer. Damit werden für Postgres die Indizies wertlos. Ein expliziter Cast tut Not. Und wie man sieht, ist der Ausführungsplan nun schon erheblich besser. Oracle hat die gleiche Query hingegen ganz anders behandelt. Das Casten war hier kein Thema. Die Oracle bekommt allerdings die totale Krise, wenn die Optimizer Statistiken nicht stimmen. Das stört die Postgres nicht so stark. Allerdings wird diese wiederum sauer, wenn die Datentypen beim Join nicht exakt stimmen. Auch int, int4 und int8 sind für die Postgres nicht gleich und würde auch hier eventl. vorhandene Indizies nicht verwenden. Es hilft also nur, den Ausführungsplan zu checken, um sich vor bösen Überraschungen bei der Migration einigermaßen zu schützen.