Tak po prostu ich nie lubię. Denerwują mnie. Są głupie. Jako dość skomplikowane animacje nierzadko pochłaniają niepotrzebnie moc obliczeniową procesora. Ich ładowanie opóźnia pojawienie się okienka z rozmową. Powodów jest mnóstwo.
OK. Rozumiem model finansowania najpopularniejszego komunikatora. Rozumiem, że dostaję za darmo program i usługę więc w zamian powinienem posłusznie gapić się w zjadliwie pokolorowane rozpraszające uwagę skaczące zygzaki. Byłoby to nawet w porządku, gdyby nie moje nieodparte wrażenie, iż wyświetlanie reklam przez aplikację kliencką GG dostało się na miejsce pierwsze celów projektowych tej aplikacji. A dostarczanie wiadomości dopiero na miejscu drugim. Zauważyłem, że reklamy wyświetlają się zawsze podczas gdy spotkałem się niestety wielokrotnie z sytuacją, w której wiadomość nie została dostarczona. Nie muszę chyba pisać w tym miejscu, że komunikatorowi można wybaczyć różne uchybienia, ale niedopracowania swojej podstawowej (teoretycznie) funkcji już nie.
Niestety przedstawiony przeze mnie na tym blogu sposób pozbycia się reklam przestał działać. Nie udało mi się ustalić dokładnie dlaczego, z powodu zmian jakie wprowadzałem w tym czasie w swoim systemie. Być może:
Nieważne. Przedstawiony przeze mnie sposób dział na pewno dla starszych wersji komunikatora i/lub przeglądarki dlatego nie kasuję tamtego wpisu, ponieważ nadal może się komuś przydać. Postanowiłem natomiast przeprowadzić kilka eksperymentów i zbadać czy istnieje inny prosty, bezpieczny i legalny sposób wyłączenia reklam. Oczywiście, że istnieje :) - wymyśliłem go po zaledwie kilkudziesięciu minutach “badań”. Z pomocą znów przychodzi flash’owa natura skocznych bazgrołów.
Przechodząc do rzeczy. W poprzednim wpisie wspominałem o programie służącym do izolacji - Sandboxie. Programy uruchamiane w piaskownicy nie mogą wprowadzać bezpośrednio zmian na dysku. Wszystkie ich operacje zapisu kierowane są do wyznaczonego przez nas folderu. Sandboxie oferuje jednak znacznie bogatsze możliwości, m. in.:
Blokowanie dostępu do rejestru
Blokowanie dostępu do sieci
Blokowanie dostępu do obiektów IPC
Blokowanie dostępu do wskazanych plików na dysku
Wszystko to dla wybranego przez nas programu. Rozwiązaniem jest zablokowanie dostępu do katalogu w którym znajduje się kontrolka ActiveX Adobe Flash :). Dzięki temu GG znów zaczyna wyświetlać ładne białe okienko zamiast denerwujących reklam. Poniżej przedstawiam 2 zrzuty ekranu obrazujące co i gdzie należy wpisać w ustawieniach piaskownicy (oczywiście z dokładnością do nazw folderów, które być może trzeba będzie dopasować do swoich, jeżeli są niestandardowe):
Dla poprawnego działania GG dodajemy jego foldery (instalacyjny i profilu) do list folderów do których program ma mieć dostęp bezpośredni (tzn. nie przez piaskownicę):
Blokujemy użycie przez GG kontrolki Flash poprzez dodanie katalogu Flash’a do list blokowania:
To wszystko! Sposób jest legalny ponieważ niczego wchodzącego w skład aplikacji GG nie modyfikuje. Wykorzystuje po prostu w sprytny sposób sprytne i darmowe narzędzie jakim jest Sandboxie :) Oczywiście uruchamianie GG w Sandboxie wnosi dodatkowe bezpieczeństwo przed zagrożeniami mogącymi rozpowszechniać się tą drogą (kosztem troszkę mniej wygodnego odbierania plików, przyda się skonfigurowanie również pewnego folderu dostępu bezpośredniego do którego będziemy odbierać pliki od znajomych, w przeciwnym razie wylądują one w folderze piaskownicy - ale to szczegół, z resztą wysyłanie plików i tak rzadko działa w GG)
Możemy również zmodyfikować sobie skrót do GG tak, aby otwierał komunikator od razu w piaskownicy. W tym celu we właściwościach skrótu jako ścieżkę wpisujemy:
"C:\Program Files\Sandboxie\Start.exe" /box:Nazwa_Naszej_Piaskownicy "C:\Program Files\Nowe Gadu-Gadu\gg.exe"
Status w najpopularniejszym w naszym kraju komunikatorze jest znanym i szeroko stosowanym środkiem wyrazu. Przekonałem się dziś, że z okazji Świąt Wielkanocnych użytkownicy GG z listy moich znajomych miewają bardzo rozbieżne przemyślenia :)
"Surrexit Dominus vere, alleluja!"
"The Metal horde raise their swords and hail Iron, Steel, Metal"
W Service Pack’u 2 do Windows XP został wprowadzony limit współbieżnie wykonywanych prób nawiązania połączenia TCP. W Internecie oraz wielu czasopismach można spotkać ogromną ilość stwierdzeń, że ograniczenie to spowalnia działanie programów P2P, a ostatnio przeczytałem nawet (skądinąd w ponoć znaczącym miesięczniku) takie oto rewelacje, które skłoniły mnie do napisania tego wpisu:
Ograniczenie polega na tym, że może być wykonywanych jedynie 10 niezależnych sieciowych wywołań
Może się okazać, że nawet połowa dostępnego pasma nie jest przez to wykorzystana.
Już samo użycie sformułowania “wywołanie sieciowe” budzi pewne wątpliwości, czy autor wie na pewno o czym pisze. Abstrahując od sensowności tego sformułowania, nawet pisanie o “limicie połączeń” jest w tym przypadku sporym nadużyciem. W rzeczywistości wprowadzenie tego limitu ma znikomy wpływ na efektywność działania programów P2P a już z całą pewnością nie ma absolutnie żadnego wpływu na ograniczenie szybkości przesyłania danych. Jak zwykle diabeł tkwi w szczegółach, tym razem bardziej technicznych.
Fakty
W tytule użyłem cudzysłowu dla słowa “połączenie” ponieważ limit ten nie dotyczy właściwie połączeń, a jedynie prób ich nawiązania. Wspomina o tym sam Microsoft w tym artykule używając określenia “incomplete outbound TCP connection attempt”. Żeby zrozumieć o co chodzi warto znać podstawy funkcjonowania gniazd, zwanych potocznie socketami. Aby gniazdo mogło służyć do przesyłania danych musi ono znajdować się w stanie asocjacji pełnej. Polega to na tym, że ustalone zostały 2 pary: (adres IP docelowy, port docelowy) oraz (adres IP lokalny, port lokalny), a formalnie jeszcze protokół ale domyślnie chodzi tu o TCP. Po utworzeniu gniazdo nie znajduje się od razu w stanie asocjacji pełnej, tylko w półasocjacji - zazwyczaj nie został przydzielony port efemeryczny - czyli port lokalny, którego programista programując gniazdo nie widzi jawnie. Wspominany limit dotyczy takich właśnie gniazd. W takim stanie gniazdo nie ma możliwości przesyłania danych, połączenie nie zostało jeszcze nawiązane z różnych przyczyn. Logicznym wnioskiem jest tutaj fakt, że skoro nawet nie można mówić o transmisji danych, to tym bardziej o jej szybkości ani jakichkolwiek ograniczeniach. Transmisja zachodzi jedynie przez w pełni zasocjowane gniazda. To, że “próby” nawiązania połączenia - czyli gniazda w stanie półasocjacji są ograniczone liczbowo do 10 w danej chwili nie ma absolutnie żadnego wpływu na gniazda w pełni zasocjowane przez które przesyłane są dane.
Mity
Przede wszystkim zaznaczam, że zarówno w systemie Windows XP SP1, jak i SP2 oraz SP3 zdarzało się uzyskać 100% wykorzystanie przepustowości łącza. Nie zaobserwowałem absolutnie żadnych spowolnień transmisji w przypadku klienta Azureus po zainstalowaniu SP2. Tłumaczenie, że limit ten powoduje spowolnienia jest nieprawdą. Nie twierdzę, jednak, że fakt wprowadzenia limitu nie wpłynął w żaden sposób na zachowanie tych programów. Może to być jednak spowodowane sposobem, a jaki program reaguje na brak możliwości wykonywania kolejnych prób połączeń - a więc jest to już kwestia takiego zaimplementowania mechanizmu połączeń w programie, aby był on świadomy istnienia limitu. W żadnym wypadku jednak nie można winić systemu operacyjnego za spowolnienie transmisji, czy też (co już jest kompletną bzdurą) wykorzystanie łącza jedynie w połowie.
“Fachowe porady”
Istnieje cała masa programów “patch’ujących” sterownik trybu jądra tcpip.sys
. Owszem, rozumiem, że zlokalizowanie wspominanej liczby 10 w pliku binarnym jest wykonalne niemalże ze 100% pewnością, że liczba ta dotyczy tego właśnie limitu. Nie zapominajmy jednak, że ingerencja w binarną skompilowaną postać sterownika trybu jądra może doprowadzić do nie dających się przewidzieć konsekwencji dla systemu operacyjnego. Wspomnę tutaj chociażby o mechanizmie SFC, który dba o spójność plików systemowych - nie mamy gwarancji jak zareaguje on na taką zmianę. Nie mamy również gwarancji, co się stanie gdy firma Microsoft uaktualni sterownik tctpip.sys
. Zaaplikowanie starego patch’a na ewentualnie zaktualizowany sterownik prawie na pewno spowoduje awarię systemu.
Podsumowanie
Zdecydowanie odradzam więc jakiekolwiek “łatanie” plików systemowych przy użyciu nieautoryzowanych przez Microsoft narzędzi. Radzę natomiast podchodzenie z pewnym dystansem do publikowanych przez “specjalistów” porad, w których brak jest sensownych uzasadnień technicznych, a jedynie mgliste sformułowania w rodzaju “wywołanie sieciowe” i modne wśród tej klasy “speców” narzekanie na firmę Microsoft.