Przeglądarka archiwum rozmów z gg.

Kolejny ukończony projekt ląduje w dziale download, a mianowicie: czytnik logów z ekg.
Kod można ściągnąć z działu download, plik nazywa się gglogviewer.tgz

Wprowadziłem w międzyczasie drobną zmianę, poprzednia wersja miała bug pozwalający na użycie jednego tokena z captcha do wysłania milionów wiadomości na gg, co zakończyło by się zablokowaniem mojego konta. Thx blizni

Teraz jest to zrobione ‘po Bożemu’, czyli stosowane są sesje w php, każdy kod można użyć tylko jeden jedyny raz.

Wszelkie komentarze mile widziane.

Ps. zmiana na jogger.piio.info domyślny poziom wpisu = 0.

Czytnik logów mniej.

Udało mi się zakończyć jeden z prywatnych projektów, a mianowicie: czytnik logów GG.

Użytkownik podaje swój numer GG, skrypt generuje hasło i odsyła je za pomocą komunikatora GG.
Dopiero po zweryfikowaniu własności numeru gg, otrzymuje on dostęp do logów z naszych rozmów na gg.

Tym razem zastosowanie znalazł przede wszystkim PHP, przydatny jest także malutki skrypt bash’owy.
Niebawem, po dogłębnym przetestowaniu skryptu, umieszczę jego źródła w dziale download

Kompresji ciąg dalszy.

Dla ułatwienia testów kompresji ruchu sieciowego (w tym konkretnym przypadku zająłem się protokołem HTTP), stworzyłem nowe narzędzie: Tester kompresji stron www.
Po wpisaniu interesującego nas adresu, narzędzie wyświetli podstawowe informacje o podanej stronie (adres, host, ścieżka, rozmiar przed i po dekompresji, nagłówki otrzymane od serwera oraz całą zawartość pobranej strony).
Obsługuje kompresję gzip, deflate, radzi sobie z Transfer-Encoding: chunked.

Za tym wszystkim stoi php, troszkę AJAX’u.

Monitor serwerów.

Bawiąc się AJAX’em utworzyłem nowy skrypt do sprawdzania dostępności serwerów gg.
Korzystając z niego można sprawdzić, które serwery i na jakich portach są dostępne. Osobiście preferuję szyfrowaną komunikację, także uwzględniłem także port https używany przez gg.
Znając już adres działającego serwera, możemy wpisać go do własnych ustawień ekg (/set server adres:port), kadu (zakładka sieć -> ustawienia serwerów -> adresy IP)
Oczywiście, można też wpisać więcej serwerów gg, wystarczy oddzielić je średnikami (zarówno w ekg jak i kadu).
Zmianę adresów serwerów można też oczywiście dokonać w oryginalnym gg pod MS Windows, korzystając w GG Serwer Changer lub GG Tools.

Oczywiście, dla ułatwienia dodam że wystarczy podmienić zmienne adres i port przesyłane metodą GET do pliku servercheck.php5 aby sprawdzić stan zupełnie dowolnego serwera na dowolnym porcie.

Życzę miłego korzystania z monitora gg.

Magisterkę czas zacząć.

Zacząłem zbierać materiały do pracy magisterskiej pod tymczasowym tytułem „Inteligentny agent jako sposób optymalizacji współczynnika wykorzystania łącza”.

Przy okazji zahaczyłem trochę praktyki: ‘standardowa’ kompresja danych.
Można do tego celu wykorzystać kilka metod:

Zacząłem zbierać materiały do pracy magisterskiej pod tymczasowym tytułem „Inteligentny agent jako sposób optymalizacji współczynnika wykorzystania łącza”.

Przy okazji zahaczyłem trochę praktyki: ‘standardowa’ kompresja danych.
Można do tego celu wykorzystać kilka metod:

1. Dynamicznie kompresować dane przy użyciu modułu apache mod_deflate lub mod_gzip – wystarczy odhashować LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so dla apache2 lub załadować odpowiedni moduł jeśli korzystamy z Apache v. 1.x w pliku konfiguracyjnym apache (najczęściej httpd.conf), po tym należy zrestartować serwer apache (/etc/init.d/apache2 restart)
Oczywiście, nic nie jest takie proste jak się wydaje, samo załadowanie modułu do Apache nie wystarcza.
Należy także dodać odpowiednią dyrektywę w wpliku .htaccess (jeśli nie mamy dostępu do httpd.conf a moduł jest raportowany np. przez phpinfo()), lub w wspomnianym wyżej httpd.conf

AddOutputFilterByType text/html text/xml application/xml text/javascript text/css

Oczywiście, należy zmienić typy mime podane w powyższym przykładzie na odpowiadające nam (raczej nie zaleca się kompresji obrazów, pdf‘ów i inny binarnych plików które są w postaci skompresowanej.
Dobrze by było zachować jakąś informację o stopniu kompresji, do tego celu można dopisać następujące polecenia do pliku konfiguracyjnego apache/vhosta/modułu (proszę sobie wybrać odpowiednie, lub samemu stworzyć format logu)

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" (%{ratio}n)" combineddeflate
CustomLog /var/log/apache2/access_log combineddeflate

Trochę bardziej skomplikowany sposób logowania

DeflateFilterNote Input input_info
DeflateFilterNote Output output_info
DeflateFilterNote Ratio ratio_info LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
CustomLog /var/log/apache2/deflate_log deflate

Oczywiście, pasowało by też sprawdzać czy klient (przeglądarka) obsługuje poprawnie skompresowane pliki i w zależności od User-Agent wybierać odpowiednią metodę kompresji/lub zrezygnować z kompresji (niektóre przeglądarki, np. starsze wersje Mozilli wysyłały nagłówek Accept-Encoding: gzip,deflate, lecz nie potrafiły zdekompresować otrzymanych danych).

2. Dynamicznie kompresować za pomocą odpowiedniej funkcji w php – należy dodać do naszego pliku php na początku, przed wysłaniem jakichkolwiek danych do klienta

ob_start("gzhandler")

Nie przejmujemy się nagłówkami, zostaną dołączone automagicznie, jeśli tylko przeglądarka zadeklaruje możliwość dekompresji za pomocą Accept-Encoding: gzip,deflate

3. Jeżeli mamy dużo statycznych plików css, javascript to możemy je skompresować standardowym gzip’em, w linkach umieścić odpowiednie odwołania do skompresowanych plików, wymusić za pomocą np. .htaccess odpowiednie nagłówki:

AddType "text/javascript" .jgz
Header set Content-Encoding: gzip
Header set Transfer-Encoding: gzip

lub

AddType "text/javascript" .jgz
Header set Transfer-Encoding: gzip

Narażamy się tym samym na stratę użytkowników korzystających z starszych przeglądarek, które nie obsługują kompresji, skompresowane w ten sposób pliki nie zostaną otworzone.

Ps. Jeżeli korzystacie z Outpost Firewall, to należy włączyć obsługę gzip, ponieważ standardowa konfiguracja wycina nagłówek Accept-Encoding
W tym celu trzeba zmienić wartość klucza rejestru HKEY_LOCAL_MACHINE\SOFTWARE\Agnitum\Outpost Firewall\EnableGzipEncoding na 1.

Wind of changes…

Decyzje zapadły. Dotychczasowy, obskurny wygląd niektórych części Połańca ulegnie drastycznej zmianie.
W roku bieżącym, zgodnie z informacjami na stronie Połańca wyremontowany zostanie dworzec autobusowy. Na kolejne lata zapowiada się remont generalny rynku.

Koncepcja architektoniczna Centrum Komunikacyjno-Usługowo-Handlowego

Dobrze wiedzieć że w końcu obietnice zostaną zrealizowane. 🙂

Przypadłość roku przestępnego.

Dziś także stronę forum huba http://polaniechub.piio.info zaatakował syndrom roku przestępnego.

Błąd wynika z niedopatrzenia w skrypcie function_add.php w phpbb, nie założono że istnieje coś takiego jak rok przestępny, co skutkowało ładnym errorem, dzięki czemu przy włączonym powiadamianiu o użytkownikach obchodzących urodziny na stronie głównej forum nie było dostępu do huba (oczywiście tylko z głównej strony, wejście w podlinków nie powodowało problemu).

Błąd jest rozwiązywalny na 2 sposoby:
1. Usunięcie tymczasowo powiadamiania o użytkownikach obchodzących urodziny ze strony głównej.
2. Zmiana w kodzie php


na

else if ( date("L") 1 && $month == 2 && $day > 29)
{
return ‘error 29’; //only 29 days in feb. leap-year
//fixed by Widmo
}

Błąd rozwiązany dzięki stronie http://www.arcy.net/2008/02/29/blad-29-lutego-w-phpbb-by-przemo/

Szukając…

Dziś dodałem dodatkową funkcjonalność do piio HQ – jest nią wyszukiwarka, dodatkowo wykorzystałem funkcjonalność jogger.pl czyli wbudowany silnik wyszukiwarki aby umożliwiść przeszukiwanie tego joggera

Na potrzeby przeszukiwania strony użyłem silnika Fluid Dynamics Search Engine – indeksuje tylko pliki html oraz tekstowe, ale jeśli ktoś ma problemy z odnalezieniem się na http://www.piio.info to zawsze jest to rozwiązanie.

Ehh, nic.
Szykuję jeszcze kilka poprawek do strony, jak będę miał większą chwilę czasu to z pewnością jakieś nowe wynalazki się pojawią.