Schlagwort-Archive: Javascript

javaappletGerade kürzlich dachte ich so bei mir: Warum eigentlich nicht mal wieder einen Java-Artikel schreiben? Die Zeit ist reif dafür. Oracle bringt es mit seiner Intransparenz und seiner faulen Update-Politik offenbar noch fertig, Java komplett in den Ruin zu reiten. In der Öffentlichkeit hatte Java nie einen schlechteren Stand. Dass inzwischen selbst JavaScript ein sehr viel besseres Ansehen als Java genießt, das ist wirklich ein großes Armutszeugnis, das ich Oracle ausstellen muss. Wir erinnern uns an das Jahr 1997: JavaScript war ursprünglich diese nervige Browserspielerei, mit der man den Rechtsklick unterbinden und die Statusleiste im Internet Explorer für blöde Laufschriften missbrauchen konnte.

Java hat bestimmt so einige kleine Problemchen, aber im Moment wird zu Unrecht geschimpft. Das miese Browser-Plugin ist es, das ständig mit neuen Sicherheitslücken negativ in die Schlagzeilen gerät. Dennoch hagelt es jetzt Kommentare in der Art wie: „Java gehört in den Sondermüll und ich kann nur jedem raten, es zu deinstallieren!“. Die Probleme waren kürzlich scheinbar sogar so gravierend, dass das Bundesamt für Sicherheit in der Informationstechnik (BSI) in diesem Drama unbedingt mitspielen wollte und fortan ebenfalls jedem empfiehlt, bloß schnell Java loszuwerden. In meinen Augen allerdings eine ziemlich peinliche Äußerung, die mir beweist, dass der Laden dort auch nur von den üblichen Internetausdruckern geführt wird, die keine Fachkompetenz besitzen. Das ist wie als würde man ständig empfehlen, Windows zu deinstallieren, wenn im Internet Explorer mal wieder eine Sicherheitslücke offengelegt wurde. Das ist mit Kanonen auf Spatzen schießen.

Natürlich würde dort NIE jemand empfehlen, Windows zu deinstallieren. Warum eigentlich nicht? Und wenn wir schon bei Sicherheitslücken sind, wieso empfiehlt das BSI nicht ausnahmsweise was Sinnvolles, z.B. solchen fahrlässigen Mist wie WhatsApp zu deinstallieren, wegen der ganzen Sicherheitslücken, wegen dem komplett unverschlüsselten Traffic, und wegen dem fragwürdigen Datenschutz beim Versenden des kompletten Adressbuches? Aber das ist wohl eine andere Geschichte.

Nichtsdestotrotz hat Java dadurch wieder einen spürbaren Imageschaden abbekommen. Witzigerweise wird Java immer nur dann verteidigt, wenn jemand Minecraft erwähnt. DAS ist so ziemlich der ultimative Beweis dafür, dass es Java schlecht geht: Wenn ein mäßiges aber weitverbreitetes Indie-Spiel so ziemlich das Einzige ist, womit man noch zeigen kann, dass Java manchmal auch ein bisschen toll sein kann. Mich als Java-Entwickler stört das natürlich schon ein wenig, weil Java eigentlich sehr vielseitig und extrem nützlich ist, wenn man platformunabhängig entwickeln möchte. Programmieren in Java macht einfach Spaß und Probleme habe ich damit auch keine.

Nun wollte ich eigentlich einen Beitrag über einen winzig kleinen Fehler in Java schreiben, der mir kürzlich aufgefallen ist, aber ich glaube wenn Java im Moment etwas am wenigsten gebrauchen kann, dann sind das noch mehr Nörgler. Stattdessen werde ich mich mit diesem Beitrag einfach öffentlich solidarisch zu Java bekennen. Ich bin gerne Java-Programmierer und ich würde es am liebsten noch eine Weile bleiben. Es gibt nichts zu bereuen.

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:

Im Jahre 1982 entwickelte Don Priestley ein kleines witziges Labyrinthspiel für den Sinclair ZX81: Mazogs. Als wackerer Held musste man sich durch einen Irrgarten voller Riesenspinnen (den Mazogs) kämpfen um eine Schatztruhe zu finden. Das Spiel ist gewonnen, sobald man mit der Truhe das Labyrinth verlässt. Hilfreich sind dabei Schwerter, Nahrung und Gefangene im Labyrinth, die einem den Weg weisen können, wenn man sie befreit. Wird der Spieler von den zahlreichen Mazogs getötet, ist das Spiel selbstredend verloren.

Bereits ein Jahr später entwickelte Don Priestley das Remake Maziacs für den ZX Spectrum, das die besseren technischen Möglichkeiten des Homecomputers ausnutzte und eine bessere (höher aufgelöste) farbige Grafik bot. 1987 hat der (höchstwahrscheinlich deutsche) Programmierer Dietrich Raisin eine eigene Version von Maziacs in der Programmiersprache Omikron-BASIC geschrieben, dem damals schnellsten BASIC-Interpreter für den Atari ST. Seine Version hatte eine schöne comicähnliche Grafik, die das Spiel sogar noch witziger machte, allerdings immer noch keinen Ton. Außerdem hat er seine Version als Public Domain freigegeben.

Maziacs war eines der Spiele, mit denen ich als Kind unzählige Stunden verbrachte. Da das Spiel in Form des Quellcodes vorlag, erzeugte ich sogar zahlreiche eigene Maziacs-Modifikationen, die das Spiel schwerer machten oder die Sprites austauschten, damit der Spieler als Spinne spielen konnte. Kürzlich habe ich diesen Schatz auf einem Backup meiner alten 20 MB Atari ST-Festplatte wiederentdeckt. Ein Glück, dass ich wirklich alles aufhebe. So kann ich nun in einem Youtube-Video das Gameplay dieses echt tollen Spiels präsentieren.

Nebenbei kam mir die Idee, den Quellcode vielleicht einfach mal für eine moderne Programmiersprache zu portieren, wobei das Spiel selbst eine 1:1-Umsetzung sein sollte. Nach kurzer Überlegung dachte ich mir, dass das doch eine wunderbare Gelegenheit wäre, mich in HTML5/Javascript-Programmierung zu üben. Während ich dies hier schreibe, habe ich bereits damit begonnen, wichtige Teil des Quellcodes zu analysieren, so z.B. den Algorithmus zur Erstellung eines Labyrinths oder den Pathfinding-Algorithmus.

Fremden Quellcode zu lesen ist oft eine schwierige Sache, noch dazu wenn er in einem BASIC-Dialekt geschrieben ist, den man selbst nie verwendet hat und dessen Spezifikationen man auch nicht mehr nachlesen kann, aber ich habe erstaunlich schnell Fortschritte gemacht. Sobald ich die Algorithmen verstanden und das Grundgerüst in Javascript geschrieben habe, geht der Rest fast von alleine. Mal schauen ob was daraus wird.