09 Oct 2007, 22:18

Linux Kernel 2.6.23 veröffentlicht

Vor ein paar Minuten wurde der neue Linux Kernel 2.6.23 freigegeben.

Die wichtigsten Änderungen im Überblick:

  • neuer CFS Scheduler (“fairer”)
  • On-Demand Read Ahead
  • XEN Guest Unterstützung
  • XFS und ext4 Verbesserungen
  • PPP over L2TP Support
  • Userspace Driver Framework
  • … (KernelNewbies)
Download / Changelog

03 Oct 2007, 18:35

Rezepte Sammlung überarbeitet

Die, von mir mit betreute, Rezepte Sammlung wurde überarbeitet und steht jetzt quasi in Version 2.0 zur Verfügung.  “Quasi” weil das Software-Backend eigentilch keine Versionsnummer hat.

Es ist ab sofort möglich sich auf der Seite zu registrieren und dann Kommentare und Bewertungen zu den Rezepten ab zu geben.

01 Oct 2007, 19:37

Acrobat Reader 8.1 lässt Firefox abstürtzen

Ich denke, dass der Acrobat Reader nichts taugt. Weder unter Windows noch unter Linux.

Warum sonst stürtzt Firefox ab sobald ich - bei installiertem Acrobat Reader - ein PDF anklicke.

Zum Glück gibt es einfach Abhilfe. Unter Edit -> Preferences -> Cotntent -> File Types -> Manage -> PDF kann man Firefox beibringen PDFs wieder auf der Platte speichern zu lassen. Ziemlich frech, dass sich der Acrobat Reader hier von selbst einnistet.

28 Sep 2007, 09:15

Debian etch mit RAID per Debootstrap auf Rootserver installieren

Update: Dieses stichpunktartige Installationsprotokoll dürfte kaum zur Nachahmung geeignet sein. Daher existiert unter dem Titel “Rootserver mit RAID unter Debian GNU/Linux etch” ein Nachfolgedokument das zwar inhaltlich noch nicht ganz komplett ist, diesen Beitrag jedoch bereits deutlich übertrifft.

Dies soll ein kurzer Erfahrungsbericht sein, wie man Debian 4.0 aka etch mit RAID per Debootstrap über ein sog. Rescue-System auf einem Rootserver installiert. Es ist eher eine knappe Zusammenfassung als ein Tutorial und beantwortet daher möglicherweise nicht alle Fragen.
  • Resuce System booten
  • cfdisk /dev/sda
  • cfdsik /dev/sdb
  • Geeignetes Partitionierungsschema:
  • sda1 und sdb1 als /boot mit ext2, 128MB
  • sda2 und sdb2 als / mit ext3, 30GB
  • sda3 und sdb3 als swap, 2GB
  • (md0) sda5 und sdb5 als /tmp mit ext2 unter einem RAID0, 4GB
  • (md1) sda6 und sdb6 als /var/log mit ext3 unter einem RAID1, 4GB
  • (md2) sda7 und sdb7 als /var/lib/mysql mit ext3 unter einem RAID1, 6GB
  • (md3) sda8 und sdb8 als /srv mit ext3 unter einem RAID1, Restlicher Platz/2
  • (md4) sda9 und sdb9 als /backup mit ext3 unter einem RAID1, Restlicher Platz/2
  • mke2fs /dev/sd[ab]1
  • mke2fs -j /dev/sd[ab]2
  • mkswap /dev/sd[ab]3
  • sync; sync; sync
  • swapon /dev/sd[ab]3
  • mkdir /mnt/newroot
  • mount -t ext3 /dev/sda2 /mnt/newroot
  • mkdir /mnt/newroot/boot
  • mount -t ext2 /dev/sda1 /mnt/newroot/boot
  • mknod /dev/md1 b 9 2
  • mknod /dev/md2 b 9 3
  • mknod /dev/md3 b 9 4
  • mknod /dev/md4 b 9 5
  • mdadm –creat e /dev/md0 –level=0 –raid-devices=2 /dev/sd[ab]5
  • mdadm –creat e /dev/md1 –level=1 –raid-devices=2 /dev/sd[ab]6
  • mdadm –creat e /dev/md2 –level=1 –raid-devices=2 /dev/sd[ab]7
  • mdadm –creat e /dev/md3 –level=1 –raid-devices=2 /dev/sd[ab]8
  • mdadm –creat e /dev/md4 –level=1 –raid-devices=2 /dev/sd[ab]9
  • WARTEN bis die Festplatten syncronisiert sind. Tipp: “watch cat /proc/mdstat”
  • mkdir /mnt/newroot/tmp
  • mkdir -p /mnt/newroot/var/log
  • mkdir -p /mnt/newroot/var/lib/mysql
  • mkdir /mnt/newroot/srv
  • mkdir /mnt/newroot/backup
  • Die md0 bis md4 Partitionen formatieren
  • Partitionen mounten
  • ggf. debootstrap installieren
  • Das Grundsystem mit debootstap installieren:
    debootstrap –arch {amd64,i386} etch \
         /mnt/newroot http://ftp.de.debian.org/debian
  • Chroot in das neue System:
    LANG=C chroot /mnt/debinst /bin/bash
  • Terminal einstellen:
    export TERM=xterm-color
  • /etc/fstab anpassen: vim /etc/fstab
  • Das Proc Dateisystem mounten: mount -t proc proc /proc
  • aptitude update && aptitude install mdadm
  • tzconfig um die Zeitzone einzustellen
  • /etc/network/interfaces bearbeiten. localhost nicht vergessen.
  • /etc/resolv.conf anpassen.
  • /etc/hosts anlegen.
  • Einen Kernel installieren, z.b. aptitude install linux-image-2.6-amd64 für einen 64bit Kernel.
  • Boot Loader installieren:
    # aptitude install grub

    grub-install /dev/hda

    update-grub

  • Problem: Grub lässt sich nicht installieren. Lösung: chroot verlassen und ‘
    grub-install –recheck –no-floppy –root-directory=/mnt/newroot /dev/sda’ ausführen.
  • Wichtig: Wieder im chroot, mit passwd ein root Passwort setzen
  • Wichtig: OpenSSH Server installieren: aptitude install openssh-server
  • In /etc/fstab die Raid Partitionen eintragen aber am besten bis zum nächsten Neustart erstmal auskommentiert lassen.
  • Benutzer anlegen, administrative Benutzer in staff,users,adm,wheel und www-data aufnehmen.
  • Neu starten
  • /etc/sshd_config anpassen (no root logins, listen ip, etc.)
  • /etc/pam.d/su anpassen, dass nur Mitglieder der Gruppe whell su benutzen dürfen
  • aptitude install munin munin-node dirvish htop vim nload
  • Damit wäre die Grundeinrichtung abeschlossen.
Ich weiss, dass dies kein Howto ist, aber es sollte für erfahrende Benutzer zumindest einen groben Leitfaden für die Einrichtung bieten.

Wer Fragen hat möge bitte die Kommentarfunktion benutzen, dann werde ich versuchen darauf einzugehen.

25 Sep 2007, 08:03

Linux auf ICH5 Mainboards

Linux verhällt sich auf Intel ICH5-basierten Mainboards wie dem Asus P8C800-E Deluxe mitunter komisch. Es will einfach nicht booten. Wer vor dem gleichen Problem steht, der sollte im BIOS unter “Main -> IDE Configuration -> Onboard IDE Mode” vom “Enhanced Mode” auf den “Compatiblity Mode” umstellen. “compatiblity” bedeutet hier übrigens keine Geschwindigkeitseinbußen, sondern ändert nur die Abbildung der Anschlüsse auf die Controller-Ports.

Empfehlenswert ist weiterhin ein aktueller Kernel (2.6.18+) und evtl. die Option “irqpoll”, falls es weiterhin Problem mit dem Mainboard gibt.

23 Sep 2007, 19:06

Was wäre Wenn - Software RAID Edition

Da ich seit längerer Zeit schon Software-RAID unter Linux (mit mdadm) einsetze, habe ich mich hin und wieder gefragt

Was wäre wenn eine der Festplatten ausfallen würde?

Ich wollte nie das Risiko eingehen es auszuprobieren, aber heute hat es sich mal ergeben und das Ergebnis beruhigt mich.

  • RAID0 - Keine Chance, da die Daten über zwei Platten verteilt waren lassen sie sich nicht mehr lesen. Zum Glück setze ich das nur für /tmp ein.
  • RAID1 - Knoppix erkennt und mountet die Partition als gäbe es kein RAID. Alle Daten lassen sich ohne irgendwelche Probleme lesen.
  • RAIDX für x aus {3,5,10,50,…} - Dazu kann ich nichts sagen, da ich z.Z. nur RAID 1 und 0 einsetze.

21 Sep 2007, 13:22

SunRAY Server Software unter Debian

Wer noch ein paar SunRAY Terminals besitzt und die entsprechende Server Software (SRSS) lieber unter Linux, d.h. Debian GNU/Linux, laufen lassen will, der findet auf einer Seite der Uni Erlangen alles nötige.

Weiterhin sind diese und diese Seite möglicherweise interessant.

Update: Wenn man, wie im Anhang beschrieben, die Module für USB und Audio installieren will, darf man nicht vergessen vorher die Kernel Header zu installieren. Bei mir war das ein aptitude install linux-headers-2.6.18-4-48. Der Patch wird übrigens folgendermaßen eingespielt: cd /usr/src; patch -p0 </path/to/modules-3.1.1.diff.

20 Sep 2007, 11:36

Codezeilen zählen

Kurztipp: Wie kann ich die Zeilen eines (Programmier-) Projektes zählen? (SLOC)

Das beste Tool für diesen Zweck dürfe CLOC sein, zumindest und Unix/Linux.

Ein anderer Weg ist eine Unix-Command Folge:find . -regex ‘.*.(c|h|cxx|cpp)’ -print0 | xargs -0 cat | wc -l

20 Sep 2007, 09:42

Was wäre wenn Kein Loopback-Device vorhanden wäre

  • MySQL startet nicht
  • Munin macht Problem
  • exim4 startet nicht
  • Alle andern Programme laufen
Tja, das passiert wenn man vergisst das Loopback-Device zu aktivieren.

19 Sep 2007, 12:49

Das Windows Setup ist so lahm ...

Warum braucht das Windows XP Setup eigentlich 15+ Minuten um eine 40Gb Platte mit NTFS zu formatieren wenn ich mit ext3 oder XFS unter Linux eine 500GB Platte in 20s formatieren kann?

Vielleicht hätte ich doch “Quick Format” auswählen sollen.

Fragen, über Fragen …

19 Sep 2007, 10:23

Mittwoch

IBM stellt Lotus Symphony aka OpenOffice+Eclipse RCP vor

Ich weiss nicht ob die Welt das braucht, aber es sieht auf jeden Fall schick aus und vielleicht fördert es ja die Verbreitung von OpenOffice in Unternehmen.

Netzbetreiber fordern USB Anschluss für alle Handys

Na das ist mal eine gute Idee. Die komischen propitären Stecker an den Handys und die umständlichen Software-Lösungen der Hersteller waren mir schon lange ein Dorn im Auge.

Open-Source Konkurent für Second Life

Anscheinend gibt es eine attraktive Alternative zu SecondLife. Ich denke ja, dass ein OpenSource-“SecondLife” deutlich bessere Marktchancen hätte.

Telekom bringt das iPhone

So wie es aussieht wird es bald offiziel angekündigt: Die Telekom bringt das iPhone. Zwar scheint die anfängliche Euphorie inzwischen verfolgen, aber spätestens mit der zweiten Generation des iPhones werde ich mir sehr ernsthaft überlegen mir auch so ein Gerät zu kaufen. Enttäuschend ist halt der Net-Lock.

Debian APT-Proxy in Java

Mit Japt-Proxy gibt es einen APT-Proxy in Java. Ob das was taugt? Ich werde es mal testen, da ich sowieso schon eine Weile nach einem APT-Proxy bin. Natürlich gibt es auch noch andere Implementierungen. Da muss ich einfach mal vergleichen.

18 Sep 2007, 09:35

PHP: Cannot access empty property

Kurztipp: Probleme nach der Migration von PHP4 zu PHP5 (I)

Folgendes Problem tritt nach der Migration von PHP4 zu PHP5 auf:

Fatal error: Cannot access empty property in /www/xyz/abc.php on line xy
Bei mir ist dieses Problem aufgetreten weil sich da ein $ eingschmuggelt hatte wo es nichts zu suchen hatte.

Vorher $this->free_result($this->$query_id);

Nacher $this->free_result($this->query_id);

Wie man sieht genügt es das $-Zeichen zu entfernen.

14 Sep 2007, 09:30

KDE vs. GNOME

Was ist besser: KDE oder GNOME?

Nun, diese Frage stelle ich mir von Zeit zu Zeit. Darauf eine allgemeingültige Antwort zu finden ist wohl in etwa so leicht wie eine Antwort auf die folgenden Fragen zu finden: emacs oder vi, linux oder windows, ying oder yang, etc. pp.

Für mich persönlich sollte sich diese Antwort allerdings etwas leichter beantworten lassen, das hoffe ich zumindest.

Hier möchte ich einige Punkte auflisten die mir beim Thema KDE vs. Gnome einfallen.

KDE:

  • viele Einstellungsmöglichkeiten
  • die Zwischenablage scheint (?) manchmal nicht richtig zu funktionieren
  • gute Xinerama/Mehrmonitor-Unterstützung
  • wenige Killer-Apps, aber einige gute (KMail, Konqueror)
  • super “Explorer” (Windows) Ersatz
GNOME:
  • oft zu unflexibel, viele Optionen lassen sich nicht, oder nur umständlich, einstellen
  • schlechte Xinerama/Mehrmonitor-Untersützung
  • viele gute Anwendungen (Killer-Apps) in GTK (Gimp, Firefox, Eclipse, Quod Libet, …)
  • “Explorer” Ersatz (Nautilus) kaum zu gebrauchen
  • Wechselmedien werden übersichtlicher (auf dem Desktop) angezeigt
Ich möchte mich für den Begriff “Explorer”-Ersatz hier entschuldigen, aber ich finde, dass der Windows Explorer (NICHT Internet Explorer!) eine ziemlich gute Anwendung ist. Es gibt viele die - unter Windows - dessen Vorzüge nicht schätzen und lieber auf Alternativen wie Total Commander ausweichen (unter Linux gibts dafür die ULTIMATIVE Alternative: Worker!) aber ich persönlich bin sehr vom Explorer überzeugt.

12 Sep 2007, 16:41

Serverumstellung auf PHP5

Der Server läuft jetzt mit PHP5. Bei der Umstellung habe ich kurz das Blog zerschossen - Safe Mode war aktiviert. Jetzt sollte es wieder gehen.

12 Sep 2007, 15:17

Links des Tages: Apples iPhone offenbar geknackt und Linux Rechner von Mindfactory

Nach einem Bericht von heise ist der SIM-Lock von Apples iPhone offenbar geknackt worden; und zwar, im Gegensatz zur alten Methode, ohne Hardwaremodifikationen. Na, das wurde auch Zeit.

Die Firma Mindfactory bietet seit kurzem einen fertig konfigurierten Linux-PC mit Debian und vorinstalliertem Beryl an. Klasse, daran sollten sich andere ein Beispiel nehmen!

11 Sep 2007, 13:32

WordPress Feature Request: Automatische Plugin Updates

Ein wichtiges Feature vermisse ich bei WordPress: eine möglichkeit automatisch alle Plugins zu aktualisieren.

Man denke an das entsprechende Feature von Firefox. Dieser überprüft bei jedem Start ob Updates für die installierten Plugins vorliegen. Warum gibt es das nicht auch für WordPress? So ähnlich wie das InstantUpgrade Plugin nur halt für die Plugins.

Update: Mit Version 2.5 wurde diese Funktion endlich integriert.

10 Sep 2007, 08:36

Debian - Alte Pakete löschen und Platz schaffen

Kurztipp: Wie schaffe ich auf der root-Partition meiner Debian-basierten Distribution (Debian, Ubuntu, Xandros, etc.) Platz?

aptitude autoclean

Dieser Befehl sorgt dafür, dass alte Pakete im Paketcache gelöscht werden. Da dieser oft genug auf der root Partition liegen dürfe kann es hilfreich sein diese Befehl in einen Cronjob von ‘root’ reinzupacken. Wenn das noch nicht reicht kann man auch noch ein

aptitude clean

versuchen. Dieser Befehl löscht auch aktuelle Pakete aus dem Cache.

06 Sep 2007, 10:49

Ostasiatische Schriften unter Debian GNU/Linux installieren

Kurztipp: Wie installiere ich ostasiatische Schrifen (japanisch, koreanisch, chinesich) unter Debian?

aptitude install ttf-alee ttf-arphic-bkai00mp ttf-arphic-gbsn00lp ttf-baekmuk ttf-kochi-gothic ttf-kochi-mincho ttf-unfonts

Weiterführende Informationen gibts bei Meet Korea oder Nekobento.

03 Sep 2007, 13:41

Toshiba 4GB USB Flash Drive von Penny

In den Penny Märkten gibt es heute ein interessantes Angebot: 4GB USB-Stick von Toshiba für 29,99€. Das geht sicherlich noch günstiger, aber ich finde es ist ein akzeptabler Preis und da ich schon länger auf der Suche nach einem möglichst großen USB-Stick für unter 30 Euro war habe ich zugeschlagen.

Der USB-Stick wird mit einem Umhänge-Bändel und einer, wenig Hilfreichen, Bedienungsanleitung geliefert. Was mir gut gefällt ist, dass der Stick vorformatiert ist (FAT32).

Geschwindigkeit schreiben: 1GB in 04:15 (min:sec), d.h. ca. 4 Mb/s. Versprochen waren im Prospekt “Ca. 5MB/Sek.”, das geht für mich also in Ordnung.

Geschwindigkeit lesen: 1GB in 01:28, d.h. ca. 11,64 MB/s. Versprochen waren im Prospekt hier “Ca. 12Mb/Sek.”, das ist optimal.

Kompatiblität: Offiziell, d.h. im Prospekt und in der Bedienungsanleitung wird Kompatiblität zu Windows 98/2000/ME/XPund MacOS 10.0.2+ zugesichert. Und Linux (Debian/Lenny) läuft er aber auch einwandfrei. Alle Messungen wurden unter Linux (Kernel 2.6.21) vorgenommen. Aber ich bin mir sicher, dass sie auch auf Windows übertragbar sind.

Mein Fazit: Kein “Super-Knaller” aber ein sehr gutes Angebot das ich so durchaus weiterempfehlen kann. Wie “haltbar” der Stick ist wird sich mit der Zeit zeigen, aber Toshiba gewährt immerhin 5 Jahre Garantie, das ist schonmal sehr vielversprechend.

Details Erkannt wird der Stick als: kernel: scsi 5:0:0:0: Direct-Access TOSHIBA TransMemory 5.00 PQ: 0 ANSI: 0 CCS

Und schön gemounted unter:

/dev/sdb1 on /media/TOSHIBA type vfat (rw,nosuid,nodev,noatime,flush,uid=1000,utf8,shortname=lower)

Bilder

Hier noch zwei Bilder des USB-Sticks. Zunächst mal der Inhalt der Packung. Auf dem zweiten Bild ist sehr schön das RFID-Ettikett (oben) und der Diebstahlschutz (unten) zu erkennen.

Toshiba 4GB USB Flash Drive von PennyRFID & Diebstahlschutz

03 Sep 2007, 10:07

Besucherstatistiken - Firefox, Windows und 1280x1024

Eine kleiner Blick auf die Statistiken.

Browser:

  • Firefox (+ Mozilla Derivate) - 58,84%
  • Internet Explorer - 30,08%
  • Opera - 5,82%
  • Safari - 2,87%
  • Konqueror - 1,78%
  • Der Rest teilt sich auf in diverse Browser und interessante Kennungen wie “Gzip”.
Yeah, Firefox rocks! So ist es richtig. Die 30% vom IE bekommt der Firefox auch noch klein.

Betriebssysteme:

  • Windows - 76,87%
  • Linux - 17,61%
  • MacOS - 4,95%
  • FreeBSD - 0,04%
Schade, ich dachte Linux wäre stärker repräsentiert.

Bei den Bildschirmaufläsungen dominiert 1280x1024 mit 37,49% vor 1024x768 mit 23,24% und 1280x800 (9,41%). 800x600 ist mit nur 0,64% gerade mal auf Platz 11. Interessant sind ein paar Exoten wie z.B. 1920x1200 mit immerhin 2,80% oder 2560x1600 (0,11%). Bei so Auflösungen denke ich nur: “Ich will auch!”.

02 Sep 2007, 13:35

Google Earth mit Flugsimulator!

Omfg ist das genial - Google Earth gibts jetzt mit eingebautem Flugsimulator!

Ich bin definitiv nicht der Erste dem das Aufgefallen ist, aber ich bin gerade viel zu begeistert um nicht etwas darüber zu schreiben.

Um den Flugsimulator zu starten sollte man sich erstmal die neuste Version von Google Earth runterladen und dann, bei fokusiertem Hauptfenster, Strg+Alt+A drücken.

Es gibt auch eine Hilfe.

Google Earth Flightsim über Berlin Mitte

02 Sep 2007, 09:57

VirtualBox 1.5 veröffentlicht

Gerade wollte ich mein System aktualisieren und habe gesehen, dass VirtualBox, zumindest im Repository, in der Version 1.5 vorliegt. Auf der Webseite ist es allerdings noch nicht angekündigt.

Im Changelog steht nur “rebuild Debian packet” (Freitag, 31.Aug.07), was das auch immer heissen soll …

Update, 03.09.07: Jetzt ist auch die offizielle Ankündigung und das ausführliche Changelog raus.

30 Aug 2007, 11:14

XML Dokumente mit Namespaces in PHP5/SimpleXML verarbeiten

SimpleXML ist was feines. Damit lassen sich XML Dokumente ohne viel Aufwand bearbeiten, leider hat das ganze einen kleinen Haken.

Namespaces! Richtig, SimpleXML kann Namespaces zwar verarbeiten aber dadurch wird die Bedienung etwas verwirrend und leider ist das ganze auch nicht gut Dokumentiert.

Ein kleines Beispiel, gegeben sei folgende XML Datei: <XmlResultSet version=“1.0.0” xmlns=“http://www.gauner.org/api" xmlns:bml=“http://www.bla.net/bml" xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=“http://www.gauner.org/api/schema.xsd"> <bml:description>This is an API</bml:description> <bml:name>api</bml:name> <bml:Member> <AnEntry> <bml:name>Blabla</bml:name> </AnEntry> </bml:Member> </XmlResultSet>

So, jetzt mal angenommen ich will auf Xml->bml:Member->AnEntry->Name zugreifen. Ohne Namespaces ist das mit SimpleXML ganz einfach: Xml->Member->AnEntry->Name. Aber das lustige an Namspaces ist, dass die jeweils anderen Namespaces ausgeblendet werden. D.h. SimpleXML sieht alles im Namespace “bml” erstmal nicht.

Ok, dafür gibts eine Lösung: Man kann mit Element->children(‘namespace-url’) explizit auf die Namespaces zugreifen, aber dabei gibt es zwei Fallen. Zum einen muss man unbedingt die URL des Namespaces angeben, nicht etwas den Namen des Namespace, und zum anderen ist es wichtig zu beachten, dass dann eben die anderen Namespaces augeblendet werden, und man ggf. wieder in den Default Namespace (mit ->children(“)) wechseln muss.

Wenn ich jetzt in obigem Beispiel auf <bml:name> Zugreifen will sähe der korrekte Code dann etwa so aus: $xml = new SimpleXMLElement($source); $name = $xml->children(‘http://www.bla.net/bml')->Member->children('')->AnEntry->children('http://www.bla.net/bml')->name;

Siehe dazu auch den Eintrag bei SitePoint.

27 Aug 2007, 20:01

MEncoder Tricks

Hier ein paar kurze Tricks für den MEncoder vom MPlayer.

Rotate: mencoder -ovc lavc -oac copy -o output.avi -vf rotate=0 input.avi Mögliche Werte für Rotate:

  • 0 - Drehe um 90 Grad im Uhrzeigersinn und stelle das Bild auf den Kopf
  • 1 - Drehe um 90 Grad im Uhrzeigersinn
  • 2 - Drehe um 90 Grad gegen den Uhrzeigersinn
  • 3 - Drehe um 90 Grad gegen den Uhrzeigersinn und stelle das Bild auf den Kopf
Remove Sound: mencoder -ovc copy -nosound input.avi -o output.avi

Change Sound: mencoder -ovc copy -audiofile tonspur.mp3 -oac copy input.avi -o output.avi

Create x264: mencoder-mt -ovc x264 INPUT.avi -x264encopts level_idc=12:bframes=3:subq=7:partitions=all:8x8dct:me=esa:me_range=23:frameref=6:trellis=1:weight_b:mixed_refs:threads=auto:qcomp=0.6:keyint=250:min-keyint=25:direct=temporal -vf scale=1440:1080 -oac lavc -lavcopts acodec=libfaac:abitrate=56 -srate 48000 -af channels=2 -of lavf -ofps 25 -lavfopts format=mp4 -o OUTPUT.mp4

27 Aug 2007, 10:20

Linus: I've never run Debian

Uhm, Linus Torvalds hat ja wirklich einen schlechten Eindruck von Debian:

“Funnily enough, the only distributions I tend to refuse to touch are the “technical” ones, so I’ve never run Debian, because as far as I’m concerned, the whole and only point of a distribution is to make it easy to install (so that I can then get to the part I care about, namely the kernel), so Debian or one of the “compile everything by hand” ones simply weren’t interesting to me.”
[1]

Ich denke, er sollte sich mal ein aktuelles Debian anschauen … aber wahrscheinlich hat er bessere Dinge zu tun.

Interessant an dem Interview fand ich auch, dass er Intel explizit empfohlen hat.

24 Aug 2007, 10:49

IntelliMouse Optical unter X.Org für Linkshänder einrichten

Kurztipp: Wie richtet man eine Maus, z.B. IntelliMouse Optical, unter X.Org für Linkshänder ein.

Entweder auf der Konsole: xmodmap -e “pointer = 3 2 1 4 5 6 7 8 9”

oder in der /etc/X11/xorg.conf unter “Section InputDevice”: Option “ButtonMapping” “3 2 1 4 5 6 7 8 9”

23 Aug 2007, 22:51

TV-Out unter Linux mit Nvidida GF6600

Es ist gar nicht so einfach den TV-Out der Nvidia Karten mit einem S-Video Kabel in Betrieb zu nehmen, schon gar nicht unter Linux.

Das ganze hat mich bis jetzt jedesmal Nerven gekosten, daher muss ich das jetzt nochmal festhalten.

Zunächst einmal zum physikalischen Anschluss. Das Kabel muss an den blauen Anschluss, ganz rechts, an der Breakout-Box. Auf der anderen Seite habe ich das ganze mit einem Scart-Adapter an den Scart-Eingang angeschlossen.

S-Video am Composite Out der neuern Nvidia Karten

Damit das auch funktioniert muss in der xorg.conf der Video-Modus “Composite” gewählt werden, und natürlich die richtige PAL Einstellung. Hier der relevante Auszug aus meiner xorg.conf: Section “Device” Identifier “nvidia0” Driver “nvidia” Option “NoLogo” “True” Screen 0 Option “TwinView” “true” Option “TwinViewOrientation” “clone”

PAL-B or PAL-G for Germany

Option “TVStandard” “PAL-B” Option “TVOutFormat” “COMPOSITE” Option “SecondMonitorHorizSync” “30-50” Option “SecondMonitorVertRefresh” “50” Option “MetaModes” “1024x768,1024x768;800x600,800x600” Option “ConnectedMonitor” “DFP,TV” EndSection

18 Aug 2007, 09:19

Skype ist kaputt

Ohman, da will man mal nach langer, langer Zeit wieder Skype benutzen und dann bricht das komplette Netzwerk von denen zusammen, und zieht die Netze der Nutzer gleich mit runter.

Naja, so gewinnen die jedenfalls keine neuen Kunden.

Ich weiss warum ich dem ganzen VoIP-Kram z.Z. noch den Rücken kehre und lieber auf POTS setze, mein ISDN Anschluss fällt nicht aus weil irgendein “Algorithmus” spinnt. Wobei das ganze für mich eher wie eine faule Ausrede klingt, ich vermute wirklich, dass das mit dem MS Patchday zusammenhängt und die vorher irgendeinen Windows Bug ausgenutzt haben um die SuperNodes zu verwalten, und der wurde dann plötzlich von MS gepatcht. Sowas nennt man wohl “natürliche Selektion”, die schlechten überleben einfach nicht. Und Skype gehört für mich definitiv nicht zu den guten. Wenn es endlich Clients gibt die Jingle ordentlich implementieren, dann brauche ich kein Skype mehr.

16 Aug 2007, 08:42

Wie geht AVM mit der GPL um?

Nachdem ich mich seit einiger Zeit mit der Fritz!Box von AVM beschäftige, hat sich mir die Frage gestellt wie AVM eigentlich mit der GPL umgeht, da sie ja Linux auf den Fritz!Boxen einsetzen. Zum Teil, d.h. mindestens bei 7170 und 7270, auch Samba und andere GPL Software.

Weder auf der AVM Homepage, noch in der Fritz!Box Dokumentation ist ein Verweis auf die GPL.

Aber in einem Unterverzeichniss auf dem FTP-Server von AVM liegen einige Archive mit allen geänderten Code-Teilen. Leider scheint das ganze ziemlich nutzlos zu sein, da dort lediglich die Patches liegen und sich so kaum eine vollwertige Fritz!Box Firmaware bauen lässt.

Update: Anscheinend machen sich auch andere Gedanken darüber wie AVM mit der GPL umgeht.

14 Aug 2007, 10:42

Wie schalte ich den nervige PC-Speaker unter Linux/KDE aus?

Ich benutze seit einiger Zeit KDE und bin ziemlich zufrieden damit, was mich aber gestört hat, war, dass unter einigen Programmen die Fehlermeldungen jetzt von einem ziemlich nervigen Piepen des PC-Speakers begleitet wurden.

Das ganz lässte sich allerdings, wie ich jetzt herausgefunden habe, ganz einfach abschalten:

xset -b

Entweder auf der Konsole eingeben oder in die .xsession einfügen.

08 Aug 2007, 18:59

Rezepte Sammlung in neuem Design

Die Rezepte-Sammlung unter rezepte.gauner.org wurde von mir in den letzten Tagen komplett überarbeitet und erstrahlt jetzt in neuem Glanz. Weg mit hässlichen Parametern (?id=X) und nichts sagenden Dateinamen. So dürfe das ganze wesentlich Nutzerfreundlicher sein, und die Suchmaschienen dürften damit auch besser klarkommen.

War interesse an der Umsetzung hat soll sich bei mir melden, dann werde ich das hier bei Gelegenheit erläutern.

Soviel sei schonmal verraten: Die Apache Mod Rewrite Konfiguration habe ich 1:1 von WordPress übernommen.

03 Aug 2007, 12:00

Was ist eigentlich die Load Average?

Ich habe bei I’m Mike gerade eine sehr gute Erklärung gefunden, was eigentlich die Load Average aussagt:

Die Load Average ist der expotentielle Mittelwert der Anzahl der Prozesse die im Status “running” oder “runnable” sind. Wichtig ist dabei folgende Faustregel: Die Load-Average sollte immer kleiner als die Anzahl der Processorkerne im System sein. D.h. ein Dual-Core System mit einem Processor ist zu 100% ausgelastet wenn die Load-Average 2 ist. Ein Dual-Processor System mit Single-Cores ebenfalls bei 2.

Wenn die Load-Average größer als die Anzahl der Cores ist, dann wollen mehr Prozesse zur Ausführung kommen, als das System zur Zeit verkraften kann.

Weitere Details gibts hier.

01 Aug 2007, 09:53

OpenWRT auf der Fritz!Box

Wie ich gerade erfahren habe gibt es offensichtlich die Möglichkeit OpenWRT Linux auf den Fritz!Boxen zu installieren.

Allerdings steht in der OpenWRT Table of Hardware noch untestet bzw. Work-in-Progress und ich werde bestimmt nicht das komfortable Web-GUI der Fritz!Box für lustiges konsolen-gefrickel eintauschen, aber eine interessante Alternative ist es in jedem Fall.

27 Jul 2007, 11:10

AVI Dateien mit defektem Index reparieren

Manchmal hat man das Problem, dass sich in einzelnen avi Filmen nicht springen bzw. spulen lässt weil der Index defekt ist.

Dies lässt sich mit MPlayer/Mencoder ganz einfach beheben: mencoder -idx input.avi -ovc copy -oac copy -o output.avi

Kurz zur Erklärung der Optionen:

  • ”-idx” weist mencoder an den Index neu zu erstellen
  • ”-ovc copy” weist mencoder an als Video-Output Codec “copy” zu verwenden, also den Stream zu kopieren
  • ”-oac copy” weist mencoder an als Audio-Output Code “copy” zu verwenden, also den Stream zu kopieren
  • ”-o output.avi” gibt die Ausgabedatei an
  • “input.avi” ist natürlich die Eingabedatei
Ich bin immer wieder fasziniert wie praktisch und vielseitig das MPlayer bundle ist. Ich verwende übrigens als Paketquelle folgenden sources.list Eintrag: deb http://www.debian-multimedia.org/ lenny main

27 Jul 2007, 10:48

Migrating Debian etch to Debian lenny

Zwar ist es noch nicht lange her, dass etch stable wurde, aber da es sich schon einige Zeit im Freeze befand ist es mal wieder soweit, dass ich mit der Aktualität nicht zufrieden bin und mich mal wieder Richtung testing orientiere.

Insbesondere aiccu brauche ich für IPv6 via SixXS.

Die Migration war eigentlich ganz einfach, wenn auch ein wenig verwirrend.

Einfach die /etc/apt/sources.list angepasst und erstmal ein aptitude update sowie ein aptitude -s dist-upgrade abgesetzt.

Danach hat mir aptitude zwar zunächst vorgeschlagen OpenOffice zu entfernen, aber das hat es sich dann nochmal anderst überlegt.

Grund waren wohl ein paar nicht ganz auflösbare Abhängigkeiten in Bezug auf OOo.

25 Jul 2007, 19:25

FRITZ!Box Wiki

Als ich gerade auf der Suche nach Informationen zu meiner FRITZ!Box 7170 war, bin ich auf ein sehr informatives Wiki zum Thema FRITZ!Box gestossen: wehavemorefun.

16 Jul 2007, 10:29

Aus jHTTPd wird libjhttpd

Nachdem ich den Code zu meinem einfachst-Webserver jHTTPd (HTTP/1.0, Multithreading, IPv6- und UTF-8-Support) in wesentlich mehr Projekten weiter verwendet habe, als zunächst geplant, habe ich mich entschlossen den Code nochmals zu überarbeiten, ein wenig refactoring zu betreiben und als Bibliothek umzuarbeiten.

Der Webserver kann jetzt auch ordentlich binäre Multipart POST Requests verarbeiten. Ein kleines Missverständnis zwischen mir und den Java Streams hat dafür gesorgt, dass es vorher nicht funktioniert hat.

Bytes nach String und wieder zurück zu casten geht selten gut ;)

Die Bibliothek ist so angelegt, dass man den bestehenden Code nicht ändern muss - wobei das für eine Bibliothek selbstverständlich sein sollte.

Im Package webserver.sample befindet sich ein Beispiel dafür wie man die Bibliothek verwenden kann.

Ähnlich wie beim Apache-Webserver existieren ein paar Hooks die es erlauben an verschiedenen Stellen der Request Verarbeitung einzugreifen und die Daten entsprechend zu manipulieren.

Eine lauffähige Instanz des Webservers erzeugt man mit folgendem Code:

Config config = new Config(); // read the config try { config.readConfig(Config.CONFIG_FILE); } catch (IOException e) { e.printStackTrace(); } // check command line arg count if (args.length > 0) { // parse args config.setPort(args[0]); } WebServer ws = new WebServer(config, new SampleHttpRequestFactory()); Thread t = new Thread(ws); t.start();

Weiterhin muss man in einer Klasse die Schnittstelle IHttpRequestFactory implementieren und dort die, ebenfalls zu implementierende, Klasse die von HttpRequest erbt, angeben.

HttpRequest bietet drei sog. Hooks.

  • postConnect() - wird aufgerufen sobald der Client die Verbindung hergestellt hat, aber bevor irgendetwas weiter passiert ist. Hier könnte man z.B. überprüfen ob der Client auf einer Blacklist steht, bzw. aus einem nicht zulässigen Netzwerk kommt und die Verbindung schliessen bevor weitere Ressourcen verbraucht werden.
  • postRequest() - wird aufgerufen nachdem der Request des Clients, d.h. inkl. evtl. vorhandenem POST-Body, verarbeitet wurde. Hier sollte eigentlich fast der gesamte benutzerspezifische Code landen.
  • preClose() - wird aufgerufen direkt bevor die Verbindung zum Client geschlossen wird und nachdem die Antwort gesendet und der Request geloggt wurde. Zu diesem Zeitpunkt besteht keine Garantie dafür, dass die Verbindung zu Client noch existiert.
Die Klasse HttpRequest bietet neben den Hooks noch eine Reihe von Methoden die den Zugriff auf die Daten des Requests ermöglichen.

Die wichtigsten wären:

  • getArgument() - um die komplette Liste der Argumente zu erhalten. Also POST und GET Argumente.
  • getMultiparts() - um die evtl. vorhandenen Multipart Teile eines POST Requests zu erhalten.
  • getRemoteAddress() - um die IP des Clients zu erhalten sowie getRemotePort() um den dazugehörigen Port zu erhalten. Diese zwei Felder sind die einzigen die während postConnect() schon gültige Daten enthalten.
  • getRequestHeader() - um den verarbeiteten Header auszulesen.
  • getResponseHeader() - um auf den Response Header zuzugreifen.
Für weitere Details möchte ich direkt auf den Quellcode verweisen. Fragen und Anmerkungen bitte über die Kommentarfunktion.

Den Quellcode und den Download gibts hier: libjhttpd.

16 Jul 2007, 10:01

jSpellCorrect überarbeitet

Der Java Spelling Checker, jSpellCorrect, wurde von mir nochmal ein wenig überarbeitet. Jetzt kommt er prinzipiell mit beliebig großen Trainingsdaten zurecht. Vorher existierte eine, unnötige, künstliche Beschränkung.

Download jSpellCorrect.

Allerdings existiert weiterhin die Einschränkung, dass die HashMap der Wahrscheinlichkeiten in den Arbeitsspeicher passen muss. Hier bin ich allerdings noch nicht an die Grenzen gestossen.

Eine Möglichkeit dies zu umgehen, wäre ein Teil der Daten auf der Festplatte zu speichern, aber dies ist mir im Moment zu umständlich. Bei Bedarf werde ich das nachrüsten.

11 Jul 2007, 19:05

Windows Update - Neustart Erinnerung Ausschalten

Es gibt unter Windows XP ein schrecklich nerviges Feature: Die Neustart-Erinnerung des Windows Update Dienstes.

Das schlimme an dieser Dialogbox ist, dass man sich nicht wirklich schliessen kann. Man hat nur die Wahl zwischen Pest und Cholera, d.h. Sofort neu starten oder später neu starten.

Windows Update Nagger

Natürlich ist es prinzipiell eine gute Idee die Benutzer dazu zu drängen den PC neu zu starten und potentielle Sicherheitslücke zu schliessen, aber ich mag das Risiko ;) und ausserdem habe ich keine Lust neu zu starten wenn ich gerade am Arbeiten bin.

Es gibt zwei Möglichkeiten das ganze auszuschalten:

  • Den Windows Update Dienst ausschalten
  • Den Group-Policy-Editor bemühen
Da ich das Auschalten das Update Dienstes für etwas überzogen halte, möchte ich kurz den Weg über den Group Policy Editor erklären. Achtung: Dieser Weg scheint nur unter Windows XP Prof. zu funktionieren. Ob es für Windows XP Home einen vergleichbaren Weg gibt muss ich noch rausfinden.

Windows Update Nagging über den Group Policy Editor entschärfen

Stop Windows Update from Nagging

Zunächst muss man über Start -> Ausführen -> “gpedit.msc” aufrufen und dort zu dem Eintrag “Windows Update” (siehe Screenshot) navigieren. Hier gibt es wiederum zwei Möglichkeiten das tödlich-nervige Popup loszuwerden:

  • automatischen Neustart ganz deaktiveren
  • Das Nachfrage-Interval erhöhen
Ich bevorzuge den zweiten Weg. Dafür öffnet man “Erneut zu einem Neustart für geplante Installationen auffordern”, stetzt ihn auf “aktiviert” und trägt eine ausreichend große Zeitspanne ein. Etwa 720 Minuten.

Referenzen:

05 Jul 2007, 18:01

Slashdot Comment of the Day

If 10 years ago someone told me the biggest company on the internet would be an advertising agency that used the phrase “do no evil” and people believed them I would have said they were on crack. Alas, it seems to be the case.” [link]

Besser hätte ich es auch nicht ausdrücken können …

05 Jul 2007, 16:02

Warum sich IPv6 in den nächsten 5 Jahren durchsetzen wird

  • Weil immer mehr Anwendungen (Apache, Mailserver, etc.) IPv6 fähig sind
  • Weil Windows Vista IPv6 standardmäßig aktiviert hat.
  • Weil meine Server alle IPv6 sprechen ;)
  • Weil China, mit seiner aufstebenden Wirtschaft, gerade einmal soviele IPv4 Adressen hat wie die Universität von Californien.
  • Weil dieICAAN massiv für IPv6 werben will.
Und wenn ich mich geirrt habe ist es auch nicht schlimm, denn IPv4 ist auch was tolles.

05 Jul 2007, 09:23

T-Online Benutzerkennung

Der Trick ist zwar schon alt, aber ich musst gerade mal wieder danach suchen:

Wie setzt sich der T-Online Benutzername, für Router oder Linux, zusammen.

Laut T-Online wie folgt: Anschlusskennung, T-Online Nummer, #, Mitbenutzernummer und @t-online.de.

Also so: AAAAAAAATTTTTTTTT#MMMM@t-online.de

03 Jul 2007, 11:54

3D Beschleunigung in VirtualBox

Es gibtim VirtualBox Forum einen interessanten Thread zum Thema “3D Beschleunigung in VirtualBox”.

Es wäre wirklich eine sehr nett wenn das irgendwann in naher Zukunft mal funktionieren würde.

Bei Parallels scheint es schon zu funktionieren

03 Jul 2007, 07:10

FRITZ!Box 7270 wahrscheinlich erst im Spätsommer

So ein Mist, die neue FRITZ!Box 7270 gibts wahrscheinlich erst im Spätsommer. So zumindest die Auskunft von AVM.

Nach aktuellem Kenntnisstand wird die FRITZ!Box Fon WLAN 7270 voraussichtlich im Laufe des Sommers 2007 (Tendenz Spätsommer) verfügbar werden.
Quelle: AVM Vertrieb

Schade, das Teil hat mich wirklich neugierig gemacht.

  • Verschlüsslung für VoIP
  • DECT Basisstation
  • LCR (?)
  • WLAN nach 802.11n
  • Unterstützung für VDSL
  • Zugriff auf angschlossene Festplatten über Windows Freigaben (Samba)
  • VPN Zugriff von Aussen
Und das ganze kombiniert mit der ausgereiften FRITZ!Box Oberfläche, das lässt hoffen. Leider kostet das Teil auch entsprechend viel …

Update: Sobald die neue Fritz!Box 7270 auf dem Markt ist werde ich das hier sofort ergänzen, aber bis heute, Stand 13.08.07, ist in den einschlägigen Shops noch nichts von AVMs neusten Topmodell zu sehen. Btw. bei der LCR Funktion bin ich mir nicht ganz sicher, das habe ich möglicherweise falsch aufgefasst. Wir werden sehen …

Update II, 18.08.07: In der neuen c’t (1807) ist auf S.124 ein Screenshot der offensichtlich von der neuen Fritz!Box 7270 stammt. Warum bekommen die eine und ich nicht? Liebe AVM, bitte schickt mir doch auch eine neue Fritz!Box zu testen ;)

Update III, 29.08.07: Jetzt kommt die neue Fritz!Box wohl doch erst im Herbst.

29 Jun 2007, 11:25

Intels Core 2 Duo Buggy as hell?

Einer der OpenBSD Entwickler, Theo de Raadt, weist in einer eindringlichen Mail an die openbsd-misc Liste darauf hin, dass Intels Core 2 Duo total verbuggt ist.

Ouch. Eigentlich wollte ich mir so einen Prozessor kaufen … naja, dann halt doch wieder AMD.

28 Jun 2007, 08:41

Eclipse macht unter Linux nur Probleme ...

Seit einiger Zeit macht Eclipse unter Linux nur noch Probleme.

Nicht nur, dass es extrem viel Speicher verbraucht, dank SWT/GTK, es stürtzt auch reproduzierbar beim öffnen das Auto-Complete Dialog ab und das neue Europa Release verabschiedet sich gar direkt wenn ich den  Software Update Dialog öffne.

Toll.

Es wird Zeit, das ich mich mit Netbeans beschäftige. Das läuft deutlich besser, nur mit der Bedienung muss ich mich noch anfreunden.

27 Jun 2007, 16:13

Exim4 Konfiguration mit SMA, MySQL, IPv6, SpamAssassin und TLS

Achtung: Dieser Beitrag ist schon älter und teilweise fehlerhaft. Unter dem Titel ISP Email Server mit Exim 4, Dovecot, MySQL und SpamAssassin auf Debian GNU/Linux etch habe ich eine ausführlichere und ausgereiftere Fassung veröffentlicht.

Ich möchte hier kurz meine Mailserver Konfiguration vorstellen, da ich es für gut möglich halte, dass diese Information auch für andere Betreiber von Mailservern von Intresse sein könnte.

Für den Betrieb meines Mailservers setze ich auf exim4 und Dovecot. Das ganze läuft unter Debian etch.

Unter Debian lassen sich die benötigten Pakete einfach mit folgendem Kommando installieren:

aptitude install dovecot-common dovecot-imapd dovecot-pop3d exim4-daemon-heavy mysql-server-5.0 pyzor razor spamassassin spamc dcc-client
Zu Dovecot ist eigentlich nichts weiter zu sagen, ausser das er wunderbar seinen Dienst verrichtet.

Exim greift auf eine MySQL Datenbank für die Überprüfung der Benutzer zurück, bindet SpamAssassin mit diversen Plugins ein, läuft sowohl auf IPv4 als auch IPv6 (via SixXS) und nimmt Mails auch via SMA/RFC2476 entgegen - natürlich alles auch über TLS.

Ein weiteres gute Beispiel für eine Exim4 Konfiguration gibt es hier.

Hier folgt jetzt meine kommentierte Exim 4 Konfiguration. Bei Fragen bitte die Kommentarfunktion des Blogs nutzen.

#######################################
# MACROS
#######################################
Zunächst werden einige Macros definiert um die gesamte Konfiguration übersichtlicher zu gestallten. Am Anfang stehe die Zugangsdaten zum MySQL-Server und die Tabellennamen.
MYSQL_SERVER=localhost
MYSQL_USER=user
MYSQL_PASSWORD=pass
MYSQL_DB=db
MYSQL_EMAILTABLE=exim_emailtable
MYSQL_DOMAINTABLE=exim_domains
MYSQL_WHITETABLE=exim_whitelist
MYSQL_BLACKTABLE=exim_blacklist
Dann folgt die Mailman Konfiguration. Dies wird weiter unten nochmal erläutert.
MAILMAN_HOME=/var/lib/mailman
MAILMAN_WRAP=MAILMAN_HOME/mail/wrapper
MAILMAN_UID=list
MAILMAM_GID=list
Hier folgen die aktuelle verwendeten Blacklists, genauer: DNSRBL. Leider muss diese Liste in letzter Zeit oft angepasst werden da die BLs oft unter Beschuss stehen oder den Dienst einstellen.
BL_WARN=zen.spamhaus.org:ix.dnsbl.manitu.net
BL_DENY=zen.spamhaus.org:ix.dnsbl.manitu.net
Nun zum komplizierten Teil: Den SQL Querys. Ich werde nicht auf jede einzelne Query eingehen, aber mit ein paar SQL Kentnissen sollten sie kein Problem sein.
MYSQL_Q_ISAWAY=SELECT domain FROM MYSQL_EMAILTABLE WHERE domain='${quote_mysql:$domain}' AND local_part='${quote_mysql:$local_part}' AND is_away='yes'
MYSQL_Q_AWAYTEXT=SELECT away_text FROM MYSQL_EMAILTABLE WHERE domain='${quote_mysql:$domain}' AND local_part='${quote_mysql:$local_part}'
MYSQL_Q_FORWARD=SELECT forward FROM MYSQL_EMAILTABLE WHERE domain='${quote_mysql:$domain}' AND local_part='${quote_mysql:$local_part}' AND forward != '' AND is_enabled = 'yes'
MYSQL_Q_CC=SELECT cc FROM MYSQL_EMAILTABLE WHERE domain='${quote_mysql:$domain}' AND local_part='${quote_mysql:$local_part}' AND is_enabled = 'yes'
MYSQL_Q_LOCAL=SELECT domain FROM MYSQL_EMAILTABLE WHERE domain='${quote_mysql:$domain}' AND local_part='${quote_mysql:$local_part}' AND forward = '' AND is_enabled = 'yes'
MYSQL_Q_WCLOCAL=SELECT domain FROM MYSQL_EMAILTABLE WHERE domain='${quote_mysql:$domain}' AND local_part='*' AND forward != '' AND is_enabled = 'yes'
MYSQL_Q_WCLOCFW=SELECT forward FROM MYSQL_EMAILTABLE WHERE domain='${quote_mysql:$domain}' AND local_part='*' AND forward != '' AND is_enabled = 'yes'
MYSQL_Q_DISABLED=SELECT domain FROM MYSQL_EMAILTABLE WHERE domain='${quote_mysql:$domain}' AND local_part='${quote_mysql:$local_part}' AND is_enabled = 'no'
MYSQL_Q_LDOMAIN=SELECT DISTINCT domain FROM MYSQL_DOMAINTABLE WHERE domain='$domain'
MYSQL_Q_RDOMAIN=SELECT DISTINCT domain FROM MYSQL_DOMAINTABLE WHERE domain='$domain'
MYSQL_Q_BOXPATH=SELECT CONCAT(domain,'/',local_part) AS boxpath FROM MYSQL_EMAILTABLE WHERE domain='${quote_mysql:$domain}' AND local_part='${quote_mysql:$local_part}'
MYSQL_Q_SPAMC=SELECT domain FROM MYSQL_EMAILTABLE WHERE domain='${quote_mysql:$domain}' AND local_part='${quote_mysql:$local_part}' AND spam_check='yes'
MYSQL_Q_SPAMPURGE=SELECT domain FROM MYSQL_EMAILTABLE WHERE domain='${quote_mysql:$domain}' AND local_part='${quote_mysql:$local_part}' AND spam_purge='yes'
MYSQL_Q_AUTHPLAIN=SELECT if(count(*), "1", "0") FROM MYSQL_EMAILTABLE WHERE CONCAT(local_part,'@',domain)='${quote_mysql:$2}' AND pwclear='${quote_mysql:$3}'
MYSQL_Q_AUTHLOGIN=SELECT if(count(*), "1", "0") FROM MYSQL_EMAILTABLE WHERE CONCAT(local_part,'@',domain)='${quote_mysql:$1}' AND pwclear='${quote_mysql:$2}'
MYSQL_Q_AUTHCRAM=SELECT pwclear FROM MYSQL_EMAILTABLE WHERE CONCAT(local_part,'@',domain)='$1'
MYSQL_Q_WHITELIST=SELECT DISTINCT MYSQL_WHITETABLE.address FROM MYSQL_WHITETABLE WHERE '${quote_mysql:$sender_address}' LIKE MYSQL_WHITETABLE.address
MYSQL_Q_BLACKLIST=SELECT DISTINCT MYSQL_BLACKTABLE.address FROM MYSQL_BLACKTABLE WHERE '${quote_mysql:$sender_address}' LIKE MYSQL_BLACKTABLE.address
# 'hide' damit diese Optionen nicht auf der Kommandozeile angezeigt werden.
hide mysql_servers = "MYSQL_SERVER/MYSQL_DB/MYSQL_USER/MYSQL_PASSWORD"
#######################################
# BASIC
#######################################
# Der primäre Hostname, sollte identisch mit dem RDNS Namen der IP sein.
primary_hostname = mail.gauner.org
# Welche Domains sind lokal
domainlist      local_domains = localhost:gauner.org:lists.gauner.org:mysql;MYSQL_Q_LDOMAIN
domainlist      relay_to_domains = mysql;MYSQL_Q_RDOMAIN
hostlist        relay_from_hosts = 127.0.0.1
# Definiert zu welchen Zeiten der SMTP Sitzung welche ACLs ausgeführt werden.
# Nachdem das RCPT Kommando gesendet wurde
acl_smtp_rcpt = acl_check_rcpt
# Nachdem das MAIL FROM Kommando gesendet wurd
acl_smtp_mail = acl_check_from
qualify_domain = gauner.org
never_users = root
host_lookup = *
# Trusted Users wird für SpamAssasin benötigt.
trusted_users = mail
rfc1413_hosts = *
rfc1413_query_timeout = 15s
check_spool_space = 50M
check_log_space = 20M
return_size_limit = 20k
message_size_limit = 20M
ignore_bounce_errors_after = 2d
timeout_frozen_after = 7d
deliver_queue_load_max = 8
queue_only_load = 10
remote_max_parallel = 15
# TLS Konfiguration
tls_certificate = /etc/exim4/exim.cert
tls_privatekey = /etc/exim4/exim.key
tls_advertise_hosts = *
local_interfaces = < ; 127.0.0.1 ; aaa.bbb.ccc.ddd ;
                        2001:cafe:dead:beef::2
# Listen for SMTP on Port 25 and for SMA on Port 587
daemon_smtp_port = 25 : 587
#######################################
# ACL
#######################################
begin acl
acl_check_from:
  # drop connections on the SMA Port that did not auth
  drop condition = ${if={$interface_port}{587} {1}{0}}
  !authenticated = *
  # accept everything else (policy checks are in rcpt acl)
  accept
acl_check_rcpt:
  accept  hosts = :
  deny    domains       = +local_domains
          local_parts   = ^[.] : ^.*[@%!/|]
  deny    domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/../
  accept  local_parts   = postmaster
          domains       = +local_domains
  require verify        = sender
  accept  authenticated = *
  # Add a warning header if the sending host is in theses
  # DNSBLs but accept the message
  # see http://www.exim.org/howto/rbl.html
  warn    message       = X-blacklisted-at: $dnslist_domain
          dnslists      = BL_WARN
  # Reject messages from senders listed in these DNSBLs
  deny    dnslists      = BL_DENY
  # Consult "greylistd" to obtain greylisting status for this
  # particulat peer/sender/recipient triplet.
  #
  # We do not greylist messages with a NULL sender,
  # because sender callout verification would break (and we
  # mitght not be able to send mail to a host that performs
  # callouts).
  #
  defer
          message       = $sender_host_address is not yet authorized to
                          deliver mail from <$sender_address> to < $local_part@$domain>.
                          Please try later.
          log_message   = greylisted.
          domains       = +local_domains : +relay_to_domains
          !senders      = : postmaster@*
    !hosts         = : +relay_from_hosts :
                     ${if exists {/etc/greylistd/whitelist-hosts}
                                 {net-lsearch;/etc/greylistd/whitelist-hosts}{}} :
                     ${if exists {/var/lib/greylistd/whitelist-hosts}
                                 {net-lsearch;/var/lib/greylistd/whitelist-hosts}{}}
          set acl_m9    = $sender_host_address $sender_address $local_part@$domain
          set acl_m9    = ${readsocket{/var/run/greylistd/socket}{$acl_m9}{5s}{}{}}
          condition     = ${if eq {$acl_m9}{grey}{true}{false}}
  accept  domains       = +local_domains
          endpass
          verify        = recipient
  accept  domains       = +relay_to_domains
          endpass
          verify        = recipient
  accept  hosts         = +relay_from_hosts
  deny    message       = relay not permitted
#######################################
# ROUTERS
#######################################
# ORDER MATTERS!
#######################################
# Die Router. Hier ist es wichtig darauf zu achten in welcher
# Reihenfolge die Einträge angegeben werden, da eine Mail
# von oben nach unten an jeden Router übergeben wird
# bis sie von einem akzeptiert wird.
begin routers
# In der Datenbank deaktivierte Adressen werden gleich zu beginn rausgeworfen.
fail_router:
  driver = redirect
  domains = ${lookup mysql {MYSQL_Q_DISABLED}{$value}}
  data = ":fail:"
allow_fail
# Hier werden Mailman Adressen behandelt
mailman_aliases:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup{$local_part}lsearch{/etc/aliases.mailman}}
  file_transport = address_file
  pipe_transport = address_pipe
  domains = lists.gauner.org
  user = list

# DnsLookup sind externe Nachrichten, d.h. Mails von diesem System an andere.
dnslookup:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
  no_more

blacklist_router:
  driver = manualroute
  senders = ${lookup mysql {MYSQL_Q_BLACKLIST}{$value}}
  condition = "${if !def:h_X-Spam-Flag: {1}{0}}"
  headers_add = X-Spam-Flag: YES
  route_list = * localhost
  self = pass

# System Aliase
system_aliases:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup{$local_part}lsearch{/etc/aliases}}
  file_transport = address_file
  pipe_transport = address_pipe

# SpamAssassin Integration (Scannen und Markieren)
spamcheck_director:
  driver = manualroute
  domains = ${lookup mysql {MYSQL_Q_SPAMC}{$value}}
  senders = ! ${lookup mysql {MYSQL_Q_WHITELIST}{$value}}
  condition = ${if and {
    {!eq {$received_protocol}{spam-scanned}}
    {!eq {$received_protocol}{local}}
    } {1}{0}}
  headers_remove = X-Spam-Flag
  route_list = "* localhost byname"
  transport = spamcheck
  verify = false

# SpamAssassin Integration (Spam löschen)
spampurge_director:
  driver = manualroute
  domains = ${lookup mysql {MYSQL_Q_SPAMPURGE}{$value}}
  condition = "${if eq{$h_X-Spam-Flag:}{YES} {1}{0}}"
  route_list = "* localhost byname"
  transport = devnull_transport
  verify = false

vacation_director:
  driver = accept
  domains = ${lookup mysql {MYSQL_Q_ISAWAY}{$value}}
  transport = vacation_autoreply
  unseen

virtual_cc_director:
  driver = redirect
  data = ${lookup mysql {MYSQL_Q_CC}{$value}}
  unseen

virtual_forward_director:
  driver = redirect
  data = ${lookup mysql {MYSQL_Q_FORWARD}{$value}}

# Lokale Zustellung für Benutzer aus der Datenbank
virtual_local_mailbox:
  driver = accept
  domains = ${lookup mysql {MYSQL_Q_LOCAL}{$value}}
  transport = virtual_local_md_delivery

virtual_wclocal_redirect:
  driver = redirect
  domains = ${lookup mysql {MYSQL_Q_WCLOCAL}{$value}}
  data = ${lookup mysql {MYSQL_Q_WCLOCFW}{$value}}

local_user:
  debug_print = "R: local_user for $local_part@$domain"
  driver = accept
  domains = +local_domains
  check_local_user
  local_parts = ! root
  transport = local_delivery

#######################################
# TRANSPORTS
#######################################
# ORDER DOES NOT MATTER
#######################################

begin transports

# Remote Deliveries
remote_smtp:
  driver = smtp
  # Use Interface aaa.bbb.ccc.ddd for Outgoing Communiction
  interface = aaa.bbb.ccc.ddd

devnull_delivery:
  driver = appendfile
  file = /dev/null
  group = mail

address_pipe:
  driver = pipe
  return_output

address_file:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add

address_directory:
  driver = appendfile
  #no_from_hack
  message_prefix = ""
  message_suffix = ""
  maildir_format

address_reply:
  driver = autoreply

# SpamAssassin Integration
spamcheck:
  driver = pipe
  command = /usr/sbin/exim4 -oMr spam-scanned -bS
  use_bsmtp = true
  transport_filter = "/usr/bin/spamc -u $local_part@$domain"
  home_directory = "/tmp"
  current_directory = "/tmp"
  user = mail
  group = mail
  log_output = true
  return_fail_output = true
  return_path_add = false
  message_prefix =
  message_suffix =

local_delivery:
  driver = appendfile
  directory = /home/users/${local_part}/Maildir
  delivery_date_add
  envelope_to_add
  return_path_add
  maildir_format

# Lokale Zustellung für Benutzer aus der Datenbank
virtual_local_md_delivery:
  driver = appendfile
  directory = /home/mail/${lookup mysql {MYSQL_Q_BOXPATH}{$value}}/Maildir
  maildir_format
  user = mail
  group = mail
  mode = 0660
  directory_mode = 0770
  check_string = ""
  message_prefix = ""
  message_suffix = ""

vacation_autoreply:
  driver = autoreply
  to = ${sender_address}
  from = "vacation@${domain}"
  subject = "Ihre Nachricht an ${local_part}@${domain}"
  text = ${lookup mysql {MYSQL_Q_AWAYTEXT}{$value}}

disabled_bounce:
  driver = autoreply
  from = ${local_part}@${domain}
  to = ${sender_address}
  user = mail
  subject = "Re $h_Subject:"
  text = "Your message to ${local_part}@${domain} was rejected due to an
    disabled account. Please try again later."

devnull_transport:
  driver = appendfile
  file = /dev/null
  user = mail

#######################################
# RETRY
#######################################
begin retry
*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
#######################################
# REWRITE
#######################################
begin rewrite
*@gauner.org    ${lookup{$1}lsearch{/etc/email-addresses}
                                                {$value}fail} frFs
#######################################
# AUTHENTICATORS
#######################################
begin authenticators

plain:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${lookup mysql{MYSQL_Q_AUTHPLAIN}}
  server_set_id = $2

login:
  driver = plaintext
  public_name = LOGIN
  server_prompts = "Username:: : Password::"
  server_condition = ${lookup mysql{MYSQL_Q_AUTHLOGIN}}
  server_set_id = $1

cram:
   driver = cram_md5
   public_name = CRAM-MD5
   server_secret = ${lookup mysql{MYSQL_Q_AUTHCRAM}{$value}fail}
   server_set_id = $1
Die passenden Datenbankschemas für MySQL:
-- ----------------------------------------------------------
-- Tabellenstruktur für Tabelle `exim_emailtable`
--
CREATE TABLE `exim_emailtable` (
  `id` int(9) NOT NULL auto_increment,
  `local_part` varchar(255) NOT NULL default '',
  `domain` varchar(255) NOT NULL default '',
  `forward` varchar(255) default NULL,
  `cc` varchar(255) default NULL,
  `name` varchar(255) NOT NULL default '',
  `pwclear` varchar(255) NOT NULL default '',
  `pwcrypt` varchar(255) NOT NULL default '',
  `is_away` enum('yes','no') NOT NULL default 'no',
  `away_text` text,
  `spam_check` enum('yes','no') NOT NULL default 'no',
  `spam_purge` enum('yes','no') NOT NULL default 'no',
  `virus_check` enum('yes','no') NOT NULL default 'no',
  `is_enabled` enum('yes','no') NOT NULL default 'yes',
  `customer_id` int(9) NOT NULL default '0',
  `created_at` int(16) NOT NULL default '0',
  `updated_at` int(16) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Alle virtuellen Mail-Accounts' AUTO_INCREMENT=1;

--
-- Tabellenstruktur für Tabelle `exim_domains`
--
CREATE TABLE `exim_domains` (
  `id` int(9) NOT NULL auto_increment,
  `domain` varchar(255) NOT NULL default '',
  `is_enabled` enum('yes','no') NOT NULL default 'no',
  `customer_id` int(9) NOT NULL default '0',
  `created_at` int(16) NOT NULL default '0',
  `updated_at` int(16) NOT NULL default '0',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `domain` (`domain`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Tabelle aller von exim erkannten Domains' AUTO_INCREMENT=1;

27 Jun 2007, 08:36

Marktanteile von MMORPGs

Da ich gerade auf der Suche nach Informationen zu den Marktanteilen der einzelnen MMORPGs war bin ich auch die Seite MMOGCHART gestossen auf der man genau diese Informationen sehr schön aufbereitet findet.

Leider fallen Spiele wie Guild Wars, die nicht auf ein Subscriptions-Modell setzen aus dem Raster und werde dort nicht erfasst. Schade, es hätte mich doch mal interessiert wie Guild Wars im Vergleich zu WoW abschneidet.

24 Jun 2007, 12:42

Kernel bauen unter Debian

Aus aktuellem Anlass:

Wie baue ich unter Debian einen neuen Linux Kernel?

Antwort: Ganz einfach

Achtung: Ich beschreibe hier nicht den “Debian-way”, sondern so wie ich es immer mache.

# root werden
su
# in das build Verzeichnis wechseln
cd /usr/src
# den aktuellen Kernel runterladen, anpassen!
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.5.tar.bz2</pre>

<pre>
# den Kernel entpacken, anpassen!
tar xvfj linux-2.6.21.5.tar.bz2
# den alten Symlink entfernen
rm linux
# den neuen Symlink erstellen
ln -s linux-2.6.21.5 linux
# ins Verzeichnis mit den aktuellen Quellen wechseln
cd linux
# die .config des aktuellen Kernels kopieren
cp /boot/config-`uname -r` ./.config
# die alten Optionen übernehmen
make oldconfig
# ggf. die Config anpassen
make menuconfig
# compilieren
make -j10 &amp;&amp; make -j10 modules
# installieren
make install &amp;&amp; make modules_install
# grub aktualisieren
update-grub

21 Jun 2007, 11:29

Dovecot 1.0.1 veröffentlicht

Der IMAP4/POP3-Server Dovecot wurde vor einigen Tagen in der Version 1.0.1 veröffentlicht.

Die Liste der Änderungen ist relativ kurz und es handelt es sich hauptsächlich um einige kleinere Bugfixes.

Hier das Changelog und der Download.

20 Jun 2007, 07:48

Eclipse unter Linux ist super lahm!

Ich frage mich wirklich warum Eclipse unter Linux so super lahm sein muss.

Offensichtlich hängt das ganze mit SWT zusammen und Abhilfe ist auch möglich, aber mir ist es nicht gelungen SWT/Fox zu installieren. Das hängt wahrscheinlich auch damit zusammen, dass das SWT/Fox Projekt seit einiger Zeit inaktiv zu sein scheint.

Bei nächster Gelegenheit werde ich mir mal Netbeans anschauen, das scheint ja nicht ganz so schrecklich langsam zu sein …

19 Jun 2007, 07:30

Dovecot macht sich gut ...

Wie ich vor kurzem berichtet habe, läuft der Mailserver seit einiger Zeit unter Dovecot.

Bis jetzt gabs keinerlei Probleme, die Performance stimmt und mit den richtigen Munin Plugins lässt sich das ganze auch wunderbar monitoren.

Fazit: Toll :)

Update: Meine Konfiguration gibt es im Dovecot Wiki.

18 Jun 2007, 11:50

Rechtschreibkorrektur in Java

Nach der Lektüre des überaus interessanten Artikels über einen einfachen Algorithmus zur Rechtschreibkorrektur von Peter Norvig, habe ich beschlossen den abgefahrenen Python Code in Java zu übersetzen. Nach ein paar Versuchen hat es auch schon geklappt. Das Ergebnis des ganzen gibt es ab sofort unter dem Namen jSpellCorrect zu bewundern.

Update:

Nachdem Peter Norvig seine Seite aktualisiert hat muss ich sagen, dass ich ein wenig schockiert bin: Aus einem einfachen 21 Zeilen Python Programm werden über 350 Zeilen Code in Java ... autsch ;)

07 Jun 2007, 14:41

Virtual Box - VMs klonen

Ein “Virtual Disk Image” lässt sich mit dem Kommandozeilentool “VBoxManage” ganz einfach klonen:

VBoxManage clonevdi <QuellVDI.vdi> <ZielVDI.vdi>

Warum ich die Images klonen will?

Nun, ich habe einmal Debian stable installiert, die VDI geklont und aus der einen mache ich jetzt ein testing und aus der anderen ein unstable. Damit spare ich mir die Installation nochmal durchführen zu müssen. Toll :)

07 Jun 2007, 14:05

Virtual Box 1.4.0 - Keine Probleme mehr mit Linux als Gast

Nachdem ich die neue Version 1.4.0 von Virtual Box installiert habe gibt es endlich keine Probleme mehr mit Linux als Gast OS, wie ich sie noch mit 1.3.8 erleben musste.

Super!

Diesen Post schreibe ich auch gerade aus der VM heraus.

Host OS: Debian etch

Gast OS: (noch) Debian etch

Das Gast OS wird gleich zu einem Debian testing. Später, wenn ich genug Plattenplatz freiräumen kann, werde ich evtl. noch ein Debian SID installieren. Damit ich ein bischen auf dem laufenden bleiben kann was sich da so tut. Dafür jedenfalls sind virtuelle Maschinen super geeignet.

07 Jun 2007, 08:12

Gauner on IPv6

Der Server ist seit gestern auch provisorisch über IPv6 via SixXS zu erreichen.

Vorerst dürfte nur der Mailserver zu 100% IPv6 tauglich eingerichtet sein.

Der Apache ist zwar auch schon für IPv6 vorbereitet, die vHosts müssen aber noch entsprechende konfiguriert werden.

Bei den weiteren Diensten ist die IPv6 Unterstützung bis jetzt noch unklar, wird aber nach Möglichkeit bald folgen.

05 Jun 2007, 16:46

Mein erstes Sketchup/Google Earth Modell

Ich habe gerade mal mein erstes Google Earth Modell mit Sketchup erstellt.

Nachdem meine ersten Versuche etwas schief gegangen sind klappt es jetzt schon einigermaßen.

Beeindruckend finde ich vor allem, dass ich das ganze mit nur zwei “schiefen” Fotos hinbekommen habe.

Download direkt oder bei Google.

31 May 2007, 22:40

jPatchLib 0.0.1b

So, hier ist die nächste Version von jPatchLib: 0.0.1b.

Die Probleme mit den Leerzeilen sollten jetzt erledigt sein und ich habe die Dokumentation hinzugefügt: JavaDoc.

Mehr Infos. Weitere Projekte.

31 May 2007, 13:32

Patch Library für Java - jPatchLib

Nachdem ich lange vergeblich versucht habe eine Implementation von GNU Patch für Java zu finden bin ich zu dem Schluss gekommen, dass es wohl einfacher ist eine selbst zu schreiben.

Das Ergebniss findet sich unter http://developer.gauner.org/jpatchlib/.

Ein paar Sachen stehen noch auf meiner ToDo Liste, aber für einen ersten Eindruck sollte es reichen.

Was noch aussteht:

  • Dokumentation

  • Probleme mit Leerzeilen beheben

Ansonsten natürlich viel Spaß damit.

29 May 2007, 08:35

KVM Switch mit USB und Sound gesucht

Ich bin, schon seit langem, immer noch auf der Suche nach einem KVM-Switch mit DVI, USB und Sound, damit ich meinen Schreibtisch endlich mal etwas aufräumen kann.

Im Moment ist es mit zwei Tastaturen und zwei Mäusen etwas eng.

Heute morgen bin ich auf den AdsKVM Digitus DC-11801 KVM Switch DVI, 3PCs (USB) gestossen.

Leider konnte ich noch keine Testberichte finden, aber der klingt ganz so als wäre es was für mich.

Er verfügt über ordentliche Knöpfe zum umschalten, unterstützt offiziell Linux und hat alles was ich will.

Bleibt nur die Frage ob das umschalten auch so funktioniert wie es soll. Bei einigen günstieren Modellen macht das wohl hin und wieder Ärger.

23 May 2007, 10:24

Patch Library für Java?

Es gibt zwar ein paar Implementierungen von diff für Java, aber eine patch Implementierung konnte ich nicht finden.

Sollte ich doch noch fündig werden, werde ich darüber berichten.

22 May 2007, 10:49

Followup: vi-Like Bedienung bei Google

Eine Sache hatte ich in dem Post von gestern vergessen:

Mehr nette, neue Features gibt es bei Google Experimental.

21 May 2007, 10:16

vi-Like Bedienung bei Google

Howdy! Bei Google Experimental gibt es jetzt eine Möglichkeit in den Suchergebnissen wie in vi zu navigieren.

Um diese praktische Feature zu nutzen muss man einfach an die Suche (in der Adresszeile) den String “&esrch=BetaShortcuts” anhängen.

Das ganze sieht dann zum Beispiel so aus: flexicrypt

Als vi Nutzer bin ich begeistert!

16 May 2007, 09:22

Debian - Welchem Paket gehört diese Datei?

Wer wissen möchte zu welchem Paket eine bestimmte Datei auf seinem System gehört, findet das mit “dpkg -S” raus. Aber nur als root.

dpkg -S /usr/bin/lex flex: /usr/bin/lex

14 May 2007, 09:05

Skype aka the Worlds biggest Botnet

Ein sehr interessantes und vor allem detailiertes Essay zur Sicherheit von und mit Skype gibt es hier: Skype inSecurity Essay.

Jedem Netzwerkadministrator, Netzwerkverantwortlichen, Sicherheitsbewusstem Benutzer und allen auch nur halbwegs Paranoiden sei das dringend empfohlen.

Update 18.08.07: Siehe auch diesen Beitrag über die aktuellen Probleme mit  Skype.

12 May 2007, 14:26

Munin Plugins für Dovecot und die Auth-Facility

Ich habe im Munin Plugin Exchange (lokaler Mirror) zwei praktische Munin Plugins zur Verfügung gestellt.

Zum einen ein Plugin um die Logins und Verbindungen zum Dovecot IMAP/POP3-Server zu überwachen … Dovecot Day

… und zum anderen eine verbesserte Version das auth Plugin um Logins und fehlgeschlagene Versuche der Auth-Facility zu überwachen.

Auth Day

09 May 2007, 19:52

Eclipse: Dummer Update-Manager

Warum ist der Update-Manager von Eclipse eigentlich so blöd?

Kaum habe ich Eclipse nach der Installation der neusten Updates neu gestartet, fängt er wieder von Vorne an und will neue Updates installieren. Kann der das nicht auf einmal?

Ausserdem frage ich mich auch warum der nach jedem Start ewig braucht bis er die Updates gefunden hat? Da liese sich einiges verbessern …

08 May 2007, 18:50

Mailserver mit Dovecot

Seit mir einiges Positives über den IMAP/POP3-Server dovecot zu Ohren gekommen ist habe ich eine mögliche Migration evaluiert. Nachdem auch die letzten Probleme mit dem Migrations Skript für die Mailboxen behoben waren, habe ich den Mailserver gerade umgestellt. Wirklich kurz und schmerzlos muss ich sagen. Jetzt muss er sich nur noch in der Praxis beweisen.

27 Apr 2007, 20:55

Serienbriefe mit OpenOffice 2.2

Der größte Mangel von OpenOffice ist meiner Meinung nach das fehlen von guter Dokumentation.

Gerade wollte ich mal wieder Serienbriefe mit OOo erstellen aber das gestalltete sich alles andere als einfach.

Ich wusste natürlich nicht mehr wie ich es “früher” immer gemacht habe, aber es gibt ja unter “Extras -> Seríenbriefe” einen Assistenten dafür. Den gibt es seit 2.1 oder 2.2, früher musste man von Hand mit den Datenquellen hantieren.

Durch den Assistenten wird es zwar einfacher, aber leider passt das nicht mit meinem Datenformat zusammen. Vorgegeben war eine Tablle mit folgenden Feldern: Anrede, Name1, Name2, Anschrift, “PLZ+Ort” und die Briefanrede.

Leider möchte das Assistent gerne Felder haben aus denen er ableitet ob der Adressat männlich oder weiblich ist und akzeptiert ein Feld Briefanrede, d.h. sowas wie “Sehr geehrter Herr Mustermann”, gar nicht.

Serienbriefe mit OpenOffice.org 2.2 - Schritt 3

Um den Komfort des Assistenten mit der flexiblität der alten Lösung zu kombinieren muss man, wie auf den Bildern zu sehen, bei der Frage nach dem Adressfeld und der Briefanrede, die Fragen ausklammern und dafür die entsprechenden Felder, wie in der verlinkten Anleitung zu sehen, von Hand einfügen.

Serienbriefe mit OpenOffice.org 2.2 - Schritt 4

27 Apr 2007, 09:29

Essence of Software Design (Java)

Ich habe mir vor einiger Zeit einige wichtige Design-Prinzipien für das Software Design, insb. in Java, zusammengefasst und einige oft gebrauchte Design-Patterns und Entwurfsrichlinien erläutert.

Zu finden ist das ganze unter The Essence of Software Design.

Die wichtigsten Prinzipien:

  • Open-Closed-Principle (OCP) - A class should be open for extension but closed for modification.
  • Liskov Substitution Principle (LSP) - An instance of a class should function as an instance of its superclass.
    Typical violations of LSP:
    • Derivates that override a method of the super-class by an empty method potentially violate LSP
    • Derivates that throw additional exceptions violate LSP

  • Dependency Inversion Principle (DIP) - High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions. DO NOT DEPEND ON A CONCRETE CLASS. All relationsships in a program should terminate on an abstract class or an interface.

26 Apr 2007, 13:25

Outlook - Anlagen einfügen verhält sich komisch

Outlook verhält sich beim einfügen von Anhängen etwas komisch.

Manchmal landen die Anhänge in einer Zeile “Anhänge” und manchmal direkt im Nachrichtentext.

Das hängt wohl damit zusammen, ob unter “Extras -> Optionen -> E-Mail-Format” HTML bzw. Text oder Rich-Text ausgewählt ist. Bei Rich-Text landen die Anhänge im Nachrichtentext, bei den anderen beiden Möglichkeiten in der extra Zeile.

Siehe auch wer-weiss-was.

26 Apr 2007, 08:15

Linux Kernel 2.6.21 freigegeben!

Endlich, nach 7 RCs wurde gerade eben der Linux Kernel in der Version 2.6.21 freigegeben.

Ich hoffe die lang ersehnte Unterstützung für den PATA Port des VIA VT6421 Chips funktioniert endlich. Eigentlich war die entsprechende Änderung schon im rc4 drin, aber der hat bei mir nicht wirklich gut funktioniert.

Sobald ich Zeit habe werde ich es testen und hier berichten.

Download / Changelog / Ausführliches Changelog bei den KernelNewbies / Heise Open Artikel

25 Apr 2007, 10:30

Mail-Quelltext in Outlook 2003 anzeigen

English translation below.

Wer hätte gedacht, dass es so ein Problem ist sich den Quelltext einer Mail anzeigen zu lassen.

Unter Thunderbird, unter den meisten anderen Mail-Clients, gibt es eine Art “View Source” Option, aber bei Outlook 2003 macht es Microsoft etwas komplizierter.

Um die Header anzeigen zu lassen kann man sich in der geöffneten Nachricht zu Ansicht -> Optionen durchklicken und bekommt dann in einem mikrigen Fenster die Kopfzeilen angezeigt.

Um den gesamten Quelltext zu betrachten muss man schon die Registry bemühen und unter

HKEY_CURRENT_USER\Software\Microsoft\Office\11.0<span class=“searchword”>Outlook\Options\Mail
einen Eintrag mit dem Namen
SaveAllMIMENotJustHeaders
und dem Wert “1” anlegen.

Schon kann man sich für alle, ab diesem Zeitpunkt empfangenen (!), Mails den Quelltext komplett anzeigen lassen!

Warum einfach wenn es auf kompliziert geht?

Gefunden bei Thomas Woelfers Blog.

English Translation

Displaying the full source of a mail in Outlook 2003 is not easy.

In Thunderbird there is a “View Source” option, but Microsoft likes it complicated.

To show the raw Header of a Mail you can open the mail and navigate to “View -> Options” to watch the header in a tiny textbox.

To view the full source of the mail you have to open the registry and look for the branch

HKEY_CURRENT_USER\Software\Microsoft\Office\11.0<span class=“searchword”>Outlook\Options\Mail
and create a key with the name
SaveAllMIMENotJustHeaders
and the Value “1”.

For all mails received after this point in time (!) you can view the complete mail source.

22 Apr 2007, 20:03

Bloggen mit Gnome

Ich habe gerade ein Applet names “Gnome Blog” entdeckt.

Es ist eigentlich eine ganz nette Idee direkt vom Desktop, ohne Webbrowser, aus bloggen zu können. Zumal so der Browser nicht nach etlichen Zeilen den Geist aufgeben kann und man nicht unbedingt alles nochmal schreiben muss, aber ein wenig spartanisch ist das Interface schon.

Naja, man kann eben nicht alles haben ;)

21 Apr 2007, 22:52

Google Maps Fun

Anscheinend versteht Google Spaß, oder wie soll ich mir sonst erklären, dass Google Maps den Anwender ca. 3000  Meilen durch den Atlantik schwimmen lassen will, wenn er von New York nach Paris will?

Google Maps Fun

21 Apr 2007, 12:41

Jabber Clients mit Jingle - Fehlanzeige!

Ich bin seit einiger Zeit auf der Suche nach einer brauchbaren alternative zu Skype.

GoogleTalk ist ein super Ansatz, aber ich hätte lieber etwas das auch unter Linux läuft.

Google war zwar so nett die Jingle Spezifikation zu veröffentlichen, aber so wie es aussieht gibt es im Moment keinen Client der das vernünftig implementiert.

  • PSI scheint kein Jingle zu unterstützen
  • Pidgin aka Gaim soll zwar “bald” Jingle Support haben, aber wann das konnte ich nicht in Erfahrung bringen
  • Cocinella scheint Jingle zu unterstützen, aber diesen Client konnte ich noch nicht testen
Fazit:

Schade, kein ordentlicher Jingle/VoIP Client unter Linux.

19 Apr 2007, 10:58

Debian 3.1 (sarge) auf 4.0 (etch) aktualisieren

Seit Debian etch stable ist, war mir klar, dass ich über kurz oder lang auch meine Produktiv-Maschinen auf etch umstellen muss. Bei der Planung von diesem Upgrade habe ich mir einige Gedanken gemacht, da ja einige essentielle Komponenten aktualisiert wurden. Der neue 2.6er Kernel, Apache 2.0 auf 2.2, MySQL, etc. pp.

Im Nachhinnein muss ich sagen, dass mich Debian mal wieder beeindruckt hat. Ein so problemloses Upgrade habe ich bis jetzt noch nicht erlebt, wobei es auch ein paar Stolpersteine gab.

Demnächst werde ich noch die verbleibenden Maschinen umstellen müssen, aber hier werde ich erstmal meine Erfahrungen mit der ersten Schildern.

Zunächst einmal habe ich mir die Release-Notes gründlich durchgelesen. Das kann ich auch jedem empfehlen!

Das folgende Vorgehen möchte nur kurz Stichpunktartig zusammenfassen. Jeder der ein wenig Erfahrung mit Debian hat sollte daraus schlau werden.

  • Datensicherung laufen lassen (dirvish-cronjob)
  • Neu mit dem Internet verbinden um eine Zwangstrennung während der Umstellung zu vermeiden
  • Einloggen und als root screen starten
  • sources.list anpassen, d.h. backports, etc. entfernen und alles von sarge auf etch umstellen Ich bevorzuge die Codenamen anstelle von stable oder testing damit ich selbst entscheiden kann wann ich das System umstelle und nicht vom Release überrascht werden.
  • mount -o remount,rw /boot - Meine Boot-Partition ist normalerweise Read-Only
  • aptitude upgrade - Zunächst nur ein minimales-Upgrade
  • aptitude install initrd-tools - Wichtig für das Kernel-Update, weitere Informationen sind in den Release-Notes zu finden
  • check configs - Konfigurationseinstellungen von Hand überprüfen
  • aptitude install linux-image-2.6-k7 - neuen Kernel installieren. K7 ist für meinen AMD Athlon64
  • check /etc/lilo.conf - Ist eine initrd=/initrd.img Zeile vorhanden? Verweist der Boot-Eintrag auf /vmlinuz und nicht auf einen alten Kernel?
  • /sbin/lilo - Lilo neu installieren
  • aptitude install libfam0 - Bei mir gab es Konflikte mit libfam0c102, daher habe ich diese Library von Hand installiert
  • aptitude dist-upgrade - Jetzt läuft das eigentlich upgrade durch. Bei Konflikten mit Configs habe ich meine alte von Hand gesichert und sie erstmal überschreiben lassen.
  • aptitude update
  • aptitude update
  • check configs (I) - Jetzt habe ich die neuen Configs anhand meiner Sicherungen wieder angepasst.
  • reboot - Ein neustart um den neuen Kernel zu aktivieren und das System zu testen - der nächste Stromausfall kommt bestimmt. Nach 20 bangen Minuten war er wieder da - fsck braucht halt eine Weile.

  • check services - Jetzt noch alle Dienst überprüfen.

  • check configs (II) - Ein paar unwichtige Konfigurationen hatte ich mir für später aufgehoben, die kommen jetzt an die Reihe

  • prepare for next release - Siehe den entsprechenden Eintrag in den Release Notes.

Da ich Courier als Mailserver (POP3/IMAP) mit MySQL-Authentifizierung verwende musst ich noch die geänderten Authlibs nachinstallieren.

aptitude install courier-authlib courier-authlib-mysql

So das war es erstmal :)

Alles in allem ein reibungsloses Upgrade.

Update: Ich habe gerade noch einen Server umgestellt, diesmal hat fsck nur 7 Minuten gebraucht ;)

19 Apr 2007, 10:42

Firefox AdBlock Code killt TinyMCE

Den meisten Wordpress Benutzer dürfte TinyMCE ein Begriff sein, und wenn nicht, dann haben sie es zumindest schon einmal gesehen. Das ist der AJAX Editor der sich in neueren Wordpress Versionen unter dem “Visual Editor” verbirgt.

Vor einiger Zeit gab es auf der Hilfe-Seite von Firefox eine AdBlock Sektion. Soweit ich weiss wurde die inzwischen entfernt, aber ich nutze den Code für die userContent.css seit dem und bin damit eigentlich extrem zufrieden, da er die Anzahl der angezeigten Ads auf eine sehr erträgliche Anzahl reduziert. Nur gegen Layer-Ads fehlt mir noch der entsprechende Block-Code, aber das ist eine andere Geschichte. Das Vorteil von dem userContent.css Code ist auch, dass es auf der Server Seite kaum zu erkennen ist ob die Ads angezeigt werden oder nicht, da diese Datei einfach ein zusätzliches CSS Darstellt das beim rendern vom Browser berücksichtigt wird.

Das Problem an dieser Lösung ist, dass es ab und zu Kollateralschäden kommt. Bis jetzt hat mich das nicht weiter gestört, aber seit TinyMCE in Wordpress integriert ist stört es schon ein wenig wenn der Editor nicht benutzbar ist. Daher habe ich den AdBlock-Code mal untersucht um die Bösewichte zu finden die TinyMCE zerschiessen.

Die Übeltäter waren folgende Anweisungen:

iframe[src=“/adv”], img[src=“/adv”], img[src*=“/adx”],

Hier gibts die korrigierte Datei: AdBlock für Mozilla Firefox

17 Apr 2007, 07:13

Top 5 Eclipse Plugins

Meine wichtigsten Eclipse Plugins:

Die “Plugins” die sowieso in der Eclipse-Distribution enthalten sind, bzw. von der Eclipse Foundation direkt gepflegt werden liste ich hier nicht auf. Das wären z.B. JDT, CDT, etc.

16 Apr 2007, 22:06

Version 0.3 von jTodoList

Die neue Version von jTodoList bietet jetzt auch die Möglichkeit die Todo-Liste als Treemap, gewichtet nach Priorität oder Risiko, darzustellen.

Für das nächste Release steht eine Überarbeitung der GUI an. Der Code gefällt mir so im Moment nicht.

Download: tar.bz2 / zip

Homepage: jTodoList

16 Apr 2007, 12:34

Top 5 Java Bibliotheken

Hier nur kurz meine 5 wichtigsten Java Bibliotheken:

Ein weiterer Kandidat für diese Liste ist die TreeMap Library, aber da ich sie selbst noch nicht getestet habe muss ich erstmal sehen was sie zu bieten hat.

P.S.: DDL = direkter Download

16 Apr 2007, 07:38

PowerNow! unter Linux für Athlon64 X2 3800+ auf Abit AX8 V2.0

Da einige Mainboardhersteller die ACPI Tabellen ihrer Produkte offenbar leider etwas schlampig pflegen muss man als Linux Nutzer teilweise selbst Hand an die DSDT-Tabellen legen.

Zwar gibt es beim Linux/ACPI-Projekt einige korrigierte DSDT-Tabellen, aber da mein Mainboard nicht dabei war musst ich selbst den Compiler anwerfen und mein Glück versuchen.

Das Ergebniss will ich der Welt nicht vorenthalten, vielleicht kann ja sonst noch jemand was damit anfangen. Zu finden ist das ganze hier: Fixed ACPI DSDT Tables for Linux.

Ich muss aber dazu sagen, dass ich für nichts garantiere. Diese DSDT läuft bei mir schon über ein halbes Jahr wunderbar, aber es kann gut sein, dass es auf einem anderen System zu ernsten Problemen - bis hin zu Hardware Schäden - kommen kann.

11 Apr 2007, 20:31

WEP gesicherte WLANs in weniger als einer Minute knacken

Wie heise vor ein paar Tagen berichtet hat, haben es ein paar meiner Komolitonen an der TU Darmstadt geschafft die WEP Verschlüsslung in unter einer Minute zu knacken - zumindest in 50% aller Fälle.

Gestern lief dazu auch ein Bericht im Nachtmagazin der ARD den es sogar Online gibt. Falls der Link nicht funktioniert kann man das ganze auch über tagesschau.de unter Multimedia finden.

09 Apr 2007, 09:47

Debian 4.0 -etch- ENDLICH freigegeben!

Es ist geschafft, nachdem die letzten RC-Bugs beseitigt wurde ist es soweit.

Es gibt ein neues stable Release von meiner lieblings Distribution Debian!

Hier gibt es die Release Notes, die Downloads und die offizielle Ankündigung.

Was gibt es neues in Etch?

07 Apr 2007, 14:22

jPOPc - Java POP3 Client veröffentlicht

Soeben habe ich unter jPOPc den angekündigten Java POP3 Client veröffentlicht.

Source

07 Apr 2007, 14:13

Breakpoint 2007 hat begonnen!

Vor kurzem hat in Bingen die alljährliche Demo Compo Breakpoint begonnen.

Nach dem Wegfall einiger Sponsoren mussten die Eintrittspreise leider kräftig erhöht werden, was mich ehrlich gesagt, davon abgehlaten hat dieses Jahr einmal persönlich teilzunehmen. Naja, so bleibt die Szene unter sich ;)

Wir können wieder mal gespannt sein wer dieses mal als Sieger aus den einzelnen Veranstaltungen hervorgeht.

07 Apr 2007, 14:12

jHTTPd - Java Webserver veröffentlicht

Soeben habe ich unter jHTTPd den länger angekündigten simplen Java Webserver veröffentlicht.

Download Binary / Source

06 Apr 2007, 10:26

jUPnP - Java UPnP Beispiel Implementierung veröffentlicht

Soeben habe ich unter jUPnP eine UPnP-Implementierung in Java veröffentlicht.

Die Anwendung implementiert zwar nur ganz konkrete Funktionen, ist aber sicherlich für einige Personen trotzdem interessant wenn es um die Implementierung von UPnP in Java geht.

Download Binary / Source

06 Apr 2007, 10:25

XML - SAX vs. DOM

Mir war lange Zeit unklar was der Unterschied zwischen SAX (Simple-API-for-XML) und DOM (Document Object Model) ist.

Ich möchte das hier nochmal kurz zusammenfassen:

Ein DOM-Abbild einer XML-Struktur liegt i.d.R. komplett im Speicher und lässt sich so sehr bequem manipulieren und auslesen, benötigt aber unter Umständen sehr viel Speicherplatz.

Bei SAX definiert der Entwickler sog. Callback-Handler die bei bestimmten Ereignissen, d.h. XML-Tags (z.b. <html>) aufgerufen werden. So wird nur ein Bruchteil der XML-Datei im Speicher vorgehalten und es wird damit möglich auch sehr große XML-Datein zu parsen.

Man stelle sich vor man bekommen eine 1,2 GB große Datei mit allen Zugverbindungen in Deutschland und will die komplett in den Speicher laden … (Alles schon vorgekommen).

03 Apr 2007, 14:44

Wine & Guildwars: Endlich mit Mauszeiger!

Howdy!

Seit kurzem - ich weiss nicht genau ob seit 0.9.33 oder 0.9.34 - wird in Guild Wars unter Wine der Mauszeiger angezeigt.

Ich warte schon seit langem darauf, dass die Entwickler diesem Bug endlich korrigieren, der bisher ein ordentliches Spielen von Guild Wars unter Linux verhindert hat.

Apropos Guild Wars: Mir ist gerade aufgefallen, dass ich in diesem Blog noch nie was über mein aktuelles Lieblingsspiel gepostet habe: Guild Wars :)

Update:

Noch ist die Unterstützung noch nicht perfekt. Sobald eine neue Karte geladen wurde muss ich zunächst den Maus über einen NPC bewegen bevor der Mauszeiger angezeigt wird. Das ist nicht perfekt, aber immerhin!

25 Mar 2007, 09:28

VirtualBox - Probleme mit Linux als Gast?

Hier möchte ich kurze meine Erfahrungen mit VirtualBox unter Debian GNU/Linux “etch” schildern.

Eigentlich ist VirtualBox eine wirklich gutes Programm, es mangelte lange an einer guten, freien Virtualisierungslösung, aber es ist sehr schade, dass VirtualBox offenbar einige Probleme mit Linux als Gast OS hat.

Vista hingegen hat bei mir einwandfrei funktioniert. ReactOS, XP und 2000 werde ich demnächst mal ausprobieren, wenn ich genug Speicherplatz geschaffen habe.

Ein kleiners Manko unter Windows Vista ist allerdings, dass Microsoft den Treiber für die emulierte Netzwerkkarte entfernt hat. Das lässt sich zwar dadurch lösen, dass man sich von der AMD Seite den Treiber herunterlädt und davon ein ISO erstellt was man dann in der VM mountet und den Treiber von Hand installiert. So wirklich einfach ist das aber nicht und ohne ein unixoides OS mit mkisofs dürfte es zudem relativ umständlich sein. Es wäre schön wenn der Hersteller entweder auf ein entsprechendes ISO auf der Homepage bereitstellen, oder direkt mitliefern oder eine andere Netzwerkkarte emulieren würde.

Ich werde meine Tests von VirtualBox demnächst fortsetzen und dann hier weiter davon berichten.

Für eine eingehenden Performance-Vergleich möchte ich auf diese Quelle verweisen, ich persönlich war allerdings immer sehr zufrieden mit der Performance.

25 Mar 2007, 09:28

Google Office

Als eifriger Lesen des GoogleWatchBlog staune ich regelmäßig wieviele Produkte Google hat und wie viele sich noch in der Entwicklung befinden.

Da stellt sich mir allerdings schon die Frage, wann endlich das “Google Office” erscheint. Diese vielen Programme, Tools und Datenbanken verlangen quasi danach miteinander verwoben zu werden um die ultimative Browser-basierte Programm-Suite zu schaffen.

Ich bin mal gespannt, die Google Services for Your Domain ist schonmal ein Anfang.

25 Mar 2007, 09:27

FlexiCrypt 1.1 veröffentlicht

Die neue Version 1.1 von FlexiCrypt macht das Programm zu den neuen Versionen der zugrunde liegenden Bibliotheken kompatibel.

Da die Entwickler des FlexiProvider, entgegen aller “Best Practices”, die exportierte API geändert haben, musste ich einige Stellen in FlexiCrypt anpassen.

Durch die neue FlexiProvider Version 1.3.1p1 sind ein paar neue Algorithmen hinzugekommen. Details gibts auf der FlexiProvider Homepage.

25 Mar 2007, 09:22

jTodoList 0.2 veröffentlicht

Gestern Abend habe ich die Version 0.2 von jTodoList veröffentlicht.

Die wesentliche Neuerung sind die neuen Export-Filter.

Weiterhin wurde der Code für weitere Ex- und Import Filter vorbereitet. [UML]

22 Mar 2007, 22:22

Singleton in D

Das ist wohl der erste “self containing singleton” (so habe ich ihn getauft) in D:

 8:    /// Singleton instance.
 9:    private static SceneManager singleton;
10:
11:    /// No public need for this.
12:    private static this() {
13:        singleton = new SceneManager();
14:    }
15:
16:    /// Get signleton instance.
17:    public static SceneManager opCall() {
18:        if(singleton == null)
19:            singleton = new SceneManager();
20:        return singleton;
21:    }
z.B.: SceneManager().registerScene(new DebugScene()); SceneManager().registerScene(new StarfieldScene());

16 Mar 2007, 10:16

AudioPlayer unter Linux: Quod Libet

“Ex falso quodlibet” (lat., aus falschem folgt beliebiges) - eigentlich ein bekannter Satz aus der Logik stand Pate bei der Nameswahl für meinen neuen lieblings AudioPlayer für Linux.

Das Duo Ex Falso / Quod Libet aus Tag-Editor und schlankem Musik-Player überzeugt durch seine hohe Geschwindigkeit, flexible Konfiguration und die interessante Auswahl an Plugins.

Es scheint so als hätte sich die Autoren Rhythmbox, Amarok, 1by1 und Co. angeschaut und sich nur die besten Features rausgepickt.

Dieses Programm ist wirklich empfehlenswert!

Wer damit nicht glücklich wird kann sich im ubuntuusers Wiki nach Alternativen umschauen.

06 Feb 2007, 16:49

jTodoList veröffentlicht!

Ich habe vor kurzem eine kleine, aber feine To-Do-Liste ein Java geschrieben.

Unter Windows gibt es das hervorragende Programm ToDoList von Abstract Spoon, aber unter Linux läuft das leider nicht.

Da ich aber nunmal beide System einsetze wollte ich auch unter Linux eine Möglichkeit meine ToDo zu bearbeiten.

Dabei rausgekommen ist dieses nette Programm.

Zu finden ist das ganze unter diesem Link. Dort gibts auch einen Screenshot und weiter Informationen.

Ach ja, es wird Java 5+ benötigt und das ganze steht unter GPL.

23 Nov 2006, 11:10

Java Strings oder Wie-ich-meine-Perfromance-verbaue

Kürzlich musste ich feststellen, dass es keine gute Idee ist eine größere Menge an Daten in einem String zu puffern. Ich finde es etwas schwierig zu umschreiben aber so sieht der Beispiel-Code aus:

String str = ""
while((buffer = br.readLine() != null) {
  str += buffer;
}
return str;

Das Problem an dieser Konstruktion ist, dass bei jedem Schleifendurchlauf - und das waren in dem Fall einige - jede Menge Objekte anglekt werden. Für die + Operation zwischen Strings (Konkatenation) wird von Java in etwa folgener Code generiert:

str = new StringBuilder().append(str).append(buffer).toString();

Eventuell wird das interne Char-Array des StringBuilders beim zweiten append nochmal vergrößert, d.h. ein neues anlegen, das halt hineinkopiert, das alte löschen. Dabei muss eine Menge Speicher allokiert und wieder freigegben werden, jeden Menge neue Objekte werden erzeugt, sprich: es entseht ein riesiger Overhead. Das kommt insbesondere dann zum tragen wenn die der BufferReader br gerade dabei ist eine Textdatei von vielleicht 5MB einzulesen, z.B. Base64 kodierte Binärdaten. Die ganze Operation hat so je nach System ca. 10-120 Minuten benötigt.

Einen kleinen Tipp und ein paar Änderungen später hat das ganze nur noch ca. 1,2 Sekunden benötigt. Der oben genannte Code wurde einfach in folgendes geändert:

StringBuilder sb = new StingBuilder()
while((buffer = br.readLine() != null) {
   sb.append(buffer);
}
return sb.toString();

Da hier der StringBuilder direkt benutzt wird, ergibt sich ein beachtlicher (!) Performanz-Gewinn.

16 Oct 2006, 10:26

FlexiCrypt 1.0 veröffentlicht

Soeben haben wir unter developer.gauner.org/flexicrypt/ das universelle crypto toolkit FlexiCrypt veröffentlicht.

Es ist das Ergebniss einer 6 monatigen Entwicklung und ermöglicht es dem Benutzer beliebige Dateien zu ver- und entschlüsseln, zu signieren und verifizieren. Ausserdem enthällt es eine komplette Schlüsselverwaltung.

Das besondere daran ist, dass es auf den FlexiProvider vom Fachbereich Informatik der TU Darmstadt aufsetzt und damit auch Zugang zu den neusten Algorithmen bietet. Darunter z.B. ECC, Number Field Cryptography.

20 Sep 2006, 10:59

Kernel 2.6.18 released!

Aye!

Nach dem rc7 ist es endlich soweit. Das hat diesmal irgendwie ziemlich lange gedauert.

Endlich ist er da: Source, Changelog