Wecker stellen!

Wenn mal wieder der make buildworld mit so unerklärlichen Fehlern wie /usr/obj/usr/src/amd64/usr/bin/ld: cannot find -ll abbricht, sollte man als erstes mal schauen, ob die Uhr richtig geht.

Zahlen formatieren in Ruby

Es muß nicht immer printf sein, um Zahlen in Ruby zu formatieren. Ruby kennt da einen eleganteren Weg.

irb(main):001:0> foo=3.14159265358979323846264338328
=> 3.14159265358979
irb(main):002:0> "%.4f"%foo
=> "3.1416"

Zwar muß man immer noch die relativ umständlichen Printf-Style Format-Strings angeben, doch muß man sich nicht mit den Platzhaltern in den Strings herumschlagen.

Typographie für alle

Korrekte Typographie ist nicht nur etwas für LaTeXer. Gewisse Regeln der Typographie sollte man eigentlich immer beachten. (z.B. vor Satzzeichen kein Leerzeichen)

Hier sind ein paar Dokumente für Leute, die sich einer korrekten Typographie auch im Alltag befleißigen möchten.

Die letzten beiden Links sind besonders für LaTeX-Benutzer interessant, da sie auch zeigen, wie man sich an diese Regeln in LaTeX hält.

Fehlen noch solche Regeln für Programmcode. Hier hat scheinbar jeder seinen eigenen Stil.

Mit Array in PostgreSQL herumhantieren

Ich brauchte bei einer Abfrage einfach nur die beteiligten Mitarbeiter. Eine einfache Auflistung der Namen reichte mir da. Mit PostgreSQL kann man sowas recht einfach erledigen.

SELECT array_to_string(ARRAY['foo', 'bar', 'baz', 'qux'], ', ');
  array_to_string
--------------------
 foo, bar, baz, qux
(1 row)

Das Array wird als String mit jeweils dem zweiten Parameter aus array_to_string() verkettet. Ist viel einfacher als in der Skriptsprache (PHP, Ruby, Perl) die Rows miteinander zu verketten.

Nachtrag: Und bevor jetzt einer fragt, wie das nun mit Rows aus einer Abfrage geht, hier ein Beispiel. Ich habe diese Tabelle

test=# SELECT * from test_table;
 id | some_string
----+-------------
  1 | foo
  2 | bar
  3 | baz
  4 | qux
(4 rows)

Und nun zu einer Row verkettet:

test=# SELECT array_to_string(ARRAY(SELECT some_string FROM test_table WHERE id<4), ', ');
 array_to_string
-----------------
 foo, bar, baz
(1 row)

XeTeX und typographisch korrekte Anführungszeichen

Um typographisch korrekte deutsche Anführungszeichen in einem Dokument zu bekommen, benutzt der erfahrende LaTeXer meist \glqq und \grqq (German Left Double Quote bzw. German Right Double Quote) aus dem Babel-Paket. Dies funktioniert auch mit XeTeX. Aber die meisten werden XeTeX nicht aus Spaß verwenden, sondern aus einem ganz bestimmten Grund. Dieser ist meistens fontspec. Fontspec erlaubt es, die OpenType-Schriften von Mac OS X in einem LaTeX-Dokument zu verwenden. Hierzu muß man jedoch XeTeX verwenden.

Hier ergeben sich nun einige Probleme bei der Benutzung von \glqq und \grqq. Bei der ersten Verwendung einer dieser Zeichen, spuckt XeTeX zusätzlichen Zeichenmüll in der Dokument aus. Dies ist natürlich inakzeptabel. Ich habe mich mit dem Autor des fontspec-Pakets in Verbindung gesetzt, um dem Problem auf die Spur zu kommen. Er meinte, daß das Babel-Paket einige häßliche Dinge tut, die XeTeX dann ins Straucheln bringen, und daß dieses Paket (vermutlich von ihm selbst) entsprechend umgeschrieben werden müßte.

Um nun doch noch die typographisch korrekten Anführungszeichen und OpenType-Fonts zu bekommen gibt es jedoch noch einen Weg. XeTeX versteht Unicode, und darin sind die Codes für „ und “ festgelegt. Man kann diese also direkt in seinen LaTeX-Source eingeben. Auf dem Mac bekommt man diese Zeichen durch folgende Tastenkombinationen (Deutsches Tastaturlayout vorausgesetzt):

„ (früher \glqq)
Option – ^
“ (früher \grqq)
Option – Shift – ^
‚ (früher \glq)
Option – s
‘ (früher \grq)
Option – #

Die Tastenkombinationen lassen sich nicht so leicht merken wie die LaTeX-Befehle, doch sie erfüllen ihre Funktion. Sie funktionieren natürlich auch in anderen Mac OS X-Anwendungen.

P.S.: Wenn ich so zurückblicke und mir anschaue, welche Klimmzüge nötig waren, um mit fontinst Type1-Schriften in teTeX einzubinden, so ist fontspec geradezu eine Offenbarung.

Nachtrag: Da XeTeX standardmäßig Unicode versteht, ist das inputenc-Paket unnötig. Es führt sogar zu einem Fehler, wenn man es trotzdem einbindet.

Nachtrag 2: Für all diejenigen, die über Google bei mir landen, weil sie XeTeX für Windows oder Linux suchen: XeTeX gibt es nur für Mac OS X.

Nachtrag 3: Inzwischen gibt es wohl auch XeTeX auch für Windows. (Danke Anne)

Ja, ist denn heut scho Weihnachten?

Als ich heute bei der Arbeit erschien, erfuhr ich, daß unser VPN-Tunnel nach Polen weggebrochen war. Offenbar gab es wohl einige Probleme mit der Leitung in Polen und eine Reperatur wurde uns frühestens um 17Uhr in Aussicht gestellt. Dies konnte nur eines bedeuten. Entweder der Tag wird lang und hektisch oder es wird ein langer und langweiliger Tag. Doch wie so oft, hatte der Tag ganz andere Pläne und so wurde es dann noch aufregend.

Als erstes erschienen diese 3 Grazien bei uns. Dies steigerte meine Laune schon mal erheblich. Mein Kollege und ich haben uns dann wie kleine Kinder über die Geräte hergemacht und erstmal damit herumexperimentiert. Wir haben aus einer alten Digitalkamera eine CF-Karte herausgestemmt und dann m0n0wall auf eines der Geräte installiert. Doch der Tag hatte noch mehr zu bieten.

Kurz nach Mittag erschien dann noch unser neuer Datenbankserver. 4x Dual-Code Opteron Goodness. Der Tag war nicht mehr zu toppen. Einen kleinen Dämpfer versetzte uns nur, daß scheinbar der falsche Speicher mitgeliefert wurde, und die Maschine nicht deshalb nicht anlief. Aber wir hatten so viel Spaß dabei, den Server zusammenzubauen, daß es uns egal war :)

Wieso kann eigentlich nicht jeder Tag so sein? Vielleicht sollten wir öfters neue Hardware bestellen.

Windows auf dem Mac, richtig gemacht

Nachdem Apple gestern sich mit dem Boot Camp nicht gerade mit Ruhm bekleckert hat, zeigt heute Parallels, wie man es richtig macht. Die Beta der Parallels Workstation ist eine virtuelle Maschine, in der man (unter anderem) Windows installieren kann. Damit entfällt das lästige hin- und herbooten. Als Bonus kann man nicht nur Windows (in den unterschiedlichsten Versionen) booten, sondern auch Linux, FreeBSD, Solaris und OS/2 incl. seines Nachfolgers eComStation. Genau das hätte ich von Apple erwartet. Aber möglicherweise könnte ja Steve Jobs sich entschließen, Parallels aufzukaufen :)

Apples Boot Camp

Nein, das ist kein Umerziehungslager für Windows-User. Apples Boot Camp soll es Besitzern von Intel-Macs ermöglichen, Windows auf ihrer Hardware zu installieren. Zuerst hielt ich das für einen verspäteten Aprilscherz, doch offenbar ist das doch ernst gemeint. Wenn ich es richtig verstehe, ist das nur ein glorifizierter Bootloader und ein paar Treiber für Windows XP. Ist man auf bestimmte Windows-Software angewiesen, wird das ständige hin- und herbooten jedoch auf die Dauer sehr lästig. Ich hätte hier eher etwas Richtung Xen oder VMWare erwartet. Ich will Windows schön eingesperrt in eine VM, wo es keinen großen Unsinn anstellen kann und mit einer Snapshot/Restore-Funktion immer wieder in einen (einigermaßen) benutzbaren Zustand gebracht werden kann. Übrigens soll Boot Camp auch Teil von Mac OS X 10.5 „Leopard“ werden. Nicht gerade das Killerfeature, da hätte ich doch mehr erwartet.