NOTE: This is an archive of my old blog. Go to http://gonium.net for my current website.

Code Kata: Project Euler #4, Finding Palindromes

Posted by md on April 19, 2008

This weekend, I solved problem 4 of Project Euler:
A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99. Find the largest palindrome made from the product of two 3-digit numbers.
I designed a routine that checks whether a given number is a palindrome. This routine is then used inside two loops iterating from 999 downto 0. The first hit is the largest palindrome. The core functionality is here: bool Problem4::isPalindrome(long number) { bool retval = false; std::vector digits; while (number > 0) { long lastdigit = number % 10; digits.push_back(lastdigit); number = number / 10; } reverse(digits.begin(), digits.end()); std::vector::iterator front = digits.begin(); std::vector::iterator back = –digits.end(); retval = false; while (! (front >= back)) { if ((*front) == (*back)) { retval = true; // move iterators to the next digits front++; back–; } else { // cannot be a palindrome, back out retval = false; break; } } return retval; } This implementation reverses the vector. By using the front and back operators in the other direction, this could be left out. But it serves its purpose for now. You can get the full sourcecode from the download page. Please note that the code in the tarball calculates *all* palindromes smaller than 1000000. The picture was CCed on flickr by TisseurDeToile -[mangerait bien un petit chat]-.

Vertrauen in Internetbanking? 1

Posted by md on April 19, 2008

Fehlermeldung der Pluscard GmbH beim Abrufen meiner Kreditkartenabrechnung

Eigentlich mag ich ja Internetbanking. Zu normalen Banköffnungszeiten arbeite ich, und ich bin nicht an lokale Banken gebunden. Meine bisherigen Erfahrungen waren auch recht positiv – allerdings beschleichen mich leichte Zweifel, wenn ich mir die Fehlermeldungen der Pluscard GmbH angucke.

Früher hab ich meine Kreditkartenauszüge einfach via Papierpost bekommen, kein Problem. Seitdem ich jedoch eine neue Kreditkarte habe, bekomme ich die nur noch am Kontoauszugsdrucker – oder für 55 ct. via Post. Da ich oft vergesse, am Kontoauszugsdrucker vorbeizuschauen, hab ich mich für den Onlineabruf bei der Pluscard GmbH freischalten lassen.

Ich hatte schon öfter Probleme, mich dort erfolgreich einzuloggen. Heute morgen bekomme ich jedoch obige lustige Fehlermeldung (auf das Bild klicken für eine größere Version). Abgesehen davon, daß es einfach schlechter Stil ist, seinen Kunden so eine Seite zu präsentieren, verwundert mich die Technik dahinter:

Die schreiben meine Logindaten unverschlüsselt in eine “Fehler”-Datenbank!

Meine Kreditkarten- und Paßwortdaten habe ich natürlich ausgegraut, aber die standen da im Klartext. Drumherum noch viele Informationen über den Linux-Rechner (Ich tippe auf SuSE Linux irgendwas). Und was bitte schön haben KDE und Gnome auf einem Webserver verloren? Ich selbst soll also beim Onlinebanking keine Paßwörter notieren, meine Kreditkartennummer nicht weitergeben etc. Aber wenn es um die Fehlersuche geht, dann darf der Admin mal eben schnell alle möglichen Daten einsehen. Hm, was passiert wohl, wenn es jemandem gelingt, die Datenbank zu klauen?

Das eine Packstation mal ausfällt, ist ärgerlich, aber ok. Beim Onlinebanking erwarte ich wesentlich mehr.

Code Kata: Project Euler #3 + CMake distributions

Posted by md on April 13, 2008

11 is a prime This weekend, I tackled the Project Euler problem #3:
The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 600851475143 ?
Pretty straightforward: Just test and recurse. Continue reading...