profile picture

Michael Stapelberg

All Blog Posts

Filter by tag:
Go to page:

2010 › November

  • Die Performance und der Speicherbedarf von CouchDB hängen durch die B+-Tree-Datenstruktur maßgeblich an den IDs der Dokumente: The impact of document IDs on performance of CouchDB Read more →

2010 › October

  • Android ist IPv6-enabled standardmäßig. Was man braucht, um das zu verifizieren und eventuell die Einstellungen zu ändern, ist Busybox: http://zedomax.com/android/busybox.zip (von diesem Blogpost) Die Installation ging bei mir einfacher als im mitgelieferten Script: x200 $ unzip busybox.zip x200 $ adb push busybox /sdcard/busybox x200 $ adb shell $ su # mount -o remount,rw /dev/block/mtdblock6 /system # mv /sdcard/busybox /system/xbin/busybox # cd /system/xbin # chmod 755 busybox # . Read more →

  • Android hat mich ;-). Ich möchte kurz darauf eingehen, warum ich gewechselt habe. Mein altes (erstes) Smartphone, das Nokia N900, habe ich mir gekauft, weil ich damit viele Aufgaben erledigen kann, für die ich sonst verschiedene Geräte brauchte: SIP-Telefon, MP3-Player (man kann sich auch in der Bahn mal einen Film anschauen, das funktioniert ziemlich gut), Telefon, mobiler IRC- und Webclient, Navigationssystem. Read more →

2010 › September

  • Da CouchDBs SSL-Unterstützung bei der Replikation derzeit nutzlos ist (für das Szenario, dass ich in einem fremden Netz unterwegs bin und der Netzbetreiber Man-in-the-middle spielt um meine Daten abzugreifen), musste ich mir eine Alternative überlegen. Folgende Punkte gilt es zu beachten: Die Kommunikation darf nicht unverschlüsselt das Telefon verlassen und darf erst in einem vertrauenswürdigen Netz entschlüsselt werden. Read more →

  • Und nun die Patches von heute, Montag, dem 2010-09-06: Korrekte Validierung der Zertifikate bei Replikation via SSL sicherstellen (Erlang kommt standardmäßig mit der Einstellung, dass der Fehler unknown_ca einfach ignoriert wird) Replikation kommt bei Transfer-Encoding: Chunked (Standard bei CouchDB) und SSL ins Stocken (wir sind uns noch nicht ganz sicher, was das eigentliche Problem ist) Replikation via IPv6 ermöglichen (überarbeitet, da der alte Patch bindv6only=0 voraussetzte, was mir nicht bewusst war) Erklärung wie man Replikation hinter einem SSL-Proxy (z. Read more →

  • Wenn man DBus versteht (was am Anfang nicht einfach ist, insbesondere wenn man nur mal kurz reinschauen will) und insbesondere die DBus-API der Programmiersprache der Wahl versteht, ist das ja ganz in Ordnung. Scheint schnell zu sein und man kann damit recht stabil IPC bauen (auch wenn ich Teile der schwarzen Magie in dem ganzen Konstrukt, was heutzutage einen Desktop auszumachen scheint, noch nicht verstanden habe). Read more →

2010 › July

  • Nachdem Rakudo Star am Donnerstag herausgekommen ist, habe ich hier mal schnell ein paar Zeilen zusammengehackt, um ein Dokument aus CouchDB zu holen. LWP::Simple und JSON::Tiny kommen bei Rakudo direkt mit: #!/usr/bin/env perl6 use v6; use JSON::Tiny; use LWP::Simple; my $dburl = 'http://localhost:5984/foo'; my $json = LWP::Simple. Read more →

  • In C++ gibt es Closures! Zwar erst mit C++0x (wofür man g++ 4.5 braucht), aber immerhin. Damit wird das Erstellen asynchroner APIs endlich annehmbar (in diesem Fall der CouchDB-Teil einer Qt-Anwendung, wegen Qt muss ich überhaupt erst C++ nutzen). Zum Vergleich mal die API vorher: void MainWindow::clickedTask() { TodoButton *btn = (TodoButton*)sender(); /* Get the document from CouchDB */ QNetworkReply *nreply = db->get_document(btn->ID()); connect(nreply, SIGNAL(finished()), this, SLOT(recv_entry_edit())); } void MainWindow::recv_entry_edit() { QNetworkReply *reply = (QNetworkReply*)sender(); QByteArray answer = reply->readAll(); QJson::Parser p; bool ok; QVariant var = p. Read more →

  • Nachdem ich letztens ein WebDAV-plugin für Maemo gehackt habe, wollte ich das nun hochladen. Dazu registriert man sich bei maemo.org und stellt dann einen Request auf Upload-Rechte für das extras-devel-Repository. Nachdem man diese Rechte bekommt lädt man seinen SSH-Public-Key hoch und kann danach Pakete in den Autobuilder laden. Read more →

  • Auf meiner Asterisk-Telefonanlage läuft natürlich auch ein Anrufbeantworter. Damit ich diesen nicht immer nur abfragen kann, wenn ich gerade einen E-Mail-Client vor mir habe (sup unterstützt leider noch keine verteilten Setups), sondern auch, wenn ich gerade nur mein Telefon greifbar habe, habe ich meine Konfiguration etwas geändert. Read more →

  • Auf dem N900 kann man Fotos/Videos via flickr und anderen Diensten direkt ins Netz stellen. Gestern fiel mir auf, dass flickr bei kostenlosen Accounts allerdings ein Limit von 2 Videos pro Monat hat, was ein bisschen stört, wenn man gerade das dritte Video hochladen möchte. Read more →

  • Wer i3lock nutzt ist herzlich dazu eingeladen, den xcb-Branch von i3lock auszuprobieren. Der Code darin wurde komplett auf xcb portiert und ist dadurch zum einen hübscher und geringfügig schneller, zum anderen wurden einige Probleme behoben. Eine kurze Übersicht: Man kann Bilddateien im PNG-Format statt im XPM-Format laden Beim Suspend-to-RAM verschwindet das Bild nicht mehr gelegentlich Popups überlagern nun nicht mehr das i3lock-Fenster (sondern i3lock bleibt permanent im Vordergrund) Für diejenigen, die nicht fließend git sprechen: $ git clone git://code. Read more →

  • Bloat, überall! -rw-r--r-- 1 michael staff 7946 _____________ steuer.07 -rw-r--r-- 1 michael staff 36718 _____________ steuer.08 -rw-r--r-- 1 michael staff 72673 _____________ steuer.elfo (Einkommenssteuererklärung generiert mit ElsterFormular von 2007, 2008 und 2009) Read more →

2010 › June

  • Da Xen wohl auch in Zukunft nicht in den Linux-Kernel aufgenommen wird und stattdessen KVM bereits verfügbar ist, habe ich meinen Server von Xen auf KVM migriert. Da die Migration ziemlich stressfrei lief (wenn man weiß, wo man drehen muss), möchte ich hier kurz den Verlauf schildern. Read more →

  • Soeben wurde i3 v3.ε-bf1 veröffentlicht. Dieses Release enthält nur Bugfixes und gilt als stabil. Ein Upgrade wird allen Nutzern von v3.ε empfohlen. Die Release Notes enthalten alle Änderungen. Read more →

  • Meine erste grafische Maemo-Anwendung ist fertig: http://michael.stapelberg.de/moodlampctl (damit kann man eine moodlamp steuern). Read more →

2010 › May

  • Da ich mich häufig dabei erwische, im aktuellen Verzeichnis nach dem letzten Coredump zu suchen um ihn inklusive zugehörigem Programm in den Debugger zu laden, habe ich diese Aufgabe in ein Script ausgelagert. Die folgenden Zeilen Perl suchen den letzten Coredump (dazu muss das Coredump-Pattern mit sysctl -w kernel. Read more →

  • Im RaumZeitLabor tauchte letztens eine WatchGuard Firebox X500 (Modellnummer R6264S) auf, die von ihrem Besitzer auf den Müll geworfen wurde. Für uns ist die Kiste allerdings durchaus noch zu gebrauchen: In ihr steckt ein größtenteils aus Standard-x86-Hardware bestehendes System mit Serieller Konsole, 6 Ethernet-Ports, 256 MB SDRAM und einem Celeron 1,2 GHz. Read more →

  • Die Folien und der Beispielcode zu meinem Vortrag „Portieren von C-Programmen auf IPv6” (gehalten auf dem 2. IPv6-Kongress vor zwei Tagen) sind nun online. Read more →

  • Folgendes ist valider C-Code (ausprobieren mit gcc foo.c): main(){int B[ 0 :> ;( 8) ;} Hat noch jemand Ideen für Smilies? Read more →

  • …und hier ist der Grund, wieso alle qt-Programme in der falschen Sprache angezeigt werden: Die Klasse QLocale macht das system-locale (welches die meisten Programme an QTranslator verfüttern) an LC_NUMERIC (!) fest. Normalerweise ist dafür LC_MESSAGES zuständig. Hier ist der passende Bugreport, der übrigens seit 2007-11-12 offen ist… Read more →

  • Ein hübscher Vergleich zwischen LaTeX und Microsoft Word (was die typografischen Details angeht): http://nitens.org/taraborelli/latex Read more →

  • Ich habe gerade auf Arbeit einen 9 Jahre alten Fehler in einem Treiber für eine unserer Karten behoben. Das Symptom war, dass manchmal das Auslesen des Buffers auf der Karte einfach hing. Als ich mir das Problem auf meiner Testmaschine anschaute, hing der Transfer nicht nur, sondern gelegentlich startete auch die Maschine neu (manchmal mit Kernel Panic). Read more →

2010 › April

  • Ein cooles Feature von CouchDB sind Change Notifications: Anstatt wiederholt zu pullen, ob neue Daten da sind, kann man sich von CouchDB benachrichtigen lassen („continuous polling”). Besonders in Kombination mit Replikation ist das eine nette Sache und integriert sich nahtlos in ein event-basiertes Programm (man kann natürlich auch blockierend effizient pollen). Read more →

  • Heute in „Warum ich die GNU autotools nicht mag”: Warum unter IRIX PHP5 nicht gelinkt werden kann. Die autotools sind eigentlich dazu da, Besonderheiten bestimmter Systeme zu ermitteln, damit man als Programmierer beispielsweise andere Funktionen nutzen kann, wenn auf einem System eine bestimmte Funktion fehlt. Read more →

  • Es gibt ja nicht häufig Debian-Bugs, bei denen ein Facepalm angebracht wäre, aber das hier ist einer: Im Schriftpaket ttf-linux-libertine gab es Bug #523186, bei dem es um ein OpenOffice.org-Problem mit dieser Schriftart geht. Die „Lösung” war dann, die Schriftart umzubenennen, und zwar zu „Linux Libertine O” (das ist der OpenFont-Name, nicht der TrueType-Name! Read more →

  • Wenn vmware-modconfig sich mit der Meldung „gcc and kernel headers must be installed” beschwert, obwohl beides installiert ist, könnte das daran liegen, dass unter Linux 2.6.33 die Dateien utsrelease.h und autoconf.h nicht mehr in include/linux/, sondern in autogenerated/ landen. Folgender Workaround schafft abhilfe, bis VMware eine funktionierende Variante ausliefert: cd /lib/modules/$(uname -r)/build/include/linux ln -s . Read more →

2010 › March

  • i3 v3.ε wurde soeben released. Ein Upgrade wird allen Nutzern empfohlen, Version 3.ε ist stabil. Es wurden einige Aufräumarbeiten durchgeführt (XRandR statt Xinerama, der neue Parser/Lexer ist nun Standard, Debugoutput ist regulierbar, man kann die Workspace-Leiste abschalten und eine externe nutzen, die IPC-Schnittstelle wurde deutlich erweitert), wodurch einige Bugs nicht mehr auftreten. Read more →

  • Wer sich über die Tastenkombination Shift+Insert zum Pasten ärgert (auf manchen Tastaturen schwer erreichbar), kann folgendermaßen eine beliebige Taste mit der mittleren Maustaste (also effektiv Pasten) belegen: xmodmap -e 'keycode 115 = Pointer_Button2' xkbset m xkbset exp =m Die xkbset-Aufrufe aktivieren den Mousekeys-Modus und sind nötig, damit das spezielle Keysym Pointer_Button2 zur Verfügung steht. Read more →

  • In X11 gibt es oftmals die Situation, dass es eine alte API gibt, die aufgrund einer neuen Extension obsolet wurde. So beispielsweise auch bei Mauszeigern: Es gibt eine spezielle Schriftart namens „cursor”, welche Masken enthält, die Vordergrund und Hintergrund der jeweiligen Cursor bestimmen (siehe http://www. Read more →

Go to page:

I run a blog since 2005, spreading knowledge and experience for almost 20 years! :)

If you want to support my work, you can buy me a coffee.

Thank you for your support! ❤️