Shoutbox - wpis techniczny

BLOG
616V
Shoutbox - wpis techniczny
dKc | 18.01.2020, 12:02
Poniżej znajduje się treść dodana przez czytelnika PPE.pl w formie bloga.

Za upadek shoutboksa odpowiedzialny jest Dobermann. Można zamknąć temat.

Żartowałem. Choć nie do końca. W tym wpisie postaram się przedstawić moje spojrzenie na sprawę shouta, zamknięcia go oraz inne okołoshoutowe sprawy. Dlaczego odszedł, dokąd odszedł i co z tym fanem dalej zrobić? Będzie raczej bez wspominek (tu zostawiam Wam pole do popisu w komentarzach, jeśli jeszcze u dexxa nie napisaliśce wszystkiego o tym, że drzewiej było lepiej), za to skupię się na technicznych aspektach starając się wytłumaczyć czym tak naprawdę był shoutbox. Po kolei.

W tamtym roku miałem postanowienie związane z filmami. Tym razem moje postanowienie dotyczy tego, że bardziej skupię się na pracy (wiem o co zapytacie - to da się, żebym był jeszcze bardziej nudny? odp: niestety tak:( ), a ten wpis będzie małą rozgrzewką.

Mojego ojca wnuka pradziadka wnuk ma zaplecze informatyczne, więc zasięgnąłem od niego co nieco informacji i postaram się opowiedzieć mniej więcej w zrozumiały sposób jak działał shoutbox od strony technicznej. Ale zacznę od teorii.

Jak działają strony WWW?
Internet jest narzędziem, którego każdy używa na codzień, ale podobnie jak z prądem nie każdy wie do końca jak działa. Żeby wytłumaczyć działanie shouta przybliżmy (w bardzo uproszczony sposób) kilka pojęć, które może obiły się Wam o uszy:

serwer - to taki komputer, do którego podłączają się ludzie, żeby dostać się do jakichś informacji. Wchodząc na ppe.pl urządzenie z którego się podłączamy (smartfon, komputer czy tablet) odpytuje serwer i pobiera z niego informacje (dane). Wchodząc w jakiś link (news, wpis w Blogosferze, kiedyś shoutbox, gramoty, podstronę o grze etc.) odpytujemy serwer. Raz. Przy wejściu na jakąś podstronę. Zapewne zauważyliście, że wchodząc w jakiegoś newsa i przewijając do najciekawszej jego części, czyli do komentarzy trzeba chwilkę poczekać, żeby te się pojawiły. Dzieje się tak dlatego, że serwer jest odpytywany kolejny raz, tym razem do bazy (poniżej) idzie zapytanie o komentarze. Po drodze idzie jeszcze kilka(naście) zapytań. Po razie na każde.

klient - z powyższego przykładu smartfon, komputer czy tablet. Może nim być też bot (napięcie rośnie). Dokładniej tu chodzi o przeglądarkę z jakiej korzystamy, ale jak mówiłem - w tym tekście jest wiele uproszczeń w celu zachowania w miarę ciekawego rytmu.

baza danych - mówią, że w Internecie nic nie ginie. Wiecie dlaczego tak jest? To, że się logujecie, wszystkie Wasze komentarze, loginy etc. są przechowywane w pewnej czarnej skrzynce zwaną bazą danych. Żeby nie straszyć co można potem z takimi danymi zrobić i gdzie, kiedy, w ilu miejscach takie dane mogą być przechowywane skończę w tym momencie i ograniczę sie do określenia, że baza danych na ppe siedzi sobie na serwerze ppe i są na niej przechowywane newsy i komentarze. Baza często zespalana z serwerem. Tam gdzie serwer, tam i baza. Zazwyczaj. Nie musi być, ale zazwyczaj jest. Czasem baza bywa używana jako synonim do serwera czy backendu (frontend bywa używany do nazywania części klienckiej, taka dygresja)

kod źródłowy - znany też pod nazwą "kod" (bez politycznych skojarzeń). Ciąg literek, które przetłumaczone są na efekt finalny jakim jest na przykład strona ppe i jej składowe: newsy, obsługa komentarzy, bot.

Jeszcze może napiszę czym był shoutbox, bo są może osoby, które trafiły tu przypadkiem. Moi drodzy, roztargnieni czytelnicy - shoutbox to taki odpowiednik czata na ppe. Można było tam wejść, żeby w ciągu sekundy porozmawiać z innymi osobami. W tym miejscu należy wymienić przesiadujące często tam ostatnio persony takie jak dexx, Ifikrates, Ojciec-gracz, MałyTimmy, Carnage, Tomasz (sorry nie pamiętam dokładnego nicku, było kilku Tomaszy o podobnych nickach) czy... inne osoby o których zapomniałem, przepraszam. Czaty czy komunikatory, ogólnie miejsca bezpośredniego szybkiego kontaktu są najbardziej atrakcyjnymi dla użytkowników miejscami. O wiele ciekawszymi, niż fora czy grupy dyskusyjne. Wystarczy przypomnieć sobie newsa o najchętniej pobieramnych ostatnio apkach na Androida (na szczycie był Whatsupp - komunikator od Google'a).

Jak działa(ł) shoutbox?

Kiedy podsłuchało się podczas obecności shoutboksa lecące zapytania można było podejrzeć, że nasz klient, z którego wchodzimy odpytuje regularnie, bodaj co sekundę serwer w celu sprawdzenia czy są nowe wiadomości. Jeśli się pojawiły - to serwer zwracał dane (dotychczasowe + nowe wiadomości). Jeśli nie - to też zwracał dane (dotychczasowe wiadomości). Jeśli jeszcze sie nie uśmiechnęliście, złapaliście za głowę, ani nie zareagowaliście z gniewem to może wytłumaczę - pamiętacie przykład z wchodzeniem w newsa? Jest kilka zapytań. Każde po raz. Serwer wysłał co miał wysłać. Potem jesteśmy na danej podstronie przewijamy, czytamy albo odpowiadamy. Serwer odsapnął (do czasu wejścia na kolejną podstronę), a user też zadowolony (bynajmniej nie z poziomu newsów albo z tego, ze ktoś ma inną konsolę, ale to temat na inną historię). Na shoucie tak nie było. User wchodził i tykał kijem serwer co sekundę. I tak co ~1s serwer był odpytywany. Takie podejście w programowaniu nazywa się long polling. Posłużę się obrazkiem.

Long polling. To z lewej to klient, to z prawej to serwer. Request to zapytanie. Response to odpowiedź. Na obrazku są tylko dwa zapytania. Jest to równoznaczne dla włączenia przeglądarki przez jednego usera i jego pobycie na stronie shouta przez 2 sekundy.

 

Tak się działo w przypadku jednego użytkownika. To teraz wyobraźmy sobie kiedy dodamy więcej userów. O ile w przypadku przeciętnej ilości rozmówców pod koniec życia shouta, czyli ~5 osób wszystko działało ok to pewnie pamiętacie takie większe wydarzenia, na które w newsach zapraszano użytkowników - wspólne oglądanie E3, Playstation Experience czy jakieś inne rzeczy. Przy ok. 20 userach (może nawet przy mniejszej ilości) shoutbox zaczynał sie dławić. Zapytań była masa, a serwer nie nadążał odpytywać. Powodowało to zawiechy, przycinki oraz błędy w działaniu shouta. Generalnie podejście long polling jest przestarzałym podejściem, którego nie powinno się używać. Porównajmy to do DriveThru w Macu:

Podjeżdża jakieś ekskluzywne auto marki Passat, pan Janusz w garniturze składa zamówienie (wysyła zapytanie). Dostaje swoje jedzenie od pana ze słuchawką na uchu (dostaje odpowiedź). OK. Kolejny samochód. Wysyła zapytanie. Dostaje odpowiedź. Kolejny. Zapytanie. Odpowiedź. Zapytanie. Odpowiedź. Tak powinno być normalnie.

Na shoucie to wyglądało tak: nie podjeżdża samochód, a do okienka podchodzi osoba, krzyczy swoje zamówienie. Za chwilę bez czekania podbiega kolejna osoba i przez ramię tej pierwszej krzyczy (ang. shout, heh to było niezamierzone) swoje zamówienie. W międzyczasie podbiega cała grupka dzieciaków, osób, zwierząt czy do czego tam porównać userów ppe i krzyczy swoje. O ile osoba pracująca w Maku wyrobiłaby może za pierwszymi kilkoma razami to przy dwudziestym by już przestała wyrabiać. Nasz serwer po jakimś (dość szybkim pewnie) czasie by padł. Wzmożoną aktywność serwera nazywamy obciążeniem serwera. Zbyt duże obciążenie serwera ma fatalne skutki. Zgon na miejscu. Przykład może nieidealny, ale tylko taki przyszedł mi do głowy. Nie myślcie, że to reklama. Nie kupujcie w Maku, mają niedobre jedzenie i robią kurczaka z przemielonych kości. Mniejsza o to. W skrócie: im większy tłok, tym gorzej.

To znaczy kiedyś tak shout działał. jeśli potem już tak nie było to cały ten wpis nie ma sensu i można przerwać czytanie w tym momencie i dać mi minusa. :D Moim zdaniem takowe działanie było jedną z przyczyn odłączenia respiratora shoutboksowi. Być może główną, być może nie. (Nie)wiele osób się zastanawiało dlaczego właściwie odłączyli prąd bez podawania przyczyny. Moim zdaniem przyczyna była taka, ale może nadinterpretuję jak to mam w zwyczaju.

Kiedyś była jakaś ankieta o zmianach na shoutboksie i ktoś pamiętam, że proponował, żeby po 15 minutach nieaktywności wylogowywano użytkownika z shoutboxa. To jest logiczne w sumie, bo kiedy user włączy zakładkę w przeglądarce i zostawi ją otwartą na godzinę to przez godzinę serwer będzie odpytywany... 1 * 60 * 60 = 3600 razy. Sporo, jak na użytkownika, który nie korzysta z shoutboksa. Generalnie long polling to zło i tak się teraz nie robi.

Mówią, że każdy klik na ppe jest na wagę złota. To każda sekunda na ppe jest dokładaniem do interesu przez Rogera (tak naprawdę to chyba nie, ale chciałem, żeby zabrzmiało dramatycznie ;) ).

Myślicie, że to wszystko, ale niestety nie. Oto na scenie pojawia się pewien bohater tej historii, którego pojawienie się można skwitować opisem jednej z kart do Gwinta (ciekawe czy zgadniecie jakiej)...

 

 

Bot Schrödermanna

W pewnym momencie jeden z użytkowników ppe Dobermann wpadł na pomysł stworzenia bota na ppe. Idea zacna. Piszesz coś, bot odpowiada. Napiszesz "Twoja stara", a bot odpowie "a nie, bo Twoja". Karuzela śmiechu. Takiego bota można napisać w oparciu o kilka prostych warunków i to by było OK, jednak w pewnym momencie bot zaczął być rozbudowywany. Pojawiły się funkcjonalności w stylu kiedy dany użytkownik był zalogowany. Pytania o obrazki, możliwość ich dodawania i wrzucania na osobny hosting. I parę innych, których nie pomnę. Bot działał tak: Dobermann loguje się na swoje konto, wywołuje kod w przeglądarce (w kliencie) i nasłuchuje wypowiedzi innych. O ile te pierwsze proste funkcjonalności da się napisać tylko włączając w to klienta, o tyle te drugie wymagają obecności części serwerowej i bazy danych. No i nasz kolega zrobił sobie taką bazę. I teraz tak: dzięki (?) funkcjonalności podglądania ostatniej wizyty w jego bazie na pewno były zapisywane daty (nie pamiętam czy z godzinami też, ale pewnie tak, to kilka znaków więcej w kodzie, a dokładność większa) ostatniej wizyty użytkownika. Na pewno były dane o tym kto dodał jaki obrazek. A skoro takie rzeczy były to dlaczego nie zapisywać w bazie całych wypowiedzi? Więc wypowiedzi pewnie też. I Dobermann wie co jeszcze.

Żyjemy w czasach, kiedy informacja jest najcenniejsza. Obliczono niegdyś, że samo konto przeciętnego człowieka jest warte średnio 50 dolarów. Informacjami ciągle się handluje. Agencje reklamowe są w posiadaniu informacji, facebook jest w posiadaniu informacji, Google jest w posiadaniu informacji. Właściwie, każdy kto posiada jakiś serwer z jest w posiadaniu pewnych informacji. Dlatego przestałem wchodzić na shoutboksa, bo czułem się obserwowany. O ile w przypadku "szpiegowania" przez ppe mogę to zaakceptować, bo portal daje usługę w postaci największej w Polsce bazie konsolowców skorych do rozmowy, o tyle w przypadku gdy jest to osoba, która w skrócie zbiera dane o użytkownikach shouta nie dając w zamian w sumie żadnej ciekawej usługi to ja jestem przeciwnym takim działaniom. Może jestem w tym odosobniony, ale tak mam i już.

Ja, wchodzący na shouta

Ja wchodzący na shouta

 

Więc przestałem wchodzić, co być może i bym zmienił, gdybym zobaczył ten kod. I Dobermann napisał wpis z kodem bota. Problem polega na tym, że ten kod jest niekompletny. To tylko część kliencka. Brak tu części serwerowej. Tak, tej najistotniejszej. Wrzucił tylko kliencką część. Cwaniak. Z jednej strony to zrozumiałe, bo udostępniając kod Dobermann musiałby udostępnić kod wraz z danymi logowania do bazy (tak naprawdę to nie, ale pamiętajmy, że bardzo wszystko upraszczam :) ), ale nawet i wtedy nie miałbym pewności czy to wszystkie dane i czy ta baza jest prawdziwa.

Przepraszam za tą długą, osobistą dygresję. Musiałem się tym podzielić. Także to jest jedna rzecz. Druga dotyczy wspomnianej na poprzedniej stronie tezy, że im więcej zalogowanych jednocześnie na shoucie osób, tym gorzej. No i Dobermann niestety z każdym odpaleniem bota (a z tego co widziałem to bot był odpalony praktycznie cały czas) odpytywał w kółko serwer. Także +1 do obciążenia serwera ze strony Dobermanna. Sam zainteresowany nie musiał wtedy być na shoucie, ale swoją cegiełkę do obciążenia.

Bot Schrödermanna Dobermanna jednocześnie był i go nie było.

We wspomnianym wpisie kolega nawoływał do pisania własnych botów, żeby zobaczyć kto wpadnie na jaki pomysł podczas pisania bota. Dokładać swoją cegiełkę do obciążenia serwera ppe? Jeszcze czego.

Plusy całego przedsięwzięcia? Ładny kod napisał :) To muszę przyznać. Mówię tu o klienckim, bo serwerowego nie widziałem. No i nie mogę odmówić zdolności analityczno-informatycznych. Byłoby to wówczas niemądre z mojej strony.

Wróćmy do tematu głównego jakim jest shoutbox.
Shoutbox zamknięto.

Co dalej z shoutboxem?

Dokąd odszedł shoutbox? Do nieba dla shoutboksów :) A tak na serio to shoutbox to też kod. Założę się, że gdzieś na (zapewne niejednym) kompie kod starego shouta jeszcze istnieje. Żyje nie tylko metaforycznie w sercach najwierniejszych userów ppe, ale i naprawdę na stacjach roboczych programistów pracujących nad stroną.

Myślałem nad tym czy to definitywny koniec shoutboksa. I wyszło mi, że jest iskierka nadziei i to nawet niejedna. Oczywiście, konkurencja w postaci kilku discordów (komunikatorów dających wieksze możliwości od shoutboxa) ppe jest ogromna i myślałem, że zamiast konkurować z kimś mocniejszym, może warto się zaprzyjaźnić z wrogiem i zamiast shoutboxa dać iframe (możliwość wrzucania jednej strony na inną stronę internetową) z jakimś discordem ppe (czy to bieluka, czy to Adikona czy jakimkolwiek innym) z discordem. Wady takiego rozwiazania? Kolorystyka może być problemem i nie pasować do layoutu strony. Zakładanie kont i zespalanie ich z tymi z ppe też może być problematyczne.

Jest tez inna opcja.

Pewnie myślicie "no ale jak to, jak ja wchodzę na czaterię i podaje się za seksowną osiemnastkę to przecież nie widzę żadnych zająknięć w przeglądarce, o co tu chodzi?". Ano chodzi o to, że są inne podejścia niż long polling i dlatego myślę, że dobrze by było gdyby włodarze ppe o ile to czytają rozważyli następującą opcję.

WebSockets

Jedna z najnowszych technologii HTML5 pozwala nam na nasłuchiwanie po stronie klienta i reagowanie z jego strony tylko, gdy serwer ma nam coś do przekazania. Coś jak Push notifications na urządzeniach z Androidem. Wyobrażacie sobie sytuację,że Wasz telefon co sekundę odpytuje serwer czy są update'y do apke w Waszych telefonach? Przecież to by zabiło serwery Google'a. Tak, Google'a. Najpotężniejszej obecnie firmy o największej infrastrukturze sieciowej na świecie. Na Androidzie to serwer decyduje kiedy klient ma odebrać nowe informacje.

Gdyby zastosować tego typu rozwiązanie to rozwiązałoby ono wiele problemów. Koniec z cosekundowym odpytywaniem. Koniec z poceniem się serwera. Koniec ze zwiechami. Koniec z... końcem shoutboksa. :) Panie Roger, Panie Perez. Może warto rozważyć zlecenie programistom shoutboksa (chociaż czy wtedy to się będzie tak nazywało?) w takiej technologii? Na pewno z chęcią i za odpowiednią opłatą to zrobią. Może da się zadowolić tą garstkę fanów tej formy komunikacji, a przez sprawniejsze działanie więcej ludzi po wejściu zechce zostać i korzystać z shoutboksa.

Czyli jest nadzieja. Dodaję piosenkę, którą miałem dodać, ale nie dodałem o nadziei:


Teraz wpis jest spełniony.

Za wszelkie pomyłki przepraszam i oczekuję, że userzy zwrócą mi na nią uwagę. Jest tu parę mądrych, znających się na blaszakach userów, mimo, że działają nie do końca moim zdaniem etycznie.

 

Oceń bloga:
17

Tęsknisz za shoutboxem?

fajny wpis
90%
co
90%
tak
90%
nie
90%
Pokaż wyniki Głosów: 90

Komentarze (48)

SORTUJ OD: Najnowszych / Najstarszych / Popularnych

cropper