TextMate – der Editor meiner Wahl

Bislang habe ich mit vim unter OS X gearbeitet, jedoch die mangelnde Integration in die Deskopumgebung vermisst. Vor kurzem bin ich dann nach einigen Zögern auf TextMate umgestiegen. Die Trialversion von Textmate hatte mich von Anfang an überzeugt, aber eigentlich wollte ich einer Open Source Software den Vorzug leisten. So probierte ich Smultron aus, doch konnte mich mit der eigenwilligen Oberfläche nicht anfreunden und vermisste auch einige Funktionen. So entschied ich mich entgegen meiner Prinzipien Abstand von Closed Source zu nehmen dann doch für Textmate. Die 39 Euro erwiesen sich als gut investiertes Geld: TextMate bietet alles, was ich mir von einem Editor wünsche und ich konnte ohne lange Einarbeitungsphase effizient sowohl an Websites, Java- und Ruby-Projekten, PHP-Scripts als auch an meinem Diplom arbeiten. Als besonders gelungen empfinde ich dabei die Integration von

\LaTeX{}

. Einzig bei PHP-Code innerhalb einer lstlisting-Umgebung gerät der Parser ins Straucheln und interpretiert den eingebetteten PHP-Code als

\LaTeX{}

, was dazu führt, dass der Parser nicht das Ende der lstlisting-Umgebung findet. Dadurch werden im folgenden sämtliche Autovervollständigungen und Fehlerkorrekturen einschließlich der Rechtschreibprüfung blockiert. Aber die für

\LaTeX{}

hinterlegte Grammatik kann zum Glück angepasst werden, so dass eingebetteter PHP-Code auch als solcher erkannt und geparst wird. Für Java und Python funktioniert das schon sehr gut. Ich werde mich demnächst intensiver damit befassen.

Textmate mit geöffneten Latexdokument

Meine Top 10 Unixshell-Kommandos

IBM hat unter Productivity tips einen interessanten Artikel veröffentlicht, der einige Tipps enthält, wie mensch seine Produktivität auf der Kommandozeile optimieren kann.
Als sehr aufschlussreich empfinde ich die vorgestellte Möglichkeit durch Kombination bekannter UNIX-Tools eine Statistik der am häufigsten in der Shell aufgerufenen Kommandos zu erstellen.

$ history|tail -1000|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c|sort -r

Auf dem MacBook:

92 cd
89 ls
44 vim
34 gcc
30 awk
31 make
17 sudo
13 wget
13 java
10 echo
9 top

Auf dem Server:

80 ls
51 cd
47 sudo
41 apt-get
40 tail
23 exit
17 df
10 grep
10 rm
10 chmod
9 cat

Um eine repräsentativere Statistik zu erstellen, wäre es ratsam mit history -c sparsamer umzugehen. 😉

Kaputtes AirPort Extreme Update 2007-001

Die bittere Erkenntnis, dass Softwareaktualisierungen oftmals mehr neue Probleme verursachen als lösen, habe ich als Gelegenheitswindosuser mittlerweile verinnerlicht. Törichterweise habe ich Apple mehr Vertrauen geschenkt und bedenkenlos das AirPort Extreme Update 2007-001 installiert, obwohl mein WLAN bislang zufrieden stellend funktionierte. Die Rache folgte stehenden Fußes: Nach wenigen Minuten wurde die Verbindung zum Router unterbrochen und ließ sich selbst durch Neuinitialisierung des AirPort-Adapters meines MacBooks nicht wieder aufbauen. Einzig und allein ein Neustart schuf Abhilfe für durchschnittlich 15 Minuten.

Die Logs gaben auch nicht viel her:

Jan 29 13:12:47 macbook /System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport: Error: WirelessAssociate2() = 88001006 for network wlan_s. The operation timed out.

Testweise habe ich die WPA2-Verschlüsslung für das Netzwerk deaktiviert (auf Dauer keine gute Idee!), die bevorzugten Netzwerke in den Systemeinstellungen gelöscht und schlussendlich alle relevanten Propertylists (com.apple.internetconfig.plist, com.apple.internetconfigpriv.plist, com.apple.internetconnect.plist) gelöscht. Nichts half.

Mir blieb nichts anders ürbig, als das Update wieder zu entfernen. Leider scheint Mac OS X 1.4.8 keine Option vorzusehen, einmal installierte Updates wieder zu deinstallieren. Zum Glück bietet Apple wenigstens alle viele Updates zum Download an, so dass es möglich ist durch ein Update aktualisierte Dateien durch die der Vorgängerversion zu ersetzen.

Da das Problem das AirPort-Kernelmodul zu betreffen scheint, sollte es genügen die Datei IO80211Family.kext im Verzeichnis /System/Library/Extensions auszutauschen. Solche Eingriffe sind zwar riskant, weil sich unter Umständen Versionskonfikte mit anderen Kernelmodulen und Systemfunktionen ergeben könnten, aber in Ermangelung anderer Lösungen oft einen Versuch wert.

Also bin ich wie folgt vorgegangen:

  1. Ganz wichtig: Backup von /System/Library/Extensions/IO80211Family.kext anlegen.
  2. Das letzte große Update auf Mac OS X 1.4.8 (206 MB) runterladen.
  3. Die DMG-Datei mounten, aber nicht installieren.
  4. Das enthaltene Paket MacOSXUpd10.4.8Intel.pkg zum Beispiel mit der Software Pacifist öffnen.
  5. Die Datei System/Library/Extensions/IO80211Family.kext aus dem Archiv nach /System/Library/Extensions/ entpacken.
  6. Den Mac neustarten.

Seitdem Eingriff läuft das WLAN wieder zufrieden stellend, zumindest bis zum nächsten Update. 😉