Howto: Debian 5 (Lenny) mit Lighttpd (Lighty) + PHP 5.3 + Zend Framework

Backports einfügen

PHP Backports von dotdeb.org

deb http://php53.dotdeb.org stable all
deb-src http://php53.dotdeb.org stable all


Lighty Backports von bits and pieces

deb http://www.jonmoniaci.com/debian-ppa/ lenny main contrib non-free

Installation

aptitude install lighttpd php5-cgi
lighttpd-enable-mod fastcgi fastcgi-php

VHost einrichten

Wir legen jetzt eine neue Konfigurationsdatei für unseren VHost an.

touch /etc/lighty/available-mods/10-myvhost.conf


Die Datei bearbeiten wir jetzt mit einen beliebigen Editor

$HTTP["host"] == "myhost.example.com" {
	server.document-root = "/pfad/zur/ZF-Anwendung/public"
	url.rewrite-once = (
		".*\.(js|ico|gif|jpg|png|css)$" => "$0",
		".*\?(.*)$" => "/index.php?$1",
		"" => "/index.php"
	)
	setenv.add-environment = (
		"APPLICATION_ENV" => "development"
	)
}


Nun muss die Konfiguration noch aktiviert werden

lighttpd-enable-mod myvhost

Module hinzufügen

Jetzt müssen der Datei “/etc/lighttpd/lighttpd.conf” noch 2 Module hinzugefügt werden

server.modules = (
	#andere Module
        "mod_rewrite",
        "mod_setenv"
)

Konfiguration neu laden

/etc/init.d/lighttpd force-reload


Nachdem die Konfiguration neu geladen wurde, sollte das Ganze wie gewünscht funktionieren.

Projektidee: Android VVO Fahrplan App

ScreenshotDes Öfteren steh ich in Dresden in der Stadt und frage mich wie ich denn nun nach wieder nach Hause komme. Die Lösung bisher, war das aufrufen der VVO Homepage bzw. das Nutzen das SMS Infoservice. Warum also nicht eine eigene App für diesen Zweck bauen.

Features

  • komfortable Eingabemöglichkeit
  • Orte speicherbar
  • “Wo bin ich? Wie komm ich nach Hause?” (GPS Ortung der aktuellen Position)

Nice to have

  • “Wie komme ich von hier zu der Haltestelle?” (Navigation)

Update: Aktuell existiert mit Öffi schon eine recht Gute App für die Routenplanung und Abfahrtszeiten in der Nähe.

GTX470 mit Hitzeschaden

Ich hatte inzwischen schon zwei mal das Vergnügen meine  Nvidia GeForce GTX470 (MSI) einzuschicken, weil sie hitzebedingte Ausfälle zeigte. Dabei sollte die Hitze nicht das Problem sein, denn der Lüfter hat noch reichlich Reserven. Bei einer Temperatur von über 80°C erreicht der Lüfter mit automatischer Steuerung gerade einmal 60% der möglichen Drehzahl. Dadurch ist der Lüfter zwar schön leise, aber was nützt mir das wenn ich dadurch bunte Artefakte auf dem Bild sehe, der Treiber sich ständig zurücksetzt oder das System gleich ganz abstürzt?

Vermutlich ist an dieser Stelle auch der Grund zu suchen warum MSI bei dem GTX465 Karten die Lüftersteuerung viel zu scharf eingestellt, sodass die Karten schon bei 50°C auf dem Desktop alles andere als leise sind.

Ich freue mich also schon auf die nächste Karte, die dann hoffentlich nicht solche Ausfallerscheinungen zeigt, bzw. werde ich da von Anfang an der Lüftersteuerung auf die Sprünge helfen.

Howto: Google Android – Kommunikation via HttpClient und JSON

Da es für Java jede Menge unterschiedliche Implementierungen eines HTTPClient gibt, hier mal ein Beispiel für die die Variante der Apache Foundation die im Google Android SDK zum Einsatz kommt. In diesem Beispiel geht es darum sich auf einem entfernten Server einzuloggen und anschließend Daten via JSON abzufragen und wieder in getypte Java Objekte umzuwandeln. Dabei speichert der Server den Login-Status in einer Session. Die SessionID wird auf der Clientseite in einem Cookie gespeichert, und muss bei jeder Anfrage mitgesendet werden.

Funktionsweise

Verbindung herstellen

HttpGet get = new HttpGet(String.format("%s?username=%s&password=%s", loginUrlHost, user, pass));
DefaultHttpClient client = new DefaultHttpClient();
ResponseHandler responseHandler = new BasicResponseHandler();
HttpResponse response = client.execute(get);

Anwort auswerten

int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) {
String responseText = responseHandler.handleResponse(response);
}

JSON parsen

import org.json.JSONException;
import org.json.JSONObject;

public class LoginResponse extends JSONObject {
    private boolean success;
    private String message;

    public LoginResponse(String string) throws JSONException {
        super(string);
        success = getBoolean("success");
        message = (get("message").equals(null))?"":getString("message");
    }

    public boolean isSuccess() {
        return success;
    }

    public String getMessage() {
        return message;
    }
}
LoginResponse loginResponse;
 try {
 loginResponse = new LoginResponse(responseText);
 } catch (JSONException e) {
 Log.d("LOGIN_ERROR(INVALID_RESPONSE)", e.getMessage(), e);
 errorState = INVALID_RESPONSE;
 return INVALID_RESPONSE;
 }

Cookies auslesen

List cookies = client.getCookieStore().getCookies();
 for (int i = 0; i < cookies.size(); i++) {
 Cookie cookie = cookies.get(i);
 Log.d("Cookie-Name:", cookie.getName());
 Log.d("Cookie-Value:", cookie.getValue());
 break;
 }

Cookies senden

DefaultHttpClient client = new DefaultHttpClient();
CookieStore cookieStore = client.getCookieStore();
cookieStore.addCookie(loginCookie);
client.setCookieStore(cookieStore);

Howto: PDF Formulare mit PHP ausfüllen

Wie erzeuge ich ein Formular?

PDF Formulare kann man entweder direkt mit PHP erzeugen z.B. mit der Klasse tcpdf oder aber, wenn man Wert darauf legt das dass Ganze ansprechend aussieht, mit OpenOffice. Natürlich funktioniert das ganze auch mit den Produkten von Adobe.

Wie fülle ich das Formular aus?

Adobe stellt mit FDF ein Format zur Verfügung mit den es möglich ist PDF Formulare auszufüllen. Die FDF Datei selbst enthält dabei die Daten die in die Felder eingesetzt werden sollen und den Namen des dazu gehörenden PDF Formats.

Wenn man diese Methode benutzt erhält man schon mal ein ausgefülltes Formular. Das ist aber immer noch kein PDF und abhängig vom ursprünglichen Dokument.

Wie wird daraus wieder ein PDF?

An dieser Stelle kommt das PDF Toolkit ins Spiel. Diesem Tool, das man irgendwo auf den Server ablegt, übergibt man die PDF und FDF Datei und erhält eine neue ausgefüllte PDF Datei.

Angespielt: Modern Warfare 2 im Multiplayer

Schon schlimm genug, dass man wenn man allein an einer Multiplayer-Partie von Modern Warfare 2 teilnehmen will, mehrere Versuche benötigt und deshalb reichlich Geduld mitbringen muss.

Wenn man das ganze dann noch mit einer Gruppe von Freunden versucht, und sei es nur einer, ist es nahezu gänzlich zum scheitern verurteilt. Die Bildung der Gruppe scheitert mit immer anderen Fehlern und wenn es dann doch einmal geklappt hat und die Suche nach einem Host erfolgreich war, fliegt nach Ablauf des Counters die Hälfte der Spieler aus der Lobby, darunter natürlich auch der Freund mit dem man zusammen spielen will. Eine halbe Stunde später wenn man dann endlich wieder an diesem Punkt angekommen ist und endlich des Level geladen wird, hat man einen völlig unbrauchbaren Host und das Spielchen beginnt wieder von neuem.

Dieses ganze Problem wäre zu umgehen gewesen, wenn man die üblichen dedizierten Server verwenden würde. Welchen Sinn hat eine integrierte Freundesliste, wenn man alle 10 Minuten gezwungen ist den Host zu wechseln und sowieso nicht wieder auf die gleichen Leute trifft. Mit diesen Leuten eine Gruppe zu bilden funktioniert ja auch nicht zuverlässig.

Howto: Administrative Freigaben unter Windows 7 mit Heimnetzgruppe

Der Zugriff auf administrative Freigaben wie C$ bereitet unter Windows 7 wie schon unter Vista so einige Probleme.
Zu aller erst muss der schon von Vista bekannte Registry Schlüssen gesetzt werden „HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System/LocalAccountTokenFilterPolicy = DWORD:0x1“.

Das nächste Problem entsteht durch die vorhandene Heimnetzgruppe in der man auf anderen Rechnern automatisch als HomeGroupUser$ angemeldet wird. Da man sich pro Rechner nur mit einen Benutzer gleichzeitig anmelden kann, erscheint auch bei Eingabe des richtigen Nutzers samt Kennwort immer Zugriff verweigert.

Abhilfe schafft hier die Einstellung: „Benutzerkonten und Kennwörter zum Herstellen von Verbindungen mit anderen Computern verwenden“ in den erweiterten Freigabeeinstellungen. Für Leute die ihr Benutzerkonto nicht mit einer Live-ID verknüpft haben sollte das ganze nach einen Neustart funktionieren.

Wer dies allerdings getan hab wird sehen das es auf dem anderen Rechner immer mit seiner Live-ID angemeldet wird statt mit seinem echten Nutzernamen. Dieses Problem lässt sich nur lösen indem man die Verknüpfung von Live-ID und Nutzerkonto wieder löst.

Howto: iTunes mit Multimediatasten steuern

Wer auch das Problem hat, dass iTunes damit es auf die Multimediatasten moderner Tastaturen reagiert, zwangsläufig im Vordergrund sein muss benötigt ein Plugin welches Abhilfe schafft. Das Plugin sorgt dafür das iTunes fortan auch auf globale Tastendrücke reagiert, wenn es z.B. minimiert ist oder nicht den Fokus besitzt.
Ursprünglich stammt das Plugin vom Nutzer localhost im aqua-soft Forum. Es handelt sich dabei um eine einzelne DLL Datei, die in das Plugin Verzeichnis von iTunes kopiert werden muss.

Bei XP z.B.: „C:\Programme\iTunes\Plug-Ins“
Bei Vista/7: „C:\Benutzer\\AppData\Roaming\Apple Computer\iTunes\iTunes Plug-ins“

Eingeschlafen: Colin McRae DiRT2

Was haben GTA 4 und Colin McRae: DiRT 2 gemeinsam? Beides sind Titel unter dem Label Games for Windows LIVE und brauchen mehr als eine halbe Stunde zur Installation. Warum ist das so? Meine Vermutung ist, das man den Leuten da zu häufiges Wechseln der Datenträger ersparen will und dadurch die Daten auf den DVDs so stark komprimiert, dass der Installer für eine Datei alleine mal locker 10 Minuten benötigt. Mal ehrlich, ich wechsele lieber 3 mal die DVD als minutenlang einer Statusanzeige zuzusehen bei der sich nichts tut. Da man aber dann ein paar Cent für weitere Datenträger an Produktionskosten hätte, wird sich in dem Bereich wohl nichts ändern.

Howto: Fix für Shader Compliation Error bei Shaun White Snowboarding

Wer auch das Problem hat, dass die Retail Version von Shaun White Snowboarding unter Windows 7/8 einen „shader compilation error“ beim Start meldet, kann das Problem ähnlich lösen, wie wenn dieses bei der Steam Version auftritt.
Man kopiert die Datei „EKShadersPC.BIN“ von „\ProgramData\Ubisoft\SWSnow“ nach „\Users\Public\Ubisoft\SWSnow“ und in der Ordner in dem das Spiel installiert ist.

Für die „ShaunWhiteSnowboardingGame.exe“ muss in den Eigenschaften der Kompatibiltätsmodus für Windows XP SP3 aktiviert werden.

p.s. Wer zusätzlich noch gerne eine höhere Auslösung hätte, findet die Einstellungen in der Registry unter „HKEY_CURRENT_USER\Software\Ubisoft\ShaunWhiteSnowboarding\1.0\Engine“ (ScreenResolutionHeight, ScreenResolutionWidth)