Author Archives: alex

Subversion Relocate mit Eclipse und TortoiseSVN

Wir sind vor einigen Tagen mit unserem Projekt IMPULS von Sourceforge auf unseren eigenen, diesen Webserver umgezogen. Das heißt, wir haben nicht nur die Homepage migriert und ein Trac eingerichtet, sondern auch das Subversion-Repo verschoben. Für ausgecheckte Working Copies ist dann ein sogenannte Relocate fällig. In Verbindung mit Eclipse kann man da auf die Nase fallen.

Subversion mit Eclipse ist eigentlich erstmal kein Problem. Es gibt Subclipse und da funktionieren Checkout, Update, Commit usw. wunderbar. Rechtsklick auf auf’s Projekt, »Team« angeklickt und los geht’s – leider ohne Relocate. Wenn ich das jetzt einfach außerhalb von Eclipse machen würde, zerschieße ich mein Projekt, weil in den Projekteinstellungen der Pfad auf’s Repository vermerkt ist. Es gibt aber eine Lösung. Zunächst vergewissern wir uns, welche URL grad für das Projekt angegeben ist:

Subversion Pfad in Projekteinstellungen

Hier ist also noch der alte Pfad des Repos bei Sourceforge eingetragen. Der nächste Schritt in der Punkt »Disconnect« im bereits erwähnten Menü »Team«. Draufklicken und dann kommt folgender Dialog. Dort bestätigt man mit der Option, die Subversion-Dateien zu behalten.

Disconnect im Menü »Team« von Eclipse

Dann kommt das eigentliche Relocate. Das geschieht unter Windows am einfachsten mit TortoiseSVN, wie im folgenden Bild zu sehen ist. Natürlich kann man hier auch die Kommandozeilenversion von Subversion benutzen, wenn man grad kein TortoiseSVN zur Hand hat. Wie das geht, steht im Subversion-Buch.

Relocate mit TortoiseSVN

Der letzte Schritt besteht darin, dem Projekt in Eclipse wieder beizubringen, dass es eigentlich ein mit Subversion verwaltetes ist. Dazu wieder ein Rechtsklick auf das Projekt und im Menü »Team« den Punkt »Share« und dann natürlich »SVN«. Subclipse erkennt, dass es sich bereits um eine korrekte Working Copy handelt und übernimmt den richtigen Pfad aus Schritt drei. Nur noch einmal den folgenden Dialog abnicken und fertig ist die Laube.

Subversion Working Copy Eclipse wieder bekannt machen

Probleme in OpenSource-Gemeinschaften

Ich lese zur Zeit das Buch »Producing Open Source Software« von Karl Fogel. Er beschreibt aus Insidersicht was für Probleme in OpenSource-Projekten so auftreten und wie man diese von vornherein vermeiden oder später lösen könnte. Ich finde dieses Buch sehr interessant in Bezug auf die Projekte, wo ich persönlich beteiligt bin oder die ich intensiv verfolge (eisfair, IMPULS, climm). Viele Probleme sind da weniger technischer denn sozialer Natur und es gibt interessante Parallelen zwischen all diesen Projekten und den im Buch als Beispiel herangezogenen. Vom Glanz so erfolgreicher Projekte wie Subversion lässt man sich da nur allzu leicht blenden. Es ist vielmehr so, dass die allermeisten Projekte besser laufen könnten. Das ist mir am Wochenende beim Release von Eisfair 1.5.0 aufgefallen und gerade heute noch an anderer Stelle deutlich geworden, als Oliver von F!XMBR über seinen persönlichen Frust mit FreeBSD berichtet hat.

Ich will in Bezug auf Eisfair an dieser Stelle nicht ins Detail gehen, aber ich werde das für die Vorschläge, die ich diese Woche im Eisfair-Team machen will, berücksichtigen…

Ausgabeprofil »LaTeX => HTML« für TeXnicCenter

Angenommen ich möchte ein LaTeX-Dokument mit tex4ht in HTML umwandeln und benutze TeXnicCenter als Editor für das eigentliche Dokument. Da liegt es nahe, sich ein passendes Ausgabeprofil zu basteln, so dass man direkt aus TeXnicCenter die gewünschte Ausgabe produzieren kann. Man muss dabei aber aufpassen, was für Optionen man htlatex.exe mitgibt. Die folgenden zwei Screenshots illustrieren funktionierende Einstellungen.

Ideal wäre natürlich, wenn nicht jedesmal ein neuer Tab im Firefox aufgemacht werden würde, wenn man im TeXnicCenter F5 drückt, sondern der alte aktualisiert/ersetzt würde. Wenn da jemand einen Tipp hätte, wie man das realisieren kann, würde ich mich freuen.

Kleiner Passwortgenerator in Perl

Aus der Reihe »Schnelles Kamel-Gehacktes« heute der Beitrag, wie man quick’n’dirty einen Passwortgenerator in Perl schreibt. Anforderungen vorher: 8 Zeichen, weil viele Linuxe sowieso dahinter abhacken; nur Zeichen, die in den ersten 7 Bit der ASCII-Tabelle stehen und dann auch nur welche, die man direkt oder mit Umschalttaste (Shift) eingeben kann, nichts wozu man AltGr oder ähnliches bräuchte. Dazu braucht man eine ASCII-Tabelle und dann geht’s los:

#!/usr/bin/perl -w
# $Id: gen_passwd.pl 111 2008-02-06 13:45:24Z alex $
use strict;

my @allowed_chars;
# ASCII von 0x21 bis 0x3f
# das sind die meisten Sonderzeichen und die Ziffern
for (my $i=0x21; $i<=0x3f; $i++) {
	push @allowed_chars, chr($i);
}

# ASCII von A bis Z
for (my $i=0x41; $i<=0x5a; $i++) {
	push @allowed_chars, chr($i);
}

# ASCII von a bis z
for (my $i=0x61; $i<=0x7a; $i++) {
	push @allowed_chars, chr($i);
}

push @allowed_chars, chr(0x5f); # '_'

my $char_count = scalar @allowed_chars;

for (my $i=0; $i<8; $i++) {
	print $allowed_chars[int rand $char_count];
}

print "\n";

Diese Passwörter eignen sich gut als initiale Passwörter für neue Nutzer. Die Nutzer sollten sodann aufgefordert werden, sich mit passwd ein neues zu setzen. Da so ein zufälliges Passwort mit Zahlen und Sonderzeichen sehr schwer zu merken ist, werden sie dieser Aufforderung sicher nachkommen.

Treiberdiskette vom Hersteller

Ein Freund hatte in letzter Zeit massive Problem mit seinem (stein)alten Rechner und hat sich heute neue Hardware besorgt und zur Installation hier vorbeigetragen. Dabei sind ein aktuelles Mainboard mit Sockel AM2 und Unterstützung für SATA II mit NCQ und AHCI sowie eine aktuelle Festplatte, die das auch kann. Bekanntlich mangelt es da seitens Windows XP an Unterstützung bei der Installation und man muss F6 drücken und den passenden Treiber nachladen. Der Hersteller war so freundlich eine CD beizulegen und im Handbuch gut zu beschreiben, wie man die passende Diskette erstellt. Ich hab dann auch brav F6 gedrückt und der Windows-Installer fordert mich auf:

Legen Sie die Diskette beschriftet mit

Treiberdiskette vom Hersteller

in Laufwerk A: ein.

* Drücken Sie anschließend die EINGABETASTE.

»Treiberdiskette vom Hersteller«? Also erstens hab ich die gerade selbst erstellt und werde die dafür, dass ich die einmal brauche, sicher nicht beschriften und schon gar nicht so. Zweitens: angenommen, der Hersteller hätte tatsächlich eine Diskette beigelegt, würde er dann »Treiberdiskette vom Hersteller« drauf schreiben? Und was, wenn das jeder Hersteller machen würde und man dann ein paar solcher Disketten zu Haus liegen hätte?

lol2

Nicht das gesamte System verschlüsseln

Nach etwas oberflächlicher Recherche bin ich der Meinung, das Internet quillt über von Anleitungen zur Verschlüsselung ganzer Partitionen, ja ganzer Rechner (bis auf den MBR), mit allen Auswüchsen, die man sich denken kann und auch noch Motivationen und Begründungen dazu. Verschlüsselung der root-Partition, LVM auf einem verschlüsselten physical volume, verschlüsselte logical volumes in ansonsten unverschlüsselten LVM Dingern, das ganze noch mit und ohne RAID oder mit /boot noch auf dem USB-Stick, wahlweise mit Keyfiles oder herkömmlichen Passwörtern usw. Die Ansätze zur Verschlüsselung sind ähnlich vielfältig: dm-crypt mit und ohne luks, das klassische loop-aes oder truecrypt, um nur einige zu nennen.

Ich will einfach nur unter Debian Lenny eine Datenpartition verschlüsseln, kein RAID, kein LVM, boot-, root- und swap-Partition dürfen auch unverschlüsselt bleiben und das ganze am besten ohne einen eigenen Kernel kompilieren zu müssen und ohne Installation mit Live-CD oder sonstigen Spielerchen.

Ich habe also HowTos, Tutorials und manpages gewälzt und die Wahl fiel auf dm-crypt mit luks. Das ist aktuell, es ist alles bei Debian schon dabei und der Kernel muss nich neu kompiliert werden. Kurz noch die Grundvorraussetzungen hier: /boot auf CF-Karte als hda1, root-Partition ist hdd1 und swap hdd2, die Daten sollen alle auf hdd3 landen. Die ganze Einrichtung spielt sich mit root-Rechten ab, da wir nicht bei Ubuntu sind, einfach als root einloggen dafür! Die ersten Schritte bestehen darin, die nötigen Kernel-Module zu laden und das Programm cryptsetup zu installieren:

modprobe aes
modprobe dm-crypt
modprobe dm-mod
aptitude install cryptsetup

Die Partition, die verschlüsselt werden soll, darf nicht gemountet sein, ein Mountpoint sollte für später vorhanden sein, einfach das gewünschte Verzeichnis anlegen. Bei mir wird das /mnt/data sein. Als nächstes wird die Partition für die Verschlüsselung vorbereitet und geöffnet, quasi dem Device-Mapper bekannt gemacht. An diesem Punkt bitte darauf achten, dass alle Daten, die sich noch auf /dev/hdd3 befinden, danach unwiederbringlich verloren sind.

cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/hdd3
cryptsetup luksOpen /dev/hdd3 data

Beim ersten Aufruf wird nach einem Kennwort gefragt, das später als Schlüssel dient. Der zweite Aufruf öffnet sozusagen die verschlüsselte Partition, daher ist das Kennwort nochmal einzugeben. Jetzt kann man über /dev/mapper/data auf die verschlüsselte Partition zugreifen. Der erste Schritt: formatieren. Ich habe das ganze mit einer etwa 227 GB großen Partition und einem Pentium 133 getan. In der Zeit kann man ganz entspannt Kaffee kochen, trinken, die Kaffeemaschine sauber machen, Pizza backen, Pizza essen, den Ofen sauber machen…

mkfs.ext3 -v -L DATA /dev/mapper/data

Mounten klappt von Hand dann schonmal. Jetzt soll es noch so eingerichtet werden, dass die Partition auch beim Boot gemountet wird. Dazu werden die nötigen Kernelmodule, die vorhin von Hand geladen wurden in /etc/initramfs-tools/modules/ eintragen. Das sind

aes
dm-crypt
dm-mod
sha256

Danach nochmal die initrd neu bauen lassen mit

update-initramfs -u -k all

Als nächstes wird die /etc/fstab angepasst. Dort einfach /dev/hdd3 durch /dev/mapper/data ersetzen oder die Zeile neu anlegen. Weiterhin ist es noch nötig, die Datei /etc/crypttab anzupassen:

data /dev/hdd3 none luks,retry=1,cipher=aes-cbc-essiv:sha256

Das war’s. Das ist alles, mehr ist nicht zu tun. Beim booten wird man nach dem Passwort gefragt, der Rest läuft wie gewohnt. Noch ein Wort zur Performance: da nur die Datenpartition verschlüsselt ist, machen sich natürlich nur Zugriffe darauf bemerkbar. Kopieren mit rsync+ssh lastet den Rechner voll aus, das war vorher auch schon so, da ssh hier den Prozessor bereits zu voller Auslastung treibt. Mit zusätzlicher Verschlüsselung der Datenpartition sieht das in top dann so aus, als würden ssh und kcryptd/0 zu ungefähr gleichen Teilen für die CPU-Last verantwortlich sein. Mehr Aussagen kann ich dann machen, wenn die Daten wieder zurückgeschrieben sind, morgen oder übermorgen…

Alte Grenzen neu entdeckt

ASUS TUSL2-C – lange habe ich von dem Board geträumt, irgendwann hab ich es mir geleistet und es sehr lange und zu meiner vollsten Zufriedenheit mit einem Celeron 1400 mit Tualatin-Kern betrieben. Jetzt hat es bei mir seine Schuldigkeit getan und es wird Weihnachten die Rechenpower bei meinen Eltern verdreifachen. (Dort werkelt immernoch ein Pentium-III 500 MHz mit Katmai-Kern.) Da sich im Laufe der Zeit einige Riegel SD-RAM angesammelt haben, dachte ich, ich gönne dem Board so 768 MB oder sogar ein Gigabyte, damit die Herrschaften auch vernünftig arbeiten können. Meine Tests mit Memtest86+ waren aber frustrierend. Egal welche Kombination von Riegeln ich ausprobierte, keiner wollte mit dem 512er Kingston (Infineon-Chips) zusammen laufen. Die Aura des TUSL2-C war angekratzt, aber ich hatte mich schon mit den 512 abgefunden.

Gestern dann habe ich noch eine Erweiterungskarte für Firewire 1394a und USB 2.0 bekommen, die die Anbindung schneller externer Speichermedien ermöglichen soll und dazu noch eine schicke Frontblende mit den entsprechenden Schnittstellen, beides von Reichelt, seit Jahren mein Lieblingsversandhaus. Die Beschreibungen der beiden Teile sind ausführlich genug, dass man sie mit ein bisschen Bastelei zur Zusammenarbeit überreden können wird. Außerdem sind in der Frontblende noch Anschlüsse für Kopfhörer und Mikro. Diese müssten mit dem Onboard-Sound verdrahtet werden. Zu diesem Zweck schaute ich nochmal ins Handbuch und konnte nicht widerstehen, auch nochmal das RAM-Problem zu verfolgen. Das Ergebnis:

PC100/PC133 Memory Support: Equipped with three Dual Inline Memory Module (DIMM) sockets to support PC100/PC133-compliant SDRAMs (available in 64, 128, 256, 512MB densities) up to 512MB.

Man beachte den letzten Teil! Verwundertes Augenreiben hilft nicht. Dieses Board mit Chipsatz Intel 815ep limitiert den maximal möglichen RAM auf ein lumpiges halbes Gigabyte. Das erklärt natürlich, warum Memtest regelmäßig Fehler meldete, wenn ich mehr als 512MB installiert hatte – enttäuschend ist das trotzdem, zumal ältere Boards da schon weiter waren. In meinem Heimserver werkelt seit Jahren ein ASUS CUBX-L mit dem sagenumwobenen Intel BX440 und was soll ich sagen? Lassen wir das Handbuch sprechen:

PC100 Memory Support: Equipped with four DIMM sockets to support Intel PC100-compliant SDRAMs (8, 16, 32, 64, 128, or 256MB) up to 1GB. These new SDRAMs are necessary to meet the critical enhanced 100MHz bus speed requirement.

Fazit: Trotz aller Erfahrung: bei alter Hardware doch mal ins Handbuch schauen – wer lesen kann…

Was bringt mir das? Vorteile der Offenlegung von Software

Anfang 2007 habe ich bei Google ein Video eines sogenannten TechTalks gesehen: How Open Source Projects Survive Poisonous People (And You Can Too). Ben Collins-Sussman und Brian Fitzpatrick, beide aktiv an der Entwicklung von Subversion beteiligt, haben einen Vortrag gehalten über die Communitys, die hinter Open Source Projekten stehen und wie man dort am besten mit Leuten umgeht, die die Atmosphäre unter den Entwicklern vergiften. Das Video ist 55 Minuten lang und ich habe es das Jahr über an der einen oder anderen Stelle empfohlen, unter anderem auch beim Eisfair-Entwicklertreffen, von dem ich vor zwei Wochen berichtete.

Heute nun bin ich über die verschlungenen Pfade der Blogosphäre auf das Blog von Ben Collins-Sussman gestoßen. Dort finden sich allerlei interessante Beiträge unter anderem auch der Hinweis auf einen weiteren TechTalk aus dem Oktober 2007. Das Video ist fast 50 Minuten lang, aber nicht minder empfehlenswert, wenn auch nicht ganz so amüsant.

Letzte Woche habe ich mich im Büro mit einem Kollegen über genau das Thema unterhalten. Inwiefern können Unternehmen von der Freigabe ihres Quellcodes profitieren? Der Grund dafür, dass es eine längere Unterhaltung war, findet sich auch in dem oben zitierten Video: es gibt keine einfache Antwort. Im Vortrag erläutern Ben und Brian, was sie für den besten Weg halten, den Unternehmen gehen sollten, wenn sie tatsächlich ein Open Source Projekt in die Wege leiten wollen (egal ob auf Basis von vorhandem Code oder von Grund auf). Auf die konkrete Frage, wie sich das mit kommerziellen Interessen verträgt, haben sie auch keine Antwort, die sich in einem Satz zusammenfassen ließe. Viele Vorteile lassen sich nicht direkt in Verkaufszahlen messen, sondern sind nur sehr langfristig sichtbar und betreffen eher den Ruf einer Firma oder die Veränderung eines Software-Marktes. Die Software selbst wird auch besser, aber konkret höhere Profitaussichten durch das offengelegte Projekt, sind wohl kaum der Grund.

Ganz nebenbei wird nochmal der Kernpunkt für eine erfolgreiche Open Source Software erwähnt: eine gesunde Community. In diesem Punkt muss ich den Herren auch aus persönlicher Erfahrung voll und ganz recht geben. Man braucht ein Kernteam von einer Hand voll engagierten und fähigen Entwicklern, die sich gegenseitig respektieren, freundlich und gelassen untereinander sowie zu allen sind, die Fragen zum Projekt haben oder etwas beitragen wollen. Ein Entwickler reicht nicht und Teamwork ist unbedingt notwendig, sonst wird nichts aus dem Projekt.

Das soll als kurze Zusammenfassung zu den beiden Videos erstmal reichen. Ich sehe noch Raum für einen längeren Beitrag über die persönliche Motivation selbst etwas zu Open Source Software beizutragen oder über die Vorteile von Open Source Software im Allgemeinen. Zu den Möglichkeiten für Unternehmen sollte sich jedoch jemand äußern, der besser weiß, womit Firmen wie Trolltech oder MySQL AB ihr Geld verdienen.

WebUni Iconset für Psi

Ich plane, über kurz oder lang ICQ Lebewohl zu sagen und auf Jabber umzusteigen. Gründe dafür gibt’s genug und wer will, kann da sehr viel im Netz finden. Jabber-Clients gibt’s mittlerweile einige und auch die verbreiteten und beliebten Multi-Protokoll-Clients Miranda und Trillian können damit umgehen. Ich persönlich bin ein Fan von Psi. Der unterstützt das Protokoll und viele Erweiterungen, GnuPG-Verschlüsselung ist eingebaut und er sieht sowohl unter Windows als auch unter Linux schick aus – schlicht, aber schick.

Aus Neugier habe ich letztens geschaut, wie die Iconsets dort eingebunden sind. In einem Ordner liegt jedes Icon in Form einer PNG-Datei und dann gibt es eine Datei icondef.xml, die selbsterklärend ist, ein tolles Beispiel für die sinnvolle Anwendung von XML.

Naja genau genommen habe ich nicht nur aus reiner Neugier geschaut. In meinem Freundeskreis gibt es einige Leute, die bei der Online-Community WebUni aktiv sind. Mit der Zeit verinnerlicht man die Abkürzungen für die dort gebräuchlichen Smilies und dann benutzt man die irgendwann auch außerhalb von WebUni – beispielsweise im Instant Messenger. Was liegt näher, als dort auch die gleichen Icons anzeigen zu lassen. Da es, wie oben beschrieben, recht einfach ist, für Psi ein Iconset zu bauen, habe ich mich mal kurz hingesetzt und das gemacht.

Das größte Problem bestand darin, dass Psi keine animierten GIF-Icons anzeigt und ich aus den animierten noch je ein charakteristisches Einzelbild extrahieren musste. Der Rest ging sehr flott von der Hand und daher gibt es jetzt als Weltpremiere und exklusiv bei antiblau: das Psi Iconset »WebUni«. Einfach an geeigneter Stelle entpacken, in Psi auswählen und freuen. Als kleiner Vorgeschmack dann hier noch ein Screenshot:

Screenshot Psi Iconset »WebUni«

Binary H(e)art

binary heart Heute schrieb die ettercat einen Link auf nebenstehenden Comic von xkcd.com ins IRC. Die Seite hat mich schon des öfteren mit wirklich lustigen Comics begeistert, zumal einige nur mit entsprechendem Geek-Hintergrundwissen wirklich lustig sind. Nummer 99 – »binary heart« – trifft vom Untertitel der Seite (»A webcomic of romance,
sarcasm, math, and language.«) klar den romantischen Teil. Aber ganz ehrlich, seid Ihr nicht auch total neugierig, ob sich hinter den Nullen und Einsen im Bild nicht noch eine zusätzliche Botschaft verbirgt? Ich war es jedenfalls und da nur selbst dekodieren schlau macht, hab ich frei nach dem Perl-Motto »Es gibt mehr als einen Weg, etwas zu tun« die Zeichen einzeln abgetippt und ein kleines Skript geschrieben.

Hart (siehe Titel ;-)) war da dran einerseits das Abtippen vom Comic – man verrutscht schon sehr leicht in Zeile und Spalte – und andererseits um Mitternacht die eingerosteten Perl-Kenntnisse zu reaktivieren. Wer sich gern selbst an einem Progrämmchen in beliebiger Sprache probieren will, kann sich die binär codierte Nachricht runterladen, die Textdatei, wo ich mal die Einsen und Nullen abgetippt habe.

Ach und für die ganz Neugierigen oder zur Kontrolle des eigenen Programms hier noch die Auflösung:

iloveyOuilOveyouiloveyOuilOveyOuiloveyouilOveyouilOveyOuilOv