PHPUnit mit Netbeans unter Cygwin

Eine kleine Anleitung und ein paar Scripts um die in Netbeans integrierte PHPUnit-GUI unter Cygwin zum Laufen zu bekommen.

Software:

  • Windows 7
  • Cygwin
  • NetBeans 7.3.1
  • PHP 5.4.11
  • PHPUnit 3.7.21

Ich gehe davon aus, dass Windows, Cygwin (c:\cygwin) und NetBeans bereits installiert sind.

PHP ist momentan nicht im Haupt-Repository von Cygwin enthalten. Es lässt sich aber leicht über apt-cyg installieren.
Wurde apt-cyg installiert (siehe Projekt-Seite für eine Anleitung), kann es verwendet werden um über Cygwinports PHP zu installieren.

apt-cyg -m ftp://ftp.cygwinports.org/pub/cygwinports/ install php

Cygwinports bietet auch eine Reihe von PHP-Erweiterungen an. Hier gibt es eine Liste aller verfügbaren Pakete.

Jetzt sollte der Befehl php auf der Shell verfügbar sein.

Kleine Anmerkung zwischendurch: Ich verwende PHP unter Cygwin übrigens auch im Apache, der auch über Cygwin installiert wurde, und setze nicht mehr auf Distributionen wie XAMPP und co.

Als nächstes installieren wir PHPUnit als PHAR-Datei:

mkdir /usr/share/phpunit
cd /usr/share/phpunit
wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit.phar

# Optional, aber praktisch
ln -s /usr/share/phpunit/phpunit.phar /usr/bin/phpunit

Wurde der letzte optionale Befehl ausgeführt, könnte man seine PHPUnit-Testcases schon jetzt auf der Shell mit dem Befehl phpunit ausführen.

Da wir aber die GUI von NetBeans verwenden wollen, müssen ein paar Dinge beachtet und ein Problem umgangen werden.

Zunächst müssen wir für NetBeans, das ja unter Windows läuft, eine bat-Datei unter /usr/share/phpunit/phpunit.bat anlegen:

@echo off
c:\cygwin\bin\php.exe /usr/share/phpunit/phpunit_cygwin %*

Nicht vergessen, die Datei als ausführbar zu setzen:

chmod +x /usr/share/phpunit/phpunit.bat

Wie zu sehen ist rufen wir über PHP eine Script-Datei phpunit_cygwin auf. Diese Datei ist entscheidend. Sie dient als Wrapper um die Pfadangaben zwischen Windows (NetBeans) und Linux (Cygwin) zu konvertieren.

Die Datei /usr/share/phpunit/phpunit_cygwin enthält folgenden Inhalt:

#!/usr/bin/php
<?php

array_shift($argv);

array_walk($argv, function(&$a){

    if(!preg_match('/(.*)([a-z]:\\\\.+)/i', $a, $matches)){
        return;
    }

    $a = $matches[1].'"'.exec('/usr/bin/cygpath -a "'.$matches[2].'"').'"';

});

$args = implode(' ', $argv);

system('/usr/bin/php /usr/share/phpunit/phpunit.phar '.$args);

Es bietet sich an auch diese Datei ausführbar zu setzen:

chmod +x /usr/share/phpunit/phpunit_cygwin

Was passiert hier? NetBeans arbeitet und kennt unter Windows nur das DOS-/Windows-Pfadformat. Da PHP und damit auch PHPUnit unter Cygwin (Linux) ausgeführt werden, müssen die Pfade in ihr entsprechendes Cygwin-Gegenstück konvertiert werden.

Hierzu liefert Cygwin bereits ein Tool namens cygpath mit.
Mein PHP-Script kümmert sich darum, dass jeder übergebene Parameter in das UNIX-Pfadformat konvertiert wird, falls der Parameter auch wirklich einen Windows-Pfad enthält.

Danach wird PHPUnit mit den korrigierten Parametern aufgerufen.

Abschließend müssen wir noch NetBeans einrichten:

PHPUnit-Konfiguration unter NetBeans

Das Ergebnis zeigen folgende Screenshots:

Test-Ergebnis

Ausgabe von PHPUnit

Mac OS X: Zugriff auf Windows 7 Freigaben langsam

Gestern Abend wollte ich von einem iMac mit Mac OS X Lion (10.7.3) aus auf Ordnerfreigaben eines PCs mit Windows 7 Professional zugreifen.

Mac hat die Freigaben auch sofort gefunden und konnte diese mounten. Allerdings fiel sofort auf, dass die Auflistung der Dateien und Unterordner in den Freigaben langsam war. Als ich dann eine Datei kopieren wollte, stellte ich fest, dass es sogar extrem langsam war (ein paar kb/sek).

Als Gegencheck kopierte ich testweise mal eine Datei vom PC zum Mac. Dabei hatte ich volle Gigabit-Geschwindigkeit.

Nach längerer Suche und nachdem ich einige „Tipps“ ausprobiert hatte, bin ich letztendlich auf die Lösung gestoßen.

Kurze Anleitung:
Systemsteuerung->Netzwerk- und Freigabecenter->Adaptereinstellungen ändern->Rechtsklick auf LAN-Verbindung->Konfigurieren->Erweitert

Dort „Abladung großer Übertragung V2“ deaktivieren.

Xdebug mit XAMPP unter Windows – Standard-Einstellung vom Profiler funktioniert nicht

Kurze Lösung für ein Problem, das mich gerade doch einige Zeit aufgehalten hat.

Die Standard-Einstellung für den Dateinamen, der für die Profiler-Dumps verwendet wird, ist unter XAMPP 1.7.4:

xdebug.profiler_output_name = "xdebug_profile.%R::%u"

Windows erlaubt aber keine Doppelpunkte im Dateinamen. Es gibt keine Fehlermeldung, gar nichts. Es tut sich einfach nichts.

Geändert auf z.B.

xdebug.profiler_output_name = "callgrind.%t-%s"

…und es funktioniert. Das Prefix „callgrind.“ benutze ich, damit ich die Datei dann in KCacheGrind öffnen kann.

Weitere Informationen gibt es in der Xdebug-Doku.

Da muss man erstmal draufkommen.

Sunbird getestet

Hab heute nach einem Jahr mal wieder Sunbird ausprobiert.
Ich dachte, inzwischen könnte das Ding evtl. was taugen.
Schön wärs.

Total langsam bei 50% CPU Auslastung.
Absolute scheiß Software. Auf keinen Fall zu empfehlen.

Snipping Tool lässt Bild nicht speichern

Bin grad über nen blöden Bug des Snipping Tools von Windows Vista/7 gestolpert.
Wenn man das Programm noch nie benutzt hat und das Verzeichnis „Pictures“ bzw. „Eigene Bilder“ in seinem Profil löscht, lässt einen das Tool keine Bilder mehr abspeichern.

Grund hierfür ist vermutlich, dass der Speichern-Dialog gerne standardmäßig das oben erwähnte Verzeichnis öffnen möchte. Da dieses aber nicht existiert, wird der Dialog gar nicht erst angezeigt anstatt einfach auf den Desktop oder den Arbeitsplatz zu springen.

WinMerge wird nicht mehr aktiv weiterentwickelt

http://kimmov.wordpress.com/2010/02/21/priorities/

oh noes! :(
Kann das bitte bitte bitte jemand mal forken und nach QT oder zumindest GTK portieren?
Ich such schon EWIG nach einer würdigen Alternative für Linux…

Meld finde ich eher nicht so toll.
Ist lange nicht so komfortabel zu bedienen! Die GUI von WinMerge ist einfach super!

Wenn ich doch nur mehr Zeit hätte, würde ich es selbst machen… Schüler müsste man nochmal sein ;)

iTouch-Ersatz unter Win7 x64

Da Logitech seine iTouch-Software nicht nach 64Bit portieren will und die neue Software SetPoint viele alte Modelle, wie mein Cordless Desktop Optical, nicht unterstützt musste ich mich nach Alternativen umschauen. Unter Win7 32Bit hatte ich es noch zum Laufen bekommen im Kompatibilitätsmodus.

Ich benutze primär Winamp zum Musik hören. Schnell die globalen Hotkeys in den Winamp-Einstellungen aktiviert und schon funktionierte Play/Pause, Stop, Next/Previous in Playlist.
Außerdem funktionierten unter Win7 das Lautstärkerad und der Mute-Button von Anfang an.

Was ich aber vermisste war die OSD-Anzeige, wenn man die Lautstärke ändert.

3RVX schafft hier Abhilfe. Funktioniert super und sieht auch noch sehr schick aus.

Es geht also auch ohne iTouch ;)