Ihr Browser versucht gerade eine Seite aus dem sogenannten Internet auszudrucken. Das Internet ist ein weltweites Netzwerk von Computern, das den Menschen ganz neue Möglichkeiten der Kommunikation bietet.

Da Politiker im Regelfall von neuen Dingen nichts verstehen, halten wir es für notwendig, Sie davor zu schätzen. Dies ist im beidseitigen Interesse, da unnötige Angstzustiände bei Ihnen verhindert werden, ebenso wie es uns vor profilierungs- und machtsächtigen Politikern schützt.

Sollten Sie der Meinung sein, dass Sie diese Internetseite dennoch sehen sollten, so können Sie jederzeit durch normalen Gebrauch eines Internetbrowsers darauf zugreifen. Dazu sind aber minimale Computerkenntnisse erforderlich. Sollten Sie diese nicht haben, vergessen Sie einfach dieses Internet und lassen uns in Ruhe.

Die Umgehung dieser Ausdrucksperre ist nach §95a UrhG verboten.

Mehr Informationen unter www.politiker-stopp.de.



Monatsarchiv für Januar 2009

Hug a developer today!

Mittwoch, den 28. Januar 2009

Sorry Sascha, das muss ich trotzdem (auch) bloggen.
(Entweder JavaScript ist nicht aktiviert, oder Sie benutzen eine alte Version von Adobe Flash Player. Installieren Sie bitte den aktuellsten Flash Player. )

Wir kreieren eine Partylocation…

Dienstag, den 27. Januar 2009

Oberhausen und Umgebung sind wie ausgestorben. Es gibt nur noch wenige Locations, wo sich direkt viel zu viele Leute tummeln, die man sowieso schon alle kennt. Ein mittlerweile leider ausgestorbenes Fleckchen ist die Turbinenhalle in Oberhausen. Einst war sie eine geniale Partylocation, die vor allem an Donnerstagen besonders beliebt war. Nach einigen Besitzerwechseln und Umbauten hat die Turbinenhalle leider ihr Klientel ersatzlos verloren. Zu Hochzeiten gab es in der Turbinenhalle 5 Hallen: Blade (EBM, Metal, …), T-Club (Rock, Charts, New Metal, …), Main Hall / Cosmo / Kammer (Techno, Trance, House, Schranz, …). Zu der Zeit war die Turbinenhalle sehr gut besucht – trotz ihrem Ruf einer Drogen- und Schlaegerdisco (habe ich nie wirklich beobachtet…). Mittlerweile gibt es das Blade nicht mehr. Jetzt heisst es Turbostadl, beinhaltet 1-5 Menschen im Schnitt pro Abend und jault Schlager. Der T-Club wird in der Regel von 20 Leuten pro Abend besucht und dort laufen mittelmaessige aufgezwungene Rock-Charts. Die Main-Hall ist noch immer so wie frueher – bis auf die Anzahl der Menschen natuerlich. Dort sind maximal 150 im Schnitt pro Abend.

Ich kann gut verstehen, dass jedesmal die selbe eintoenige Musik gespielt wird. Das liegt wohl daran, dass niemand sich mehr was wuenscht (damals musste man Schlange stehen…). Aber wenn nur genug Leute dahingehen, dann wird auch wieder mehr gewuenscht und die Location gewinnt wieder an Charme.

Daher mein Appell (fuer den ich NICHT bezahlt werde!!!): Geht wieder in die Turbinenhalle! AVT im ATV ist vorbei! Niemand will mehr weit wegfahren! Niemand will nur in einer einzigen Halle stehen und jedesmal die selbe Musik hoeren! Abwechslung ist angesagt! Rock’n'Roll, Jungemaedchen!

Moore-Automaten mit C#

Dienstag, den 27. Januar 2009

Nachdem ich eine Weile an einem Synchronisationsproblem bei der Verwendung von seriellen Schnittstellen zur Kommunikation mit Mobiltelefonen gesessen habe, kam mir eine nette Idee: Ich verwende einen endlichen Transduktor! Genauer: Einen Moore-Automaten. Zur Erklaerung: Ein endlicher Automat laesst sich durch einen Graphen veranschaulichen. Ein Knoten ist ein Zustand s \in S. Nur ein Zustand kann zu einem Zeitpunkt angenommen werden, wobei Zeit eigentlich keine Rolle spielt. Befindet sich der Automat im Zustand s_1 und erhaelt er ein Eingabezeichen w \in \Sigma (Woerter, Symbole, Nachrichten, o.ae.) und es ist ein Zustandsuebergang (s_1, w) \mapsto s_2 durch eine Funktion \delta: \Sigma \times S \to S definiert, dann geht der Automat in den neuen Zustand s_2 ueber.
Mit genau solch einem Automaten kann ich das Synchronisationproblem loesen. Mehr zum Problem: Die Verbindung ueber den COM Port ist nie still. Das Mobiltelefon sendet andauernd Statusmeldungen. Wenn ich eine Anweisung sende, dann liegt diese Anweisung auch noch eine Weile im Puffer, sodass meine eigene Anweisung als Rueckgabe gelesen wird. Nun kann ich mit Hilfe des Automaten genau festlegen, wann eine Statusmeldung und sonstige ungewollte Nachrichten ignoriert werden und wann nicht. Pretty cool.
Ich will den Code natuerlich niemanden vorenthalten… Die Ausgabe meines Testprogramms sieht wie folgt aus:

Checking State 1 with ABC... Found
Checking State 1 with XYZ... Not found
Checking State 1 with 123... Not found
Checking State 2 with ABC... Not found
Checking State 2 with XYZ... Found
Checking State 2 with 123... Not found
Checking State 3 with ABC... Not found
Checking State 3 with XYZ... Not found
Checking State 3 with 123... Found
This Moore-Machine is a partially-specified deterministic finite state machine.
Following transitions are missing:
(State 1, "XYZ") -> undefined
(State 1, "123") -> undefined
(State 2, "ABC") -> undefined
(State 2, "123") -> undefined
(State 3, "ABC") -> undefined
(State 3, "XYZ") -> undefined
State 1 is running...
Got input: XYZ
State 1 is running...
Got input: ABC
State 2 is running...
Got input: 123
State 2 is running...
Got input: XYZ
State 3 is running...
Got input: ABC
State 3 is running...
Got input: 123
State 1 is running...
Got input: XYZ

Und die Testumgebung, die das produziert, sieht so aus:

using System;
using System.Threading;
 
namespace visusNET.FiniteStateMachine
{
    public class Test
    {
        [STAThread]
        public static void Main()
        {
            string[] sigma = new string[] { "ABC", "XYZ", "123" };
 
            State state1 = new State(State1, "State 1");
            State state2 = new State(State2, "State 2");
            State state3 = new State(State3, "State 3");
            State[] S = { state1, state2, state3 };
 
            TransitionFunction delta = new TransitionFunction();
 
            delta.AddTransition(state1, sigma[0], state2); // state1 --ABC--> state2
            delta.AddTransition(state2, sigma[1], state3); // state2 --XYZ--> state3
            delta.AddTransition(state3, sigma[2], state1); // state3 --123--> state1
 
            MooreMachine machine = new MooreMachine(sigma, S, state1, delta);
            machine.Delay = 1000;
            machine.Interval = 5000;
 
            machine.Analyze();
 
            Thread machineThread = new Thread(new ThreadStart(machine.Run));
            machineThread.Start();
 
            while (true)
            {
                machine.SetInput("ABC");
                Thread.Sleep(1000);
                machine.SetInput("XYZ");
                Thread.Sleep(1000);
                machine.SetInput("123");
                Thread.Sleep(1000);
            }
        }
 
        public static void State1()
        {
            Console.WriteLine("State 1 is running...");
        }
 
        public static void State2()
        {
            Console.WriteLine("State 2 is running...");
        }
 
        public static void State3()
        {
            Console.WriteLine("State 3 is running...");
        }
    }
}

Die Dateien dazu gibt es hier: FiniteStateMachine.zip.

Neuronale Netze mit Javascript

Samstag, den 24. Januar 2009

Es hat endlich jemand gewagt und er steigt auf meiner Freakskala weit nach oben. John Resig hat in seinem Blog ueber Captcha Recognition mit Hilfe von in Javascript implementierten kuenstlichen neuronalen Netzen geschrieben. Fuer mich war es ein sehr interessanter Artikel.

Hier geht es zum Artikel OCR and Neural Nets in JavaScript.

C Programmierung

Mittwoch, den 21. Januar 2009

Beim Durchstoebern meiner Aufzeichnungen, habe ich meinen Vortrag ueber Programmierung in C wiedergefunden, den ich irgendwann im letzten Jahr im Rahmen eines Embedded Workshops gehalten habe.

Vielleicht hilft es ja der ein oder anderen Person.

C Programmierung

In einer perfekten Welt…

Dienstag, den 20. Januar 2009

… braucht man keine Regeln. In einer perfekten Welt gibt es keine Kriege. In einer perfekten Welt ist Schoenheit eine gleichverteilte Zufallsvariable. In einer perfekten Welt…

… waere es echt cool. Aber leider gibt es viel zu viele dumme Menschen! Argh!

Oldie-Fieber – Ich werde alt!?

Samstag, den 17. Januar 2009

Ich hab mal was ausgekramt, was viele, die nach mir geboren wurden, nicht mehr kennen…

(Entweder JavaScript ist nicht aktiviert, oder Sie benutzen eine alte Version von Adobe Flash Player. Installieren Sie bitte den aktuellsten Flash Player. )

Wieso? Weil ich glaube, dass ich alt werde. Ich war gestern nach etlichen Jahren in einer Disco. Ich war da zu letzt, als ich 16 war, glaube ich. Damals kamen mir die Menschen darin so viel aelter vor. Und gestern war ich sogar aelter als die Thekenbedienungen. Der einzige, der aelter als ich ist, war der Chef des Ladens. Die Getraenke haben mich damals auch total umgescheppert, obwohl jedes Getraenk nur 50 Cent kostet. Gestern wurde ich einfach nicht voller. Nachdem wir mehrere Tabletts voll mit Whisky-Cola hinter uns hatten sind wir dann parallel zu den Kindern nach Hause gefahren. Um 12:00 Uhr…

Verdammt, ich will noch einmal 16 sein…

MySQL, transparente Proxies und iptables

Donnerstag, den 15. Januar 2009

Ich habe tatsaechlich eine Stunde gebraucht um rauszufinden, wieso ich keinen transparenten Proxy einrichten kann, der mir den MySQL Server nach aussen hin freigibt. Also… Ich bastel gerade etwas, das ich gerne via SFTP auf einen Server packen moechte. Das klappt soweit. Nun wollte ich aber auch von extern aus auf die MySQL Datenbanken zugreifen. Leider ist die hierarchisch uebergeordnete Firewall dagegen. Da ich darauf keinen Zugriff habe, muss ich in die Trickkiste greifen, denn ich moechte den Port nicht verlegen. Der MySQL Server kann leider nicht auf mehreren Ports gleichzeitig horchen, also habe ich mich dazu entschlossen via iptables alles, was auf Port 27 eingeht, auf Port 3306 (MySQL) zu leiten. Aber aus einem mir bis dahin unerklaerlichen Grund, wollte das nicht funktionieren. Ich habe jeden Port um 3306 ausprobiert (via netcat -l -p <PORT>) und mit meiner iptables-Regel kam ich jedesmal drauf. MySQL weigerte sich aber, wenn ich iptables die Pakete auf 3306 leiten liess. Ich ging also die my.cnf durch und fand zunaechst nichts, das darauf hinwies, dass externe Clients sich nicht verbinden duerfen. Erst nach ewigem Herumprobieren stiess ich auf folgende Zeile in der my.cnf:

bind-address            = 127.0.0.1

Da 127.0.0.1 dem Loopback Device gehoert, war mir klar, dass das nicht gehen kann, denn der Internetverkehr geht ueber ein Ethernet Device. Also habe ich die IP-Adresse ersetzt und siehe da – folgende Regel bewirkt Wunder:

iptables -t nat -A PREROUTING -p tcp --dport 27 -j REDIRECT --to-ports 3306

Nun kann ich endlich von aussen auf meinen MySQL Server zugreifen. Was fuer eine schwere Geburt.

Windows 7 – So schneidet man Zoepfe ab

Freitag, den 9. Januar 2009

Microsoft aendert sich? Ich teste seit einer Woche Windows 7 Beta und bin absolut positiv ueberrascht. Wenn das Endprodukt sich an der Beta orientiert, wird es das schnellste Windows, das es je gegeben hat. Das System ist innerhalb meiner Virtual Machine schneller als das XP, was die Virtual Machine hostet. Unglaublich. Bisher ist nur andauernd der Internet Explorer abgeschmiert, aber das war ja zu erwarten. Die Mac-orientierte neue Taskleiste ist genial und praktisch. Mjam.

WPIDS – Intrusion Detection System fuer Wordpress

Samstag, den 3. Januar 2009

Lange habe ich nach Security Enhancements fuer mein Blog gesucht. Nun habe ich eins gefunden: WPIDS – ein auf PHPIDS basiertes Plugin fuer WordPress. Ich find das sehr schnuckelig. Leider fehlt noch ein Autoupdater und eine Moeglichkeit, das Verhalten beim Lock Down festzulegen, aber das kommt sicher alles noch. Dennoch ist es ein sehr cooles, leichtgewichtiges Plugin.

WordPress RSS Patch

Samstag, den 3. Januar 2009

Diese nervige Fehlermeldung ging mir jetzt lange genug auf die Nerven. Seit WordPress 2 gibt es den Fehler und niemand hat ihn bisher gefixt. So sieht die Fehlermeldung aus:

Warning: Attempt to assign property of non-object in /var/www/blog.visusnet.de/wp-includes/rss.php on line 449

Den Patch gibt es hier: rss.patch

Oder via Copy & Paste:

--- ../wp-includes/rss.php.bak	2009-01-03 01:47:53.000000000 +0100
+++ ../wp-includes/rss.php	2009-01-03 01:48:18.000000000 +0100
@@ -445,7 +445,7 @@
 		// if object cached, and cache is fresh, return cached obj
 		if ( $cache_status == 'HIT' ) {
 			$rss = $cache->get( $url );
-			if ( isset($rss) and $rss ) {
+			if ( isset($rss) and is_object($rss) ) {
 				$rss->from_cache = 1;
 				if ( MAGPIE_DEBUG > 1) {
 				debug("MagpieRSS: Cache HIT", E_USER_NOTICE);

Linux – A Way of Life

Freitag, den 2. Januar 2009

Lesen, Leben, Sterben(!): Linux is a way of life, not a clone of windows

via Dirks Logbuch

The same procedure as last year, Miss Sophie?

Donnerstag, den 1. Januar 2009

Ich wuensche allen ein frohes neues Jahr! 2008 ist vorbei, nun wird alles besser? Mal sehen, was so ansteht:

  • Noch 20 Tage Bush-Doktrin. Am 20. Januar 2009 beginnt Praesident Barack Obama seine Amtszeit als erster afroamerikanische Praesident der Vereinigten Staaten von Amerika. Er ist der 44. Praesident in der 56. Periode und wahrscheinlich einer der vielversprechendsten Politiker der Dekade.
  • Noch 103 Tage bis zu meiner weltweiten Volljaehrigkeit. Dann lohnt es sich auch endlich in die USA zu fliegen.
  • In diesem Jahr jaehren sich die Tode von vielen Menschen: Haydn (200), Mendelssohn (200), H?ndel (250), Darwin (200), Anselm (900) und last but not least, mein Namensvetter: Alexander von Humboldt.
  • Ausserdem jaehrt sich das Bestehen der Bundesrepublik Deutschland zum 60. Mal und die Mondlandung zum 40. Mal.
  • Ab heute kann man in der Slowakei mit dem Euro bezahlen! Damit sind es nun 16 Laender, in denen unsere Waehrung gilt.
  • Am 9. Februar gibt es eine penumbral-partielle Mondfinsternis (und am 6. August noch einmal).

Es ist jetzt 2009… Scheiss auf die guten Vorsaetze! Jetzt ist Party! Zumindest fuer alle Anderen, denn ich bin zuhause und mache dieses New Year’s Eve ueberhaupt gar nichts.