Aug 24

Um Git auf Mac OS X zu installieren lädt man sich den passenden Installer und führt die Installation durch. Abschließend muss man zur PATH-Variable in ~/.profile mittels Konsole noch den Pfad von Git (/usr/local/git/bin) hinzufügen. Nach einem Neustart der Konsole steht der Verwendung von Git nichts mehr Wege.

Jul 29

Wenn man Änderungen nicht nur von einer Datei sondern von vielen Dateien und möglicherweise auch mit komplexer Datei- bzw. Ordnerstruktur feststellen möchte um daraus eine Patch-Datei zu erzeugen, so muss man diff rekursiv anwenden um nicht jede geänderte Datei einzeln patchen zu müssen. Hier erkläre ich die übliche – sozusagen zum Standard etablierte – Vorgehensweise um dieses Ziel zu erreichen:

Zuerst vergleicht man also den Ordner mit den Originaldateien rekursiv mit der geänderten Version:

diff -urN original changed > /pfad/zu/changes.patch

Optionen:

-u  -U NUM  --unified[=NUM]  Output NUM (default 3) lines of unified context.
-r  --recursive  Recursively compare any subdirectories found.
-N  --new-file  Treat absent files as empty.

Anschließend kann man auf anderen Installationen die Patch-Datei anwenden (zuerst muss in das Verzeichnis mit den Originaldateien wechseln):

patch -p1 < /pfad/zu/changes.patch

Optionen:

-p NUM  --strip=NUM  Strip NUM leading components from file names.

Da die Patch-Datei im Verzeichnis der Originaldateien aufgerufen wird, mit diff allerdings die übergeordneten Ordner verglichen wurden, muss der Ordnername entfernt werden, dies geschieht mit der Option “-p1″.

Jul 13

Wenn in einem Ordner eine große Anzahl von Dateien liegt, verweigern cp, mv usw. ihren Dienst mit der Meldung:

$ mv *.png ../target/
bash: /bin/mv: Argument list too long

Abhilfe schafft find mit dem Parameter exec:

find . -name "*.png" -exec mv {} ../target/ \;

Der Nachteil der find-Methode mit dem Parameter exec ist, dass für jede Datei der Befehl in exec ausgeführt wird. Performanter ist hingegen xargs, das die übergebene Liste in kleinere Listen aufteilt, sodass diese dann von cp, mv, etc. noch verarbeitet werden können:

find . -name "*.png" | xargs -0 mv -t ../target/
Apr 13

Path Finder von Cocoatech ist ein großartiger Ersatz für den in Mac OS X standardmäßig integrierten Finder. Dank Tabs, Stapel und vielen weiteren hilfreichen und umfangreichen Features erlaubt dieser ein schnelleres, einfacheres und angenehmeres Arbeiten. Ein Großteil der Features wird in einem Screencast vorgestellt, die Möglichkeiten sind aber beinahe unerschöpflich.

Mrz 17

Festplatten sind bei normalem Büroeinsatz von Computern häufig die langsamste Komponente – der Großteil der Wartezeit entsteht also beim Laden von Programmen und Dateien. In Notebooks werden sehr oft Festplatten mit nur 5400rpm verbaut, was eine schwächere Performance des Systems aufgrund der langsamen Festplatte zur Folge hat. Festplatten mit 7200rpm sind zwar etwas lauter als Versionen mit nur 5400rpm, der Unterschied ist aber kaum hörbar und dieser Nachteil wird durch die deutlich bessere Performance wieder wettgemacht.

Ich habe mir zwar ab Werk eine Festplatte mit 7200rpm von Apple in mein MacBook Pro einbauen lassen, doch mit zunehmendem Alter der Festplatten werden diese auch langsamer. Außerdem bringen neue Technologien zusätzliche Performance mit sich. Deshalb habe ich mich, nachdem mir die langen Wartezeiten auf die Nerven gingen und außerdem der Speicher immer knapper wurde, dazu entschlossen eine neue Festplatte zu verbauen. Konkret die Hitachi Travelstar 7K500, die in Tests eine gute Performance erzielte und außerdem beim Händler um die Ecke lagernd war. Zusätzlich haben ich mir die Sharkoon SATA Quickport-Dockingstation zum Synchronisieren der beiden Festplatten gekauft.

Zuerst habe ich mein System wie gewohnt gestartet und die neue Festplatte via Dockingstation per USB angeschlossen. Mit dem Carbon Copy Cloner habe ich die Daten der alten auf die neue Festplatte geklont. Hierfür sollte man genügend Zeit (je nach Größe der Ursprungsplatte, aber einige Stunden) einplanen. Damit es zu keinen inkonsistenten Daten kommen konnte, habe ich am Computer sonst nichts gemacht. Nach erfolgreicher Synchronisation habe ich den Computer ausgeschaltet und die Festplatten lt. Anleitung von iFixit für mein Gerät getauscht. Anschließend wieder eingeschaltet und alles lief wie gewohnt, nur um ein Vielfaches schneller.

Zum Vergleich des Performance-Unterschieds habe ich mit Xbench einen Disk Test vor und nach dem Tausch erstellt.

Benchmark-Ergebnis der alten Festplatte:

Sequential	52.52
	Uncached Write	52.27	32.09 MB/sec [4K blocks]
	Uncached Write	56.61	32.03 MB/sec [256K blocks]
	Uncached Read	41.07	12.02 MB/sec [4K blocks]
	Uncached Read	66.58	33.46 MB/sec [256K blocks]
Random	14.31
	Uncached Write	4.58	0.48 MB/sec [4K blocks]
	Uncached Write	42.92	13.74 MB/sec [256K blocks]
	Uncached Read	43.16	0.31 MB/sec [4K blocks]
	Uncached Read	68.67	12.74 MB/sec [256K blocks]

Benchmark-Ergebnis der neuen Festplatte:

Sequential	75.20
	Uncached Write	70.32	43.18 MB/sec [4K blocks]
	Uncached Write	81.57	46.15 MB/sec [256K blocks]
	Uncached Read	54.65	15.99 MB/sec [4K blocks]
	Uncached Read	118.83	59.72 MB/sec [256K blocks]
Random	25.60
	Uncached Write	9.43	1.00 MB/sec [4K blocks]
	Uncached Write	70.57	22.59 MB/sec [256K blocks]
	Uncached Read	45.13	0.32 MB/sec [4K blocks]
	Uncached Read	71.94	13.35 MB/sec [256K blocks]

Ich denke die Ergebnisse, insbesondere die Lese-Performance, sprechen für sich ;-) .