johker’s blog stories about me, my life, science and my trips

17Aug/080

reCAPTCHA

reCAPTCHA ist ein CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) Test bei dem man - im Unterschied zu den bekannten CAPTCHAs - keine sinnlosen Aufgaben löst oder Buchstaben-, bzw. Zahlenfolgen wiederholen muss, sondern dabei mithilft alte Bücher zu digitalisieren. Bei einem reCAPTCHA werden einem 2 verschiedene Wörter gezeigt, eines davon kann vom Computer "gelesen" werden und eines davon nicht. Kann man nun das dem Computer bekannte Word richtig erkennen, ist die Wahrscheinlichkeit sehr hoch, dass man auch das andere Wort richtig erkannt hat. Dadurch hilft man bei jedem Lösen eines reCAPTCHAs mit einen Teil eines Buches oder einer alten Ausgabe der New York Times zu digitalisieren.

Da ich das Konzept von reCAPTCHA ziemlich interessant finde, habe ich es in die Kommentierfunktion von Wordpress eingebaut; Nicht um fleißigen Kommentarschreibern auf die Nerven zu gehen, sondern um mitzuhelfen Wissen für uns und unsere Nachkommen zu erhalten, indem man es digitalisiert.

17Aug/080

Schaltjahre

Ein leidiges Thema. Man könnte meinen es sei ganz einfach ein Schaltjahr zu berechnen: Lässt sich ein Jahr ohne Rest durch 400 teilen, dann ist es ein Schaltjahr, lässt es sich ohne Rest durch 4 teilen, dann ist es auch ein Schaltjahr, lässt es sich aber ohne Rest durch 100 teilen, ist es kein Schaltjahr. Daraus folgt, dass das Jahr 2000 ein Schaltjahr ist, die Jahre 1800 und 1900 z.B. sind aber keine Schaltjahre, da sie sich zwar ohne Rest durch 4 teilen lassen, aber (leider) auch ohne Rest durch 100.

Wie ich darauf komme über Schaltjahre zu schreiben? Ganz einfach: ich habe zur Zeit beruflich mit dieser Problematik zu kämpfen und musste dabei leider feststellen, dass einige Programme Schaltjahre falsch berechnen. Zugegeben, Datumsarithmetik ist kein einfaches Thema, doch Schaltjahre sind - wie ich oben gezeigt habe - nun wirklich nicht schwer zu berechnen.
Ein Negativbeispiel für die Schaltjahrberechnung ist das Linux Kommandozeilen-Tool cal und seine Abkömmlinge calendar, ncal und ccal. Für sie ist das Jahr 1700 fälschlicherweise ein Schaltjahr, wie auch das Jahr 1500. Das Jahr 1800 hingegen ist korrekterweise kein Schaltjahr. Ich weiß leider nicht wie sich dieser Fehler eingeschlichen haben kann und habe auch noch keinen Blick in den Quellcode geworfen, doch ich habe mir fest vorgenommen einen Bugreport einzureichen... wenn ich denn nur wüsste wo, denn das Tool cal hat wohl keine eigene Homepage. Falls also jemand eine Idee hat, wo man den Bug melden kann; ich bin für jede Hilfe dankbar.

Zur Prävention dieses unnötigen Fehlers hier noch ein Stück Code, wie man ein Schaltjahr korrekt berechnet:

bool isLeap(int year) {
return ((year % 4) == 0) && (((year % 100) !=0) || ((year % 400) == 0));
}

Es ist C++-Code, sollte aber sehr leicht verständlich und schnell auf andere Programmiersprachen anwendbar sein.

17Aug/080

Erster Eintrag

Hallo und herzlich Willkommen,

das ist der erste Eintrag auf meinem Blog und dient lediglich dazu, alle zu begrüßen, die sich irgendwie hierher verirrt haben. Ich hoffe ihr habt alle Spaß beim Lesen und kehrt regelmäßig hierher zurück, um nachzuschauen, ob sich etwas getan oder verändert hat.

Viele Grüße,
Johannes