Strict Standards: Declaration of action_plugin_importoldchangelog::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /kunden/doogie.de/wiki/lib/plugins/importoldchangelog/action.php on line 8

Strict Standards: Declaration of action_plugin_bloglinks::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /kunden/doogie.de/wiki/lib/plugins/bloglinks/action.php on line 191

Strict Standards: Declaration of action_plugin_tag::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /kunden/doogie.de/wiki/lib/plugins/tag/action.php on line 117

Strict Standards: Declaration of action_plugin_importoldindex::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /kunden/doogie.de/wiki/lib/plugins/importoldindex/action.php on line 57

Strict Standards: Declaration of action_plugin_discussion::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /kunden/doogie.de/wiki/lib/plugins/discussion/action.php on line 1144

Strict Standards: Declaration of action_plugin_feedmod::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /kunden/doogie.de/wiki/lib/plugins/feedmod/action.php on line 133

Strict Standards: Declaration of action_plugin_blockquote::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /kunden/doogie.de/wiki/lib/plugins/blockquote/action.php on line 61

Strict Standards: Declaration of action_plugin_blog::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /kunden/doogie.de/wiki/lib/plugins/blog/action.php on line 171

Strict Standards: Declaration of action_plugin_include::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /kunden/doogie.de/wiki/lib/plugins/include/action.php on line 142

Strict Standards: Declaration of action_plugin_openid::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /kunden/doogie.de/wiki/lib/plugins/openid/action.php on line 534

Warning: Cannot modify header information - headers already sent by (output started at /kunden/doogie.de/wiki/lib/plugins/importoldchangelog/action.php:8) in /kunden/doogie.de/wiki/inc/auth.php on line 313

Warning: Cannot modify header information - headers already sent by (output started at /kunden/doogie.de/wiki/lib/plugins/importoldchangelog/action.php:8) in /kunden/doogie.de/wiki/inc/actions.php on line 163
DoogiesWiki [lokalistenauslesen]

Die Lokalisten

Lokalisten.de ist eine nette Online Community. Nachdem man sich registriert hat, kann man dort nach seinen Freunden suchen und sich untereinander verlinken. So ergibt sich ein netter Freundesbaum. Schon vor Jahren habe ich mir so einen Baum aller meine Freunde mal per Hand gemalt. Mich hat immer schon interessiert, wie sich meine Freunde untereinander kennen.

Und wenn ich die Lokalisten Webseite anschauen kann, dann kann ein Programm das auch. Also habe ich mir einen kleines Programm in PHP geschrieben, das sich bei Lokalisten als mich einlogt und dort alle meine Freunde ausliest, und deren Freunde, usw.

Diese Daten habe ich dann in ein mächtiges Tool gesteckt, welches Graphen sehr gut anzeigen kann. Das kam dann dabei (nach stundenlangem Rechnen) heraus:

  • Mein Lokalisten Netzwerk.jpg

FAQ

Hast du die Lokalisten Seite gehackt? Nein, das Script benutzt meinen ganz normalen Account mit meinem Benutzernamen und meinem Passwort.
Ich will auch so ein cooles Bild mit mir in der Mitte. Kein Problem, kostet 10 Euro. :-)
Können die Leute von Pro Sieben und Sat1 jetzt auch alle meine Freunde auf diese Weise sehen? :!: *JA* :!: denn die haben lokalisten.de gekauft.
Was machen die mit dieser Information? Wenn wir Glück haben, schicken sie uns nur "bessere" Werbung (also z.B. nur Werbung für Snowboards, wenn du bei Lokalisten angegeben hast, dass du gern Snowboard fährst). Wenn wir Pech haben, dann bekommen bald alle dein Freunde auch diese Werbung.

Technisches Kauderwelsch

Der Crawler ist ein kleines PHP script.1) Es logt sich mit meinem ganz normalen Benutzernamen und Passwort bei lokalisten.de ein. Dann liest es den Freundesbaum mit curl aus und ich parse den HTML source code mit regular expressions.2) Das weiterblättern zur nächsten Seite im Freundesbaum ist wegen der Struts statemachine auf der Serverseite etwas tricky, aber ging. Das rekursive auslesen aller Freunde allein nur bis zur Rekursionstiefe 2 (zwei), also alle meine Freunde und deren Freunde, benötigt schon über eine halbe Stunde.

Als Ergebnis erzahlte ich dann ein XML File im graphML Format. Und jetzt kommt der eigentlich schwierige Teil. Diese Datei enthält ja ausschließlich Information über Ecken und Kanten eines Graphs. Da steht überhaupt nichts darüber welche Knoten wo angezeigt werden sollen. Diesen Graphen dann tatsächlich anzuzeigen brauchte Gehirnschmalz von mehreren Doktorarbeiten.3)

Funktioniert ungefähr so: Man platziere jeden Knoten an einer zufälligen Stelle. Die Kanten verhalten sich wie federn. Sind zwei verbundenen Knoten weit voneinander entfernt, so ziehen sie sich an. Aber nur bis zu einem Minimalen Abstand voneinander, unterhalb dessen sie sich wieder gegenseitig abstoßen. Nur verbundene Knoten ziehen sich an. Doch alle Knoten stoßen sich untereinander ab. Nach ein paar Iterationen organisiert sich der Graph wie von selbst. In Prefuse ist das sogar eine Animation. Macht suuuper Spaß da zu zu schauen.

Update

Nachdem ich die Nachricht über dieses Miniprojekt an alle meine Freunde rumgeschickt hatte, verdoppelten sich zwei Tage lang die Zugriffe auf meine Webseite. Die übertragene Datenmenge verfünfachte sich sogar. Freut mich, dass sich so viele von euch das Bild angesehen haben und mein kleines Projekt wohl auf Interesse stößt.

Update 2

Wahnsinn, wenn man einmal mit einem Thema angefangen hat, dann wird man nicht mehr fertig. Danke an KfP für diese Links

Update 3

Und es nimmt kein Ende: Linkbar ist die Diplomarbeit von Reiner Pittinger über die Darstellung von "Social Network Graphs". Er hat sogar eine animierte Darstellung implementiert. Einmalig!

1) Den Sourcecode geb ich eigentlich nur ungern her. Aber wers sehen will, kann ja mal höflich fragen …
2) Zum Beispiel um die Freunde zu finden: $pattern = '#<a href="/web/showuser/friendTree.do\?method=selectFriend&amp;account1Id=(\d+)" class="(Row2|Row2Active)"><br><br><img src="(http.*)"><br>(\w+)</a>#';
3) unter anderem den Barnes-Hut-Algorythmus
 
lokalistenauslesen.txt · Zuletzt geändert: 06.08.2007 14:45 (Externe Bearbeitung)
Recent changes RSS feed Driven by DokuWiki