Oct 20

Als Entwicklungs-Hardware sind Macs momentan ziemlich beliebt, läuft doch auf diesen Alu Beauties ein Betriebssystem, das auf Unix basiert.

Ein weiterer Grund dafür dürfte auch sein, dass die Entwicklungsumgebung Eclipse auf MacOs gut unterstützt wird. Dies gilt vor allem für Java (mit dem Java Development Tool – JDT). Aber auch PHP Webanwendungen lassen sich gut mit Eclipse und dem PHP Development Tool – PDT programmieren.

Das PDT bringt keinen eigenen PHP Interpreter mit. D.h., man muss selbst für einen Webserver mit PHP Modul sorgen. Auf dem Mac bekommt man das Rundum Sorglos Paket mit MAMP.

Möchte man auch PHP Scripts unter Eclipse ausführen, muss man die beiden miteinander bekannt machen. Doch zuvor verlangt Eclipse PDT nach einem Debugger. Zur Auswahl stehen der Zend Debugger, der leider nicht mit MAMP mitgeliefert wird und XDebug, dessen Modul zwar in MAMP integriert ist, bei mir aber nicht funktionierte.

Eine aktuelle Version von XDebug kann man sich über brew installieren.

brew install xdebug

Brew setzt zwar Xcode voraus, sollte aber auf keinem Entwickler-Mac fehlen. Eine Installationsanleitung gibt es auf github.

Doch zurück zu XDebug. Während der Installation wird man auf die nächsten Schritte hingewiesen:

To use this software:
  * Add the following line to php.ini:
    zend_extension="/usr/local/Cellar/xdebug/2.1.1/xdebug.so"
  * Restart your webserver.
  * Write a PHP page that calls "phpinfo();"
  * Load it in a browser and look for the info on the xdebug module.
  * If you see it, you have been successful!

Die php.ini, die MAMP mitbringt, lässt sich nicht mit normalen User Rechten editieren. Mit sudo geht es aber schon.

sudo vi /Applications/MAMP/bin/php/php5.3.6/conf/php.ini

Im Bereich [xdebug] dann die Direkive für das xdebug Modul hinzufügen:

[xdebug]
zend_extension="/usr/local/Cellar/xdebug/2.1.1/xdebug.so"

den Webserver durchstarten und den Erfolg wie oben beschrieben kontrollieren.

Funktioniert alles, muss man in Eclipse nur noch in den Einstellungen ein PHP Executeable konfigurieren um von dort aus PHP Scripts starten zu können.

eclipse php-executeable

geschrieben von gklinkmann \\ tags: , ,

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: , , , ,

Jan 03

Eines muss ich mal an dieser Stelle festhalten. Man kann zwar nicht mit der Windows Kommandozeile richtig arbeiten, aber sie hat ein tolles tree Kommando. Tree macht genau das, was der Name sagt. Es stellt ein Verzeichnis mit seinen Dateien und Unterverzeichnissen als Baum dar. Optional kann man noch angeben wie tief dieser Baum angezeigt werden soll.

Warum dieses Kommando unter Linux und MacOs nicht vorhanden ist, ist mir schleierhaft, zumal es in der Version 8 der SuSE Linux Distribution meines Wissens noch enthalten war. Lang ist’s her. Wer den Grund weiß, möchte mich bitte in den Kommentaren erleuchten.

Doch wer auf den optionalen Parameter für die Darstellung der Verzeichnistiefe verzichten kann, dem kann geholfen werden. Eine Kombination des find und sed Kommandos versteckt in einem alias ergibt fast die gleiche Ausgabe auf der shell.

alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"

via:
macnotes.de – Baumansicht mit Tree

geschrieben von gklinkmann \\ tags: ,