PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Gewinner der großen Geburtstagsverlosung

with 13 comments

Es ist soweit, die Geburtstags-Aktion ist beendet und nun werden wir die Gewinner der Preise bestimmen. Erst einmal an dickes Dankeschön an alle, die mitgemacht haben, fleißig getwittert und gebloggt haben und somit insgesamt 155 Kommentare zusammengekommen sind. Davon sind 2 Einträge Trackbacks, 2 Einträge waren Ergänzungen um Twitter-Links, und 3 Einträge sind ungültig, mehr dazu ganz unten. Wir haben also 148 gültige Kommentare, die wir nun in den Lostopf werfen. Auch hier nochmal ein großes Dankeschön an die Verlage und Firmen, die die Preise zur Verfügung gestellt haben!

Um nun die Gewinner zu bestimmen habe ich ein kleines PHP-Script geschrieben welches uns ganz unparteiisch eine Liste von Namen ausspuckt. Das Verfahren ist von jedem von euch nachvollziehbar, es steckt kein Zufall drin, sondern nur eine besonderer Berechnung der Reihenfolge. Und zwar werden diejenigen gewinnen, bei denen der MD5 der Email-Adresse möglichst „nah“ am MD5 des Beginns der Aktion (sprich dem 1. Geburtstag) liegt.

Da euch wahrscheinlich die Liste der Gewinner am meisten interessiert bekommt ihr sie zuerst. Danach beschreibe ich noch im Detail, wie sie zustande gekommen ist und auch wie das Script dazu aussieht. Die Liste der Gewinne ist übrigens noch um weitere Planning-Poker-Sets erweitert worden, sodass ich nun 25 Preise zu vergeben habe. Die zusätzlichen Planning-Poker-Sets stammen von agile24.com und wibas.com. Vielen Dank!

Also, hier die Gewinner der Aktion mit dem jeweiligen Preis:

NameEmail-AdresseMD5AbstandGewinn
Gjero Krsteskigjero@***.def8c4fdde8545731ac4a77b52e4896595427Business VServer
chrzachri***@web.de3febc8a5750763cf7fb63d6d8952ec81452PHPStorm Lizenz
Sebastiangjlne***@googlemail.comf3eba01107eaed3148c25ddba9260f7d465PHPStorm Lizenz
Romanblad***@googlemail.comb6cbe5b44b06610dc0e74a38dcf06c13474PHPStorm Lizenz
volkervolker@k***.dee2dcf355aa02f68f3a794edc963eebd6476PHPStorm Lizenz
mattmail@mer***.bizf93ffd047752b0baa18429f291018c92479PHPStorm Lizenz
danielgorekee@***.dea3e0244d136cc06dd5b9bb25eb949d06526Agile Prozesse
monasimghost@***.dec767e3a77516f24013365eed487ddbc4529Agile Prozesse
Spiderlord@run***.de86e5cf9a39a0058e208a0b972652b000529High Performance LAMP
Steffen Rühlmannsteffen.r***@***.comc15e6fe4022540dc12b881ead8aed329542High Performance LAMP
Maxmax@q***.coma1ec8809a92ecdfb0691827ad42fa447552IT Performance
Michainfo@ai***.def3dba5fbc3238742330b2b29ff9aad49565IT Performance
Jörgwebmaster@webb***.de66a944410703eb27c04200956354fe94565CSS Techniken
Ludwiglo@gee***.orgd5b6f0b23c2d961840805f6c6870b04d567PHP 5.3 und MySQL 5.5
BOBmoraineberge***@gmx.net1ccc856877e0e7bd1923ba3ce5af0d45581Apache 2.2
Bernhardherl***@gmx.dea2b41f38d7914971a25f2d9a679b1c965835 Planning Poker Sets
Adijafe***@gmx.ded68ecac7ee46b5a62e998168e205cde6588Demobereich 6 Monate
Timtim@ger***.debfc84d2765f3804bdfb46736dab89a63603Demobereich 3 Monate
Markuspublic@markus-***.deb601ccd782a9438437df342dfd9fbbb3605t3n Magazin
timtim@ain***.defd830c269491797925e5cca87028c8d0612t3n Magazin
Renétre***@gmx.ch9b7fb035c134c32252604a53cfc46fa7616t3n Magazin
campan43dominik.c***@g***.com53ed6ad702e043073dcac21db6c1e8696165 Planning Poker Sets
Andreasroth***@gmail.coma34ffbd7b28d3ef870f70ebe164188316265 Planning Poker Sets
Matthiaskirs***@t-online.de738bad5e0879269d7f64d2873e44a8516284 Planning Poker Sets
bernd kueblerKueble***@k***.de07fd6f8d29302d2dd629e0c5c6220b356334 Planning Poker Sets

Herzlichen Glückwunsch an alle Gewinner!  Ich habe euch bereits angeschrieben und um eure Adresse gebeten, damit ich euch die Gewinne zuschicken kann. Bei Gutscheinen und Lizenzen habe ich euch geschrieben wie ihr diese einlösen könnt.

Ich hoffe dass es euch Spaß gemacht hat, ich möchte mich auf jeden Fall ganz herzlich bei euch bedanken, nicht nur fürs Mitmachen bei der Verlosung sondern auch für das Lesen der Artikel, für das Mitmachen bei den Wettbewerben und für die Diskussionen. Danke dafür!

————-

Nun zur Berechnung:

Der MD5 von michael@domain1.de lautet bf47932ca15e0ba6052153870dead359
Der MD5 des 1. Geburtstages, mit dem vergleichen wird lautet f9aced390441f72d90b73e1ba476da18

Nun vergleichen wir die beiden Hashes. Wenn eine Stelle gleich ist ist das ein Abstand von 0, der Abstand beispielsweise zwischen b und f ist bekanntlich 4. Da in Email-Adressen auch Sonderzeichen wie Punkt und Minus vorkommen können nutzen wir einfach die ASCII-Tabelle, um die Abstände leicht errechnen zu können. Wenn wir dieses Verfahren nun auf den ganzen Hash anwenden erhalten wir eine Summe, die die Gleichheit der Hashes ausdrückt. Wir zählen nicht nur die Anzahl der unterschiedlichen Stellen (Hamming-Abstand), sondern auch wie weit die einzelnen Stellen voneinander abweichen.

Die Email-Adressen, die wir dazu brauchen holen wir uns aus derWordpress-Datenbank:

SELECT *
FROM wp_comments
WHERE comment_post_ID = 1644
AND comment_approved = 1
AND comment_author_email != ''
AND comment_author_IP != '84.156.96.31'
AND comment_date_gmt < '2010-07-13 23:59:59'
GROUP BY comment_author_email

Und damit füttern wir das folgende PHP-Script:

<?php
$emailAddresses = array(
    ''  // hier alle Email Adressen eintragen
);
date_default_timezone_set('Europe/Berlin');
$md5Date = md5(mktime(16, 9, 0, 7, 10, 2010));

// ======================================================

$distances = array();
foreach ($emailAddresses as $emailAddress) {
    $distances[$emailAddress] = calcDistance(md5($emailAddress), $md5Date);
}

asort($distances);
output($distances);

function calcDistance($md5EmailAddress, $md5Date) {
    $sum = 0;
    for($position=0; $position < strlen($md5EmailAddress); $position++) {
        $sum += abs(ord($md5EmailAddress[$position])-ord($md5Date[$position]));
    }
    return $sum;
}

function output($distances) {
    foreach ($distances as $email => $distance) {
        echo str_pad($email, 50).' '.
            md5($email).' '.
            str_pad($distance, 5, ' ', STR_PAD_LEFT).
            "\n";
    }
}

Ich erwähnte ja bereits dass es auch eine Disqualifizierung gab. Das lag daran dass eine Person unter 3 verschiedenen Namen und Email-Adressen kommentiert hat. Anton P., das war unnötig, so leider nicht ;-(

Written by Michael Kliewe

Juli 14th, 2010 at 7:15 am

13 Responses to 'Gewinner der großen Geburtstagsverlosung'

Subscribe to comments with RSS or TrackBack to 'Gewinner der großen Geburtstagsverlosung'.

  1. Schade, hätte mich gefreut, denn die Preise waren echt super 🙂

    Aber Glückwunsch an alle Gewinner, habt Spaß mit euren Gewinnen 😉

    Arvid Bergelmir

    14 Jul 10 at 08:29

  2. Jo schöne Aktion, coole Idee. Hat ja einigen Traffic verursacht 🙂

    Ralph Meier

    14 Jul 10 at 08:42

  3. vielen dank. ich bin zwar bisher ZDE benutzer, aber gerne schaue ich mir die phpstorm ide mal an. meine ZDE ist eh schon mittlerweile in die tage gekommen 😉

    volker

    14 Jul 10 at 08:55

  4. mal gucken, ob das t3n mich doch von Typo3 überzeugen kann. Derzeit bin ich noch fest davon überzeugt, dass Typo3 „entwickler“ keine Ahnung vom programmieren haben.
    Der Sourcecode ist grauenhaft und TypoScript total sinnfrei. Ich kenne viele Typo3 Entwickler die sogar auf dem Liveserver unter einem anderen Typo Web testen u.s.w., einfach durchweg grauenhaft …. Ich habe jedoch auch noch kein CMS gefunden, welches mich voll befriedigt. Auf dem ersten Blick macht http://www.kooboo.com/video den besten Eindruck auf mich.

    tim

    14 Jul 10 at 10:01

  5. Schade, aber auch meinerseits gratulation an alle:)

    Und nette Idee mit der Gewinnerermittlung!

    ragtek

    14 Jul 10 at 10:12

  6. ha, das ist mal ein netter weg um die gewinner zu ziehen. der gefällt mir!

    und danke für den gewinn 🙂

    Max

    14 Jul 10 at 10:21

  7. Gratulation an die Gewinner 🙂

    killerbees19

    14 Jul 10 at 10:22

  8. Vielen, vielen Dank! 😀 Ich freue mich schon, PHP Storm mal auszuprobieren, neue IDEs schaue ich mir gerne an 🙂

    Vielen Dank für die tolle Verlosung!

    Sebastian

    14 Jul 10 at 11:25

  9. Das erste Mal, dass ich etwas gewonnen habe 🙂
    Vielen Dank also auch von mir für die tolle Verlosung!

    mona

    14 Jul 10 at 14:32

  10. Danke auch von mir 🙂
    Mal schauen was ich unter einen „Planning Poker Set“ zu verstehen habe ^^

    campan43

    14 Jul 10 at 16:43

  11. juhu, ein t3n Magazin gewonnen…

  12. Wow!!!! Da freue ich mich aber. Habe seit langem nichts gewonnen, und gleich den Hauptpreis. Das kommt mir grade zugute, denn ich möchte bald einen Privatprojekt starten und das passt hervorragend. Danke, Danke, Danke!!!! 🙂

    Gjero Krsteski

    15 Jul 10 at 08:47

  13. Danke für die schnelle Zusendung des Gewinns – das Buch „High Performance LAMP“ liest sich bisher sehr interessant !

    Danke für das Gewinnspiel und viel Erfolg auch weiterhin mit dem Blog !

    Steffen

    27 Jul 10 at 10:37

Leave a Reply

You can add images to your comment by clicking here.