Ich stehe unter Druck

Seit Wochen plagten mich für mich unübliche Kopfschmerzen, die teilweise sogar zur Arbeitsunfähigkeit geführt haben und die auch nicht durch Aspirin zum Verschwinden gebracht werden konnten. Gestern, an einem “guten” Tag, habe ich mich zu einem Arztbesuch durchgerungen. Ergebnis: wahnsinnig hoher Blutdruck. Ursache: noch unklar.
Betablocker sollen mich erst einmal über die nächsten Tage bringen.
Wir werden sehen. Nach dem verlängerten Wochenende geht’s wieder zum Arzt. Wie ich das hasse.

Sorry an alle KundInnen; es kann zu Verzögerungen kommen.

Update 11. Mai 2009
Die “guten Tage” werden immer mehr; Kopfschmerzen und Schwindelgefühl sind weg. Lediglich die (vermutlich) durch die Betablocker verurachte Mattigkeit muss ich noch kontern, dann kann der Alltag wieder kommen. Keine Ahnung, was nun eigentlich los war. Keiner der zig verschiedenen Ärzte hat etwas finden können, was als Ursache bezeichnet werden könnte. Immerhin.

Paddock Girl

Paddock girls (or umbrella girls) is a term that has been used in professional motorcycle racing for many years. It refers to females employed to hold umbrellas above racers to protect them from the sun.

(Quelle: Wikipedia)

Wenn das Wetter weiter so schön bleibt — 18° Celsius und strahlend blauer Himmel Anfang April —, brauche ich wohl bald ein Fan Girl (von engl. fan = Fächer) für mein Büro. Bewerbungen mit aussagekräftigem Bildmaterial und Gehaltvorstellung bitte an meine Emailadresse senden. Danke.

Flash: Zeit im Format HH:MM:SS

Jetzt ist es tatsächlich mal erforderlich gewesen, für ein Flash-Projekt Videospieldauern im Format HH:MM:SS (Bsp.: 01:37:25) auszugeben, die ursprünglich in Form von Sekunden vorliegt. Hier meine Herangehensweise in plain old ActionScript.

function getFormattedTime(timeInSeconds) {
var hours = 0;
var minutes = 0;
var seconds = 0;
var hourOutput = "";
var minOutput = "";
var secOutput = "";
var output = "";

hours = Math.floor(timeInSeconds/3600);
minutes = Math.floor((timeInSeconds-(hours*3600))/60);
seconds = Math.floor((timeInSeconds-(hours*3600))%60);

if (hours<10) {
hourOutput = "0"+hours;
} else {
hourOutput = hours;
}

if (minutes<10) {
minOutput = "0"+minutes;
} else {
minOutput = minutes;
}

if (seconds<10) {
secOutput = "0"+seconds;
} else {
secOutput = seconds;
}

output = hourOutput+":"+minOutput+":"+secOutput;
return output;
}

trace(getFormattedTime(5845));

Flashspiel gegen Hacker sichern

Seit ich mit Flash arbeite (1998, seinerzeit Flash 3), beschäftigt mich die Frage, wie man es schaffen könnte, ein Flashspiel schummelsicher zu gestalten.

Oft werden mit Flash Spiele umgesetzt, bei denen es am Spielende darauf hinausläuft, den erzielten Punktestand in eine Highscoreliste einzutragen. Beim Übertragen des Punktestands (meist in Verbindung mit dem SpielerInnennamen) kommen in der Regel die aus HTML-Formularen bekannten HTTP-Request-Methoden POST oder GET zum Einsatz, um einem serverseitigen Skript die zu speichernden Daten zu übergeben.
Wenn man sich dazu vor Augen hält, dass ein Flashspiel üblicherweise clientseitig, also auf dem Rechner der/des Spielers/Spielerin liegt, dass das SWF-Format offen dokumentiert ist und dass es mehrere Programme gibt, die eine SWF-Datei dekompilieren können, kann man sich vorstellen, dass es nahezu unmöglich erscheint, Schummelsicherheit zu gewährleisten, zumal selbst die pfiffigste Verschlüsselungsmechanik quasi im Klartext für jedermann sichtbar ist, nachvollzogen und für ein gefälschtes Ergebnis eingesetzt werden kann.
Oft reicht es aus, beispielsweise mit dem Firefox-Plugin LiveHTTPHeaders die beim Speichern des Ergebnisses übertragenen Variablen und Werte zu überwachen und auszuprobieren, dem angesprochenen Auswertungsskript gefälschte Daten zu übermitteln.

Weil es so einfach ist, bei den meisten Flashspielen zu schummeln, habe ich in der Vergangenheit KundInnen immer dazu geraten, Flashspiele niemals mit hohen Gewinnen (“Erster Platz gewinnt ein Auto/1000 EUR/etc.”) anzubieten. Meist lief es auf eine Verlosung relativ niedrigpreisiger Gewinne unter den Top100 aller eingetragenen SpielerInnen hinaus. Das läuft zwar dem üblichen Gedanken zuwider, dass der erste Platz den größten Gewinn einstreichen sollte, bietet aber Hackern weniger Anreiz, das Spiel manipulieren zu wollen (natürlich kann ein böswilliger Hacker bei diesem Szenario auch einfach 100 gefälschte Ergebnisse senden, um seine Gewinnaussichten zu maximieren).

Ein paar Ideen zur Erhöhung der Sicherheit in Flashspielen finden sich in den Kommentaren zu diesem Artikel im “PHP Security Blog”. Diese Ideen — beispielsweise die Protokollierung jeder Mausbewegung und jedes Mausklicks während eines Spiels und deren Auswertung zur Verifizierung eines validen Ergebnisses — erfordern jedoch zumeist einen sehr hohen Entwicklungsaufwand, der zumindest meiner Erfahrung nach von KundInnen nicht bezahlt wird.

Weitere Links
Generate a keypair using OpenSSL
RSA Algorithm
Writing Encryption function in flash?
Creating more secure SWF web applications
RSA

Thunderbird Add-on Correct Identity

Ever sent mail from the wrong email address because you forgot to select the correct identity in the compose window?

Ist mir jedenfalls bis vor kurzem noch ständig passiert — in Thunderbird eine Antwort auf eine Email verfasst und erst nach dem Absenden festgestellt, dass ich dem Empfänger gegenüber eigentlich nicht als bla@cs.com, sondern als blubb@cs.com auftreten (d.h. eine andere Absendeadresse anzeigen lassen) wollte.

Dank dem Thunderbird Add-on Correct Identity (z.Zt. Version 1.3.1) wird es möglich, voreinzustellen, welche Identität zum Versenden von Emails verwendet werden soll.

Metacritic.com

Exzellente Adresse, um mehrere Meinungen zu einem und demselben Film, Computerspiel, Buch und so weiter zu erhalten: Metacritic.com.

Metacritic compiles reviews from respected critics and publications for film, video/dvd, books, music, television and games.

Our unique Metascores show the critical consensus at a glance by taking a weighted average of critic grades.

Grafikkartentreiber werden auch immer größer

Ich lade gerade den aktuellen Treiber für meine GeForce 9800 GTX aus dem Netz und suchte für einen kurzen Augenblick den Elefanten, der auf meiner Internetleitung stehen musste. Dann bemerkte ich, dass die Datei über 107 MB groß sein soll. Was ist denn da alles noch mit drin — Quake 1-4 gezippt??

Irgendwie kommt mir DSL schon wieder zu langsam vor…

ActionScript: “Hex nach RGB”-Konversion

Es gibt bestimmt schönere, schnellere, komfortablere Lösungen, aber meine hilft mir fürs erste.
Ich hätte gern den Rückgabewert der Funktion als “:Array” typisiert, aber dann meckert mich der Compiler an, weil ja als Rückgabe auch ein Boolean herauskommen kann. Was macht man in solchen Fällen nochmal? Hatte ich doch jüngst bei Colin Moock (seltsamer Name für einen Iren. Oder ist der am Ende gar keiner?) gelesen…
Zudem besteht die Rückgabe der Funktion in einem Array mit drei Elementen. Aber man kann sich ja jederzeit etwas anderes daraus formen, sollte es nötig werden. Weiterlesen