Życie na zwolnieniu lekarskim

Jakoś dochodzę do siebie po środowej operacji. Wczoraj byłem w Bytomiu na
kontroli i dowiedziałem się, że wyjątkowo mało spuchłem jak na taki zabieg.
A żona i tak twierdzi że wyglądam „jak pół chomika”. Po kontroli wpadłem do
firmy oddać L4 i zrobiłem przy okazji parę pilnych rzeczy, z którymi beze mnie
by sobie nie poradzili. Problemem oczywiście wciąż było (i nadal jest) jedzenie
– obiad jadłem z 5 razy dłużej niż zwykle, a po nim byłem potwornie zmęczony
i obolały. W nocy, jakby jeden chory w rodzinie to było mało, Krysia dostała
gorączki (38.4) i zamiast spać była pełna energii. Musiałem się ewakuować do
drugiego pokoju na podłogę. Czasem jakoś znosiłem jak łaziła mi po twarzy, ale
teraz to było wykluczone.

Dzisiaj obudziłem się bardziej obolały niż wczoraj. Do pracy ani nigdzie
indziej nie musiałem iść, więc żeby się czymś zająć zabrałem się za

Transport GG
. Postanowiłem wreszcie poprawić parę błędów o które userzy mnie
od jakiegoś czasu męczą. Ale mogłem spokojnie to olać, bo najwyraźniej nikomu
bardzo na tych poprawkach nie zależało – nikt nie zgłosił żadnego z tych błędów
na JabberStudio. Przy okazji znalazłem
buga, który pozwala na bardzo prosty zdalny DoS – wywalenie transportu jedną
wiadomością. Oprócz tego poprawiłem obsługę statusów opisowych niedostępnych
użytkowników (przy okazji okazało się, że wina, przynajmniej u mnie, jest w
połowie po stronie jggtrans, a w połowie po stronie tkabbera – w obu podobno
poprawione), obsługę zmian dostępności (brana pod uwagę jest tylko dostępność
zasobu o największym priorytecie) i chyba jeszcze jakieś drobiazgi. U siebie już
to zainstalowałem, jak nic się nie wysypie to prawdopodobnie jutro będzie
release wersji 2.0.6.

Nowy transport i odchudzanie

Wczoraj dostałem informację, że jggtrans nie kompiluje się z nowym libgadu.
Dzisiaj to zbadałem i poprawiłem. Przy okazji dorobiłem obsługę połączeń TLS
do serwerów GG (wymagany jest w miarę nowy snapshot libgadu). Wcześniej
poprawiłem jeden błąd z powiadamianiem o obecności (nie zawsze był używany zasób
„GG”), a dzisiaj dodatkowo cofnąłem zmianę powodującą generowanie błędu zamiast
informacji o niedostępności – na razie chyba żaden klient nie jest na to
przygotowany.

No więc Jabber GG Transport, wersja 2.0.5 już jest. Źródła do ściągnięcia
można znaleźć tam gdzie zwykle.

A ja ostatnio z przerażeniem stwierdziłem, że mi brzucho rośnie. Przerażenie
spotęgował oczywiście blog
AlchemyXa
. Wszystkiemu oczywiście winne są: mój siedzący tryb życia oraz
drugie śniadanka w pracy (takie śniadanko to np.: dwie bułki z szynką,
opakowanie katarzynek i Prince Polo). No więc postanowiłem się odchudzać…

Dzisiaj poranek zacząłem od 50 brzuszków i 25 pompek (docelowo 100 i 50 co
rano), a na drugie śniadanie zjadłem dwie małe bułeczki (i cztery duże
plasterkami szynki). Ciekawe ile wytrwam… 🙂 Dobrze byłoby trochę na rowerze
pojeździć, ale nie wiem czy uda mi się (albo raczej czy będzie mi się chciało)
doprowadzić starą Gazelę do używalności. Idealnie byłoby jeździć na rowerze do
pracy (15 kilometrów w jedną stronę), ale to chyba dla mnie za dużo. Szczególnie
że po każdej takiej jeździe wypadałoby wejść pod prysznic, a przynajmniej się
przebrać. No i nie wiadomo czy rower to przeżyje i ile razy po drodze trzebaby
go naprawiać.

jggtrans ma błędy, PyXML ssie, a ja udzielam wywiadów…

Zaraz po wydaniu transportu GG okazało się, że jednak nie zawsze wysyła
<presence/> poprawnie – tzn. z zasobem „GG”. Przez to czasami kontakty GG
są widoczne podwójnie i nie znikają wtedy kiedy trzeba… Czyli niedługo 2.0.5.

PyXML jest tak wooolneeee, że dzisiaj pół dnia spędziłem na szukaniu
alternatywy, bo z taką szybkością działania jabgraph właściwie traci sens.
Oczywiście niepotrzebnie narobiłem pakietów do PLD z dziwnymi parserami,
bo ta przecież już był libxml2, także w postaci modułu do pythona. Zacząłem
więc przerabiać jabgraph z API DOM na API libxml2 – na razie zrobiłem jedynie
wczytywanie pliku konfiguracyjnego ale już witać dużą poprawę.

Udzieliłem też wywiadu – poważnie to brzmi :). Pytania (z błędami
ortograficznymi) zostały wysłane na listę dyskusyjną i „osoby upoważnione”,
czyli „ważne persony” miały na nie odpowiedzieć. Mnie też przypadł ten zaszczyt,
stąd wzmianka w blogu :). Trzeba przyznać, że same pytania były merytorycznie
OK – jestem ciekaw jak odpowiedzą pozostałe „persony”.

Jeszcze ciekawostka – jak zrobiłem sobie ikonki do transportów w tkabberze.
Umieściłem następujący fragment w ~/.tkabber/config.tcl:

proc postload {} {

	# ... inne ustawienia
    set roster::show_only_online 1
    set roster::show_transport_icons 1
    set roster::show_transport_user_icons 1
    set roster::roster(cached_category_and_subtype,jit.jabber.bnet.pl) {service icq}
    set roster::roster(cached_category_and_subtype,headlines.jabber.bnet.pl) {service rss}
    set roster::roster(cached_category_and_subtype,gg.jabber.bnet.pl) {service x-gadugadu}

    global serviceicon
    set serviceicon(x-gadugadu,available)   [Bitmap::get [pixmap services gg_online.xpm]]
    set serviceicon(x-gadugadu,chat)        [Bitmap::get [pixmap services gg_chat.xpm]]
    set serviceicon(x-gadugadu,away)        [Bitmap::get [pixmap services gg_away.xpm]]
    set serviceicon(x-gadugadu,xa)          [Bitmap::get [pixmap services gg_xa.xpm]]
    set serviceicon(x-gadugadu,dnd)         [Bitmap::get [pixmap services gg_dnd.xpm]]
    set serviceicon(x-gadugadu,unavailable) [Bitmap::get [pixmap services gg_offline.xpm]]
}

Ikonki przerobiłem z pakietu ikonek dla Psi jaki znalazłem w „plikowni”.
IMHO mogłoby to być zrobione lepiej – ale tak też jakoś działa. Może podyskutuję
jeszcze z autorami tkabbera na ten temat.

Jabber GG Transport 2.0.4

Wreszcie udało mi się przywrócić transportowi poprawną stabilność,
poprawić inne znane mi błędy i wydać bestię w wersji 2.0.4.

Podstawowe zmiany:

  • Wszyscy użytkownicy GG widoczni są z zasobem „GG”.
  • Formularze wyszukiwania i rejestracji zostały zmienione tak, by
    były kompatybilne ze wszelkimi implementacjami JEP-4, w szczególności
    z JAJCem (ciekawe czy się udało).
  • Dodana została obsługa Jabberowej niewidzialności. Potrzebne do
    tego jest odpowiednie wsparcie ze strony klienta i czasem wymaga
    gimnastyki od użytkownika. Np. w tkabberze po wybraniu statusu
    „invisible” należy ponownie zalogować się do transportu.
  • Poprawiłem też obsługę statystyk – wszystkie mogą być odczytane
    jednocześnie. Wcześniej problemu nie zauważyłem, bo tkabber zawsze
    czyta pojedynczo, ale jabgraph żąda wszystkich informacji na raz.

Pierwsza z tych zmian powoduje pewne ogłupienie klientów Jabbera
zalogowanych podczas upgrade’u. Niektóre kontakty mogą być widoczne
podwójne, a niektóre jako dostępne, mimo że dostępne nie są. Po
wylogowaniu się z Jabbera (nie transportu) i ponownym zalogowaniu
wszytko powinno wrócić do normy.

Jutro wracam do prac nad jabgraphem. Ale on się straszni muli…
Nawet psyco nie pomaga. Ale trudno, w końcu to tylko taki „proof of
concept”.

Postępy, postępy…

Wreszcie transport GG na moim serwerze się nie wywala – mmazur znalazł
błąd, którego sam nie mogłem dostrzec. A błąd był bardzo głupi.
Zostały jeszcze jakieś drobiazgi do poprawienia i będzie można wydać
wersję 2.0.4.

Jabgraph już też chodzi i rysuje wykresiki dla mojego transportu,
a dzięki wczorajszej poprawce na wykresie uptime’u nie ma kompromitującej
„piły”. Lada dzień na jabberstudio będą dostępne pliki pierwszego
release (w CVS już są) oraz demo na WWW.

Krysia też robi postępy: dzisiaj postawiła swoje pierwsze kroczki
„bez trzymanki”.

A teraz… na rybki! 🙂

PyXML nie taki straszny

Jednak PyXML ma wszystko co trzeba… z wyjątkiem dokumentacji. Okazało się
że można dokument wczytać jako obiekt DOM, jednocześnie go walidując. Przy
okazji znalazłem parę innych przydatnych mi funkcji. Ale to wszystko dopiero po
przejrzeniu źródeł, bo dokumentacja okazała się do niczego :-(.

Grzebię się w tym XMLu, żeby napisać programik do rysowania wykresików ze
statystyk Jabberowych otrzymywanych za pomocą protokołu
JEP-39. Transport
GG oczywiście ten protokół obsługuje, więc przynajmniej do niego będzie
można jabgrapha zastosować. Jabgraph już prawie skończony, poprosiłem
już o odpowiedni projekt na JabberStudio i, jeśli nic mi nie pokrzyżuje
planów, lada dzień powinien być dostępny do ściągnięcia.

Tymczasem transport GG po ostatnich poprawkach ciągle strasznie
niestabilny, a ja nie mogę znaleźć błędu który to powoduje –
użytkownicy jabber.bnet.pl niedługo gotowi będą mnie zlinczować.

Problemy z browsingiem i nowy jggtrans

Wczoraj dopisałem obsługę JEP-11 (browse) do SMS-transportu. Dzisiaj smoku mi
napisał, że to nie działa. Okazało się, że z Psi rzeczywiście nie bardzo. Ale
Psi obsługuje to browse, tak jak serwer jabbera – wyszło na to że jabberd też
nie obsługuje JEP-11 zgodnie ze specyfikacją. Później sprawdziłem jeszcze swój
transport GG – też niezgodny ze standardem. Zacząłem więc poprawiać…

Patch na jabberd-1.4.x jest dostępny tutaj.
Należy też pamiętać o poprawieniu sekcji <browse/> pliku jabber.xml.

Nowy transport GG (oprócz poprawienia browse ma ulepszoną obsługę proxy)
można znaleźć tam gdzie zwykle.