Wydałem CJC i znikam

Wczoraj wydałem
PyXMPP
i CJC
w wersji 0.2. CJC – Console Jabber Client – to klient Jabbera na
terminale tekstowe z interfejsem użytkownika podobnym do tych znanych
z popularnych klientów IRC takich jak: irssi czy BitchX. Nie jest
jeszcze skończony (a jaki program jest?) – brakuje w nim między innymi:
rejestracji nowych kont, rejestracji w transportach oraz wyszukiwania
użytkowników, ale poza tym podstawowa funkcjonalność jest i działa. Jest
też przynajmniej jeden użytkownik, który używa CJC regularnie (nie ja)
:-).

Jeżeli w tym co wydałem są jakieś poważne błędy to, niestety, mają
szansę być poprawione dopiero po ósmym września. Wtedy wrócę z wczasów
na które wyjeżdżam dzisiaj wieczorem. Teściowie z większością bagaży
wyjechali już dzisiaj rano, żeby na miejscu – w Pogorzelicy – wszystko
na nasz przyjazd przygotować. My zaszaleliśmy i zarezerwowaliśmy sobie
przedział sypialny w pociągu – nie bardzo sobie wyobrażamy podróż z
dzidziusiem samochodem na drugi koniec Polski (ostatnio godzina jazdy
była dla niej trudna do wytrzymania). Koszty takiej podróży są
olbrzymie (za dwie osoby to będzie ponad 300zł), ale na pewno wygoda
większa. Gorzej na miejscu – tam samochód się przydał, a teść pewnie nam
swojego nie będzie dawał. Trudno.

„Lesia” przeczytałem i nawet mi się podobał. W najbliższym czasie
nie będę jeździł komunikacją miejską, więc pewnie literaturę sobie
odpuszczę, ale mogę się zastanawiać co następnego czytać gdy znowu będę
musiał do roboty jeździć.

Dawno mnie tu nie było…

Dawno nie pisałem, bo bardzo mnie wciągnęło pisanie tego PyXMPP. Idzie
znacznie wolniej niż myślałem, ale jestem zadowolony z tej pracy. Mam
ambicję napisać to tak, żeby było 100% XMPP compliant, ale też zgodne
z ze „starym Jabberem”. Właściwie to co napisałem już można wykorzystać
do tworzenia klienta Jabbera, czy prostych serwisów.

Na standards-jig@jabber.org wielu narzekało, że SASL to za duże wymaganie
dla „małych klientów”. Nie zgadzam się z nimi – zrobiłem autentykację PLAIN
i DIGEST-MD5 w pythonie praktycznie od zera i wielki problem to nie był.
Gorzej jest z profilami stringprep (wymagania odnośnie nazwy użytkownika
i zasobu). Przez weekend walczyłem z normalizacją Unicode 3.2.0 (co było tym
trudniejsze, że unidata w Pythonie to tylko 3.0.0) i prawie działa – nawet
dekompozycja i kompozycja sylab HANGUL (cokolwiek by to nie było), ale mam
jeszcze jakieś problemy z porządkiem kanonicznym. Myślę że dzisiaj to
naprawię, a może i całe stringprep uda mi się zrobić. Odpowiednie moduliki
są dosyć spore – zawierają parę tabel wydłubanych z Unicode Character
Database.

A z innej beczki: w sobotę byłem z żoną na Matrix Reloaded (dzidzia została
u dziadków). Skoro wszyscy o tym filmie tutaj piszą to i ja napiszę. IMHO
całkiem niezły. Nie spodziewałem się niczego ambitnego i byłem zadowolony
z tego co zobaczyłem. Może po prostu jestem wystarczająco rąbnięty, żeby to
oglądać – nie było dla mnie problemem traktowanie części postaci jako procesy
w systemie operacyjnym. Miałem tylko wątpliwości, czy agent Smith to wirus
dołączający się do aktywnych procesów, czy zwykła fork-bomba 🙂 Zgodnie
z poleceniami odczytanymi z ogłoszeń na ścianach kina przeczekałem napisy,
żeby zobaczyć zapowiedź kolejnej części. Zapowiedzi widziałem lepsze, ale same
napisy końcowe mnie zainteresowały. Lista płac olbrzymia i chyba samych
„system administrators” było ze 20. W sumie poadministrowałbym sobie taką
farmą serwerów co to liczyła 🙂

Wczoraj miałem znowu okazję wykazać się jako tatuś. Krysia nie chciała spać,
po półtorej godziny cycania żona miała już dosyć, a ja przejąłem ryczącego
dzidziusia. Takiej nieszczęśliwej jej jeszcze nie widziałem. Nie pomagało
noszenie, mówienie, kołysanie itp. Dopiero jak z nią poszedłem do łazienki,
to przed lustrem nieco się uspokoiła. Ale ile można tak w łazience stać…
Na szczęście w pokoju też się znalazło lusterko. Trochę pochlipała z lusterkiem
w objęciach, potem położyła się mi na brzuchu – widać było że wreszcie będzie
chciała spać. Jak już trochę przysnęła przeniosłem ją do łóżeczka. Obudziła
się, ale to że ją położyłem w łóżeczku bardzo się jej spodobało. Popełniłem
błąd przykrywając ją – rozkopywanie kocyka uznała za najlepszą zabawę. Potem
się powoli uspokajała, trochę pośpiewała pod nosem i zasnęła. Z odkrytymi
nóżkami – trudno. Ważne że się udało i to bez cycusia.

Odchudzania ciąg dalszy oraz problemy z transportem GG

Po wczorajszych 50 „brzuszkach” dziś rano udało mi się zrobić tylko
1 (słownie: „jeden”). Z pompkami nieco lepiej – 7. Jak tak dalej pójdzie to
niedługo mniej się będę ruszał niż zanim postanowiłem się odchudzać 🙂

Nie polecam używać transportu GG ze snapshotami libgadu. Niby obsługuje
wtedy TLS, ale też wywala się znacznie częściej. Z libgadu-1.0 wydaje się
pracować nie mniej stabilnie niż poprzednie wersje.

Mój moduł pyxmpp (moduł obsługi XMPP do python) zaczyna być już całkiem
użyteczny. Nawet już przeportowałem część jabgraph pod to. Teraz już nie mam
żadnych wątpliwości, że jabber.py ssie. Może niedługo ruszy pisanie właściwego
serwera (to głównie na jego potrzeby powstaje pyxmpp). Zastanawiam się czy
zakładać już nowy projekt na JabberStudio. Mam wątpliwości, bo obecne pyxmpp
wymaga spatchowanego libxml2 (oryginalne nie bardzo się nadaje do obsługi
strumieni XML).

Coś mi ostanio odbiło…

… i postanowiłem napisać własny serwer Jabbera – w pythonie, zgodny ze
specyfikacją XMPP i w ogóle bajerancki. Pewnie i tak nic z tego nie wyniknie. Na razie zacząłem robić moduł do
obsługi strumieni XMPP (jabber.py mnie nie zadowala), oparty o libxml2.
Okazało się, że libxml2 bez poprawek się do tego nie nadaje, ale
przygotowałem odpowiedniego patcha i jest OK. Mam nadzieję że go zaaplikują do
oryginalnych źródeł.

Jednak na razie musiałem sobie pisanie modułu i serwera odpuścić – w końcu
za tydzień będę prowadził wykład i trzeba jakąś prezentację przygotować. Na
razie porobiłem trochę screenshotów (jak ktoś ma jakieś ciekawe screenshoty
klientów jabberowych, to jestem chętny) i walczę z OpenOffice (chyba jednak
LaTeX bardziej mi odpowiada).

Ale przygotowanie prezentacji pewnie też sobie zaraz daruję, żeby dołączyć
do Iwony i Krysi, które pojechały na spacer na działkę 🙂

Z innej beczki: chyba w PLD szykuje się (albo tylko szykował) przewrót.
„Rebelianci” chcieli, żebym ich poparł, ale ja wolę się nie mieszać. Też mnie
kloczek wkurza, ale miejscami rozumiem jego rację, racje „rebeliantów” zresztą
też. Ja tylko chcę mieć działającą dystrybucję, z w miarę aktualnymi zasobami,
a na razie żadna ze stron nie jest w stanie mi tego zagwarantować.