Aug 21

Irgendwie gab es in den letzten 2 Wochen nicht soviel Content im Web, der es auf meine Linkliste bei zootool geschafft hat. Aber es geht ja auch um Qualität und nicht um Quantität :-) .

iTunes: iTunes-Mediathek sichern und wieder zusammenführen

iTunes ist vielleicht nicht das beste Programm um seine Musiksammlung zu verwalten, aber auch nicht das schlechteste. Der Verbreitungsgrad aufgrund von iPods, iPads, iPhones und Macs dürfte aber recht hoch sein.
In der aktuellen iTunes Version 10.4 wurde das Sichern auf DVD und CD aus dem Menü entfernt. Wie man alternativ auf einem Netzlaufwerk sichert und iTunes-Mediatheken wieder zusammenführt beschreibt diese Support Seite von Apple.

Darum lohnen sich VPN-Verbindungen (auf Win, Mac & iOS)

Habt Ihr Euch schon mal gefragt, wozu man VPN-Verbindungen braucht? Dieses kleine Videotutorial von ifun.de beantwortet diese Frage und zeigt, wie man sie einrichtet.

knockout.js – was ist es, was kann es?

Wenn ich einen Blog von und für Webworker empfehlen müsste, dann den von Guido Mühlwitz. Dieser Post über knockout.js ist nur einer von vielen sehr guten Artikeln rund um das Thema Webentwicklung.

Apples Recovery Disk Assistant für Lion

Apples neues Betriebssystem Lion wird nicht mehr auf herkömmlichen Installationsmedien ausgeliefert, sondern ist ausschließlich über den Mac App Store zu zu bekommen.
Im Recovery Fall, kann man auf eine versteckte Partition zurückgreifen. Doch was macht man, wenn die ganze Platte (oder SSD) kaputt ist?
Dafür gibt es den Apple Recovery Disk Assistant.

geschrieben von gklinkmann \\ tags: , , , ,

Aug 15

Das Versionskontrollsystem git wird immer populärer, so dass sich jetzt auch Google entschlossen hat git auf Google Code neben svn und mercurial zu unterstützen. Doch leider ist es mit einem einzigen Knopfdruck im Admin-Bereich von Google Code nicht getan.

Vor der Umstellung sollte man sein Projekt in einem separaten Verzeichnis sichern.

Nachdem man von svn auf git umgestellt hat, sollte man als erstes einen Reset des Repositories mit folgender Option durchführen:

HTTPS ist das einzige Protokoll, das Google für git unterstützt. Zur Authentifizierung sollte man sich ein Passwort generieren und die Zugangsdaten (auf Linux oder MacOs) in einer .netrc Datei im home Verzeichnis abspeichern.

Nun kann man das Git Repository von Google Code in ein neues Verzeichnis clonen. Danach die alten Projektdaten in das neue Verzeichnis kopieren, zu Git hinzufügen und lokal festschreiben (commit).

 > git clone https://code.google.com/p/<projectname>/ <projectname>
 > cd <projektname>
 > cp -R <pathToOldProject>/* .
 > git add .
 > git commit -m"inital import"

Was jetzt noch fehlt, ist der erste Upload zu Google Code.

 > git push origin master

Bei nachfolgenden Uploads ist die Angabe des Branches nicht mehr notwendig.

 > git push

Links:
Tutorial – Erste Schritte mit Git

geschrieben von gklinkmann \\ tags: , , , ,

Apr 26

Das Versionierungstool Git steht schon lange auf meiner Liste der Dinge, die ich mir mal anschauen will. Momentan nutze ich noch subversion. Doch während man mit subversion Änderungen nur in einem zentralen Repository speichern kann, bietet Git dezentrale Repositories, die auf Bedarf gegen ein zentrales Repository gemerged werden können.

Doch vor der Nutzung kommt zuerst die Installation. Sicherlich kann man Git auch aus den Quellen übersetzen, aber sowohl für Linux [1] als auch für den Mac [2] gibt es dafür Pakete. Die ersten Schritte sind in diesen beiden deutschen Tutorials [3] [4] erläutert. Ein ausführliches deutsches Tutorial gibt es von der Stanford Uni [5].

Scenario


Mein Scenario ist folgendes:

  • ein zentrales Repository auf meinem Mac mini (der mir als Server dient)
  • ein dezentrales Repository auf meinem Mac mini (wenn ich mal davor sitze)
  • ein dezentrales Repository auf meinem Kubuntu Laptop (für unterwegs)

Am Anfang steht das Projekt, das man mit Git versionieren möchte. Das Terminal ist des Entwicklers liebster Freund und deswegen ist der volle Funktionsumfang von Git auch nur dort adressierbar (eine Eclipse Integration gibt es natürlich auch [6]). Aber ein Schritt nach dem anderen.

Schritt 1: bestehendes Projekt mit Git versionieren


Zuerst sollte man Git den eigenen Namen und eine Email Adresse bekanntgeben. Git benutzt diese Informationen später in den Versionskommentaren.

> git config --global user.name "Gero Klinkmann"
> git config --global user.email me@example.com

Dann kann man sein erstes Git Repository mit git init ersellen. Bei mir liegt es auf dem Mac mini, auf dem im nächsten Schritt auch das zentrale Repository entstehen soll.

> cd ~/workspace/testGroovy
> git init
> git add .
> git commit

Die Befehle sprechen für sich. Beim commit öffnet sich der vi Editor, damit man einen Kommentar für den jeweiligen Stand hinzufügen kann. Die Befehlssyntax des vi ist nicht gerade intuitiv, von daher für alle, die sie nicht kennen, kurz die notwendigen Befehle um den Kommentar hinzuzufügen:

  • [i] Wechsel in den Insert Modus.
  • Kommentar schreiben.
  • [esc] Wechsel in den Befehls Modus.
  • [:wq] Speichen und Beenden des vi.

Schritt 2: zentrales Git Repository anlegen


Das eben erstellte Repository ist dann das dezentrale Repository auf dem Mac. Der Clone davon wird über das Argument bare zum zentralen Repository auf dem Mac.

> mkdir  ~/git
> cd ~/workspace/testGroovy
> git clone --bare .git ~/git/testGroovy.git

Schritt 3: zentrales Git Repository clonen


Auf dem Linux Laptop soll ja ein dezentrales Repository entstehen. Dafür ist es notwendig, das zentrale Repository auf dem Mac zu klonen. Beide Rechner sind über ssh verbunden. Weiterhin wird beim Clonen das git-upload-pack (und zwar das von dem Rechner, wo das zentrale Repository liegt – bei mir also vom Mac) benötigt.
Um Problemen, wie bash: git-upload-pack: command not found vorzubeugen, sollte man den Ort (bei mir ist es /usr/local/git/bin/git-upload-pack) beim Clone Kommando mit angeben.

> cd  ~/projekte
> git clone --upload-pack /usr/local/git/bin/git-upload-pack \
   ssh://username@server/full/remote/path/to/testGroovy.git testGroovy

Damit man das nicht ständig beachten muss, kann man das auch in der Git Konfigurationsdatei hinterlegen.

> cd  ~/projekte/testGroovy
> vi .git/config
   [remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = ssh://username@server/full/remote/path/to/testGroovy.git
        uploadpack=/usr/local/git/bin/git-upload-pack
        receivepack=/usr/local/git/bin/git-receive-pack

Schritt 4: vom lokalen zum zentralen Repository


Änderungen an den Sourcen werden zuerst im lokalen Repository über git commit -a versioniert. Auch bei diesem commit öffnet sich der vi Editor für einen Versionskommentar. Mit git push werden die Änderungen des lokalen Repositories dem zentralen Repository mitgeteilt.

> cd ~/projekte/testGroovy
> git commit -a
> git push

Schritt 5: lokales und zentrales Repository auf einem Server


Begonnen hatte ich mit einem lokalen Repository auf meinem Mac. Über git clone –bar wurde ein zusätzliches zentrales Repository erstellt. Doch noch gibt es keine Verbindung zwischen den beiden. Dies geschieht durch einen Eintrag in der Git Konfigurationsdatei des lokalen Repositories.

> cd ~/workspace/testGroovy
> vi .git/config
   ...
   # Verbindung zum zentralen Repository
   [remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = /full/path/to/git/testGroovy.git
   [branch "master"]
        remote = origin
        merge = refs/heads/master

Fazit:
Ein bisschen Konfiguration ist schon notwendig, wenn man mit Git zentrale und dezentrale Repositories gleichsam nutzen möchte. Für diesen Aufwand bekommt man aber ein sehr leistungsfähiges, stabiles und performantes Versionierungssystem, das nicht auf eine Verbindung zu einem zentralen Repository angewiesen ist.

Links:
[1] git-core – Core Pakete für Ubuntu
[2] git-osx-installer – Google Code Projekt
[3] kurzes deutsches Git Tutorial – auf interaktionsdesigner.de
[4] kurzes deutsches Git Tutorial – auf online-tutorials.net
[5] ausführliches deutsches Git Tutorial – der Stanford Uni
[6] EGit – Eclipse Plugin für Git

geschrieben von gklinkmann \\ tags: , , , ,

Sep 30

Ich habe gerade einen Artikel über die 100 vim Befehle gelesen, die jeder Programmierer kennen sollte.
Den vim (Vi IMproved) habe ich hier im Blog schon einmal kurz vorgestellt.

Bei der Durchsicht der Liste, der 100 besten vim Befehle, habe ich wieder einmal viel gelernt über diesen Konsolen Editor, aber auch alt bekannte und lieb gewonnene Funktionen entdeckt. Meine absoluten Favoriten sind:

  • :syntax on zum anschalten der Syntax Hervorhebung (syntax highlighting)
  • die Befehle zum Einrücken von Code
    :set autoindent Einrücken anschalten
    :set smartindent intelligentes Einrücken anschalten
    :set shiftwidth=4 Definieren von 4 Leerzeichen als Einrückgröße
    ctrl-t, ctrl-d Ein/Ausrücken im insert mode
    >> Einrücken im Befehlsmode
    << Ausrücken im Befehlsmode
  • Die Interaktion mit Unix
    :!pwd Ausführen vom “pwd” Unix Befehl und dann zum vim zurückkehren
    !!pwd Ausführen vom “pwd” Unix Befehl und das einfügen der Ausgabe in die Datei
    :sh temporärer Ausflug auf die Unix Shell
  • :%s/old/new/g Ersetzen von “old” durch “new” in der gesamten Datei

Welche Editoren für die Konsole nutzt Ihr? Und falls der vim dabei ist, auf welche Befehle könntet ihr nicht verzichten?

geschrieben von gklinkmann \\ tags: , , ,

Sep 14

Für alte Linux Hasen ist das ein Klax, aber da man es meist pro Computer nur einmal macht, frage ich mich jedes mal beim Aufsetzen eines Rechners mit Windows und Linux – wie war das noch?

Eigentlich ist es gar nicht so schwer. Zuerst muss man die UID’s der Windows Partitionen ermitteln:

> sudo blkid
/dev/sda2: UUID="8A4831E44831CFA5" LABEL="Volume" TYPE="ntfs"
/dev/sda5: UUID="A020173420B4E2A8" TYPE="ntfs"

dann die Verzeichnisse für die Mountpoints erstellen:

> sudo mkdir /media/windows
> sudo mkdir /media/windows/C
> sudo mkdir /media/windows/D

dann die Datei /etc/fstab ändern um die Partitionen permanent einzubinden:

> sudo vi /etc/fstab
# Zeilen hinzufügen
UUID=8A4831E44831CFA5   /media/windows/C   ntfs-3g   defaults,nls=utf8,uid=0,gid=46   0   0
UUID=A020173420B4E2A8   /media/windows/D   ntfs-3g   defaults,nls=utf8,uid=0,gid=46   0   0

Für den mount wird der ntfs-3g Treiber benutzt, der bereits Bestandteil der großen Distributionen (getestet auf Kubuntu 9.04) ist. Was noch fehlt ist das eigentliche mounten:

> sudo mount -a

Fertig.

Links:
ubuntuusers.de – Windows Partitionen einbinden

geschrieben von gklinkmann \\ tags: , , , , ,