Krzyk rozpaczy

Czy to normalne, że rodzice reagują śmiechem na rozpaczliwy krzyk dziecka:
Ratunku!?

Zaznaczam, że chodzi o sytuację, gdy dziecko nie może wybrać poziomu
trudności i piosenki w StepManii, bo coś się w macie zacięło…

Rewolucja w kompie

Niedawno pojawiło się nowe XFCE: 4.4.
Najpierw chciałem to w pracy sobie zainstalować, ale okazało się, że ani tego
nie ma w PLD Ac, ani nie da się w tym Ac zainstalować. Instalacji Th wolałem
nie ryzykować na maszynie która służy mi do pracy… co innego w domu, tam
ostatnio używam jedynie CJC i Firefoksa. Uznałem, że dwie aplikacje jakoś do
działania doprowadzę.

Upgrade nie był prosty. Masy rzeczy w repo Th brakuje. Wiele zależności
jest zepsutych. Cała masa pakietów zbudowanych w Ac wymaga X11-*, albo
XFree86-*, których w Th już nie ma (wystarczyłyby zależności od libX*, które
pociągnęłyby odpowiednie pakiety xorg-*). Dodatkowo, żeby nie było za prosto,
mam u siebie pomieszane pakiety 32- i 64-bitowe. Ale jakoś się udało…

Pierwsze co chciałem odpalić, to Xy. W końcu dla nowego XFCE jest ta cała
szopka… Poprzednio używałem 64-bitowego X-serwera i zamkniętych sterowników
ATI. Otwarte nie dawały akceleracji, a zamknięte nie działały, gdy X-serwer był
32-bitowy (generalnie większość systemu mam 32-bitowe), a kernel 64-bitowy (bo
tylko taki pozwala mi odpalać binarki i 32- i 64-bitowe). Teraz chciałem
spróbować z serwerem 32-bitowym i sterownikami Open Source, w końcu między X.org
7.0, a 7.2 coś mogło się zmienić…

Jedno się nie zmieniło – sterownik z X.org wciąż nie rozpoznaje mojej
karty (ATI Technologies Inc RV370 secondary [Sapphire X550 Silent]) i obsługuję
ją dopiero po dodaniu do xorg.conf: ChipId 0x5b60. Akceleracja 3D też nie
ruszyła, chociaż sterownik DRM w kernelu się załadował i kartę poprawnie
wykrył… logi sugerowały, że znowu może być coś z tymi bitami… Zainstalowałem
więc 64-bitowy X-serwer z 64-bitowymi sterownikami. DRI ruszyło. Rozszerzenie
„Composite” też. Mogłem podziwiać piękną przezroczystość w XFCE. Najpierw
działało to strasznie wolno, ale po poprawieniu paru opcji da się tego używać.
Jednak z OpenGL coś wciąż było nie tak… mimo że glxinfo pokazywało, że
wszystko jest OK i nawet Direct rendering: yes. To glxgears nie działało.
Znaczy się działało, ale nic nie wyświetlało. Podobnie wszystkie inne aplikacje
3D…

Spróbowałem więc zamkniętych sterowników… musiałem przebudować, bo w Th
były stare, niekompatybilne z nowymi Xami. Nowe się zbudowały, nawet działały,
ale bez akceleracji 3D. Linker dynamiczny nie mógł znaleźć jakiegoś symbolu od
DRI w modułach X-serwera… pewnie te zamknięte binarki nie są zgodne z naszym
buildem X.org… no cóż, tym razem lepiej wypadły sterowniki otwarte.

Wróciłem do otwartych sterowników i spróbowałem jeszcze czegoś:
zainstalowałem 64-bitowe glxgears… i ruszyło. Czyli tym razem, pod 64-bitowym
kernelem, nie tylko X-serwer musi być 64-bitowy, ale i wszystkie aplikacje
OpenGL. Przykre… ale chwilowo mogę z tym żyć. Ostatnio i tak wiele takich
aplikacji nie używam. Właściwie, to tylko StepManię.

Dzisiaj więc postanowiłem sobie skompilować StepManię na 64-bity. Środowisko
do budowania zrobiłem sobie w chroocie z czystym 64-bitowym Th. Zainstalowałem
co StepMania potrzebowała i zacząłem budowanie. Od razu się wykrzaczyło… SM
jest w C++, a C++ ma to do siebie, że kod napisany dla starszego kompilatora
często nie da się skompilować nowszym. W PLD Th mamy GCC 4.2 i to GCC kodu
StepManii nie polubiło. Jednak potrzebnych poprawek nie było dużo i większość
z nich była nawet dla mnie (nie znającego i nie lubiącego C++) oczywista.
W końcu się skompilowało. I nawet dało się uruchomić.

Skompilowana przez mnie StepMania działała, ale tak jakby nie do końca. Nie
dało się wejść do ustawień gry, a rozpoczętej gry nie dało się wygrać. Jak się
poprawnie przeszło którąś piosenkę, to maszyna puszczała ją od początku.
Można by się było zajechać ;-). Podczas kompilacji widziałem
warningi dotyczące, między innymi, strict aliasing rules, więc
postanowiłem spróbować kompilacji z innymi opcjami. Okazało się, że skrypt
configure StepManii na sztywno ma wpisane -O3. To już mogło sprawiać
problemy. Zmieniłem na -O2 i dodałem -fno-strict-aliasing i całość
skompilowałem od nowa. Podczas kompilacji ćwiczyłem sobie na tej niedorobionej
binarce – ciekawie się gra, gdy komputer się czasem zagapi i nie
zauważy
, że się strzałkę wcisnęło na czas. ;-)

Po kilkunastu minutach miałem nową 64-bitową binarkę gotową. I tym razem
działa dobrze. To sobie jeszcze kiedyś poskaczę. :-)

W kolejce czeka zbudowanie GComprisa dla
Krysi, bo stare wyleciało razem z Ac (w Th tego brak).

Porządki w Nerd Quizie

Wyrzuciłem z joggerowej drużyny Nerd
Quiz
wszystkich, którzy od dawna nie grali. Tak, żeby pozostała „żywa”
rywalizacja. W praktyce oznacza to, że zostali tylko ci, co zagrali w tym
miesiącu. Oczywiście każdy Joggerowicz, który ma ochotę grać jest w drużynie
mile widziany. Także ci, którzy właśnie wylecieli. Wystarczy odezwać się do
mnie, albo innego członka drużyny.

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.