Schlagwort-Archive: SuccessDenied

Vier Jahre SuccessDenied, vier Jahre als Nischenblogger, vier Jahre (theoretisch) weltöffentliches Hobby. Ich zitiere eine der größten Bands aller Zeiten nicht etwa, weil mir etwas Furchtbares widerfahren sein mochte, was zum Glück nicht der Fall ist, sondern weil all meine guten Vorsätze leider wieder hinfällig geworden sind. Der letzte Artikel liegt erneut schon über zweieinhalb Wochen zurück, und meine Finger bewegen sich auch jetzt nur sehr zaghaft über die Tastatur. Gerne hätte ich geglaubt, dass das vierjährige Jubiläum des Blogs vor zwei Tagen mich zu neuen prosaischen Höchstleistungen anspornen würde, doch dem war irgendwie nicht so. Aber die Show muss weitergehen. Sie wird weitergehen. Nur Geduld. Das gilt vor allem mir.

Vier Jahre habe ich gebraucht, um 287 Artikel zu verfassen, diesen hier eingeschlossen. 518 Kommentare haben sich in dieser Zeit angesammelt. Gut die Hälfte davon sind natürlich Antworten von mir. Viele Artikel von mir sind absolut zum Vergessen, um das mal möglichst diplomatisch auszudrücken, aber auf einige bin ich wiederum wirklich stolz. Ich glaube diese bunte Mischung kann ich so beibehalten, sofern es mir gelingt, aus meiner Blog-Lethargie auszubrechen, und das wird ganz sicher bald der Fall sein. Spätestens wenn ich in einigen Tagen meinen Jahresurlaub antrete, werde ich vieles nachholen, wofür mir in der Vergangenheit einfach die Zeit bzw. Muße gefehlt hat.

An der Webseite hat sich in den vergangenen Monaten praktisch nichts verändert, was ich einerseits bedauere, denn Stillstand ist bekanntlich Rückschritt, wo ich andererseits aber nicht sicher bin, wieso sich an einem gut funktionierenden System immer unbedingt etwas ändern müsste. Aber ein wenig designtechnischer Zwiespalt schadet nicht. Eine der schwerwiegendsten Änderungen dürfte das Hinzukaufen der .de und .org Domains gewesen sein. Dank der vielzähligen Einsendungen meines Stammlesers Gerry konnte ich das Dongleware-Spielemuseum an vielen Stellen ergänzen, die Beschreibungstexte vervollständigen, das Javascript-Bolo-Remake „Paranoid“ verlinken, und im übrigen habe ich sogar die TOS-Gimmicks eingefügt, weil mir Vollständigkeit wichtig ist. Ansonsten habe ich die Seite an einigen Stellen etwas schlanker gemacht, und die Anzahl gleichzeitig angezeigter Artikel reduziert, was die Ladezeit verkürzt.

Kürzlich gab es einige Berichte über Angriffe auf WordPress-Seiten, wo bereits ein einzelnes fehlerhaftes Plugin, selbst wenn es deaktiviert ist, ausgereicht hat, um Angreifern vollständigen Zugang zur Webseite zu ermöglichen. So wurden tausende Blogs quasi über Nacht übernommen. Das stärkt nicht unbedingt das Vertrauen in WordPress (von dem böse Kritiker ja oft sagen, es sei unsicherer, überfrachteter Müll), oder in die vielen verfügbaren Plugins. Die wichtigste Konsequenz daraus ist, dass ich meine Installation auch weiterhin immer aktuell halten muss, und einige der Plugins rauswerfe, die ich gar nicht, oder nur sehr selten benötige, denn Deaktivieren bringt offenbar überhaupt nichts.

Rein theoretisch wäre es längst wieder an der Zeit für einen (not so) weekly rant, und Material dazu gäbe es zur Genüge, doch erst gestern fiel mir erneut der successdenied’sche Besucherzähler ins Auge, der schon eine ganze Weile dicht unter der Zehntelmillion herumkrebste, aber noch nie gar so dicht wie zum späten Abend. Heute morgen war es schließlich soweit: Die 100.000 Besucher für meinen Blog sind endlich voll! Ganz großes Kino! Absolute Oberklasse. Ich danke meiner Familie, meinen Freunden und allen die mich in diesen schwierigen Zeiten unterstützt haben. Die harte Arbeit hat sich gelohnt, ohne euch wäre das niemals möglich gewesen. Wir haben die Wahl gewonnen! Da muss ich gleich mal ein Riesenfass aufmachen.

Würde ich womöglich, wenn ich nicht selbst wüsste, dass die Zahlen des Besucherzähler-Scripts auch nur sehr begrenzt Aufschluss über die tatsächliche Anzahl Besucher geben. SuccessDenied.com wurde über Monate hinweg täglich von unzähligen Spambots besucht, bis ich effektiv etwas dagegen unternehmen konnte. Als die „Besucherzahlen“ sich dann schlagartig halbierten, staunte ich nicht schlecht. Langer Rede kurzer Sinn: Ich habe keine Vorstellung davon, wieviele Besucher es wirklich waren. Ist mir aber auch egal.

Irgendwas muss ich ja schließlich feiern, richtig? Viereinhalb Monate haben die ersten 1000 Besucher sich Zeit gelassen. Nach einem Jahr aktivem Herumgeblogge habe ich die 10.000-Besucher-Hürde übersprungen. Inzwischen bin ich seit drei Jahren und dreieinhalb Monaten dabei, und wieder ist ein Meilenstein erreicht. Was kommt als nächstes? Nunja, die erste Million ist angepeilt, fehlen doch nur noch 900.000. Mein Taschenrechner sagt, dass das in ungefähr 30 Jahren machbar sein wird. Wir nehmen die Herausforderung natürlich an und erledigen das bereits in den kommenden vier Jahren.

Viel geändert hat sich sonst nicht. Gefühlt verbringe ich im Büro mehr Zeit als in den gemieteten vier Wänden. Das Gehalt der kommenden beiden Monate (so wie schon das der vergangenen zwei Monate) geht praktisch komplett an das Bundesverwaltungsamt und an die Kfz-Versicherung. Das bedeutet, dass sich die Anschaffung von neuem Mobiliar bis mindestens Februar verzögern wird. Dafür ist es mir sogar gelungen, durch einen kleinen sorglosen Griff meinen einzigen Schreibtischstuhl zu zerlegen, so dass sich die Liste der zu kaufenden Dinge zwangsläufig erweitert hat. Da kommt doppelt Freude auf.

Aber ich freue mich auf Weihnachten. Nicht nur, weil ich dann wieder etwas Zeit für mich habe, sondern auch, weil damit wieder ein sehr ereignisreiches Jahr zu Ende geht. Seit dem Go-Live von SuccessDenied.com konnte ich erfolgreich mein Studium abschließen, einen guten Job erkämpfen, berufliche Stabilität gewinnen, in diesem Jahr ein eigenes Auto kaufen und eine eigene Wohnung mieten, und vielleicht gelingt es mir noch im Dezember, meine letzten Studienschulden abzuzahlen. Dann kann das hoffentlich noch viel erfolgreichere Jahr 2014 endlich beginnen.

Gerade vor einer Stunde dachte ich noch, dass meine WordPress-Installation gehackt worden wäre. Mein WP-Dashboard zeigte unter anderem folgende merkwürdigen Bilder an:

Auch ließen sich keine Links anklicken. Der Blog war offenbar auch davon betroffen. Kurzerhand habe ich die Webseite für einige Minuten vom Netz genommen. Die Quelle der Bilder war www.cornify.com. Im Javascript-Quelltext konnte ich eine Variable mit dem Namen „pwned“ ausmachen. Klarer Fall, dachte ich. Mein WordPress wurde gehackt.

Erste Versuche, herauszufinden, ob die aktuelle WordPress-Version eine schlimme Sicherheitslücke beinhaltete (ja, ich weiß, WordPress IST eine schlimme Sicherheitslücke), brachten aber nichts zutage, genauso wenig wie eine Suche nach etwaigen Unicorn-Hacks. Dass es jemand speziell auf meinen Blog abgesehen hatte, wollte ich aber ausschließen. Davon hätte niemand was, ist auch zu unbekannt.

Die Datenbank war völlig intakt, auch sonst war nichts beschädigt. Nur blöde Einhorn- bzw. Pony-Bilder. Also wahrscheinlich doch kein Hack, sonst wäre das Ergebnis sicher schlimmer gewesen. Eine weitere Google-Suche nach einem Ausdruck im Quelltext „show ponies on 1st click of a link“ ließ mich auf der Webseite von Digitalnature landen, den Entwicklern von Mystique3, meiner SuccessDenied-Basis-Theme: http://digitalnature.eu/topic/unicorns-and-rainbows-error/.

Stellt sich heraus, dass es sich um einen (zweifelhaften) Aprilscherz der Theme-Entwickler handelte und dass jeder betroffen ist, der am 1. April diese Theme benutzt. Finde ich persönlich ziemlich geschmacklos. Ich bin offenbar nicht der erste, der einen Hack vermutete. Mit sowas spaßt man nicht. Hätte man panisch reagiert, wären vielleicht sogar Daten verloren gegangen.

Das Ärgernis findet sich in der functions.php im Verzeichnis der Mystique3-Theme, ganz am unteren Ende der Datei. Einfach den entsprechenden Teil löschen oder auskommentieren, hochladen, alles wieder gut. Ich hoffe die Spaßvögel lassen diesen schlechten Scherz mit dem nächsten Update schnell wieder aus der Theme verschwinden. Ich werde jetzt nicht damit anfangen, in Zukunft immer den kompletten Quelltext nach solchen Kindereien zu durchforsten. Ärgert mich schon sehr.

Hier zum Abgleich der komplette Quelltext des Aprilscherz-Scripts:

Nun also doch wieder ein winziger Beitrag zur Java-Welt von mir. Da ich an Projekten arbeite, die mit Hilfe von Apache Log4j Logdateien erstellen, wurde kürzlich die Frage geäußert, wie man denn verhindern kann, dass das System irgendwann mit gigabytegroßen Logs volllaufen wird. Die bisherige „Alles-in-eine-Datei“-Implementierung sollte also ersetzt werden durch eine Lösung mit täglichem Wegspeichern der Logs vom Vortag und nach Möglichkeit direkt als ZIP-Datei, um Platz zu sparen (Plain Text lässt sich bekanntlich unheimlich gut packen). Hinzu kommt dann noch, dass nur die Logdateien der letzten x Tage vorgehalten werden sollten. Ältere Logs müssen automatisch gelöscht werden.

Nun ist Log4j ein sehr mächtiges Tool, das einem wirklich viel Arbeit abnimmt. Der RollingFileAppender z.B. erlaubt es dem Entwickler ganz einfach, Logdateien wegzuspeichern, wenn sie eine bestimmte Dateigröße erreicht haben, und die nächste Logdatei zu beginnen. Wunderbarerweise gibt es zusätzlich sogar die Möglichkeit, mit maxBackupIndex vorzugeben, wieviele Logdateien gleichzeitig gespeichert bleiben sollen. Fast perfekt, aber leider nicht auf periodisches, also z.B. tägliches Wegspeichern anwendbar. Zu meinem Glück gibt es genau für diese Anforderung den DailyRollingFileAppender, so als wäre er direkt für mich gemacht worden. Und jetzt kommt der Brüller: Der DailyRollingFileAppender hat blöderweise wieder keinen maxBackupIndex, er erlaubt also nicht das Vorhalten einer vorgegebenen Anzahl an Logdateien. Super Sache. Wie bekomme ich jetzt DEN FileAppender, der beides kann? Ich bräuchte eine Kombination aus beidem.

Unter http://wiki.apache.org/logging-log4j/DailyRollingFileAppender fand ich die Rettung in Form einer fertigen Klasse: Der DailyMaxRollingFileAppender – tägliches Wegspeichern mit Angabe des maxBackupIndex. Damit wären also zwei von drei Anforderungen erfüllt. Die ZIP-Funktionalität fehlte noch. Meine Mission war es also, einen kleinen FileAppender zu schreiben, der den DailyMaxRollingFileAppender erweitert. Geboren war der DailyMaxRollingZipFileAppender (DAS ist mal ein Klassenname!):

Dieser FileAppender benennt zum Tageswechsel das Logfile mit Angabe des Datums um, verpackt es sofort als handliche ZIP-Datei, und löscht bei Bedarf das älteste Logfile (sofern maxBackupIndex erreicht). Ist ja eigentlich schon fast schade, dass Log4j sowas nicht von Haus aus kann. Falls jemand zufällig mit Log4j zu tun hat und damit was anfangen könnte: Bedient euch.

In related news: Hurra, endlich ein Syntax-Highlighter-Plugin für SuccessDenied. Als Programmierer kann man doch beinahe keinen Blog führen ohne ein solches Plugin.