Archive for the ‘Tools’ Category

Der eigene Online Feed Reader

Dienstag, September 22nd, 2009

Seit längerem lese ich täglich mit Hilfe von RSSBandit die für mich interessanten Neuigkeiten aus dem Internet. Das hat weitestgehend gut funktioniert. Es blieben jedoch immer zwei Probleme:

  1. Wurde das Programm mehrere Tage nicht gestartet, gehen einem möglicherweise News verloren (einige Anbieter halten nur eine festgelegte Anzahl von News in ihren Feeds vor).
  2. Wenn man an einem zusätzlichem Rechner seine News (weiter-)lesen möchte, müssen die beiden Rechner syncronisiert werden.

Mit dem ersten Punkt habe ich mich bisher nicht weiter auseinander gesetzt, da mich 5 Tage alte News oft nicht interessierten und einem auch nur dann News verlorengehen, wenn der Feed sehr viele Einträge pro Tag bereitstellt. Zu Punkt zwei existiert in RSSBandit die Möglichkeit, den Zustand der eingerichteten Feeds als ZIP-Datei auf einen FTP-Server hochzuladen. An einem anderen Rechner kann man dann diesen Zustand laden und somit exakt dort weiterlesen, wo man aufgehört hat. Der Nachteil: das Hoch- und Runterladen des Programmzustandes musste man jedes mal manuell durchführen. Außerdem ist die Funktion in meinen Augen nicht ausgereift, da zum Beispiel keine vollständige Fehlerbehandlung während der Übertragung erfolgt.

Ein Ausweg schienen sogenannte Online RSS Reader zu sein. Einige bekannte sind z.B. GoogleReader, Bloglines oder Newsgator. Doch diese Dienste haben auch zum Ziel das Verhalten des Nutzers zu protokollieren. Natürlich nur zur Verbesserung des Angebotes — versteht sich. Für mich leider keine wirkliche Alternative.

Letzlich bin ich auf Tiny Tiny RSS gestoßen. Es handelt sich dabei um einen Online Feed Reader, welcher in PHP und als Open-Source-Projekt entwickelt wird.

tinytinyrss

Für mich scheint es die optimale Lösung zu sein. Es ist ähnlich wie RSSBandit aufgebaut (bedienbar) und löst gleichzeitig meine bisherigen Probleme. Man benötigt dafür einen Webserver mit PHP, eine Datenbank (PostgreSQL oder mySQL), und die Möglichkeit in regelmäßige Abständen ein Skript für die Aktualisierung der Feeds aufzurufen (z.b. via crontab). Als Browser verwendet man am besten Firefox. Ein Test der Version 1.3.3 im Internet Explorer 8 lieferte ständig Fehlermeldungen. Dieses Problem ist bereits im aktuellen Entwicklungstrang (Revision 3247) beseitigt, doch selbst dann existieren noch verschieden Darstellungsfehler.

Nach dem Abschluß der Installation konnte ich einfach alle abonierten Feeds aus RSSBandit exportieren und in TT-RSS laden. Schon waren alle Feeds vorhanden. Weitere Einzelheiten zum Funktionsumfang findet man unter…

Tiny Tiny RSS Homepage

Netbeans 6.5 SVN Unterstützung

Donnerstag, Juni 11th, 2009

Gestern ging es um die Integration von SVN in Visual Studio 2008. Heute soll es um die SVN-Unterstützung durch Netbeans 6.5.1 gehen, da ich auch an einigen Java- und PHP-Projekten arbeite.

Die Netbeans IDE in der Version 6.5.1 ist bereits auf verschiedene Versionskontrollsysteme ausgelegt. Man benötigt lediglich die entsprechenden SVN-Binaries und muss Netbeans dementsprechend konfigurieren. Dafür öffnet man die Einstellungen über Tools > Options, klickt dann auf “Miscellaneous” und wechselt auf die Registerkarte “Versioning”. Nun kann man auf der linken Seite das zu konfigurierene Versionierungssystem auswählen.

Der Pfad zum SVN-Bin-Verzeichnis ist momentan noch leer bzw. nicht konfiguriert. Hier hab ich den Pfad zum SVN-Verzeichnis meines WAMP-Servers eingetragen, also:

D:\wamp\bin\svn-win32-1.6.2\bin

nb_svn_options

Damit wäre die Einrichtung auch schon abgeschlossen.

Schauen wir uns nun ein Projekt unter Versionkontrolle an. Im Projektexplorer werden geänderte Dateien und Verzeichnisse farblich oder durch kleine Icons hervorgehoben. Neue Dateien werden grün und geänderte Dateien blau dargestellt. Wenn Verzeichnisse lokale Änderungen enthalten, wird ein kleines blaues Symbol anzeigt.

nb_svn_proj_explorer

Im Context-Menü stehen die bekannten SVN Funktionen zur Verfügung, z.B. für das Committen von Änderungen oder das Anzeigen von Unterschieden. Man kann sogar bei einem Verzeichnis die Diff-Funktion auswählen und bekommt eine Liste aller geänderten Dateien und zur aktuell ausgewählten Datei direkt die ersten Unterschiede angezeigt.

nb_svn_difftool

Eine sehr nette Funktion ist die farbliche Markierung von geänderten bzw. eingefügten Zeilen im Quellcode-Editor. Links von der Zeile wird eine entsprechende Markierung dargestellt und wenn man auf diese klickt kann man den vorherigen Zustand einsehen. Die Funktionen im Popup-Fenster ermöglichen die Wiederherstellung des vorherigen Zustandes oder das Öffnen der Datei im Diff-Tool.

nb_svn_srceditor_marker

Natürlich gibt es auch ein Fenster, in welchem man alle aktuell vorgenommen Änderungen auf einen Blick sehen kann. Leider kann man hier nicht direkt einen Kommentar eingeben und Commit betätigen. Man wählt erst Commit und im darauffolgenden Dialog gibt man eine Kommentar ein. Aber damit kann man leben. Besonders gut gefällt mir jedoch die Möglichkeit, die im Repository vorgenommen Änderungen mit auflisten zu lassen. So kann man schnell erkennen, welche Änderungen andere Nutzer bereits durchgeführt haben.

nb_svn_pendingchanges

Netbeans enthält alle notwendigen Funktionen, um Änderungen mit SVN zu verwalten. Und das ist völlig ausreichend. Für spezielle Aufgaben kann man immernoch auf TortoiseSVN oder direkt auf die SVN-Tools zurückgreifen.

VisualStudio 2008 um SVN erweitern

Mittwoch, Juni 10th, 2009

Nachdem ich nun erfolgreich SVN innerhalb WAMP zum Laufen bekommen habe, wäre es natürlich wunderbar, wenn man direkt aus VisualStudio 2008 mit SVN arbeiten könnte. Nach einer kurzen Suche im Web bin ich natürlich direkt fündig geworden. Für manche Lösungen muss man Geld ausgeben. Dazu gehören z.B. VisualSVN und AgentSVN. Ich war jedoch auf der Suche nach einer kostenlosen Lösung und bin letztendlich über AnhkSVN gestolpert.

Die letzte stabile Version von AnhkSVN 2.0.6347 unterstützt SVN 1.5.x. Ich nutze jedoch die Version 1.6.2 von TortoiseSVN bzw. des SVN im Apache. Zum Glück stehen auf der Webseite von AnhkSVN sogenannte “DailyBuilds” zur Verfügung. Die neuste Version unterstützt auch SVN 1.6.x, daher hab ich von AnhkSVN die Version 2.1.6900 heruntergeladen. Die Installation lieft vollkommen problemlos.

Öffnet man nun ein aus dem SVN-Repository ausgechecktes Projekt in VisualStudio,  bekommt man im Solution Explorer die geändert bzw. unveränderten Dateien entsprechend angezeigt.

vs_svn_solexplorer

Die Objekte mit einem blauen Haken sind unverändert und die roten Kästchen signalisieren Änderungen. Im Kontextmenü eines jeden Objektes befinden sich ein Subversion-Untermenü, welches je nach Situation die möglichen Aktionen anbieten. Auf die Weise kann z.B. ein neues Projekt dem SVN hinzufügen, die Unterschiede einsehen, einen Patch erstellen oder Änderungen ins SVN übernehmen. Und das ganze ohne die Entwicklungsumgebung verlassen zu müssen.

vs_svn_filediff

Es werden aber noch eine ganze Reihe weiterer Möglichkeiten und Funktionen bereitgestellt. So kann man sich z.B. die “Pending Changes” ansehen und auch dort wieder die Unterschiede anzeigen oder die Änderungen übernehmen lassen. Dort kann man auch direkt einen Kommentar zu den vorgenommenen Änderungen eingeben.

vs_svn_pend_changes

Auch über den “Working Copy Explorer” kann man durch das gewünschte Projektverzeichnis navigieren und SVN-Aktionen ausführen.

vs_svn_workingcopy

Und natürlich fehlt es nicht an einem Repository-Browser mit allen notwendigen Funktionen.

vs_svn_repoexplorer

Ein “Rund-um-sorglos-Paket” erster Klasse. 🙂

AnhkSVN Webseite

SVN & WAMP

Dienstag, Juni 9th, 2009

Im Netz findet man jede Menge Anleitungen, wie man SVN unter WAMP einrichtet. Trotzdem stand ich mal wieder mitten im Wald. Ich konnte zwar SVN in den Apache integrieren, jedoch ließ sich der Apache danach nur noch auf der Kommandozeile starten, und nicht mehr über das WAMP-Tray-Icon. Aber beginnen wir von vorn…

Bereits seit längerem habe ich den WAMP-Server inklusive xdebug-Plugin für die PHP-Entwicklung im Einsatz. Diesen wollte ich nun um die SVN-Integration erweitern, ohne einen zusätzlichen Apache installieren zu müssen. Hier zunächst meine vorhandene Konfiguratoin:

Wamp-Verzeichnis: D:\wamp
Apache-Version: 2.2.11
MySQL-Version: 5.1.33
PHP-Version: 5.2.9-2

Schritt 1 – Download
Als erstes habe ich mir die aktuelle Version (Version 1.6.2) von Subversion als ZIP-Archiv für den Apache 2.2 geladen. Es gibt für Apache 2.0 und 2.2 separate Downloads .. daher muss man hier auf die Vorraussetzung sehr genau achten. Die  Einen Installer wollte ich nicht verwenden. Für den Apache 2.2 kann man das ZIP-Archiv unter nachfolgendem Link downloaden … es ist der letzte Eintrag in der Tabelle.

Download SVN Binaries für Apache 2.2.x

Schritt 2 – Entpacken
Ich habe mich entschieden, die SVN-Programmdateien in die Verzeichnisstruktur von WAMP zu integrieren. In meinem Falls hab ich das Archiv nach “D:\wamp\bin” entpackt. Die folgende Abbildung zeigt die Verzeichnisstruktur.

wamp_svn_directories

Schritt 3 – Konfigurieren von Apache
Viele Anleitung im Netz und auch die readme-Datei von SVN empfiehlt an dieser Stelle die .so-Dateien in den “modules”-Ordner von Apache zu kopieren und danach den Systempfad zu erweitern, damit Apache auf alle Bibliotheken von SVN zugreifen kann. Das hat mich in große Schwierigkeiten gebracht, weshalb ich hier einen anderen Weg gehen möchte. Warum, kann weiter unten nachgelesen werden.

Bei meinem hier gezeigten Lösungsansatz müssen keinerlei Dateien in den Apache kopiert werden, noch muss die PATH-Umgebungsvariable angepasst werden.

Zunächst öffnet man die httpd.conf-Datei über das WAMP-Traymenü oder direkt über einen Editor und sucht nach den folgenden beiden Zeilen:

#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so

Dies sind zwei in Apache bereits enthaltene Module die man für die Nutzung von SVN benötigt. Daher muss man am Anfang jeder Zeile das “#”-Zeichen löschen.

Jetzt müssen noch zwei neue Module hinzugefügt werden, die nicht im Apache enthalten sind. Die betreffenden Module befinden sich im SVN-Ordner, und das ist gut so. Wenn der Apache diese Module direkt aus dem SVN-Bin-Verzeichnis lädt, können auch alle weiteren benötigten SVN-Bibliotheken fehlerfrei geladen werden. Um das zu erreichen, fügt man die beiden folgenden Zeilen in die httpd.conf-Datei ein:

LoadModule dav_svn_module "../../svn-win32-1.6.2/bin/mod_dav_svn.so"
LoadModule authz_svn_module "../../svn-win32-1.6.2/bin/mod_authz_svn.so"

Der Pfad zu den Modulen ist relativ angegeben. Falls man einmal die Wamp-Installation verschieben muss, funktionieren die SVN-Module dennoch. Wir sind aber noch nicht ganz fertig. Ein bestimmte Pfad auf unserem Webserver soll zukünftig den Zugriff auf das SVN-Repository ermöglichen. Hierfür fügen wir am Ende folgenden Abschnitt in die httpd.conf-Datei ein.

<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath D:\wamp\svn_repository
#SVNIndexXSLT “/svnindex.xsl”
#AuthType Basic
#AuthName “Subversion-Projektarchive”
#AuthUserFile passwd
#AuthzSVNAccessFile svnaccessfile
#Require valid-user
</Location>

Kurz noch zur Erklärung: In der ersten Zeil geben wir an, dass wir die Adresse “/svn” des Webservers konfigurieren wollen. Die zweite Zeile aktiviert SVN. Die nächsten beiden Einstellungen (SVNListParentPath und SVNParentPath) legen ein Verzeichnis fest, wo sich mehrere SVN Projekt-Archive befinden können. Das hat den Vorteil, dass man über eine URL mehrere SVN-Projekte erreichen kann und gleichzeitig das Anlegen eines neuen Projektarchives durch das Anlegen eines neuen Ordner ermöglicht wird. Die nachfolgenden Zeilen richten die Zugangskontrolle ein, die ich hier jedoch deaktiviert habe. Wer die Benutzersteuerung einrichten möchte, kann hier mehr erfahren.

Nun speichern wir die vorgenommen Änderung der httpd.conf-Datei. Man muss noch sicherstellen, dass das oben mittels “SVNParentPath” angegeben Verzeichnis auch existiert. Über den Explorer kann man das noch kurzer Hand erstellen. Zum Schluß wählt man aus dem Menü des Wamp-TrayIcons den Eintrag “Restart All Services”.

Schritt 4 – Testen der Einrichtung
Natürlich wollen wir jetzt wissen, ob unser SVN jetzt auch funktioniert. Dafür benötigt man einen Browser. Am einfachsten ist wieder das Wamp-TrayIcon. Aus dem Menü einfach “localhost” auswählen und der Standard-Browser wird geöffnet. Nun noch die Adresse auf “http://localhost/svn” geändert …. und man sieht … nun nicht viel.

localhost_svn

Aber es funktioniert soweit. Jetzt müssen wir noch ein Projektarchiv in unserem Repository einrichten. Dazu sind folgende Schritte notwendig:

1) Erstellen eines neuen Ordner

svn_new_folder

2) Anlegen des Projektarchives
Mit Hilfe von TortoiseSVN initialisieren wir nun unseren eben angelegten Ordner.

svn_create_repo

Das angelegt Verzeichnis kann man nun auch im Webbrowser wiederfinden. Die Einrichtung ist nun vollends abgeschlossen und man kann nun weitere Ordner und Dateien in das angelegte Projektarchiv imortieren.

Warum?
Die meisten Anleitungen im Netz empfehlen die innerhalb SVN zu findenden .so-Module in das “modules”-Verzeichnis des Apache zu kopieren. Das wiederum führt dazu, dass man entweder bestimmte DLLs von SVN in das bin-Verzeichnis des Apache kopiert oder das SVN-Bin-Verzeichnis in den systemweiten Pfad aufnimmt. Leider habe ich dabei einen Fehler gemacht und das SVN-Bin-Verzeichnis nur in die Pfadvariable meines Windowsbenutzer aufgenommen. Durch diesn Fehler ließ sich der Apache über das Wamp-TrayIcon nicht mehr starten. In der Ereignisanzeige fand ich später folgende Fehlermeldung:

The Apache service named reported the following error:
>>> httpd.exe: Syntax error on line 86 of D:/wamp/bin/apache/Apache2.2.11/conf/httpd.conf: Cannot load D:/wamp/bin/apache/Apache2.2.11/modules/mod_dav_svn.so into server: Das angegebene Modul wurde nicht gefunden.
Gleichzeitig konnte ich jedoch die “httpd.exe” unter meinem Benutzer aus einer Shell starten und mit dem Webserver inkl. SVN fehlerfrei arbeiten. Erst nach einiger Zeit wurde mir klar, dass der Apache vom Wamp-TrayIcon als Dienst (unter dem lokalen Dienste-Account) gestartet wird und daher meine lokal definierten Umgebungsvariablen (und somit auch der erweiterte Pfad) nicht verwendet wurden. Daher suchte ich nach einer eigenen Lösung, mit welcher ich dem Problem zukünftig aus dem Weg gehen kann.

Wampserver Homepage
Handbuch zu TortoiseSVN
Subversion Download Page

Robocopy GUI – YARCGUI

Dienstag, Mai 5th, 2009

Wer kennt sie nicht … ? Befehle wie “copy” oder “xcopy” gehörten zu DOS-Zeiten noch zum täglichen Gebrauch. Auch heute sind diese Befehle noch in der “Eingabeaufforderung” von Windows verfügbar, auch wenn diese nur noch von härtesten Shell-Enthusiasten genutzt werden. Doch im Vergleich zu Robocopy sind die genannten Befehle aus der Steinzeit.

Auch Robocopy ist in der Lage, einzelne Dateien oder Ordner zu kopieren. Zusätzlich lassen sich ganze Verzeichnisstrukturen ausgewählen, dabei bestimmte Pfade oder Dateien ausschließen oder auch nur veränderte Dateien im Zielverzeichnis aktualisieren. Der Nachteil: Die möglichen Optionen von Robocopy sind recht komplex.

Ich benutze Robocopy nun seit mehreren Jahren, hauptsächlich für Datei-Backups.  Das Tool wurde erstmals mit den MS Windows Server 2003 Resource Kit Tools veröffentlicht und ist ab Windows Vista bereits beim Betriebssystem enthalten. Wer nicht die gesamten “Windows Server 2003 Resource Kit Tools” installieren möchte, der kann Robocopy und  dessen englische Dokumentation hier und hier runterladen. Die bei Vista enthaltene Version trägt die Versionsbezeichnung “XP27” und enthält zusätzliche Optionen z.B. für symbolisch Links oder das verschlüsselte Dateisystem (EFS).

Um nun die gewünschten Kopieroptionen festlegen zu können, gibt es eine Vielzahl von Oberflächen. Persönlich bevorzuge ich dabei YARCGUI — “Yet Another RoboCopy GUI”.

yarcgui_main

Die hauptsächlichen Vorteile dieser Version sind:

– Verwalten mehrerer Kopier-Aufträge
– Mehrere Aufträge können in Auftragslisten organisiert werden
– zu jeder Option wird eine kurz Hilfe eingeblendet
– Version für Robocopy (Optionserkennung)
– Aufträge als Skript (.cmd) speicherbar

yarcgui_job

Nachdem man seine Aufträge erstellt hat, können diese natürlich auch ausgeführt werden. Schön ist, dass man hier das dafür notwendige Kommandozeilenfenster unterdrücken lassen kann. Nach Abschluss des Auftrages wird das Ergebnis im unteren Bereich angezeigt, was ich persönlich jedoch etwas unübersichtlich finde. Die sogenannte “Autorun”-Funktion führt nach dem Start (und einer 10 sekündigen Wartepause) automatisch die in der Liste stehenden Aufträge aus und beendet sich dann wieder. So kann man mit einem Klick alle Kopievorgänge ausführen.

Da das Programm die Aufträge auch als Skriptbefehle in einer .cmd-Datei speichert, kann man es auch ausschließlich zum Einrichten der robocopy-Kommandzeilenoptionen verwenden und später den Kopievorgang auch ohne YARCGUI ausführen.

Das Programm selbst benötigt keine Installation und speichert seine Daten im Programmverzeichnis (zumindest die Standard-Auftragsliste). Dadurch kann es auch auf einem Stick oder einem anderen externen Laufwerk abgelegt und genutzt werden. Es wird jedoch das .NET Framework 2.0 vorrausgesetzt, was aber heutzutage auf vielen Rechnern bereits installiert ist.

Für mich ist YARCGUI sehr hilfreich, da ich nun die Dokumentation zu Robocopy nicht mehr ständig griffbereit haben muss. 😎

Links
YARCGUI Homepage  und Download
Robocopy Programm
Robocopy Dokumentation (englisch)
Wikibooks.de – Datensicherung / Robocopy

Da die offizielle Seite nicht mehr online ist, kann hier die letzte mir bekannt Version (4726.29659) heruntergeladen werden.