Niedostępny urząd

Chciałem zobaczyć co dzisiaj jest w kinie. Repertuar naszych kin zawsze
najszybciej można było znaleźć na stronach Urzędu Miejskiego w Gliwicach. A więc
otwieram tę stronę w ELinksie… i okazuje się, że nie mogę przejść na
interesującą mnie podstronę. Na żadną podstronę. Ktoś nie powiedział
webmasterowi, że do linków służy tag <a/>. Napisałem to admina co o tym
myślę. Chciałem od razu ich do Osiołków dodać, ale Osiołki proszą aby najpierw
męczyć admina, więc poczekam jeszcze na jego odpowiedź. Później spróbowaliśmy
jeszcze Firefoksem. Tu już dało się tych linków używać, tylko trzeba było
znaleźć odpowiednie miejsce do kliknięcia, które nie całkiem się pokrywało z
opisem odnośnika. No pełen profesjonalizm po prostu.

Update: w Firefoksie można klikać normalnie. Nieporozumienie wyniknęło tylko z powodu kursora który zmieniał kształt na tekstowy zamiast na linkowy (co zrozumiałe przy takim partactwie).

Wrrr….

Wracam z pracy, zabieram się za odgrzewanie obiadu, a tu już telefon.
Jakiemuś ważnemu klientowi coś nie działa i trzeba to sprawdzić. Odpowiadam,
że za jakieś pół godziny sprawdzę. W końcu obiadek gotowy. Jem sobie, przy
laptopiku oczywiście, delektując się chwilą spokoju. Jednak nie długo. Dorwał
mnie ktoś na Jabberze i pisze, że ten BTS
z PLD
(nad robieniem którego zarwałem kiedyś kilka nocy) w ogóle nie
działa
. Że jest do dupy, że
Bugzilla byłaby lepsza i po co w ogóle było coś innego tam pisać jak jest
gotowe rozwiązanie. Wrr….

Bugzilla była w PLD lata temu i nikt tego nie używał, bo toporne i
zupełnie niedopasowane do czegoś takiego jak dystrybucja. Potem pojawił się
jakiś nasz własny, prymitywny BTS. Ale nikt się nim nie zajmował, nie
uaktualniał, aż wkońcu zaczął on zarzynać maszynę na której chodził i został
wyłączony. Przez wiele tygodni w ogóle nie było gdzie zgłaszać błędów w PLD.
Co jakiś czas pojawiała się na ten temat dyskusja, z której nic nie wynikało
(poza tym, że wielu developerów nie chce Bugzilli). W końcu nie wytrzymałem i
mimo, że nie mam dość wolnego czasu, postanowiłem coś zrobić. Wziąłem
Flyspraya, poprzerabiałem, żeby pasowało do dystrybucji i było nieco bardziej
zgodne ze standardami. Uruchomiłem tak, aby działały podstawowe funkcje, a kod
wrzuciłem do SVN. Tyle byłem w stanie zrobić i to było dużo więcej niż
ktokolwiek zrobił w tej sprawie. Przekonałem się przy okazji, że kod Flyspraya
jest straszny, że słusznie PHP nie lubię. Wiedziałem, że to co zrobiłem jest
pełne niedoróbek, i że ja ich raczej nie poprawię. Ale uznałem że to lepsze
niż nic. I nawet ludzie zaczęli z tego korzystać — pojawiły się nowe
zgłoszenia błędów, niestety mało kto je próbował zamykać.

A teraz czytam, że to co zrobiłem jest do niczego. I to jeszcze w momencie,
gdy chcę po prostu odpocząć po ciężkim tygodniu pracy, a nie jakiś pluskw
szukać. Człowiekowi się wszystkiego w takiej chwili odechciewa, ale z drugiej
strony jedyny sposób, żeby odeprzeć zarzut to przynajmniej znaleźć błąd będący
źródłem tej opinii i go poprawić (potem można rzucić projekt w cholerę, skoro
jest do niczego i wszyscy mają to w dupie). Okazało się, że błąd występował
gdy ktoś zgłaszał buga bez podania wersji błędnego pakietu. Zamiast
odpowiedniego komunikatu generowany był nieprawidłowy kod XHTML. Mozilla
wyświetlała odpowiednią informację, że XML nie jest well-formed, a Konqueror,
podobno, nie wyświetlał nic. Poprawiłem, co miałem robić? A tak… odpocząć po
ciężkim tygodniu… eh… Następnym razem jak będzie coś podobnego do
zrobienia, to chyba ja się do tego nie zgłoszę, szkoda nerwów.

Mamy wybitnie uzdolnione dziecko

Mamy w domu taką latarkę, co świecić nie chciała, jak już świeciła to tylko
w konkretnej pozycji i ledwo-ledwo. Dzisiaj postanowiłem ją naprawić.
Rozkręcam, odginam blaszki na różne sposoby, skręcam i nie działa (tylko
chwilkę przy skręcaniu się zaświeciła), tak kilka razy. W końcu się poddaję,
a Krysia się pyta mogę trochę z latarką porobić?. Myślę sobie Czemu
nie? bardziej nie zepsuje.
. Wzięła więc śrubokręt i latarkę i zaczęła
w niej dłubać. Przez chwilę myślałem, że będzie trzeba rozwalić latarkę, żeby
wyciągnąć z niej śrubokręt, ale nie. W końcu zaczęła wrzucać baterie, a ja
tylko przypilnowałem, żeby wkładała je prawidłowo (dzióbkiem do góry).
Skręciłem latarkę… i świeci! :-) Ale w sumie, czym się
dziwić… to wnuczka dwojga elektryków i jednego energetyka oraz córka
elektronika — trochę w genach musiało się jej dostać.

Obejrzeliśmy w końcu film…

Wczoraj pojawiłem się w wypożyczalni z reklamacją. Reklamacja może być
przyjęta, owszem, ale jak przedstawię paragon. W portfelu miałem jak zwykle
około 100 paragonów (z części już treść odparowała), ale akurat tego nie.
W kieszeniach też go nie było. Trudno. W końcu kilka razy mnie uprzedzali, że
paragon jest potrzebny do ewentualnej reklamacji. Tylko czemu nigdy tego nie
traktowałem poważenie?

Wybrałem sobie inną płytkę, ale przed wypożyczenie zażyczyłem sobie
zobaczyć jej powierzchnię. Nie spodobała mi się. Pytam się, czy wszystkie tak
mają, dowiedziałem się, że te starsze tak. Podobno żeby znaleźć nowszy to mam
szukać tych z numerkami około 15000. Znalazłem coś ponad 15900. Wyglądało
nieco lepiej, więc wziąłem.

Tym razem napęd nie odmówił współpracy. Raz się zaciął, ale ma już swoje
lata i nie jest modelem z górnej półki, a płytka fabrycznie nowa nie była.
Filmik więc obejrzeliśmy bez zakłóceń. Rzecz była o problemach małżeńskich
(właściwie pomałżeńskich) i sąsiedzkiej pomocy, ze szczęśliwym zakończeniem.
Dużo przyjemniejsze niż to co zaserwowała nam Gala, chociaż zapewne dużo mniej
ambitne. Ale cóż… my hołota. ;-)

Wrrr…

I znowu sobie filmu nie obejrzeliśmy… okazało się, że wypożyczona płytka
jest tak zniszczona, że tylko skutecznie zawiesza napęd i procesy się do niego
odwołujące…. Czemu w wypożyczalni tego nie sprawdziłem? przecież widać te
wszystkie plamy i rysy, czy wręcz dziury w powierzchni… Mam nadzieję, że
przynajmniej bezproblemowo wymienią mi tę płytkę, albo zwrócą kasę.

Filmy…

Jakiś czas temu żona kupiła Galę z filmem tylko dla dorosłych.
W sobotę wieczorem go sobie obejrzeliśmy… i pożałowaliśmy. Nie
spodziewaliśmy się jakiś śmiałych scen, czy porywającej fabuły, ale liczyliśmy
na to, że będzie na czym oko zawiesić i film nas dotakowo rozgrzeje do
zabawy… tfu… do obowiązków małżeńskich znaczy się. ;-)

Już na początku niektóre sceny były zadziwiająco śmiałe, a fabuła wydała
nam się rzeczywiście głupia. Ostatecznie jednak film okazał się okropnym
paskudztwem, którego lepiej byłoby nie kupować. Zastanawialiśmy się jakim
cudem coś takiego ktoś dodał to takiego pisma jak Gala. Żona aż pogoolała…
i znalazła recenzję tego
filmu
. Ooops… wygląda na to, że my się nie znamy na sztuce, a to było
poważne kino….

Uznaliśmy jednak, że czy poważne, czy niepoważne, to my takich świństw
oglądać nie będziemy… dzisiaj po drodze do pracy wstąpiłem do wypożyczalni
i wziąłem coś normalnego (;-)), po czym ochota na seks
raczej nie przejdzie… zobaczymy.

PyXMPP — coraz poważniej

Zrobiłem w końcu stronę WWW dla
PyxMPP
. To dopiero początek, ale na jakiś czas powinno starczyć. Zacząłem
też robić zestawy testów jednostkowym (opartych o PyUnit — moduł
unittest) do testowania całości. Na pierwszy ogień poszło
pyxmpp.jabber.vcard do którego już jakieś testy były i trzeba
było je tylko przerobić na PyUnit i uzupełnić. Oczywiście wyszło parę błędów,
które poprawiłem. Później pyxmpp.jabber.disco, w którym chciałem
uzupełnić API, testy miały mi pomóc zrobić to tak, żeby nic nie zepsuć.
Pomogły, a przy okazji poprawiłem w testowanym module sporo błędów. Ogólnie
fajna rzecz takie testy i wbrew pozorom nie tak bardzo upierdliwa (mniej niż
uzupełnianie docstringów).

Dzisiaj zrobiłem jeszcze małą rewolucję. Wkurzało mnie już to, że
importowanie jakiegokolwiek modułu z pyxmpp powodował
importowanie całości (prawie). Wynikało to z tego, że dla wygody developerów
pakiet pyxmpp importował najważniejsze obiekty ze swoich modułów.
Od dłuższego czasu głowiłem się na tym, jak to rozwiązań nie tracąc tej wygody
i nie psując za bardzo kompatybilności wstecz i w końcu coś wymyśliłem. Teraz
samo z siebie nic niepotrzebnie się nie importuje, ale jak ktoś chce po
staremu, to wystarczy że raz sobie zaimportuje pyxmpp.all, i/lub
pyxmpp.jabber.all albo pyxmpp.jabber.all (jeśli
któregoś z nich używa). W ten sposób chyba i wilk syty i owca cała.

Następnie zabrałem się za CJC. Wkurzało mnie długie ładowanie konfiga, okazało
się, że to przez częste wywoływanie logging.debug()
wywaliłem i jest lepiej. Potem postanowiłem porawić pewnego upierdliwego i
często zgłaszanego buga — część wpisów w rosterze pojawiało się przed
zamiast za nazwą grupy. Okazało się, że porównywanie JIDów z innymi obiektami
było w PyXMPP spieprzone i niektóre JIDy były mniejsze od None. I
znowu testy jednostkowe się przydały, a zgłoszenie mogłem zamknąć.

I po cholerę to wszystko piszę? Nie wiem… może, żebyście wiedzieli jak
wygląda prawdziwie geekowski sylwester… Nie, żebym nie imprezował —
specjalnie z tej okazji mam tu colę (z cytrynką) i chipsy
;-).