Kontakt z pomocą

Odpowiadamy e-mailem, zwykle w ciągu dwóch dni.

Google reCAPTCHA sprawdza to zgłoszenie pod kątem nadużyć; dane trafiają do Google. Skrypt ładuje się dopiero po otwarciu formularza.

← Wszystkie wpisy

Lista „kto jest online”, zapowiedziana w 2012 i już działa

25 sierpnia 2012 roku wpis na tym blogu ogłosił, że pola statystyk zaczęły odświeżać się samodzielnie, i kończył się zdaniem: „Zaplanowana funkcja, lista «Kto jest online», pojawi się wkrótce!”

Ten wpis wciąż tu jest. Zapowiedziana w nim lista potrzebowała czternastu lat. Teraz istnieje, a licznik, do którego tamten wpis odsyłał, chodził przez cały ten czas.

Co pokazuje

Strona statystyk ma panel na żywo: ile osób jest teraz na stronie oraz listę tych najnowszych — kraj, z którego się połączyli, miasto, jeśli jest znane, którą z podstron przeglądają i jak dawno temu byli ostatnio widziani. Po dwanaście naraz, od najnowszych.

„Teraz” oznacza ostatnie pięć minut. Po godzinie wiersze są całkowicie usuwane.

0560na liście livewiersz zostajeskasowanyminut od ostatniego widzenia

Czego nie oznacza „kto”

Nikt na tej liście nie jest zidentyfikowany. Jest zbudowana z tego samego 16-bajtowego dziennego skrótu opisanego we wpisie o liczeniu bez ciasteczka — za żadnym jej wierszem nie stoi żadne imię, żadne konto, żadne ciasteczko ani żaden zapisany adres IP.

Zachowuje też tylko ścieżkę strony, a nie cały adres: /shop/boots, a nie pełny link z wszystkim, co wyszukiwarka albo newsletter doczepiły na jego końcu.

A dwie osoby z tego samego miasta patrzące na tę samą stronę to po prostu dwa wiersze. Nic w systemie nie powie, czy to dwoje czytelników, czy jeden czytelnik na telefonie i laptopie. To nie przeoczenie czekające na uporządkowanie w późniejszej wersji. To zamierzony projekt, ten sam kompromis, jaki licznik zawiera wszędzie indziej: wystarczająco dużo, by być przydatnym, za mało, by kogokolwiek śledzić.

Na żywo bez trzymania otwartego połączenia

Nowoczesnym sposobem budowania czegoś takiego jest WebSocket albo server-sent events — przeglądarka utrzymuje jedno otwarte połączenie, a serwer przesyła przez nie aktualizacje w miarę ich pojawiania się. To eleganckie rozwiązanie i byłoby tu złym wyborem.

Serwer WWW tej strony wykorzystuje jeden proces na otwarte połączenie, a jego faktycznym zadaniem jest odpowiadanie na żądania liczników dla kilku tysięcy stron. Utrzymywane otwarte połączenie to proces, który nie może odpowiedzieć nikomu innemu. Pięćdziesiąt osób oglądających swoją stronę na żywo oznaczałoby pięćdziesiąt bezczynnych procesów, czekających, by dostarczyć liczbę, która zmienia się co kilka minut.

Zamiast tego strona po prostu pyta, co piętnaście sekund, i pobiera mały blok danych JSON. Wokół tego są trzy decyzje, które mają większe znaczenie niż sam interwał:

  • Jeśli żądania zaczynają zawodzić, strona zwalnia do jednego zapytania na minutę — zamiast dalej obciążać serwer, który najwyraźniej już ma trudności.
  • Na karcie w tle strona całkowicie przestaje pytać, a odświeża się natychmiast po powrocie na nią. Nikt nie patrzy na ukrytą kartę, a żądanie kosztowałoby dokładnie tyle samo, co przydatne.
  • Linia zaktualizowano N sekund temu liczy w górę lokalnie, raz na sekundę, i nic nie kosztuje. Zmiany danych wymaga żądanie, samo starzenie się liczby — już nie.

Nic w tym sprytnego. Jest to proporcjonalne, a to na małym serwerze cenniejsza z tych dwóch cech. Widok na żywo nie powinien kosztować więcej w utrzymaniu niż to, co obserwuje.

Jedna część, która nie wróciła

We wrześniu 2015 roku pojawił się wpis o tym, jak karta Użytkownicy nauczyła się odróżniać kogoś aktywnie czytającego stronę od kogoś, kto otworzył ją w karcie w tle i zapomniał, że w ogóle istnieje.

To rozróżnienie nie wróciło. Obecna lista wie, kiedy odwiedzający był ostatnio widziany; nie wie, czy w tym momencie patrzy. To naprawdę warto wiedzieć — spora część „odwiedzających” na każdej stronie to porzucona karta — więc jest to na liście rzeczy do zbudowania.

Miejmy nadzieję, że nie zajmie to kolejnych czternastu lat.

Do obejrzenia

Wpis z 2012 roku kończył się linkiem do żywego przykładu, co wydaje się właściwym sposobem zakończenia i tego wpisu. Ten pierwotny link nawiasem mówiąc wciąż działa: licznik za nim stojący działał przez cały ten czas i przekroczył już 1,3 miliona odwiedzin.

Jest tu żywy przykład, do obejrzenia nie jest potrzebne żadne konto.

Reklama