Okołozimowo: hibernacja w F9

Jak zapewne użytkownicy Fedory i zapewne innych dystrubucji dobrze wiedzą, hibernacja pod Linuksem ma się dobrze.
Niestety, brak paska postępu wprowadza niepewność, czy aby na pewno komputer przechodzi w stan hibernacji, czy nie.

Dobrym sposobem na rozświetlenie sytuacji jest skorzystanie z projektu zwanego TuxOnIce (lub też Suspend2) wraz z odpowiednim userUI.

Korzystający z fedory mogą skorzystać z repozytorium Matthiasa Henslera, wystarczy zapisać plik repozytorium do katalogu /etc/yum.repos.d/

Jak zapewne użytkownicy Fedory i zapewne innych dystrubucji dobrze wiedzą, hibernacja pod Linuksem ma się dobrze.
Niestety, brak paska postępu wprowadza niepewność, czy aby na pewno komputer przechodzi w stan hibernacji, czy nie.

Dobrym sposobem na rozświetlenie sytuacji jest skorzystanie z projektu zwanego TuxOnIce (lub też Suspend2) wraz z odpowiednim userUI.

Korzystający z fedory mogą skorzystać z repozytorium Matthiasa Henslera, wystarczy zapisać plik repozytorium do katalogu /etc/yum.repos.d/

Następnie instalujemy pakiety userui-tuxonice-* (wersja tekstowa i graficzna ui wraz z wszystkimi dostępnymi pakietami theme – oczywiście, po zapoznaniu się z themami możemy usunąć niepodobające się lub stworzyć samemu theme) z repozytorium, pobieramy kernel z wkompilowaną obsługą suspend2 (sudo yum install kernel-tuxonice) wraz z wszelkimi potrzebnymi zależnościami.

Uruchamiamy ponownie system z jajkiem z wkompilowanym tuxonice. Przełączamy się na konsolę tekstową (ctrl+alt+f1), sprawdzamy poprawność instalacji /sbin/tuxoniceui_text -t oraz /sbin/tuxoniceui_fbsplash -t.
Powinny się wyświetlić odpowiednie (tekstowe lub graficzne) paski postępu procesu hibernacji.
Uwaga: Jeśli chcemy korzystać z graficznej wersji ui, musimy dodać w /etc/grub.conf jako parametr do kernela vga=(odpowiedni tryb graficzny, dla 1024×756×32b wynosi 318, możemy też wyświetlić wszystkie dostępne tryby za pomocą vbetest).

Teraz możemy skonfigurować sam proces hibernacji, w pliku /etc/hibernate/suspend2 możemy ustalić typ hibernacji, możliwość anulowania hibernacji, ponowne uruchomienie komputera po hibernacji oraz wiele innych.
W chwili obecnej interesuje nas opcja ProcSetting userui_program – usuwamy znak komentarza przy interesującej nas opcji (/sbin/suspend2ui_fbsplash – graficzne ui, /sbin/suspend2ui_text – tekstowe).

Po zakończeniu konfiguracji, uruchomienie jako root polecenia hibernate powinno poskutkować wyświetleniem odpowiedniego paska postępu procesu hibernacji oraz oczywiście zahibernowaniem systemu.

Więcej szczegółów odnośnie instalacji oraz konfiguracji TuxOnIce możemy znaleźć na stronie www.tuxonice.net

Interesujący problem.

Kolega zadał mi ciekawe pytanie: czy jest możliwość dodania na joggerze własnego opisu z gadu?

Kolega zadał mi ciekawe pytanie: czy jest możliwość dodania na joggerze własnego opisu z gadu?

  1. Pierwszy krok: stworzenie bramki gadu – posłużyłem się gotowym skryptem z http://forum.php.pl/index.php?showtopic=21568
  2. Zintegrowanie powstałego pliku z joggerem.

Moje pomysły są następujące:

  1. Użycie ajax’u do zmiany div’a przez document.getElementById() – moim zdaniem najbardziej eleganckie rozwiązanie, niestety gdy domeny są różne nie jest możliwe pobieranie danych z zewnętrznego serwera. Jest to występująca tutaj sytuacja.
  2. Wstrzyknięcie opisu przez include(‘plik’) w php – na joggerze niemożliwe do zrealizowania.
  3. Użycie iframe‘ów – skuteczne, ale niezgodne z specyfikacją xhtml.


Ktoś zna inne rozwiązanie?

Dla chętnych wersja AJAX:
Kod skryptu bramki – wystarczy uzupełnić numer bramki, hasło oraz sprawdzany numer – delikatnie zmodyfikowana wersja skryptu

Skrypt javascript – należy w nim zmienić zmienną adres – na położenie skryptu bramka.php, można też użyć tego skryptu, przesyłając metodą get poprzez zmienną numer swój numer gadu
Dla przykładu http://www.piio.info/opis.php?numer=1111111 zwróci w xml opis numeru 1111111

Aby dodać opis przez ajax do strony, dodajemy

  1. W części
  2. znacznik
    
    

    – uruchomienie funkcji po załadowaniu strony

  3. w miejscu gdzie ma się wyświetlać opis dodajemy div’a

Gotowe! Możemy cieszyć się własnym opisem z gadu na naszej stronie.

Ps. Oczywiście, skrypt nie będzie zwracał opisu jeśli używamy opcji ‘tylko dla znajomych, a bramka nie jest na naszej liście kontaktów.

F9 i Asus A6KM-Q097

To już 2 tygodnie minęły od wydania kolejnej, 9-tej odsłony Fedory, czas na podsumowanie.

Modele z serii A6km, podobnie jak wiele dzieci Asus’a, cierpią na chroniczne problemy z bios‘em – a konkretnie z tablicą DSDT. Błędny wpis w DSDT skutkuje niemożnością uruchomienia jakiejkolwiek (no, bez przesady, odpowiedni patch [acpi-dsdt-initrd-vX-2.X.X.patch] mają Ubuntu oraz Mandriva) dystrybucji linuksa gdy podczas bootowania podłączone są urządzenia USB.

To już 2 tygodnie minęły od wydania kolejnej, 9-tej odsłony Fedory, czas na podsumowanie.

Modele z serii A6km, podobnie jak wiele dzieci Asus’a, cierpią na chroniczne problemy z bios‘em – a konkretnie z tablicą DSDT. Błędny wpis w DSDT skutkuje niemożnością uruchomienia jakiejkolwiek (no, bez przesady, odpowiedni patch [acpi-dsdt-initrd-vX-2.X.X.patch] mają Ubuntu oraz Mandriva) dystrybucji linuksa gdy podczas bootowania podłączone są urządzenia USB.

Oczywiście, błąd leży po stronie producenta – on powinien wypuszczać poprawne wersje bios’u. Niestety, ostatnią poprawną(?) wersją jest 202, kolejne wersje zawierają już ten bug, aż do 300 włącznie.

Sposobów na obejście tego problemu jest kilka – od zmiany biosu na wersję 202 (niezbyt polecane), po rekompilację i patchowanie kernela oraz ręczna naprawa tablicy DSDT, wyłączania obsługi ACPI (co w laptopie jest samobójstwem), aż po odłączanie urządzeń USB podczas bootowania.

Po niezbyt udanej rekompilacji i patchowaniu kernela, doszedłem do wniosku, że dla poprawy zdrowia psychicznego pozostawię to jak jest, wybierając bramkę nr 4 (czyli odłączanie urządzeń USB).

Poza tym powtarzającym się z wersji na wersję problemem (co prawda nie zawinionym przez twórców kernela oraz twórców dystrybucji), Fedora nadal jest dystrybucją która najbardziej odpowiada moim gustom.

Instalacja z wersji na wersję coraz prostsza, domyślnie włączone do dystybucji acpi4asus (obsługa klawiszy funkcyjnych, diod led etc), poprawiony NetworkManager, poprawiona obsługa karty Broadcom Corporation BCM4318 (wystarczy wypakować firmware do /lib/firmware), bezproblemowa obsługa dongle Bluetooth, czytnika kart SD, skalowanie częstotliwości procesora etc.

Jedyne, co mnie boli, to zrobienie z Fedory poligonu do testowania nowych rozwiązań (jak np wersja beta xorg, co nie pozwala zainstalować sterowników nvidii, czy korzystania z synaptics). Dobrze, że firefox 3 b5 jest na tyle stabilna, że to nie pogarsza nadszarpniętego wizerunku dystrybucji.

Na plus:
ulepszony proces instalacji, działający z pudełka pulseaudio (co poprzednio nie było tak oczywiste), odczuwalna poprawa szybkości uruchamiania i zamykania systemu.

Na minus:
stawanie się poligonem doświadczalnym dla RHEL

Może jest ktoś, komu udało się spatchować kernel F9 patchem acpi-dsdt-initrd? Proszę o kontakt, może w końcu dowiem się jakie błędy popełniłem przy patchowaniu.

Praca, praca…

Podsumowując 3 tygodnie pracy w Inter-Comp, mogę powiedzieć jedno: jest dobrze. Jest wiele rzeczy, których się nauczyłem, wiele jeszcze przede mną.
Póki co, zajmowałem się migrowaniem systemów w TP S.A. do standardu e-buro 2.0, a także działałem przy rollout’ach (BPH -> Pekao S.A.) w Rzeszowie, Dębicy oraz Wrocławiu.
Aha, jeszcze relaksacyjnie pomagałem przy montowaniu czujek alarmowych.
W planach tworzenie vpn‘ów, konfigurowanie voip‘ów, konfiguracje sieci wifi.

Mam nadzieję zdobyć dużo wiedzy, i przy okazji upiększyć swoje CV, w końcu planowo w roku bieżącym mam zostać magistrem informatyki.

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

Nowe serwery GG.

W dniu dzisiejszym miałem dłuższą (kilkugodzinną) przerwę od GG.
Mój klient ekg nie chciał się połączyć z zaszytymi w jego configu standardowymi adresami serwerów.
Po krótkiej rozmowie z blizni’m okazało się, że klienci łączący się jak Pan Bóg przykazał, czyli najpierw do appmsg.gadu-gadu.pl nie mieli żadnych problemów z korzystaniem z sieci.
Okazuje się, że Gadu-Gadu otrzymało i zaczęło korzystać z nowej klasy adresów z zakresu 91.197.12.0 – 91.197.15.255
Po krótkim teście (korzystając z monitora serwerów GG otrzymałem piękną listę świeżutkich serwerów.
Jeśli ktoś korzysta z zmiennej server w ekg, lub w jakikolwiek inny sposób ręcznie wybiera adresy serwerów, to tu jest lista nowych serwerów: 91.197.13.2 91.197.12.4 91.197.12.5 91.197.12.6 91.197.13.3:443 91.197.13.11 191.197.13.12 91.197.13.13 91.197.13.14 91.197.13.17 91.197.13.18 91.197.13.19 91.197.13.20 91.197.13.21 91.197.13.24 91.197.13.25 91.197.13.26 91.197.13.27 91.197.13.28 91.197.13.29 91.197.13.31 91.197.13.32 91.197.13.33:443

Miłego korzystania!

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.