Profesorek Fizzwizzle

Wczoraj natrafiłem na tę gierkę na The Linux Game Tome. Już na
screenshotach Professor
Fizzwizzle
bardzo mi się spodobał, więc ściągnąłem demo. Niestety gra
zawisła po uruchomieniu i było już za późno, żeby w tym grzebać.

Dzisiaj sobie o grze przypomniałem, zajrzałem do README, dowiedziałem się,
że na zwisy pomaga podanie magicznego parametru 4 w linii komend.
Poprawiłem więc dołączony skrypt run.sh i uruchomiłem go.
Tym razem nic się nie powiesiło i mogłem pograć. Bardzo sympatyczna gra,
z bardzo sympatyczną grafiką. Prawdopodobnie wciągająca, ale ja nie mam czasu,
by się dawać wciągnąć ;-), w szczególności, jeśli miałbym za to
zapłacić (mógłbym kupić taką grę, gdybym miał czas w nią grać). Zobaczyć
w każdym razie warto.

Co by tu…

Ostatni tydzień upłynął pod znakiem Crossfire.
Pisałem już że to niebezpieczny pożeracz czasu? No to piszę.
Czas na grę został zabrany na niekorzyść telewizji oraz snu.
Czasami wyglądało to tak, jakbym się z żoną prześcigał kto później
w nocy wymięknie. Żona wygrywała, ale to pewnie dlatego, że ona nie musi
o 6:20 wstawać do roboty.

W weekend w Gliwicach była Grająca Starówka – kilka różnych
koncertów w małych uliczkach w okolicach Rynku. Wybraliśmy się tam
z Krysią i w sobotę i w niedzielę. W sobotę wracaliśmy wcześniej –
odprowadziłem dziewczyny kawałek w kierunku domu, a sam poszedłem na
GNU/Browarek (w moim przypadku GNU/Kola). W niedzielę, też długo
nie siedzieliśmy, bo Krysia zaczęła marudzić. Powodem złego humorku był
chyba balonik, który jej mama kupiła. Krysia ostatnio zwykle dostawała
baloniki napełnione powietrzem, a teraz dostała latający. Niestety nie
doceniła. Szczególnie nie podobało jej się, że balonik został do niej
przywiązany. Za którąś zmianą miejsca zaczepienia stwierdziła Bim
bam! Bim bam!
(po polsku: kur.., kur…!) i wydawało się,
że się z sytuacją pogodziła. Jednak nie do końca i trzeba było wracać.
Dopiero w połowie drogi do domu przypomniała sobie, że Gra! i że
chciałaby jednak jeszcze posłuchać, ale było już za późno.

Mimo wszystko udało mi się znaleźć też odrobinkę czasu na moje
programiki. Przepisałem od nowa obsługę rostera w PyXMPP. Zmieniłem przy
tym API (a najlepsze, że nawet je udokumentowałem), ale stare było
niewygodne, a poza tym stary kod był wolny i zupełnie niezgodny ze
standardem jeśli chodzi o traktowanie znaków Unicode (zupełnie olewał
profile stringprep). Nowy kod w CJC niczego nie popsuł, a nawet naprawił
parę błędów.

Miałem też problemy z JJIGW, które od czasu do czasu zżerało 100% CPU na
serwerze. Postanowiłem to zbadać Pythonowym profilerem. Okazało się to
niełatwe. Profiler sam z siebie olewa wątki poza głównym. Dokumentacja
i Google nie wiele mówią na ten temat, ale jakoś udało mi się odpalić
tego profilera także dla innych wątków z zapisywaniem statystyk do
innego pliku dla każdego wątku. Znowu się potwierdziło że wątki
w Pythonie są mocno niedopracowane.

Wczoraj natomiast zacząłem implementować klienta MUC w PyXMPP. Jak
dobrze pójdzie, to niedługo będzie można używać CJC wraz z JJIGW
oraz innymi implementacjami MUC i będę mógł porzucić tkabbera.

Wreszcie jakiś release, a nawet trzy

Dość tego ukrywania moich wypociń przed światem. Szczególnie że ostatnie wydanie PyXMPP
(0.3) nie działało z ostatnimi wydaniami libxml2 (>=2.6.7). Nawet w PLD Ac był taki
niedziałający zestaw. Wczoraj siadłem do kompa i wydałem kolejne wersje wszystkich moich
aktywnych Jabberowych projektów: PyXMPP
0.4
, CJC 0.4 i JJIGW 0.1. Wszystkim im jeszcze wiele
brakuje, ale używać się dają. CJC ma już nawet paru swoich wiernych użytkowników, a po
wczorajszym wydaniu już pojawił się nowy bugreport.

Dzisiaj dostałem polecenie służbowe od szefa: zainstalować
TeamSpeak na naszym serwerze gier.
Szkoda że to zamknięte binarki, ale w końcu i tak większość gierek które tam mamy
to też zamknięty soft, nawet bardziej. Serwerek zainstalowałem i zacząłem się zastanawiać
nad kupnem słuchawek z mikrofonem do zabawy z tym w domu. Ale szef nas zaskoczył i przywiózł
5 kompletów takich (niestety nie za darmo). W firmie już testowaliśmy i fajnie jest. Może
sobie kupię takie słuchaweczki, a może nie.

Testowanie, poprawianie…

W zeszłym tygodniu postawiliśmy w firmie serwer gier. To znaczy, nie całkiem
tak… działał już od dłuższego czasu, ale mało kto o nim wiedział, był tam
tylko Quake 3 (na życzenie kilku naszych klientów, którzy długo za mną chodzili,
żeby to postawić) i netpanzer. To drugie prymitywne, mało znane i niedorobione
(nawet jak nikt nie gra to zżera 100% procka, a po jednej grze potrafi się
zawiesić). Od zeszłego tygodnia zaczęliśmy robić z tym porządek – wywaliliśmy tego
nieszczęsnego netpanzera, zmieniliśmy maszynkę z Pentium II 300MHz, na Durona
1Ghz (koledzy serwisanci odstąpili swój komputer – wiedzą co dla firmy ważne
;-)), dorobiliśmy statystyki (takie).

Odkąd postawiliśmy tam RtCW Enemy Territory, to cała firma ostro
testuje ten serwer. Nie ma to jak darmowa, jednak bardzo przyjemna,
gierka FPS chodząca na nienajnowszych maszynkach (moje ATI Rage 128 Pro prawie
wystarcza) i pod Linuxem. Na początku wszystkim nam szło równie kiepsko (inni
gracze pisali co za idioci, ROTFL, z takimi lamerami jeszcze
nie grałem
), więc byłem nienajgorszy. Teraz kolegom idzie dużo lepiej, a ja
prawie nie robię postępów :-(. W domu mogę to przynajmniej
tłumaczyć tym co wyprawia mój ISP (pingi bywają ładne – 30-80ms, ale gdy mam
czas i ochotę na granie, to potrafią przekroczyć 600ms), ale w pracy (całe
szczęście, że mamy tak tolerancyjnego szefa) przy pingach 1ms, też dostaję w
d…

Postawiłem tam sobie też serwer Crossfire, ale w to nikt nie chce
grać. Może jak zrobię do tego stronkę ze statystykami i może jakieś specjalne
questy od Dungeon Mastera, to serwerek zyska popularność. Zresztą część
oskryptowania do statystyk (łącznie z prostym botem) mam już gotową.

To Enemy Territory jest tak przyjemnie odmóżdżające, że
wygrywało ze wszelkimi poważniejszymi zajęciami (oczywiście poza bieżącymi
obowiązkami w pracy). Jednak dzisiaj się przemogłem i zrobiłem przegląd
bugreportów na JabberStudio. W CJC nawet parę błędów poprawiłem oraz zmieniłem
nazewnictwo plików konfiguracyjnych na bardziej przejrzyste. Jutro zabiorę się za
JJIGW, lub dalej będę poprawiał CJC.

Czyżby libxml2 to był zły wybór?

Zaczynam wątpić w to że użycie libxml2 w PyXMPP to był naprawdę dobry
wybór. I to nie z tego powodu, że ta biblioteka, wraz z modułem pythonowym
jest dość trudno dostępna dla użytkownika końcowego. Chodzi raczej o podejście developerów
libxml2
. A może po prostu ja byłem głupi zakładając że interfejs SAX,
czyli strumieniowy, będzie mnie informował o zdarzeniach na bieżąco. Czyli że
np. informację o początku elementu dostaję zaraz po przeczytaniu całego taga
początkowego, a nie po rozpoczęciu kolejnego elementu. W każdym razie po
uaktualnieniu (zresztą podyktowanym względami bezpieczeństwa) libxml2 do
wersji 2.6.7 PyXMPP i wszystko co z niego korzysta (a więc CJC i JJIGW)
przestaje działać. I nie będzie działać, póki autorzy libxml2 nie cofną tego
feature’a, albo ja nie przygotuję obejścia (ręcznego wstępnego
parsowania strumienia XML przed przekazaniem go do parsera XML).

Routerek 3Coma nadal działa, ale zdążył nas zaskoczyć. Konfiguracja
firewalla, która miała zablokować dostęp po TCP i UDP do routera, zablokowała
cały ruch TCP i UDP przechodzący przez router. Okazało się że w ACLach w tym
routerze maski adresów IP mają odwrotne znaczenie niż gdzie indziej (chociaż
może w innych routerach jest tak samo) i adres z maską
255.255.255.255 oznacza dowolny adres, a jak chcę złapać
ten jeden konkretny, to muszę użyć maski 0.0.0.0. Dziwne,
ale teraz działa.

Postawiłem i wczoraj w końcu skonfigurowałem zgodnie z życzeniami
użytkowników serwerek Quake3 na firmowym serwerze games.bnet.pl. Gostki
przez dwa tygodnie za mną chodzili w tej sprawie. Podziwiam ich
cierpliwość. :-)

A’propos gier. Doszedłem to tego, czemu mi się komp przy OpenGL wywalał –
nie miałem modułu via-agp załadowanego, a obsługa DRI na Rage128
w trybie PCI najwyraźniej się sypie. A samo agpgart już nie
wystarcza. Obejrzałem sobie UFO: Alien
Invasion
– może z tego być niezła gierka.

Zrobiłem to

Wydałem jabber-gg-transport 2.0.8. Trzeba było wreszcie to zrobić, bo
2.0.7 wykrzaczało się że aż wstyd. W CVS już dawno leżały odpowiednie
poprawki (dziękuję wszystkim którzy je przygotowali albo pomogli mi je
przygotować), ale dopiero dzisiaj zrobiłem „release”. Oto
lista najważniejszych zmian:

  • Wyłączony import kontaktów z serwera GG. Po zmianie protokołu i tak
    nie działał, a powodował wykrzaczanie się całego transportu.
  • Poprawki pozwalające użyć transport z serwerem jabberd 2.0.
  • Poprawiony błąd powodujący zwis przy ponownej rejestracji w
    transporcie.
  • Poprawiony błąd powodujący wykrzaczanie się transportu po odebraniu
    <presence> z pustym <priority>.
  • Poprawiona rejestracja transportu w rosterze użytkownika – już nie
    powinien on się pojawiać w rosterze dwa razy.
  • Poprawiona funkcja licząca skrót SHA tak, aby działała poprawnie na
    architekturach 64-bitowych (w tym na moich Opteronach).
  • Oraz parę mniej istotnych poprawek.

A teraz z innej beczki. Zainstalowałem na serwerach pocztowych
amavisd+ClamAV. Działają ślicznie, ale otrzymywałem skargi że niektóre
wiadomości nie dochodzą. Okazało się, że chodziło o majle które zostały
odrzucone za 8-bitowe znaki w nagłówkach (zabronione przez RFC 2822).
Odrzucanie źle sformatowanych wiadomości ma duży sens, bo nigdy nie
wiadomo czy Outlook tak samo zinterpretuje jej zawartość jak antywirus
i po prostu wirus mógłby umknąć. Na takim bugtraqu są zgodne opinie że
„be liberal in what you receive” w przypadku poczty i antywirusów
powoduje tylko problemy. A więc nie mam zamiaru przyjmować wiadomości
łamiących podstawowe standardy (userom dałem wybór – mogą sobie to
wyłączyć).

W logach sprawdziłem co to za wiadomości są odrzucane. Ta wiadomość
o której było tyle krzyku to najwyraźniej z jakiegoś walniętego albo źle
skonfigurowanego Outlooka, z niezakodowanym
„Środkowoeuropejski” w polu „Date: ”. Ale takich
było wśród odrzuconych niewiele. Większość to majle słane automatem z
różnych serwisów WWW (w większości w PHP). Jakoś mnie to nie dziwi.
Zawsze uważałem że olewanie (a raczej ignorancja w tej dziedzinie)
standardów jest podobna do użytkowników PHP. Ale pewnie jestem
uprzedzony…

Na koniec jeden link:
Head over Heels
. Wkleiłem już go do komentarza na blogu Zgody, ale
uznałem że na głównej stronie też powinien się pojawić. Bardzo
sympatyczna gierka. Nie poświęcam wiele czasu na granie (mam go zawsze
mało, szkoda mi go na takie przyjemności), ale 19% udało już mi się
zrobić. :-)