Blog

Zentrales Git-Repository unter OS X aufsetzen

Bei einer verteilten Software-Entwicklung hat sich Git als hervorragendes Source-Code-Management-System bewährt. Das bekannteste Projekt bei dem dieses System Einsatz findet ist sicherlich die Entwicklung des Linux-Kernels. Git ist darauf ausgelegt, dass jeder Entwickler lokal sein eigenes Repository verwendet. Ein zentrales Repository (wie z.B. bei Subversion oder CVS) ist nicht unbedingt erforderlich.
In vielen Fällen ist es dennoch sinnvoll, die verteilte Entwicklung über ein zentrales Repository zu verwalten. Teams, die beginnen mit Git zu arbeiten können sich zur Anlage und zum Betrieb eines zentralen Repositorys für ihr Projekt nun entscheiden, ob sie das einem Dienstleister wie Github erledigen lassen oder ob sie in ihrer eigenen Infrastruktur einen Server dafür aufsetzen wollen. Dieser Artikel erläutert wie unter Mac OS X ein zentrales Git-Repository aufgesetzt werden und wie die lokalen Änderungen der Entwickler in das zentrale Repository einfließen.

Ganzen Beitrag lesen

0 comments

Tickets via CSV in Redmine importieren

Zur Verwaltung meiner Softwareentwicklungsprojekte setzte ich in der Regel das hervorragende Redmine als Managementwerkzeug und Kollaborationsplattform ein. Es beinhaltet Blog- und Wiki-Funktionalität und ein sehr gutes Ticketing-System. In der Regel werden Tickets über das Webfrontend erfasst. Es gibt aber Projekte, wo Tickets aus anderen Systemen heraus bereitgestellt werden. Um diese nicht manuell importieren zu müssen, hat Martin Liu einen Redmine-Importer geschrieben. Dieser beherrscht den Import von Tickets, die in einer CSV-Datei vorliegen. Das Mapping der Spalten auf die Attribute eines Tickets (Kategory, Priorität, Autor, Bezeichnung, Projekt, usw.) kann beim Import interaktiv eingestellt werden.
Leider funktionierte dieses Redmine-Plugin bei mir nicht auf Anhieb ich habe ein paar kleine Änderungen vornehmen müssen. Meine Version des Plugins befindet sich auf Github (http://github.com/chnoack/Redmine-Importer-Fixes) und kann mit Git hier herunter geladen werden: git@github.com:chnoack/Redmine-Importer-Fixes.git. Der herunter geladene Ordner Redmine-Importer-Fixes muss in remine_importer umbenannt werden, wenn er im vendor/plugin-Order des Redmine-Server installiert wird.

Diese Version läuft in meiner Umgebung (Redmine 0.8.7 stable, Mac OS X, Apache mit Phusion/Passenger und Enterprise Ruby 1.8.7) tadellos auch mit deutscher Lokalisierung.

0 comments

Native Ruby Extension unter Windows übersetzen

Ruby-Entwickler sind auf die Installation zusätzlicher Ruby-Pakete (sog. Gems) angewiesen. Einige dieser Gems enthalten Bibliotheken, die auf dem Zielsystem übersetzt werden müssen, z.B. sqlite3-ruby oder pg. Beim Installieren mit gem install pg wir automatisch der C-Compiler aufgerufen und dann die Bibliothek übersetzt und installiert.
Unter Windows ist das mitunter nicht einfach. Zuerst muss ein geeigneter C-Compiler ausgewählt und installiert werden. Hier empfiehlt sich das kostenlose Visual C++ Express Edition von Microsoft (siehe http://www.microsoft.com/germany/express/download/webdownload.aspx). Nach der Installation müsssen allerdings noch folgender Schritt erledigt werden, bevor ein native Gem installiert werden kann:

  • In der Datei $RUBY_HOME/lib/ruby/1.8/i386-mswin32/config.h muss die folgende Zeile gelöscht werden:
    #error MSC version unmatch
Nun kann ein Gem installiert werden. Allerdings funktioniert das nicht in der normalen Eingabeaufforderung (Shell), sondern nur in der Visual Studio Eingabeaufforderung. Diese kann im Startmenu unter Programme/Microsoft Visual C++ 2008 Express Edition/Visual Studio Tools gefunden werden. Dort sollte z.B. gem install ruby-debug-ide problemlos funktionieren.

0 comments

Block Closures in Ruby

Unter einem Block wird ein separierter Codeabschnitt verstanden. Dieser ist einer Methode vergleichbar, ist jedoch anonym. Ein Block wird definiert und kann zu einem beliebigen Zeitpunkt aufgerufen werden. In Objekt-orientierten Sprachen wird ein Block wie ein Objekt behandelt. Er kann an eine Variable gebunden werden. Ein Block kann Parameter haben, die bei seinem Aufruf übergeben und dann bei der Ausführung eingesetzt werden. Ein Block hat wie eine Methode einen lokalen Kontext (scope).
Ruby implementiert Blöcke in Sinne von Closures. Unter einer Closure versteht man ...

Ganzen Beitrag lesen

0 comments

Fonic Surf Stick (HUAWEI E160) unter Snow Leopard

Nach meinem Wechsel von Mac OS X Leopard (10.5) auf Snow Leopard (10.6) funktionierte mein Fonic Surf Stick nicht mehr. Mit einiger Trickserei ging es dann wieder. Nach dem Update auf 10.6.2 funktionierte er erneut nicht. Nun habe ich eine Lösung gefunden. Der Stick ist ein Huawei E160.
Mittlerweile kann man aktuelle Treiber für Snow Leopard von einer offiziellen HUAWEI-Seite laden. Sie ist etwas versteckt, deshalb hier der Link: http://www.huaweidevice.com/resource/mini/200910149695/testmobile1014/index.html?directoryId=3874.

Die Verwendung eines HUAWAEI-E160-SurfSticks funktioniert auch unter Snow Leopard, das im 64-bit läuft. Allerdings funktioniert die Mobile-Partner-Anwendung nicht. Die Anwendung bricht u.U. mit einer Fehlermeldung "JavaApplicationStub ...KERN_PROTECTION..." ab. Dieser Fehler resultierte bei mir aus dem Umstand, dass Java 6 als Standard im System eingestellt ist. Um auch mit Java 6 arbeiten zu können, muss die Datei "Mobile Partner.app" modifiziert werden. Dazu im Finder den Paketinhalt dieser Datei anzeigen lassen und in den "Contents"-Ordner wechseln. Dort muss die Datei "Info.plist" bearbeitet werden. In dieser Datei gibt es einen Eintrag "JVMVersion". Dieser muss von "1.5*" auf "1.6*" geändert werden. Danach kann "Mobile Partner" gestartet werden.

0 comments

Rails 2.3.4 mit Postgres unter Snow Leopard

Bei der Entwicklung und dem Betrieb von Rails-Anwendungen vertrauen viele auf die bewährte Postgresql-Datenbank. Leider ist die Einbindung des erforderlichen Datenbanktreibers als gem unter Mac OS X Snow Leopard nicht ganz einfach. Es gibt im Wesentlichen zwei Möglichkeiten, Ruby on Rails mit Postgres unter Mac OS X zu betreiben, entweder innerhalb der im OS X enthaltenen Ruby-Distribution und mit dem One Click Installer für Postgres 8.4 oder mit einer Komplettinstallation von Ruby, Ruby on Rails und Postgres innerhalb von Macports. Die beiden Varianten sollen im Folgenden beschrieben werden ...

Ganzen Beitrag lesen

1 comment

Apple throws the trust away

I always supported the iPhone and have to admit that I’m unhappy of not having a 3GS right now. I’m still working with the 2G version which works ok but I start to realise that it becomes a bit slacky nowadays.

From the beginning on I have waited for Apple to get the iPhone somehow more secure. I would like to see my data stored encrypted on the device. Furthermore, I would like to be able to send and read encrypted mail. Unfortunately, Apple is not willing to implement that.

When I read today in an Computerworld articlethat the iPhone falsely reports on-device encryption I couldn’t believe it. Why are they giving up their credibility that easyily? With my experience of Snow Leopard in the last two weeks and Apples behaviour towards their customers I start to consider of migrating back to some Linux distribution.

0 comments

Aktuelle Rails-Version mit NetBeans und JRuby verwenden

Wer NetBeans zur Entwicklung von Ruby-Anwendungen verwendet und dabei JRuby einsetzt, bekommt bei der Aktualisierung der Rails-Umgebung (beispielsweise auf Rails 2.3 in NetBeans 6.7M2) den Hinweis:

  • Rails requires RubyGems >= 1.3.1 (you have 1.2.0). Please `gem update –system` and try again

Das ist mitunter verwirrend, da ggf. bereits eine Ruby-Installation (nicht JRuby) auf dem Rechner installiert ist (wie das beispielsweise unter Mac OS X der Fall ist) und man bei Eingabe von gem –version als Ergebnis 1.3.1 bekommt. Das ist aber nicht die Version, die von NetBeans verwendet wird, wenn man JRuby auswählt. NetBeans bringt sein eigenes JRuby mit. Das Problem der nicht aktuellen Gem-Version ist innerhalb der NetBeans IDE nicht zu lösen. Dass muss in einer Shell (Eingabeaufforderung) erledigt werden. Unter Mac OS X geht das wie folgt (für andere Betriebssysteme verhält sich das ähnlich):

  • Terminal öffnen
  • In den JRuby-Ordner wechseln, der Teil der verwendeten NetBeans-Installation ist. Bei mir sieht das so aus:
  • cd /Applications/NetBeans/NetBeans 6.7 M2.app/Contents/Resources/NetBeans/ruby2/jruby-1.1.4
  • Gem-Version prüfen:
  • bin/jruby -S gem –version
  • Wenn dort 1.2.0 angezeigt wird, muss aktualisiert werden:
  • bin/jruby -S gem install rubygems-update
  • bin/jruby -S update_rubygems
  • bin/jruby -S gem –version

Nun sollte 1.3.1 oder eine neuere Version angezeigt werden und NetBeans sollte sich nicht mehr beschweren.

0 comments

Zugriff auf Ruby-on-Rails-Anwendung mit SSL über eine Sub-URL

Für Ruby-on-Rails-Anwendungen scheint sich zur Zeit Mongrel als Server durchzusetzen. Wenn man eine Ruby-On-Rails-Anwendung im Mongrel-Server betreibt, erlaubt diese den Zugriff auf die Anwendung nur über HTTP, also unverschlüsselt. Das ist für Anwendungen, die im Internet verfügbar sind häufig nicht gewünscht. Um den Zugriff auf den Anwendung mit SSL abzusichern und somit den Zugang über HTTPS zu ermöglichen gibt es nur die Möglichkeit einen Apache oder einen Lighttpd als Proxy davor zu schalten. Diese nehmen die Anfragen über HTTPS entgegen und leiten sie an den lokalen Mongrel weiter. Die Konfiguration der beteiligten Komponenten gelingt wie folgt:
Wie das für reine HTTP-Anfragen funktioniert wird für Lighttpd auf dem Homo-Adminus-Blog beschrieben. Für die Verwendung von Apache als Proxy gibt es einige Quellen im Netz, z.B. diese auf schwunk.com. Diese Anleitungen haben jedoch zwei Nachteile. Ersten beschreiben sie nicht, wie der Proxy mit SSL funktioniert und zweitens fehlt die Information wie man die Anwendung in einer Sub-URL z.B. “myApp” laufen lassen kann, so dass es möglich wird, vom Apache aus auf mehrere Rails-Anwendungen unter verschiedenen URLs (z.B. https://www.example.com/myRailsApp1 und https://www.example.com/myRailsApp2) zu verzweigen. Die folgende Beschreibung setzt Rails 2.2, Mongrel und Apache 2.x voraus ...

Ganzen Beitrag lesen

2 comments

Installation von Ruby, Rails, Mongrel & Postgres unter Windows 2000 (DLL-Probleme)

Unlängst habe ich versucht auf einem Windows-2000-Rechner die Projekt-Management-Software Redmine zu installieren. Redmine ist eine Ruby-on-Rails-Anwendung. Ich hatte mich entschieden, dass Redmine seine Daten in einer Postgres-Datenbankspeichern soll. Ich habe also auf dem Rechner Ruby in der Version 1.8.6 und Postgres in der Version 8.2 installiert. Für die Installation habe ich jeweils den One-Click-Installer verwendet. Als Server für die Rails-Anwendung habe ich Mongrel ausgewählt, da Phusion/Passenger unter Windows nicht läuft (Originalzitat von der Phusion-Website:Phusion Passenger works on any POSIX-compliant operating system. In other words: practically any operating system on earth, except Microsoft Windows.) Folglich habe ich Mongrel als Gem-Packet von Rubyforge geladen und installiert. Auf den ersten Blick sah alles gut aus, aber dann …

Die Datenbank konnte ich starten und entsprechend konfigurieren und der Mongrel startete auch meine Rails-Anwendung (redmine). Beim Versuch aus einem Browser auf die Anwendung zuzugreifen, bekam ich jedoch eine häßliche Fehlermeldung aus dem Mongrel: “Die Ordnungszahl xyz wurde in der DLL SSLEAY32.dllnicht gefunden”. Nach langem Suchen fand ich die Ursache heraus. Diese Bibliothek war im System insgesamt sieben (7 !) Mal vorhanden, in sechs unterschiedlichen Versionen. Insbesondere in der Ruby-(im bin-Ordner) und in der Postgres-Installation (ebenfalls im bin-Ordner) war diese DLL und eine Reihe anderer doppelt vorhanden. Die einzige Lösung, die funktioniert hat war, alle DLLs aus dem Postgres-bin-Ordner in den Ruby-bin-Ordner zu kopieren und die dort vorhandenen zu überschreiben. Der Austausch einzelner DLLs reichte nicht aus. Das ist mal wieder ein typisches Windows-Problem. Wer mal Ruby, Rails, Mongrel, Apache und Postgres unter Linux (am besten mit Debian oder einem Derivat) oder Mac OS X (am besten mit MacPorts) installiert hat, weiß wie einfach so etwas sein kann. Unter Windows hingegen das übliche Gewürge mit manuellem Dateiaustausch. Wer es sich also aussuchen kann, sollte seinen Ruby-on-Rails-Server nicht unter Windows laufen lassen, sondern unter Linux oder OS X.

0 comments

Spam-Filtering mit MailServe Pro

Wer auf seinem Mac die Mail-Server-Software Mail Serve Pro einsetzt wird sich auch wünschen Spam-Mails direkt auf dem Server zuverlässsig heraus filtern zu können. Bislang war das ohne Mac OS X auf dem Server nur mühsam möglich. Mit etwas Recherche ist es mir nun gelungen, die Spam-Filtering-Software Spam Assasin auf dem Server so zu installieren und konfigurieren, dass sie mit MailServe Pro zusammenarbeitet und neben dem Server-seitigen Spam-Filtering auch die Client-seitige Filterung von Spams im Mail-Client Mail.app von Apple unterstützt. Wie das geht habe ich im folgenden Tutorial beschrieben ...

Ganzen Beitrag lesen

1 comment

Einen eigenen Mail-Server unter Mac OS X Leopard betreiben

Wer zu Hause oder in der Firma einen Apple Mac betreibt kann diesen auch als eigenen Mail-Server benutzen ohne dafür Mac OS X Server zu installieren. Es genügt eine normale Mac OS X Leopard-Installation. Für den Betrieb eines Mail-Servers mit Mail-Empfang, Mail-Versand und IMAP-Server empfehle ich die leicht zu installierende Software Mail Serve Pro von Bernard Tao. Der Server ist schnell aufgesetzt und dank eines übersichtlichen GUI leicht zu konfigurieren.

0 comments

GPGMail und Snow Leopard

I used GPGMail till I upgraded to Snow Leopard. Unfortunately this move caused GPGMail to stop working with the Mail.app. As it seems Apple changes the internals of the Mail.app with every major release and there is no API to hook plugins into Mail.

The developer of GPG-Mail announced that he will not be able to support this software anymore. Some other people took over from him and they making some progress.

I don’t know if the following will be the final solution but it worked for me at last. As you can read in the SourceForge Forum for GPG-Mail there is a solution for it at the moment. More details and a link for the Mail plugin can be found in the Apple Discussion board.

I have used this plugin now for some days and I’m very happy to have the functionality of GPG back in Snow Leopard. The Mail.app is running in 64-bit mode.

0 comments

Herzlich Willkommen

Herzlich Willkommen auf dem Agile Methoden Weblog (Impressum). Dieser Weblog wird sich in der nächsten Zeit mit Beiträgen zum Thema Software-Entwicklung füllen. Die thematischen Schwerpunkte werden dabei auf Agilen Methoden wie eXtreme Programming (XP) oder Scrum und einigen technischen Themen wie Ruby on Rails liegen.

Dieser Blog gehört zu meiner Website www.agile-methoden.de.

0 comments

Agile Methoden, eine Chance für das Krisenmanagement

Die Softwareentwicklung in Projekten steht – unabhängig von der Auswahl der Technologie – immer vor der Schwierigkeit, die vier Variablen Kosten, Zeit, Qualität und Umfang im Sinne des Auftraggebers zu optimieren. Von diesen vier Variablen können drei zu Projektbeginn durch den Kunden vorgegeben werden, die vierte ergibt sich daraus. So kann beispielsweise aus Vorgaben zur Projektlaufzeit, den Gesamtkosten und der Qualität der unter diesen Voraussetzungen zu bewältigende Umfang ermittelt werden. Eine Krise tritt jedoch ein, wenn während der Projektlaufzeit die Vorgaben und Prognosen nicht eingehalten werden können.

0 comments