Auf Eis gelegt

2008-01-11

Hallo zusammen,

Die deutsche Version von "The Daily WTF" wird hiermit auf unbestimmte Zeit auf Eis gelegt.

Bitte nicht klicken

2007-10-10

Dieses Popup hier hat Steve in Lotus Notes gefunden. Ich frage mich, ob solche Sachen passieren, wenn man Buttons klickt auf denen "nicht klicken" steht...

Hallo zusammen,

Ich würd es ja am liebsten nicht aufgeben, aber meine Zeit reicht schlichtweg nicht aus. Momentan kontrolliere ich die Artikel meiner fleißigen Helfer (denen ich hier nochmal danken möchte), komme jedoch kaum noch dazu selber Artikel zu schreiben. Da ich WTF sehr mag und gerne möchte, dass auch die deutsche Version so populär wird, wie die englische, wollte ich hiermit nach einem neuen Editor suchen. Er sollte die Verwaltung der Seite übernehm, grob über die ihm eingesendeten Artikel schauen, und ggf., falls dann wirklich noch Zeit bleibt, selber den einen oder anderen Artikel übersetzen (oder viel besser: selber schreiben).

Jemand hat einmal gesagt, der Weg zur Hölle sei mit guten Absichten gepflastert. Wer genau das war, kann man wohl nicht so genau sagen - derjenige hatte aber sicherlich Recht.

Einer von Sams Kollegen etwa hatte einen gut gemeinten Hang dazu, hilfreiche Dokumentation in Code-Kommentare zu packen, aber... nun ja:

Joe A. hatte kürzlich einige Probleme bei der Arbeit. Joe arbeitet für eine Firma, die herumfahrende Marquee-Schriftzüge produziert, mit einer HTML-ähnlichen Auszeichnungssprache. Es ist eine kleine Firma, deren Geschäftsführer wir hier einfach Tom und Bill nennen wollen.

Tom ist der technische Leiter und Haupteigentümer. Die Gründung dieses Unternehmens war seine Idee. Bill hingegen kam aus dem Rechnungswesen und hatte nicht wirklich Ahnung von technischen Dingen. Als einer der Techniker, berichtete Joe also regelmäßig an Tom.

Berechnungen mit Datum und Zeit sind nicht einfach. Wenn man nicht gerade metrische Zeiteinheiten benutzt, muss man einiges beachten. 60 Sekunden pro Minute. 24 Stunden pro Tag. 30, 31, 28 oder manchmal 29 Tage pro Monat. 52,irgendwas Wochen pro Jahr. Es ist einfach nicht mehr schön.

Zum Glück bietet fast jede Programmiersprache eine vorgefertigte Funktion an, die dem Programmierer die ganze Arbeit abnehmen. Natürlich gibt es auch "besondere" Programmierer, die die Bibliotheksfunktion einfach ignorieren und ihre eigene Funktion entwickeln. Wie zum Beispiel Yuris Vorgänger. Seine Aufgabe war eigentlich trivial: mit Hilfe von Perl 19 Sekunden zur aktuellen Zeit zu addieren.

Wer viel mit amerikanischen Websites zu tun hat, auf denen vertrauliche Daten behandelt werden - etwa beim Onlinebanking - dem wird vermutlich schon mal aufgefallen sein, dass immer mehr dieser Seiten ihre Authentifizierung verkomplizieren. Wenn man sich heute also bei einer dieser Seiten anmeldet, muss man nicht nur Benutzername und Kennwort eingeben sondern auch noch die mehr oder weniger geheime Antwort auf eine vorher ausgewählte Frage. Dabei handelt es sich um die so genannte neue Authentifizierungsart der "Möchtegern-2-Faktor-Authentifizierung".

Alles begann im Jahr 2005, als das Federal Financial Institutions Examination Council eine neue Richtlinie erließ: Authentication in an Internet Banking Environment - eine lohnenswerte Lektüre, wenn man Regulationen des Bankwesens durch die Regierung mag. Und wer tut das nicht? Alles in allem ging es dabei darum, dass Banken eine 2-Faktor-Authentifizierung zu implementieren hatten - bis zum Ende des Jahres 2006.

Wirklich klasse...

2007-09-27
Manchmal gibt es keinen Ausweg. Man muss eine DoNothing()-Prozedur oder eine IsTrue()-Funktion implementieren. Das war zumindest der erste Gedanke von D.C., als er eine Klasse mit einer Variable namens "self" (selbst) sah...


    class CERTlib
    {
      private:
        CERTlib*  self; // Zeiger auf sich selbst
      ...
    }


Er dachte zuerst an ein seltsames Provisorium oder, noch schlimmer, einen irreführenden Namen für eine sinnvolle Variable. Als er dann im Konstruktor nachsah, war alles klar...


    CERTlib::CERTlib(...)
    {
       // Speichere Zeiger auf sich selbst
       selbst = this;
       ...
    }


Das musste irgendein vergessenes Provisorium sein, dachte D.C., und durchsuchte den Code. Es stellte sich heraus, dass es noch an exakt einer Stelle verwendet wurde...


    fnCERTlibDeinitialisierung( this->self );


(Übersetzt von Andreas Moser)
Matt hat diese wenig hilfreiche Hilfsfunktion in einer großen JavaScript-Bibliothek gefunden:


    function bestaetigeNachricht(nachr)
    {
        if ( confirm(nachr) )
            return true;
        else
            return false;
    }


Denn wozu sollte man das verwirrende "bestaetige('irgendwas')" verwenden, wenn man dank der speziellen JavaScript-Bibliothek ganz einfach auf "bestaetigeNachricht('irgendwas')" referenzieren kann?

Normalerweise kommt man mit $300 nicht besonders weit, wenn es um maßgeschneiderte Software geht. Mit viel Glück reicht es gerade um einen Tippfehler in einer Anwendung, die bereits im Produktivbetrieb ist, auszubessern. Heutzutage allerdings, wenn jedermann über IT-Projektbörsen (siehe What the Spec?!?) an gewisse Entwickler aus gewissen fremden Ländern kommt, kann man mit $300 sogar gewaltige Sprüngen machen. Natürlich nicht gewaltig genug für Software, die auch tatsächlich funktioniert, aber sicherlich weit genug um Unmengen von kaputtem und wertlosem Code zu bekommen. Diese Erfahrung musste zumindest Christophers Kunde machen.

Christophers Kunde ist eine große (unter den fünf größten) Werbeagentur, die ursprünglich für eine Umfragesoftware eine Ausschreibung auf einer IT-Projektbörse platziert hatte. Nachdem wenige Monate vergangen und $300 ausgegeben worden sind, hatten sie etwa 500 PHP-Dateien - von denen 31 nur Klassendateien ohne irgendwelche Member waren - und ein Datenbank-Schema, in dem alle Felder ihre Daten als VARCHAR speicherten. Alles davon war „fast fertig“. Glücklicherweise hatten sie da noch Christopher, der es für sie „debuggen“ sollte.

Artikel Archiv >>