Dec 10

Ich behaupte mal jeder Programmierer war im Laufe seiner Tätigkeit schon mal auf den Seiten von stackoverflow.com um Hilfe zu bekommen oder selbige zu leisten.

Worauf ich erst kürzlich gestoßen bin, ist die auf dieser Seite geführte Liste von frei verfügbaren Programmierbüchern. Die Bücher sind nach Programmiersprachen von A (wie ASP.NET MVC) bis W (wie Websphere – dieser Application Server ist wahrscheinlich komplexer als so manche Programmiersprache) geordnet.

Soweit ich es überblicken konnte sind alle Bücher auf Englisch und so möchte ich an dieser Stelle noch 2 deutsche “OpenBooks” erwähnen, die mir bei meiner Arbeit geholfen haben:

Java ist auch eine Insel
Das wohl bekannteste deutsche OpenBook für die Programmiersprache Java
Professionelle Softwareentwicklung mit PHP 5
Auch in PHP kommt man nicht mehr an der Objektorientierung vorbei. Dieses Buch ist ein guter Einstieg.

Welche deutschsprachigen und frei verfügbaren Programmierbücher haben Euch weitergeholfen?

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

Mar 18

Video – Tutorials sind neben einem Fachbuch ein guter Einstieg in ein Thema. Von Springsource gibt es zum Thema Grails zwei sehenswerte Tutorials auf youtube.
Wenn Ihr Euch für das Webframework Grails interessiert, solltet Ihr Euch eine halbe Stunde für diese zwei gut gemachten Videoanleitungen nehmen.

via:
Neues Video-Tutorial zu Grails – it-republik.de

geschrieben von gklinkmann \\ tags: , , ,

Oct 13

Einen leeres HTML Gerüst:

<html>
  <head>
  </head>
  <body>
  </body>
</html>

sollte jeder Webentwickler ohne Nachzuschauen schreiben können. Doch wie sieht es mit korrektem XHTML (inklusive Namespace) aus? Doch eher schlecht, oder?
HTML 5 vereinfacht zumindest die Namespace Angabe. Doch zu einer modernen Web 2.0 Anwendung gehört auch die Einbettung von CSS Stylesheets und Javascript Frameworks (wie z.B. jquery).

Im täglichen Einsatz hat sich bei einem selbst sicherlich eine bestimmte Struktur etabliert. Wie man es machen könnte, zeigen Paul Irish und Divya Manian auf ihrer Website html5boilerplate.com.

Die Vorlage, die auch gleich die notwendigen Javascript Bibliotheken für die HTML 5 Kompatibilität der aktuellen Browser, Profiling, CSS und Javascript Foo enthält:

  • Modernizr: MIT/BSD license
  • jQuery: MIT/GPL license
  • DD_belatedPNG: MIT license
  • YUI Profiling: BSD license
  • HTML5Doctor CSS reset: Creative Commons 3.0 BY
  • CSS Reset Reloaded: Public Domain

steht auf GitHub zum Download bereit.

geschrieben von gklinkmann \\ tags: , ,