Pokaż mi swoją sieć!

W ostatnią sobotę miałem trochę wolnego czasu, który postanowiłem twórczo wykorzystać realizując jeden ze swoich “krótkich pomysłów badawczych” :)

Dziś większość (wszyscy?) ze znajomych ma swoje profile na którymś z serwisów społecznościowych. Podstawową (a czasem jedyną funkcją) takiego serwisu jest możliwość dodawania do swojego profilu znajomych. Znajomi oczywiście mają swoich znajomych, którzy mają swoich znajomych…. Zaciekawiło mnie jak będzie wyglądał taki graf znajomych na obrazku. Napisałem crawlera, który zajął się zbudowaniem grafu z moich kontaktów, wynik wpuściłem do graphviz i oto mój graf kontaktów goldenline.pl:

Miniatura 1 Miniatura 1 wariacja na temat

Wygląda na to, że moja niewielka liczba kontaktów w GL zawiera sporo osób-hubów (czyli sprytnie sobie dobrałem te kontakty :)). Moja żonka także zażyczyła sobie taki obrazek. Jak widać ona zdecydowanie jest hubem:

Miniatura 2

Na koniec jeszcze kilka rozważań. Wybrałem GL, a nie np. naszą klasę głownie dlatego, że kontakty w GL są tworzone (przeważnie) z większym namysłem niż w przypadku n-k. Uznałem tym samym, że ‘jakość’ kontaktów będzie lepsza i ciekawsze mogą być wyniki. Nie bez znaczenia była też liczba danych do pobrania i przetworzenia - więcej kontaktów==więcej danych, ale niekoniecznie lepszy wynik.

Wracając do obserwacji - osoba-hub w drugim stopniu oddalenia od centrum (znajomi znajomych) ma ponad 10 tys osób!!! Co oznacza, że gdyby ów graf kontaktów dla huba wykreślić do 4 poziomu zapewne zawierałby wszystkie osoby jakie są zapisane na Golden Line. Niby większość z nas słyszała o eksperymencie Milgrama, ale jednak takie spojrzenie na rozpiętość naszej własnej sieci społecznej robi wrażenie.

Warto też uzmysłowić sobie, jak obliczeniowo zachłanną pracą jest obróbka takich większych grafów (know-how w tej dziedzinie to jedna z istotnych przewag Google’a). Przykładowo jeden z obrazków przy zbyt ambitnie ustawionych parametrach dotyczących wizualizacji zamordował mi serwer, który użyłem do obliczeń - po 4 godzinach serwer wymagał twardego resetu.

Tylko dla übergeeków :)

Zanim zaczniecie pisać własnego crawlera zwróćcie proszę uwagę, że wizualizacja grafu jest znacznie bardziej ambitnym zadaniem od jego budowy. Sam graphviz ma milion opcji, które pozwalają w istotny sposób wpłynąć na wygląd końcowego obrazka. Aby ułatwić rozpoczęcie zabawy załączam do pobrania dwa pliki z grafami w formacie DOT (plik1 ok. 19k, plik2 ok. 240k ). Jeżeli uda się wam wyprodukować ciekawe obrazki, liczę na możliwość ich obejrzenia.

[ ]

Komentarze (7)

Młot na railsy

Z emocji związanych z wypuszczeniem w świat bezbiura.pl zapomniałem wspomnieć o najważniejszym technologicznym aspekcie tego projektu. Ale już się poprawiam - otóż mam wrażenie, że bezbiura.pl jest jednym z pierwszych (pierwszym?) serwisem w naszej sieci korzystającym z frameworka Merb.
Przeczytaj cały wpis »

[ ]

Komentarze (5)

Backupeer v0.01

Zaczęło się banalnie od rozbudowy parku maszynowego webankiety… kiedy już całość pracowała pełną parą przyszedł czas na backupy danych. Ponieważ taka zmiana to jedyna realna szansa na wypróbowanie nowych rozwiązań postanowiłem poszukać nowego narzędzia do tego zadania. Istotnym argumentem za zmianą było także to, że zmieniły mi się wymagania stawiane przed systemem backupów, a stare skrypty szelowe były mało elastyczne (i średnio czytelne) - nic więc prostszego, znaleźć zainstalować i voila…
Niestety, poległem już na pierwszym etapie, oprogramowania do robienia kopii bezpieczeństwa jest chyba tyle i frameworków webowych w Javie, przejrzałem ileś-tam-projektów, najbliżej podium znalazł się backup-gem. Przyjrzałem się mu dokładniej i trochę zapał mi minął. Okazało się, że realizacja moich założeń będzie wymagała napisania sporej ilości kodu rozszerzającego backup-gem. Zirytowany tym stanem rzeczy postąpiłem jak rasowy geek… postanowiłem stworzyć własne, najlepsze na świecie (a jakże! :)) 1e10+1 rozwiązanie do obsługi backupów - tak narodził się Backupeer.
Przeczytaj cały wpis »

[ ]

Komentarze (13)

Ruby ma nowe logo…

Właśnie wpadło mi do RSSa. Zakończył się konkurs na oficjalne logo dla Ruby’ego. Wygrał projekt, który hmm… może się podobać… chyba tylko ultra hardcore’owym programistom korzystającym wyłącznie z trybu tekstowego i pozbawionym elementarnego poczucia estetyki. Mam wrażenie, że logo powstało przez losowe przestawianie bitów bezpośrednio na talerzach dysku twardego swego twórcy. Jednym słowem logo jest boleśnie paskudne.
Sami popatrzcie na ten żenujący zbitek pikseli:

Ruby logo

News o nowym logosie na rubyinside.com ma już ponad 70 komentarzy, przeskanowałem je i (na szczęscie) nie natrafiłem na żaden pozytywny :) Pozwolę sobie zacytować kilka perełek:

Wow is that a logo, looks like a 1980’s programming book cover.

Mój ulubiony komentarz:

Well, apparently Matz, while a fantastic programmer, has no taste what so ever. The “logo”, if you can even call it that, is horrible. Absolutely horrible. It looks like a joke, I had to double check the date to make sure today is not April first.

Ponieważ nie chcę kończyć pesymistycznie oto słowa optymisty:

The best part about it is that I never have to use it in anything that I do, ever.

Może to jednak tylko ponury żart na święto duchów…

[]

Komentarze (4)

Przetwarzanie logów? Proszę bardzo!

Przydarzyła mi się ostatnio konieczność napisania konwertera do logów. Chodziło z grubsza o zamianę logów wyplutych z aplikacji railsowej na format khm khm XML :) tak aby można było logi wygodnie analizować za pomocą narzędzia Apache Chainsaw (o sposobie wykorzystania tego narzędzia w Railsach pisałem już wcześniej ). Sprawa wydaje się trywialnie prosta, piszemy kawałek kodu w Rubym który wczytuje poszczególne linie z pliku wejściowego, a każdą linię poddaje działaniu RegExpów i sprawa gotowa ale…
Przeczytaj cały wpis »

[ ]

Komentarze (1)

« Poprzednie wpisy ·