Tastatursteuerung angepasst

Vor über einem Jahr bin ich privat von einer Windows-Büchse zum Mac gewechselt. Das Einzige was mich immer noch am Mac stört ist die unterschiedliche Cursorsteuerung per Tastatur. Die Windows/Linux typische Steuerung ist bei mir nach Jahren in Fleisch und Blut übergegangen. Da ich beruflich den ganzen Tag mit Java unter Linux entwickle und den Cursor sicherlich ein paar tausend mal pro Tag hin und her scheuche, ist es für mich fast unmöglich mich daran zu gewöhnen bzw. einen Schalter umzulegen je nachdem vor welchem Rechner ich sitze. Das muss sich ändern ...

[Zum Artikel]

Es gibt Leute die verwenden es!

iusethislogo
Als ich meine verwendeten Programme bei "i use this" aktualisiert habe, stellte ich fest dass schon jemand mein Happy Birthdays! Widget eingetragen hat. Cool!

Pixelmator gekauft

pixelmator
Nachdem ich diverse Zeichenprogramme für den Mac evaluiert habe, entschloss ich mich Heute den Pixelmator zu kaufen. Das Programm hat zwar noch ein paar fehlende Features, aber ich hoffe die werden in den nächsten Versionen noch nachgereicht. Ich sehe bei diesem relativ jungen Zeichenprogramm das größte Potential!

Bild im Impressum

In der Impressum-Seite habe ich ein Bild von mir eingefügt. Das Bild wurde letztes Jahr während unseres USA-Urlaubs im Death Valley aufgenommen.

Seite überarbeitet

Heute habe ich mich mal in zwei Blog-Verzeichnissen (Links dazu sind ganz unten auf der Seite zu finden) eingetragen, dann habe ich noch den Google-Analyzer integriert sowie ein paar Kleinigkeiten am Layout dieser Seite verbessert. Etwas seltsam ist, dass Google immer noch nach der "index.php" von WordPress sucht das ich schon seit einigen Wochen nicht mehr verwende! Vielleicht blickt der Google-Robot ja auch noch, dass die Startseite nun "index.html" heisst.

CVS und binäre Dateien

bash
CVS speichert bei einem Commit nur die Differenzen zur Vorgängerversion. Dies macht bei binären Dateien (nib-Dateien, Bildern, PDF's, usw.) keinen Sinn bzw. zerstört diese unter Umständen (new lines). Deshalb werden solche Dateien wie folgt hinzugefügt "cvs add -kb bild.png". Damit man dies nicht für jede Datei machen muss und es auch nicht vergisst, verwendet CVS eine Datei Namens ".cvswrappers". Hier kann unter anderem für bestimmte Dateiendungen festgelegt werden, dass diese als binäre Dateien behandelt werden sollen.

Ich habe meine wieder in meinem Home-Verzeichnis abgelegt und sie hat momentan folgenden Inhalt:

*.nib -k 'b'
*.tiff -k 'b'
*.gif -k 'b'
*.png -k 'b'
*.pdf -k 'b'

CVS und ".DS_Store"-Dateien

bash
Wer wie ich mit dem Finder arbeitet, wird sich sicherlich schon über die ".DS_Store"-Dateien in seinen Projekt-Verzeichnissen geärgert haben. Die möchte man natürlich nicht in das Repository mit aufnehmen. CVS verwendet in diesem Zusammenhang eine Datei Namens ".cvsignore". Das CVS-Tool liest diese Dateien und ignoriert alle Dateien die darin zeilenweise aufgeführt sind. Diese kann man in spezialisierten Versionen in den einzelnen Verzeichnissen anlegen und committen. Für Dateien die in allen Verzeichnissen und allen Repositories ignoriert werden sollen, kann man sie auch im Home-Verzeichnis anlegen.

Meine "~/.cvsignore" sieht momentan noch so aus:

# ignore the build directories
build
# ignore the .DS_Store files
.DS_Store
# ignore the IB temp files
*~.*

CVS mit Xcode 3.0

icon_xcode
In dem Artikel von heute Morgen "SSH und CVS im Terminal" habe ich schon einmal die Grundlagen geschaffen, damit ich von meinem Mac auf ein CVS-Repository (welches auf einem Linux-Rechner gehostet ist) zugreifen kann. Nun geht es darum wie ich dieses mit Xcode 3.0 verwenden kann. Im Xcode heisst die Versionsverwaltung SCM. Das Akronym SCM steht dabei für "Software Configuration Management".

Damit das SCM benutzt werden kann, muss es erst einmal in Xcode eingerichtet werden. Dazu geht man erst mal zu den SCM-Einstellungen: "Xcode | Preferences | SCM".

In dem Reiter "Repositories" habe ich - um an dem Beispiel von heute Morgen zu bleiben - folgendes in das Feld "Root:" eingetragen: ":ext:hansi@213.55.44.33:/cvs". Xcode parst den Feldinhalt und trägt die Werte in die entsprechenden Felder ein. Die Methode "ext" verwende ich wegen dem SSH-Zugriff. Das Feld Passwort und den Port konnte ich leer lassen. Im Feld "Tool:" steht "/usr/bin/cvs". "Use RSH instead of SSH" ist nicht aktiviert.

In dem Reiter "SSH" steht als Key der Pfad zu meinem privaten Schlüssel "~/.ssh/id_dsa". Im gleichen Reiter habe ich auch noch die "Passphrase" von heute Morgen eingegeben.

Sind alle Daten korrekt eingegeben, dann zeigt dies Xcode in dem Reiter "Repositories" mit dem grünen Punkt und dem Text "Authenticated" an. In der Xcode Menüleiste kann nun über "SCM | Repositories" auf das existierende CVS-Repository zugegriffen werden.

SSH und CVS im Terminal

bash
Für mein erstes Projekt "Automobile Manager" möchte ich natürlich gleich auf mein bereits, vorhandenes Versionskontrollsystem "CVS" zugreifen. Dies läuft auf dem gleichen Linux-Rechner wie diese Webseite und steht von überall zur Verfügung. Da "meine" Administratoren den direkten Zugriff nicht erlauben, muss ich den Weg über SSH gehen. Wie nicht anders zu erwarten war, läuft der SSH-Daemon natürlich nicht auf dem Standard-Port 22. Hier sind nun ein paar Schritte die das Leben erleichtern.

Bsp. Linux Benutzer : hansi
Bsp. Linux IP : 213.55.44.33
Bsp. Linux SSH-Port : 12345

Ohne Passwort-Eingabe auf den Linux-Rechner zugreifen
Wenn ich mich bisher auf meinem Linux-Rechner anmelden wollte, musste ich "slogin -p 12345 hansi@213.55.44.33" eingeben und mit dem Benutzer-Passwort bestätigen. Die folgenden Schritte ermöglichen schon einmal das Anmelden ohne Passwort:
  • Auf dem Mac das Terminal öffnen
  • Nun muss der private sowie der öffentliche Schlüssel generiert werden. Dies geschieht durch Eingabe von "ssh-keygen -t dsa". Den Speicherort für die beiden Dateien einfach per Eingabetaste bestätigen. Die "Passphrase" muss dabei nicht eingegeben werden, ist aber sinnvoll! Im Anschluss sollten in dem Verzeichnis "~/.ssh" die beiden Dateien "id_dsa" und "id_dsa.pub" vorliegen
  • Der öffentliche Schlüssel "id_dsa.pub" muss nun unter dem neuen Namen "authorized_keys2" in das "~/.ssh"-Verzeichnis des Linux-Benutzers kopiert werden. Dies geht über den Befehl "scp -P 12345 ~/.ssh/id_dsa.pub 213.55.44.33:.ssh/authorized_keys2". Die Port-Angabe "-P 12345" brauche ich nur, weil der SSH-Daemon nicht auf dem Standard-Port 22 läuft.
Jetzt kann ich schon einmal ohne Eingabe eines Passwortes auf dem Linux-Rechner anmelden.

Ohne Eingabe des SSH-Ports zugreifen
Damit nicht immer der SSH-Port eingeben werden muss, nutzen die SSH-Tools die Konfigurationsdatei "~/.ssh/config". Sie muss allerdings erst noch mit einem Editor angelegt und gefüllt werden. Die Konfigurationsdatei bekommt folgenden Inhalt:

Host 213.55.44.33
    Compression no
    Port 12345

Nun kann ich mich mit "slogin hansi@213.55.44.33" ohne Eingabe des Ports oder eines Passwortes auf dem Linux-Rechner anmelden. So sollte das sein!

CVS Zugriff
Ich greife nur auf das CVS-Repository meines Linux-Rechners zu und möchte das auch so komfortabel wie möglich haben. Dazu gibt es zwei Möglichkeiten.
Man trägt die CVS-Umgebungsvariablen (CVSROOT und CVS_RSH) in die Datei "~/.profile" ein oder man erstellt die Datei ".MacOSX/environment.plist". Die ".profile"-Variante hat den Nachteil dass diese dann nur innerhalb einer Terminal-Sizung gesetzt sind. Bei der zweiten Variante können auch andere Anwendungen als das Terminal diese benutzen. Ich habe mich für die zweite entschieden. Dabei enthält diese plist-Datei folgenden Inhalt:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CVSROOT</key>
    <string>:ext:hansi@213.55.44.33:/cvs</string>
    <key>CVS_RSH</key>
    <string>/usr/bin/ssh</string>
</dict>
</plist>


Im Terminal kann nun nach einem erfolgreichen "cvs login" das CVS wie gewohnt benutzt werden. So langsam geht es voran!

Buch: Objective-C und Cocoa

Vor ein paar Wochen habe ich mich dazu entschlossen auf dem Mac mal eine native Anwendung zu entwickeln. Als hauptberuflicher Java-Entwickler möchte man ja auch ab und dazu mal über den Rand der "Kaffeetasse" schauen. Ich dachte als erstes, ich finde im Netz ein paar gute Seiten und Tutorials. Pustekuchen ich wurde schon alleine auf den Apple Entwicklerseiten von Informationen überflutet. Mir fehlte der rote Faden...

3908497426.01._AA_SCTZZZZZZZ_V45748112_
Also habe ich mich bei Amazon mal über die verfügbaren Bücher schlau gemacht. Am Besten natürlich auf Deutsch. Da gab es leider nur ein Buch das in Frage kam Objective-C und Cocoa. Die Kundenrezensionen waren zwar nicht berauschend aber was soll's, so schlimm kann es schon nicht sein. Also am 10.11.2007 bestellt und wie von Amazon gewohnt wurde es sehr schnell geliefert. Nun immer mal wieder ein bischen darin gelesen. Als ich bei Kapitel 3 war, wäre das Buch fast aus dem 5. Stock unserer Wohnung geflogen. Da sind so viele Fehler drin, dass mir fast der Spaß verging und ich mich tierisch darüber geärgert habe dafür 50€ ausgegeben zu haben. Allerdings habe ich mich durchgebissen und finde es im Nachhinein nicht schlecht. Jetzt habe ich ungefähr einen Überblick über Cocoa und kann mir bei Detailproblemen gezielt die aktuellen Apple Developer Dokumentionen durchlesen.

Ein Problem am Rande: Ich verwende Leopard mit Xcode 3.0 und dem aktuellen Interface Builder. In diesen Versionen hat Apple doch einiges geändert, was beim nachvollziehen der Buchbeispiele (basierend auf Tiger und Xcode 2.4) doch etliche Probleme bereitet hat. Aber dafür können die Autoren des Buches natürlich nichts.

Ein paar Links: Homepage des Buches, Mac Entwicklerforum

"Happy Birthdays!" aktualisiert

Das mit dem RapidWeaver klappt soweit ganz gut. Habe jetzt als erstes die "Happy Birthdays!"-Seite aktualisiert.