Kalendertool gesucht

Ich vermisse es mal wieder: Mein Wunschkalendertool.

Folgende Eigenschaften soll es haben:

  • Frontend im Stil vom Google-Kalender. Erreichbar über jeden Browser.
  • Verfügbare Software, die ich auf meinem eigenen Server installieren kann und die mir alleinige Kontrolle über meine Daten gibt.
  • Das Backend kann Kalenderdaten in IMAP-Foldern verwalten. Das ist meine derzeitige Speicherform, die den Vorteil hat, dass ich kein zusätzliches LDAP- oder DAV-System installieren muss, sondern einfach mein E-Mail-Postfach verwenden kann.
  • Kostenlos und OpenSource.
  • Optional: Eine schicke API, mit der ich ggf. auch andere Tools wie z.B. einen Reminder anbinden kann. Das muss aber nicht sein, weil die Daten ja auch schon im IMAP-Folder gut lesbar vorliegen.

Sachdienliche Hinweise bitte in die Kommentare oder per Nachricht an mich.

Security by Obscurity

Im April hatte ich über die Sicherheitslücke in Chipkarten des Typs Mifare Classic geschrieben, die auch als Studentenausweis an der Uni Magdeburg dienen. Der Hersteller InterCard hatte Anfang April angekündigt sich zügig mit seinen Kunden in Verbindung zu setzen. Davon hat man hier an der Uni bisher nichts gemerkt.

Unabhängig davon ist heute bekannt geworden, dass NXP, der Hersteller der Chips, eine niederländische Universität verklagt hat, damit die keine Paper zu der Thematik veröffentlichen. Fefe schreibt dazu:

Das sagt mir persönlich ja immer alles, was ich über eine Firma wissen muß, wenn die ihre Sicherheitslücken nicht fixen und dazu stehen sondern den Boten unter Beschuß nehmen.

Ich frage mich, wie die sich das vorstellen. Die Niederländer sind ja lange nicht die einzigen, die Details zu der Sicherheitslücke veröffentlicht haben. Da gab’s einen Vortrag auf dem 24C3, die c’t hat lang und breit drüber berichtet und all diese Informationen sind seit über einem halben Jahr öffentlich, lange genug Zeit also für böse Buben sich da schlau zu machen und das Wissen zu speichern. Viel interessanter ist die Frage, wie sie die bestehenden Systeme absichern oder auf neue Systeme migrieren wollen. Wäre glatt mal interessant beim hiesigen Studentenwerk anzufragen, ob der Hersteller schon Kontakt aufgenommen hat und was da möglicherweise hinsichtlich neuer Karten o.ä. geplant ist.

Penguineering

Penguineering ist ein Kunstwort, das aus penguin und engineering zusammengesetzt ist. Die Idee stammt von einer Freundin, die mir dieses Wort freundlicherweise überlassen hat, sodass ich mir gleich mal die Domain penguineering.com reservieren konnte.

Seit gestern Abend ist unter http://tools.penguineering.com eine Sammlung von Tools zu finden, die in einzelner oder gemeinsamer Arbeit der Blog-Autoren entstanden sind und allgemein verfügbar sein sollen.

Die Seite sieht noch etwas mager aus, aber das wird sich im Lauf der Zeit ändern.

Windows Vista: Auf der Höhe der Zeit?

Bei unserem Zeitabgleich zwecks Mensabesuch fiel mir vorhin auf, dass die Systemuhr meines Vista-Systems (das ist unfreiwillig nutze) mal wieder einige Minuten nachgeht. Normalerweise merke ich so etwas nicht, die lokalen Dienste stören sich nicht daran, bei Terminen ist der Griff nach dem Handy gewohnter und direkt zeitkritische Dinge tu ich auf dem Rechner nicht.

Trotzdem stellte sich dann die Frage: Was tun, um diese Situation in Zukunft ohne Mehraufwand zu verhindern? Seit XP kann sich auch Windows mit öffentlich verfügbaren Zeitservern synchronisieren. Das scheitert im Netz der Uni Magdeburg aber daran, dass das Rechenzentrum sehr restriktiv bei der Freigabe von Ports ist und NTP schlichtweg nicht funktioniert. Vista bestätigt das mit der lapidaren Meldung, dass irgendwo ein Fehler aufgetreten sei. Eine Möglichkeit, auf unprivilegierte Ports auszuweichen, gibt es nicht.

Zum Glück gibt es an der FIN einen eigenen Zeitserver (herkules.cs.uni-magdeburg.de), der sich für solche Zwecke einspannen lässt; mit diesem läuft es dann jetzt. Sonst hätte ich auf das Feature wohl verzichten müssen. Eine spontane Google-Suche nach Tools zur Zeitsynchronisierung unter Vista hat mich jedenfalls nur auf Seiten geleitet, die die Lösung mit bordeigenen Mitteln beschreiben.

Indirekter SPAM

Das Antiblau-Blog war heute zeitweise nicht erreichbar, gemeinsam mit einigen anderen Diensten, die auf diesem Server laufen.

Grund ist eine indirekte SPAM-Attacke: Irgend jemand hat heute morgen eine meiner E-Mail-Adressen als Absender für eine größere Menge von SPAM-E-Mails missbraucht. Der Effekt war, dass der Server mit failure notice-Nachrichten bombardiert wurde – insgesamt ca. 8000 Stück.

Das fiese an so einer Attacke: Das findet wohl kein SPAM-Filter. Die Fehlerbenachrichtigungen sind korrekte und unverdächtige E-Mails, lediglich ihre Anzahl ist ungewöhnlich. Hier kann wohl nur eine konsequente Umsetzung diverser Anti-Spam-Maßnahmen wie z.B. Absenderverifikation helfen.

Aber bis es soweit ist, kann ich wohl nur versuchen, die Erkennungsmaßnahmen zu optimieren und einzelne Parameter so zu tunen, dass viele E-Mails den Server nicht mehr in die Knie zwingen.

Ideen sind an dieser Stelle oder direkt an mich natürlich immer willkommen!

Homepage mit trac 0.10.x

Wir arbeiten ab und zu an IMPULS. Anfang des Jahres sind wir mit dem Subversion-Repo hier nach antiblau gezogen und benutzen jetzt Trac anstelle des Bugtracking-Systems von Sourceforge. Trac bietet neben Repository Browser, Bug Tracker und Milestone-Verwaltung auch ein Wiki. Andere Projekte wie z.B. Licq oder lcd4linux haben ihre ganze Homepage mit Trac realisiert. Da sich ein Wiki ganz gut eignet um unabhängig von HTML-Editor, PHP-Kenntnissen etc. so eine Seite aktuell zu halten, beschloss ich die Homepage für Impuls auch mit dem sowieso schon genutzten Trac zu verwirklichen.

Die größte Hürde für eine sinnvolle Nutzung von Trac als Homepage stellt die Navigation dar. Im Wiki selbst sind mehr oder weniger nur Sprünge von Seite zu Seite möglich, eine einheitliche Navigation, beispielsweise über eine Sidebar ist so zunächst nicht vorgesehen. Dass das irgendwie möglich ist, sieht man bei Licq, also hab ich mir angeschaut, wie man das mit den Paketen von Debian Etch sinnvoll umsetzen kann, dort wird Trac in Version 0.10.x verwendet also noch vor der Umstellung der Template-Engine mit der 0.11.x.

Das Prinzip ist eigentlich ganz einfach: Trac an geeigneter Stelle in irgendeinem HTML-Template einen neuen div-Container unterschieben mit beliebiger Id und anhand dieser Id dann ein passendes CSS Stylesheet bauen. In diesem Fall haben wir in /usr/share/trac/templates/header.cs eine Zeile eingefügt:

<div id="mainnav" class="nav"><?cs call:nav(chrome.nav.mainnav) ?></div>
<?cs include "site_navi.cs" ?>
<div id="main">

Das hat den Vorteil, dass jede neue Trac-Installation von der Änderung erstmal nichts mitbekommt. Die Datei site_navi.cs muss im jeweiligen Trac-Projekt-Ordner angelegt werden, um in den Genuss der Navi-Sidebar zu kommen. Konkret geschieht dies im Unterordner templates des Trac-Projektordners, da wo z.B. auch die Dateien site_header.cs und site_footer.cs liegen. Die Datei site_navi.cs enthält dann den Inhalt der Sidebar, im Fall der IMPULS-Homepage sieht das so aus:

<?cs
####################################################################
# Site header - Contents are automatically inserted above Trac HTML
?>
<div id="left">
    <div id="navi1">
        <ul>
            <li><a href="http://www.impuls-toolset.org/trac/wiki">Start</a></li>
            <li><a href="http://www.impuls-toolset.org/trac/roadmap">Roadmap</a></li>
            <li><a href="http://www.impuls-toolset.org/trac/wiki/Toolset">Toolset</a></li>
            <li><a href="http://www.impuls-toolset.org/trac/wiki/MailingLists">Mailing lists</a></li
            <li><a href="http://www.impuls-toolset.org/trac/wiki/FrequentlyAskedQuestions">F.A.Q.</a
            <li><a href="http://www.impuls-toolset.org/trac/wiki/Download">Download</a></li>
            <li><a href="http://www.impuls-toolset.org/trac/wiki/Development">Development</a></li>
            <ul>
                <li><a href="http://www.impuls-toolset.org/trac/wiki/ProjectConventions">Project con
                <li><a href="http://www.impuls-toolset.org/trac/wiki/ProtocolSpecification">Protocol
            </ul>
        </ul>
    </div>
</div>

Fehlt noch das passende Stylesheet, dazu sind noch folgende Änderungen nötig. Zunächst eine Anpassung der Datei site_css.cs, die im gleichen Projektordner liegt:

<?cs
##################################################################
# Site CSS - Place custom CSS, including overriding styles here.
?>

@import url(<?cs var:chrome.href ?>/site/style.css);

Wie man sieht wird hier eine Stylesheetdatei eingebunden. In dieser wird dann das angepasste Stylesheet definiert. Die Datei style.css liegt ebenfalls im Trac-Projektordner und zwar im Unterordner htdocs. Im Falle der Impuls-Homepage hat sie folgenden Inhalt:

#left {
	float: left;
	width: 13em;
	margin-bottom: 1em;
	margin-top: 1em;
}

#navi1 {
	color: #000000;
	background-color: #EEE5E6;
	padding: 0em 0.5em 0em 0.8em;
	margin: 0em 0em 1em 0em;
	border: 1px solid #A8071C;
}

#navi1 ul {
	margin-left: 1em;
	padding: 0;
}

#main {
	margin-left: 14em;
}

#altlinks {
	clear: right;
}

table.listing {
	clear: right;
}

#preview {
	clear: right;
}

#help {
	clear: right;
}

#info {
	clear: none;
}

@media print {
    #left { display: none; }
    #main { margin-left: 0em; }
}

Damit sich die Sidebar harmonisch einfügt sind auch einige kleine Hacks an den bereits vorhandenen Elementen der Seite nötig, speziell die clear:right, damit der eigentliche Inhalt sauber neben und nicht unter die Sidebar gesetzt wird.

Was man in der Sidebar dann letztendlich verlinkt, bleibt jedem selbst überlassen. Im Falle von Impuls wollte ich eigentlich eine sehr flache Hierarchie haben, ist mir nicht ganz gelungen. Ansonsten genügt es für weitere Änderungen die beiden Dateien style.css und site_navi.cs zu bearbeiten. Mit einem möglichen Update auf Trac 0.11.x wird das ganze dann aber sehr wahrscheinlich nicht mehr funktionieren, weil dort keine Clearsilver-Templates mehr benutzt werden. Wenn es soweit ist, müssen wir mal schauen, wie wir das dann umsetzen.

Bilder automatisch drehen

Wir waren am Wochenende unterwegs und hatten die Kamera meiner Freundin dabei, eine Canon PowerShot S3 IS. Das ist jetzt soweit nichts besonderes. Man knipst Bilder, kopiert die später von der Speicherkarte auf den Rechner und dann ist der erste Schritt: Hochkant geschossene Bilder drehen. Auch das ist kein Problem. Die Kamera hat ja einen Lagesensor drin und speichert die Ausrichtung in den EXIF-Daten jedes einzelnen Bildes. XnView dreht die Bilder dann dank verlustfreier JPEG-Transformation in die richtige Lage. Wenn das alles so einfach und problemlos ist, warum kann die Kamera das nicht schon selbst machen? Der Bildprozessor, der da drin steckt, sollte leistungsfähig genug sein. Hab ich nur irgendwo eine Option in den Menüs der Kamera übersehen, oder geht das wirklich nicht? Gibt es andere Kameras, die das können und machen?

Ein Evolutions-Spiel und die Denkfehler des Kreationismus

Nachdem ich wieder einmal auf eine angeblich wissenschaftliche Begründung für die Unmöglichkeit der Evolution gestoßen bin, habe ich doch das Bedürfnis, mit den paar Denkfehlern aufzuräumen.

Denkfehler 1: Die Kreationisten behaupten, ein komplexer Organismus kann unmöglich durch zufälliges Zusammenstellen und Ändern von DNS entstanden sein.

Dieser Aussage schließe ich mich an. Der Fehler liegt in der Voraussetzung, die davon ausgeht, dass Evolution nur zufällige Änderung bedeutet. Die Annahme beschränkt sich auf die Mutation und ignoriert den weit wichtigeren Schritt, die Selektion.

Im Gegensatz zur Mutation ist Selektion keineswegs zufällig, sondern folgt dem Prinzip Survival of the fittest, also dem Überleben des Stärkeren beziehungsweise angepassteren. Während also die Mutation eine zufällige Änderung eines Individuums bewirkt, sorgt die Selektion dafür, dass nur Verbesserungen beibehalten werden.

Korrekt wäre es deshalb, zu sagen, dass Evolution ein Prozess zufälliger Verbesserungen ist.

Denkfehler 2: Die Kreationisten behaupten, dass Evolution nicht funktionieren kann, weil es sehr unwahrscheinlich ist, dass bei dieser zufälligen Verbesserung der Mensch herauskommt.

Diese Behauptung zeugt von einer gewissen Arroganz, nämlich in der Annahme, dass das Ziel der Evolution immer der Mensch sein müsse. Tatsächlich ist das aber nicht gegeben. Evolution hat kein Ziel in dem Sinne, sondern ist lediglich ein Prozess, bei dem die beteiligten Individuen von Generation zu Generation angepasster sind. Das geschieht durch die oben angesprochene zufällige Verbesserung.

In der Formalisierung der Evolutionstheorie spricht man von einer Fitness-Funktion, die angibt, wie gut ein Individuum angepasst ist. Einziges Ziel der Evolution ist, diese Fitness zu erhöhen.

Würde also der Evolutionsprozess auf der Erde noch einmal starten, käme sehr wahrscheinlich nicht der Mensch heraus. Mir ist aber auch kein Naturgesetz bekannt, nach dem die Erde irgendwann von Menschen bevölkert sein müsse.

Um die Vorgänge bei der Evolution etwas zu verdeutlichen, schlage ich folgendes Evolutionsspiel vor, das an einen “Beweis” der Kreationisten angelehnt ist:

Man nehme sechs Zettel, die mit den Zahlen 1 bis 6 beschrieben sind und lege sie in zufälliger Reihenfolge vor sich auf den Tisch. Weiterhin wird ein W6 (das ist ein “normaler” sechsseitiger Würfel, wie er in jedem gut sortierten Haushalt zu finden ist) benötigt.

Innerhalb der “Spielwelt” wird nun davon ausgegangen, dass diese sechs Zettel ein Individuum darstellen, das umso stärker ist, je besser die Zettel der größe ihrer Zahl nach geordnet sind.

Ein Spielzug besteht aus zwei Aktionen:

  1. Zuerst wird mutiert: Mit dem W6 wird zweimal gewürfelt. Die Zettel, deren Position der Würfel anzeigt, werden zum Vertauschen vorgemerkt. Mit ihnen soll das neue Individuum gebildet werden.
  2. Anschließend wird selektiert: Nur stärkere Individuen sollen überleben, deswegen werden die Zettel nur dann ausgetauscht, wenn anschließend der Zettel auf der niedrigeren Position auch die kleinere Zahl hat.

Wenn man Aktionen ein paarmal wiederholt, wird man sehen, dass die Zettel zunehmend in eine sortierte Reihenfolge gebracht werden. Wichtig ist hier der zweite Schritt, der verhindert, dass schwächere Individuen, also schlechter sortierte Zettelfolgen, sich durchsetzen können. Das ist der Schritt, der in der kreationistischen Denkweise unterschlagen wird.

Das Spiel macht auch deutlich, dass Evolution ein langwieriger Prozess ist. Während sich am Anfang recht schnell eine gewisse Ordnung einstellt, dauert es recht lange, bis wirklich alle Zettel ausgewählt wurden. Jedoch sind die Individuen der späteren Generationen recht stark, enthalten also kaum falsch sortierte Zahlen.

HowTo: Standard-Dateiberechtigungen im Apache

Die Aufgabe: Dateien, die vom Apache HTTP-Server erzeugt werden, sollen bestimmte Zugriffsrechte erhalten.

Seit wir das Antiblau-Blog mit einem Cache versehen haben, bekomme ich regelmäßig E-Mails von dem Script, das sich normalerweise um die Korrektur der Berechtigungen in den WWW-Verzeichnissen kümmert (die Struktur lässt sich mit den Standardmechanismen der Unix-Dateiberechtigungen nicht mehr abbilden und ACLs habe ich nicht). Der Grund ist, dass die Cache-Dateien mit der Gruppe des Apache, statt mit der Gruppe des Webspaces, und mit den falschen Zugriffsrechten erzeugt wurden.

Die Gruppenberechtigung lässt sich leicht korrigieren, indem das Gruppen-Stickybit des übergeordneten Verzeichnisses gesetzt wird:

chmod g+s cache

Schwieriger ist die Anpassung der Zugriffsrechte von 640 auf 660. Hierfür muss der Apache so konfiguriert werden, dass auch Gruppen Schreibrechte erhalten. Das geschieht über die umask-Variable (umasks legen fest, welche Berechtigungen bei einem chmod wieder gelöscht werden), die in der envvars-Konfiguration angegeben werden.

Dazu habe ich in die Datei

/etc/apache2/envvars

den Eintrag

umask 002

eingefügt, den Apache neu gestartet und schon war das Problem behoben.

eisXen und eisfair-2 auf dem Weg

Nachdem ich gerade auf eisfair.org die Ankündigung gelesen habe, dass die Release Candidates von eisXen und eisfair-2 offiziell veröffentlicht wurden, kann ich ja hier auch ein wenig drüber plaudern. Die wichtigsten Weichen wurden ja bereits im November gestellt und einige kleinere Punkte sind auch noch offen, aber wir haben gerade eisXen in den letzten Wochen um einiges voran gebracht und ich freue mich, dass es jetzt im Rahmen des LinuxTag 2008 endlich der weiten Welt vorgestellt wird. Da es »nur« ein RC ist, hätte ich die Wette mit Tux Weihnachten 2007 zwar immernoch verloren, aber ich denke mit dem Input von den Nutzern wird das Projekt jetzt wieder Fahrt aufnehmen. Die Entwicklungsumgebung für eisfair-2 ist auch fast fertig, so dass dann auch bald die Pakete folgen werden.