Nachdem ich mir Gedanken über eine Portierung des Spell Checkers von Java nach PHP gemacht habe, ist mir aufgefallen, dass es scheinbar gar keine komplexen Datenstrukturen in PHP gibt.
Natürlich kann man sich das alles selbst bauen, aber eine ordentliche Implementierung von Set, List, Tree & Co. wie in Java scheint es in PHP nicht zu geben.
Das Problem bei der PHP Umsetzung ist im Moment, dass ich ja keine ständig laufende Application sondern einzelne Request habe und daher nicht jedesmal den langwierigen Trainingsprozess durchlaufen kann. Als Alterantive scheint mir eine SQL-Datenbank geeignet, aber bevor das so funktioniert wie ich es mir vorstelle muss ich noch einen Weg finden die Daten dort effektiv abzulegen und aufzufinden. 90.000 SQL-Abfragen pro Suchanfrage sind einfach noch ein bischen zu viel 
Unter dem Namen jP2PWiki habe ich eine Beispielimplementierung eines P2P Wikis in Java veröffentlicht.
Das ganze ist nicht als stabile Software sondern eher als Proof-of-Concept anzusehen, aber möglicherweise hat der eine oder andere Interesse an dieser Thematik.
Alle weiteren Details finden sich auf der Projektseite.
So wie es aussieht ist das Seitenbetreiber-Backend von Googles AdSense im moment gestört.

Gestern bin ich durch eine Anzeige auf das Buch “No Spam! Besser vorbeugen als heilen” von Tobias Eggendorfer aufmerksam geworden.
In der Anzeige wurden unter andem die folgenden Punkt angeführt:
- Woher haben Spammer die Adressen?
- Grundlegende Vorsichtsmaßnahmen
- eMail Adressen verstecken
- Harvester blockieren
- Absichern von Mailinglisten und Newslettern
Wenn ich das Inhaltsverzeichnis so lese, fage ich mich ernsthaft warum man dieses Thema auf ca. 160 Seiten aufblähen muss, und warum man dazu ein ganzes Buch verfasst. Die angesprochenen Punkt lassen sich eigentlich in ein paar Zeilen zusammenfassen, und genau das werde ich hier versuchen.
Was ist Spam?
Der Begriff Spam stammt aus einem Monty Python Sketch und ist die Umgangssprachliche Bezichnung für UCE/UCB was für “Unsolicited Commercial E-mail” bzw. “Unsolicited Commercial Bulk E-mail” steht. Gemeint sind damit unerwünschte Nachrichten die in großem Umfang an eine Vielzahl von Benutzern verschickt wird. Ein weiteres Merkmal von Spam ist, dass in der Regel keine (bewusste) Anmeldung/Einwilligung zum Empfang desselben erfolgte.
Woher haben Spammer die Adressen?
Wer eine möglichst große Anzahl an Personen im Internet erreichen will, kommt über kurz oder lang vielleicht auf die blöde Idee einfach Massenhaft Mails mit Werbung zu verschicken. Doch woher bekommt man die ganzen Adressen? Dafür gibt es ein paar Möglichkeiten. Der naivste Ansatz ist die Brute-Force Methode, d.h. einfach einen Mailserver kontaktieren und alle möglichen Kombinationen von zulässigen Zeichen als Emfänger auszuprobieren. Dies ist natürlich sehr Zeit- und Resourcen intensiv und führt wahrscheinlich bei den meisten Mailservern dazu, dass der sendende Host komplett ausgesperrt wird. Continue reading ‘No Spam!’
Ich wusste gar nicht, dass Google sich auch “Vertippte-Domains” gesichert hat, aber wie unten zu sehen ist kommen sogar einige Besucher über diese “falsche” Domain.

Nein, ich beziehe mich mit “Horde” nicht auf die Allianz von WoW oder WC3, sondern auf den Webmailer Horde. Der ist zwar sehr mächtig und komfortabel, aber leider auch ziemlich langsam wenn man eine “normale” IMAP/POP3 Verbindung nutzt - selbst wenn der Webserver auf localhost läuft.
Nun habe ich vor einigen Tagen einen Artikel gelesen in dem empfohlen wird, local den Imapproxy einzusetzen um damit die Geschwindigkeit zu erhöhen. Der Vorteil des Imapproxy ist, dass dieser die Verbindungen cacht und es somit den Umstand ausgleicht, dass der Webmailer für nahezu jede Aktion eine neue IMAP-Verbindung aufgauen muss.
Die Konfiguration ist unter Debian wirklich simpel:
aptitude install imapproxy
Und dann im debconf einfach den lokalen Server eingeben. Danach sollte man noch sichergehen, dass der Proxy nur auf localhost lauscht und, dass sich der Port nicht mit dem des “echten” IMAP-Servers überschneidet (siehe /etc/imapproxy.conf).
Fertig.
Seit heute morgen ist mein ThinkPad aus der Reperatur zurück.
Das war leider schon das zweite mal, dass mein Notebook nach Heppenheim musste.
Beim ersten Mal war der USB Controller gestorben, diesmal war die Grafikkarte kaputt, was lauter bunte Streifen auf dem Display zur Folge hatte.
Ich hoffe, dass es nicht nochmal seinen Geist aufgibt, denn die Garantiezeit ist bald vorbei und so eine Reparatur kann teuer werden …
Kurztipp: Zufälligen Eintrag aus einer MySQL-Tabelle ausgeben
Möchte man mit MySQL einen zufälligen Eintrag aus einer Tabelle ausgeben, so hilft das folgende Statement: ” ORDER BY RAND(NOW()) LIMIT 1″ am Ende der Query.
Mit der neuen Kernel Version 2.6.23 lässt sich der NVIDIA Closed-Source Treiber, zumindest in Version 100.14.11, nicht mehr kompilieren.
Möglicherweise ist das nur auf meinem System so, aber mit der neusten Version, 100.14.19, geht es problemlos.
Vor ein paar Minuten wurde der neue Linux Kernel 2.6.23 freigegeben.
Die wichtigsten Änderungen im Überblick:
- neuer CFS Scheduler (”fairer”)
- On-Demand Read Ahead
- XEN Guest Unterstützung
- XFS und ext4 Verbesserungen
- PPP over L2TP Support
- Userspace Driver Framework
- … (KernelNewbies)
Download / Changelog
Letzte Kommentare