A personal weblog by Ulf Rompe. Includes entries about my life, thoughts, Debian, Linux, GIMP, LaTeX, PHP, Photography, other weblogs and sometimes completely random things. Mostly german, sometimes english.

Twitter introduces sane URL wrapping

Up to now, every time I decided to look into using Twitter I was quickly annoyed by all those people posting shortened URLs, giving no hint about what server you will be redirected to after clicking the link. Being a person who looks at every URL before clicking it, I got bored by having to install tools to verify those URLs, and came to the conclusion that Twitter just sucks. I always thought: "Is it so hard to extend the 140 character limit just for URLs?"

Seems like Twitter finally read my thoughts. From their newsletter:

In the coming weeks, we will be expanding the roll-out of our link wrapping service t.co, which wraps links in Tweets with a new, simplified link. Wrapped links are displayed in a way that is easier to read, with the actual domain and part of the URL showing, so that you know what you are clicking on. When you click on a wrapped link, your request will pass through the Twitter service to check if the destination site is known to contain malware, and we then will forward you on to the destination URL. All of that should happen in an instant.

The time they are activating this change will be the time I start twittering. What a pity that it is Twitter who is implementing this and not Status.net, but hey, at least someone had the brainwave.

Images virtueller Maschinen von Xen nach KVM konvertieren und in libvirt einbinden

Problem: Ein alter Xen-Server unter Ubuntu 7.10 (Gutsy Gibbon) mit diversen Hardy-Gästen, neuerdings zickig und nicht mehr unterstützt. Ein vorsichtiges Update auf Hardy Heron machte Xen erst richtig instabil, mindestens eine VM war immer down.

Ein Wechsel zu KVM lag also nahe, zumal er schon lange auf der Todo-Liste stand und nur aus Zeitgründen noch nicht umgesetzt wurde. Da ich die KVM-Unterstützung in Hardy auch nicht in allzu guter Erinnerung hatte, Lucid Lynx in wenigen Tagen released werden wird und ich mit KVM unter Lucid schon gute Erfahrungen gemacht habe, wurde also erst einmal auf Lucid aktualisiert.

Dann mussten zunächst die Disk-Images der Xen-Maschinen konvertiert werden. Das geht nicht automatisch, aber es gibt im Netz beispielsweise unter [1] und [2] gute Hinweise dazu. Wir haben uns nicht ganz daran gehalten, vor allem, weil wir die VMs unter Xen teilweise gar nicht mehr booten konnten, um sie vorbereitend zu modifizieren.

Zur Konvertierung und Inbetriebnahme eines Images hat sich dieser Ablauf bewährt:

Neues Image erstellen, etwas größer als das Xen-Image zzgl. gewünschter Swap-Partition. Für ein 150GB-Image:

# dd if=/dev/zero of=kvm.img bs=1M count=163840

Image partitionieren:

# parted kvm.img mklabel msdos
# parted kvm.img mkpart primary ext2 0 162000 -a minimal
# parted kvm.img mkpart primary linux-swap 162000 163840
# parted kvm.img set 1 boot on

Block-Devices für das Image erstellen:

# losetup /dev/loop0 kvm.img
# kpartx -a /dev/loop0

Inhalt des Xen-Images kopieren und an Partition ausrichten:

# dd if=/opt/domain/domains/alter-xen-server/disk.img of=/dev/mapper/loop0p1 bs=1M
# fsck.ext3 -f /dev/mapper/loop0p1
# resize2fs /dev/mapper/loop0p1
# fsck.ext3 -f /dev/mapper/loop0p1

Swap anlegen:

# mkswap /dev/mapper/loop0p2

Grub und Kernel in Partition installieren:

# mount /dev/mapper/loop0p1 /mnt
# mkdir -p /mnt/boot/grub
# cp /boot/grub/stage1 /mnt/boot/grub/
# cp /boot/grub/stage2 /mnt/boot/grub/
# cp /boot/grub/e2fs_stage1_5 /mnt/boot/grub/
# chroot /mnt
# apt-get install grub linux-server
# update-grub
# exit
# umount /mnt

Block-Devices entfernen:

# kpartx -d /dev/loop0
# losetup -d /dev/loop0

Boot-Sektor installieren:

# echo "device (hd0) kvm.img
root (hd0,0)
setup (hd0)
quit" > /tmp/grub.input
# grub --device-map=/dev/null < /tmp/grub.input

Eine Instanz in libvirt bekanntmachen:
Vorher wurde "roge-subnet-1" definiert, so wie das Subnetz unter [3].

# virt-install -n mein-toller-server -r 512 --vcpus=1 --os-type=linux --os-variant=ubuntuhardy --virt-type=kvm --import --disk /opt/kvm/mein-toller-server/kvm.img --network network=roge-subnet-1,model=virtio --vnc --noautoconsole

Mit etwas Glück läuft anschließend die virtuelle Maschine und ist erreichbar. Falls eine Firewall auf dem Server läuft, sollte man daran denken, die Interfaces entsprechend der neuen Netzwerk-Konfiguration anzupassen.

Für die dd-Aufrufe muss Zeit eingeplant werden. Der erste dauert für diese Größe etwa 30 Minuten, der zweite einige Stunden.

[1] http://searchnetworking.techtarget.com.au/articles/35011
[2] http://blog.pregos.info/2009/09/06/migration-virtueller-maschinen-von-xen-zu-kvm/
[3] http://wiki.hetzner.de/index.php/Netzkonfiguration_für_Xen_und_KVM_mit_libvirt

Selbstgebackenes Sauerteig-Brot

Wer mich kennt, dürfte wissen, dass ich mein Brot seit Jahren tunlichst selber backe. Denen von Euch, die mich schon nach Rezepten fragten, möchte ich endlich mehr liefern als immer nur "Das mache ich irgendwie nach Gefühl".

Mein derzeitiges Standard-Rezept:

Gegeben sei eine Sauerteig-Kultur, die als kleiner Rest (etwa 100 Gramm) die meiste Zeit ihres Daseins im Kühlschrank fristet.

Am Tag des Backens, morgens:

Sauerteig aus dem Kühlschrank nehmen, mit 350 Gramm Vollkornroggenmehl und 350 ml Wasser füttern, gut durchrühren und bei Zimmertemperatur mehrere Stunden stehen lassen. Ich stelle den Pott immer über eine Heizung, damit die Milchsäurebakterien es auch schön kuschelig haben.

Am späten Nachmittag:

70 Gramm Mehrkornmischung (oder Leinsamen oder was ganz anderes) mit 130 ml kochendem Wasser übergießen und stehen lassen.
700 Gramm des Sauerteigs in eine Backschüssel geben, den Rest wieder in den Kühlschrank. Dazu kommen 550 Gramm Weizenmehl, meistens Typ 1050, manchmal aber auch Typ 550 oder eine Mischung aus beiden. Darauf kommen dann etwa 3 Teelöffel Zucker, 2 Esslöffel Salz, etwas Brotgewürz (dafür habe ich immer Fenchel, Kümmel, Koriander und Kardamom in einer Gewürzmühle), und, wenn man es eilig hat (und das habe ich immer), ein Beutel Trockenhefe.
Die festen Bestandteile ein wenig unter das Mehl mischen, damit sich alles gut verteilt. Wenn die Körner auf Handtemperatur abgekühlt sind, schüttet man sie mitsamt des Wassers auf das Mehl.

Nun geht es ans Kneten. Ich mache das mit der Hand, verwende aber manchmal einen Einweghandschuh, denn der Teig klebt wirklich sehr. Wer eine gute Knetmaschine sein Eigen nennt, wird das natürlich damit machen. Einen normalen Handmixer kann man hierfür vergessen; er ist zu schwach, um den schweren Teig zu bewegen.
Wenn man während des Knetens das Gefühl hat, dass das Ganze zu trocken wird, kann man noch vorsichtig Wasser angießen. Aber bloß nicht zu viel, sonst macht man hinterher Fladenbrot!

Ist der Teig fertig, forme ich einen länglichen Laib daraus und lege ihn in einen Gärkorb. Der hat eigentlich nur die Aufgabe, den Teigling während des Gehens in Form zu halten. Die Entnahme des Teiges erfordert ein wenig Übung und funktioniert am besten, wenn man den Teig rundherum mit etwas Mehl bepudert, damit er nicht überall anklebt. Diesen Korb lege ich in den Backofen auf das Backblech und schalte den Ofen auf kleinster Stufe ein, so dass ich darin etwa 30°C habe.

Am frühen Abend:

Nach etwa 2 Stunden ist das Brot dann groß genug geworden und kann gebacken werden. Der Gärkorb wird aus dem Ofen genommen (vorsichtig, nicht zu stark erschüttern) und mit dem umgedrehten Backblech abgedeckt. Den Ofen heize ich auf höchster Stufe vor (wirklich bis zum Anschlag). Wenn der Ofen heiß ist, drehe ich das Blech mit dem Korb vorsichtig um, nehme den Korb ab und schiebe das Blech in den Ofen. Dann drehe ich den Temperaturregler auf 210°C herunter und stelle mir einen Wecker auf 45 Minuten.
Nach 45 Minuten kann das Brot entnommen und zum Abkühlen auf einen Rost gelegt werden. Dabei kann man, wenn man unsicher ist, einmal von unten anklopfen. Wenn es hohl klingt, ist das Brot fertig gebacken.

Mail-Probleme seit der Serverumstellung?

Dieser Hinweis betrifft nur einige User, die über meinen Server ihre Mail abwickeln. Vor einigen Wochen hat der Mail-Server eine neue IP-Adresse bekommen. Normalerweise sollte das kein Problem darstellen. Wer trotzdem seitdem keine Mails abholen und/oder versenden kann, sollte dringend die Server-Einstellungen in seinem Mail-Programm prüfen. Sown Versand als auch zum Empfangen sollte als Server "zombie.rompe.org" eingetragen sein.

Beispielhaft in Evolution geht das folgendermaßen:

  1. Mail-Programm starten
  2. In der Menü-Zeile "Bearbeiten" klicken, dort dann "Einstellungen"
  3. Es öffnet sich der Einstellungsdialog. Dort links "E-Mail-Konten" auswählen
  4. Rechts das Konto anklicken und ganz rechts auf den Knopf "Bearbeiten" klicken
  5. Es öffnet sich der Konteneditor
  6. Hier muss in den Reitern "Abrufen von Emails" und "Verschicken von Emails" jeweils im Feld "Server:" der Name "zombie.rompe.org" eingetragen sein. Steht dort etwas anderes, bitte entsprechend ändern und mit "OK" speichern.

She rules my life


Completely!

ExiFlow - Designing a workflow for digital photographers on Linux

This is one of the things I put my hands on for the past few months. Now that we have released a public alpha version, you are invited to test the whole thing:

ExiFlow

ExiFlow is a set of tools (command line and GUI) to provide a complete digital photo workflow for Unixes. EXIF headers are used as the central information repository, so users may change their software at any time without loosing any data.

Read on to learn more about ExiFlow

Gallery RSS feed reborn

You may have wondered why my gallery's RSS feed wasn't updating for quite some time now. Instead of boring you with explanations for that, I just want to announce that the feed is now working correctly, providing links to new and updated albums.

My extended del.icio.us post bookmarklet for Firefox

Don't panic, I won't join the masses in praising del.icio.us for it's greatness. I have just used it for quite some time now and got slightly addicted to it. Of course I don't use it without any alterations to the standard workflow — that would be dishonourable for any programmer. One thing that I use almost daily is an extended post bookmarklet. It differs from the default posting bookmarklet mainly in these aspects:

  • Selected text get's quoted and inserted into the extended description. Thus, if you select two words on a page and click the post bookmarklet, the extended description will be "two words", including the quotes.
  • If no text is selected, the bookmarklet tries to find a page description in the HTML meta information. If something usefull is found, it get's used as the extended description.
  • Exceptions are caught and displayed as an alert. Sometimes the JavaScript functions used to get text properties are blocked by security features of your browser. If this happens, the results are displayed and the bookmarklet continues to do it's job.

Feel free to use this bookmarklet. Updated will be announced at this page. To use this bookmarklet you will need to create a bookmark with the following link. One of several ways to do that is to simply drag it to your bookmarks toolbar:

del.icio.us post Version 1.1

Update: Fixed the quotation. Now you should get the complete bookmarklet when copying it.

Additional note: Of course, if you want to use the bookmarklet, you will have to replace my del.icio.us username with yours after copying it. To do that, drag and drop the link to your bookmarks toolbar, right click the newly created bookmark and choose "Properties". In the properties dialog, find the name "rompe" in the bookmark address (it's near the end) and replace it with your username. Press "OK". That's it!

Schnell mal das Dateidatum aller Fotos auf das Aufnahmedatum setzen

Als kleine Merkhilfe für mich selbst: Um mal schnell Datum und Uhrzeit von Fotos auf das Im EXIF enthaltene Aufnahmedatum zu setzen, genügt diese Zeile (vorausgesetzt, man hat das geniale ExifTool installiert, aber das sollte man ja ohnehin haben).

for i in *.jpg; do
    touch -d "`exiftool -d '%F %X' -DateTimeOriginal -S -s $i`" $i
done

Variation: Um einen Haufen Fotos tageweise in einzelne Ordner einzusortieren, genügt dieses Kommando:

for i in *.jpg; do
    folder=rundreise_`exiftool -d '%F' -DateTimeOriginal -S -s $i`
    mkdir -p $folder
    mv $i $folder
done

PS: Ich habe die Zeilen der Übersichtlichkeit halber mal auf mehrere Zeilen aufgeteilt. Echte Kerle tippen sowas natürlich trotzem alles in einer Zeile. :-)

Aggregator durch Blogroll ersetzt

Spätestens seit der Izynews-Affäre beschäftigen sich Blogger immer wieder mit der Frage, inwiefern eine Wiederveröffentlichung eines RSS-Feeds zulässig ist. Prinzipiell unterliegt der Feed dem ganz normalen Urheberrecht. Andererseits aber wird ein Feed ja extra veröffentlicht, damit Inhalte auch außerhalb der Website des Besitzers gelesen werden kann. Da ist also noch reichlich Raum für juristische Auseinandersetzungen. Solange die verbreiteten Feed-Formate kein automatisch auswertbares Lizenz-Feld enthalten, wird sich daran auch nichts ändern.

Mir liegt aber nichts ferner, als mir auch nur ansatzweise den Unmut der Autoren zuzuziehen, deren Blogs ich gerne lese. Daher gibt es hier schon seit einiger Zeit (hey, es ist wirklich lange her, dass ich hier etwas geschrieben habe) keinen Aggregator mehr, sondern nur noch eine Blogroll. Das ist zwar, technisch gesehen, weitaus uncooler als ein Aggregator, aber dafür kann man mich jetzt allenfalls noch der unlizensierten Wiedergabe kreativer Blog-Titel bezichtigen. :-)

Mehr Sorgen bereitet mir allerdings, dass ich meine Feedsammlung mit Bloglines verfolge und von diesem Service nach wie vor so begeistert bin, dass ich ungerne wieder auf einen lokalen Aggregator umsteigen würde. Ich habe vorher Liferea benutzt, der auch wirklich schön, aber wie die meisten lokal installierten Programme nur schlecht von mehreren Orten aus benutzbar ist und vor allem keine soziale Komponente hat, die doch die verschiedenen Onlinedienste gerade so interessant macht. Zwar bin ich lieber mein eigener Dienstleister und zögere immer, bevor ich mich von fremden Services abhängig mache, aber im Falle Bloglines ist die Unabhängigkeit dadurch gegeben, dass ich dort einen OPML-Feed meiner Abos bekommen kann, den ich mir täglich speichere und somit jederzeit ohne viel Arbeit auf einen anderen Service ausweichen kann. Aus der OPML-Datei wird übrigens auch die Blogroll am rechten Rand erzeugt.

Bloglines ist aber ein kommerzieller Dienst (auch wenn die Benutzung nichts kostet und der Dienst werbefrei ist). Das bedeutet, dass viele Autoren, deren Feeds ich dort abonniert habe, der Meinung sein dürften, dass Bloglines ihre Angebote gar nicht ungefragt syndizieren dürfte. Bloglines ist kein deutsches System und auch hierzulande hätte ein Feedanbieter vermutlich schlechte Karten vor Gericht, wenn es hart auf hart käme. Insofern muss ich sicherlich nicht befürchten, dass Bloglines meine Lieblingsfeeds bald nicht mehr darstellen darf. Darum geht es mir aber gar nicht. Ich habe als Leser einfach kein gutes Gefühl, wenn ich weiß, dass der Autor nicht mit der Art und Weise einverstanden ist, wie ich zu seinen Artikeln gelange.

Wie geht man nun damit um? Sollte ich jeden, dessen Feed ich über Bloglines lesen möchte, um Erlaubnis fragen? Das würde dem ganzen die Dynamik rauben, mal eben probeweise ein paar Feeds rein und eine Woche später wieder löschen wäre dann nicht mehr drin. Sollte Bloglines jeden Feedanbieter um Erlaubnis fragen? Zuviel Arbeit, nehme ich mal an, außerdem wären viele Anbieter vermutlich auch verwundert über solche Anfragen und würden nicht antworten. Oder sollte ich mir einfach keine Sorgen machen und weiterlesen, bis mich jemand auffordert, es zu unterlassen? Ja, vermutlich werde ich das tun.

Syndicate content