Ganz kurzes Update: Habe ein neues Theme, das vorherige war inzwischen etwas in die Jahre gekommen. Auf isitfriday.info ist wieder alles beim Alten. Mit dem Websocket-Server geht es gut voran – Support für wss ist bald fertig. An dieser Stelle vielen Dank für die ganzen Mails mit Bugfixes etc. Ich bin dran ;)

Fork me on GitHub

PPTP VPN Tunnel – Ein paar Tipps

Vor kurzem habe ich einen VPN-Server aufgesetzt und habe mich dabei für das PPTP entschieden. Auf die grundlegende Installation unter Debian möchte ich hier nicht eingehen denn dafür gibt es bereits genügen Anleitungen im Netz. (z.B. hier)

Allerdings waren (zumindest bei mir) nach der Installation noch einige kleine Kniffe notwendig bis der Tunnel vernünftig lief. An dieser Stelle noch kurz der Hinweis, dass als Clients Windows 7 bzw. Windows XP Rechner zum Einsatz kommen.

Problem 1: Clients können sich einwandfrei verbinden, es können jedoch keine Daten empfangen werden.
Lösung: Damit der Server empfangene Daten zu den Clients “weiterrouten” kann ist eine IPTables Regel notwendig. Bei mir brachte folgendes die Lösung:

iptables --table nat --append POSTROUTING  --out-interface eth0 --jump MASQUERADE

Read More…

PHP Websocket Server/Client nach Draft hybi-10

Vor ein paar Tagen habe ich ja schon einen Websocket-Client hier veröffentlich, welcher Draft hybi-00 unterstützt. Kurz danach veröffentlichte google jedoch eine neue Version von Chrome. In Chrome 14 hat google nun den Websocket-Draft hybi-10 implementiert und dort hat sich vieles grundlegend geändert. Neben einem neuen Handshake werden auch die Datenframes komplett neu codiert.
Ich habe meine Client-Klasse entsprechend angepasst und möchte sie natürlich wieder hier präsentieren, da sie dem ein oder anderen Entwickler sicherlich helfen wird. Desweiteren habe ich die “Connection-Klasse” des Websocket-Servers von Nico Kaiser so angepasst, dass sie auch den hybi10-Draft unterstützt.

Viel Spass bei basteln :)

HINWEIS: Da der Server aktuell ständig weiterentwickelt wird habe ich ein Repository auf Github angelegt. Bitte den jeweils aktuelle Code verwenden: https://github.com/lemmingzshadow/php-websocket

UPDATE: As the project is constantly updated and improved I created a repository on github. Please get the code here: https://github.com/lemmingzshadow/php-websocket

PHP Websocket Client

Seit einiger Zeit spiele ich immer mal wieder mit Websockets. Allerdings habe ich bisher keinen wirklich funktionstüchtigen, in PHP implementierten Websocket-Client finden können. Also habe ich kurzerhand selbst eine Klasse dafür gebaut welche ich hier natürlich gerne veröffentliche. Absolut minimal, aber für Testzwecke ausreichend. Es wird aktuell der Handshake aus Draft “draft-ietf-hybi-thewebsocketprotocol-00” unterstürzt. Getestet habe ich es mit der aktuellen Version von Chrome (13.0.782) und dem Websocket Server von Nico Kaiser.

Hier die Klasse + Beispielaufruf:

ACHTUNG: Eine aktuellere Version dieser Klasse gibt es hier: PHP Websocket Server/Client nach Draft hybi-10

Read More…

Aktualisiertes Projekt: isitfriday.info

Seit letzter Woche Freitag ist auf der Domain isitfriday.info (vorher isitfriday.de) endlich etwas mehr zu sehen als Ja oder Nein. Es gibt ein neues Design und jede Woche neuen Inhalt. (Video, Bild, Text, etc.) Auf der To-Do Liste steht noch die Archiv-Funktion sowie eine Möglichkeit den Inhalt der Woche zu kommentieren bzw. zu diskutieren.

Kurz zur Technik: Das Projekt ist eine komplette Eigenentwicklung, ich habe kein Framework benutzt. Als Templateengine verwende ich Smarty. Es werden einige HTML5- und CSS3-Elemente verwendet. Als Basis diente die HTML5-Boilerplate.

Named subpatterns in PHP

Da ich in regulären Ausdrücken gerade häufiger sog. “benannte Teilmuster” (named subpatterns) nutze und es mir so vorkommt als würde diese ungemein hilfreiche “Funktion” eher selten benutzt, will ich hier kurz darauf hinweisen. Named subpatterns gibt es seit PHP 5.2.2 und sie funktionieren wie folgt:

Angenommen ich möchte Daten aus verschiedenen Quellen verwenden, dann kann bzw. wird es vorkommen, dass diese Daten unterschiedliche Formate haben. Ein ganz simples Beispiel:

Quelle A: 44793 Bochum – Sonnig – 19 Grad
Quelle B: 44793 Bochum – 19 Grad – Sonnig

Die gleichen Daten, aber ein andere Reihenfolge.
Wenn ich nun für jede Datenquelle einen reguläre Ausdruck verwende um die Daten zu teilen, hatte man früher oft folgendes Problem:

$string = "44793 Bochum - Sonnig - 19 Grad";
preg_match('/(.+)\s-\s(.+)\s-\s(.+)/', $string, $temp);

Read More…

mcrypt_create_iv teilweise sehr langsam

Für ein privates Projekt bastle ich seit einiger Zeit an einem IRC-Bot wobei folgendes Problem auftrat:
Sobald Nachrichten in einem IRC-Channel gelesen oder geschrieben wurden hing das Script für einige Sekunden als würde irgendwo ein sleep ausgeführt. Dies war allerdings nicht immer der Fall und trat zudem nicht auf einem Windows System auf. (Weshalb mein Xdebug-Profiling erfolglos war). Es blieb mir also nichts anderes übrig als solange Komponenten des Bots zu deaktivieren bis das Problem nicht mehr auftrat. So stelle ich fest dass, das Problem irgendwo in der Klasse für die FiSH-Verschlüsselung lag. Read More…

Wechsel von PHP-CGI zu PHP-FPM

Da ich hier schon längere Zeit nichts mehr geschrieben habe, habe ich beschlossen nun auch kürzere, weniger aufwendige Artikel zu veröffentlichen, um hier mal wieder etwas Leben in die Bude zu bekommen. Jetzt aber zum Thema:

Aus einem mir unbekannten Grund verabschiedeten sich auf meinem Debian Squeeze Server die PHP-CGI Prozesse mit folgender Meldung im Error-Log:

(mod_fastcgi.c.3001) backend is overloaded; we'll disable it for 1 seconds and send the request to another backend instead

Ich habe zwar eine generelle Lösung für dieses Problem gefunden (Link), diese konnte ich bei meiner Serverkonfiguration aber leider nicht anwenden. Da ich mehrere PHP-CGI-Pools mit verschiedenen UIDs/GIDs starte und diese in der Lighttpd-Config über die Sockets zuordne, konnte ich hier den “var.PID” Teil nicht anhängen. Davon abgesehen hatte es vorher viele Monate ohne diese Änderung funktioniert. Also habe ich mich kurzerhand dazu entschlossen zu PHP-FPM zu wechseln.
Read More…

Asynchrone PHP Prozesse mit Gearman

Gearman Es kommt immer wieder vor, dass man aus einem PHP-Script heraus ein Anderes aufrufen möchte welches dann eine bestimmt Aufgabe erledigt. Dies ist z.B. sinnvoll wenn die Aufgabe länger dauert und man nicht im Script darauf warten möchte, wie etwa beim Erstellen von Bildern in verschiedenen Größen.
Ich hatte bereits vor einiger Zeit über eine Möglichkeit berichtet PHP-Script im Hintergrund auszuführen.
Diese Möglichkeit ist allerdings nicht wirklich schön und hat auch einige Nachteile. Z.B. kann man nur schwer abfragen wie der aktuelle Status des Scripts ist und auch die Verteilung auf verschiedene Server ist nicht trivial. Darum möchte ich hier eine wesentlich elegantere Möglichkeit vorstellen PHP-Prozesse asynchron laufen zu lassen. Und zwar mit Hilfe von Gearman: Read More…

obsession-design.de – Bis auf weiteres offline

Nach ca. 10 Jahren habe ich beschlossen mein Projekt obsession-design.de abzuschalten und auf dieses Blog weiter zu leiten.
Diese Entscheidung habe ich seit längerem vor mir her geschoben, da man ja doch immer ein wenig an seinen Projekten hängt. Allerdings war die Seite nun schon seit geraumer Zeit nur noch aus nostalgischen Gründen online und wurde nicht mehr aktualisiert. Darum nun dieser Schritt.

Noch kurz 1-2 Worte zur Begründung: Read More…

1 2 3 4 5  Scroll to top