Zaloguj się

Jog Jajcusia

xmpp:jajcus@jajcus.net

Powrót na stronę główną

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.


Komentarze

zgoda (jarek)

07 marca 2004 22:12:20

SAX tak powinien działać (zgłaszać zdarzenia po ich wystąpieniu), zresztą masz to opisane na http://www.saxproject.org/. Ktoś zawalił -- ktoś pewnie poprawi, bo taka zmiana załamuje działanie programów klienckich. Prędzej czy później będzie tak, jak było, ale chyba nie o to chodzi, żeby polegać na czyjejś dobrej woli.
A może jednak expat? Żadnego dodatkowego softu, stabilny interfejs, niemalże ta sama implementacja we wszystkich możliwych instalacjach Pythona, od 2.0 (włącznie z PyXML). Nie waliduje, ale przecież dane przychodzą od programów, daj spokój, wszystko chcesz walidować? ;)

Jajcus

07 marca 2004 22:23:41

Expat AFAIK nie daje mi drzewa DOM ani niczego podobnego. Nie ma chyba obsługi XML Namespaces. Na pewno nie ma xpath i raczej nic podobnego. Z tego co wiem to jest to tylko niskopoziomowy parser XML - stanowczo dla mnie za mało.
A libxml2 jest i bardzo szybki i ma wszystko co potrzeba.
PyXML jest "standardowy", ale tak powolny (przynajmniej po włączeniu obsługi XML Namespaces), że odpadł od razu.

zgoda (jarek)

07 marca 2004 22:36:19

SAX również nie da Ci drzewa DOM. SAX również nie obsługuje xpath. To robi parser libxml2 zbudowany wokół SAX, ale właśnie w związku z tym błędem parser w libxml2 nie jest zgodny z SAX. Rzeczy, które daje Ci parser libxml2, da Ci elementtree (http://www.effbot.org/zone/element-index.htm), w wyjątkowo elegancki sposób. A szybkość... Znasz tę historyjkę, gdy dwa byki stoją na szczycie wzgórza, a w dole pasą się krówki? "Ty, słuchaj, chodź, zbiegniemy pędem, każdy z nas złapie jedną i będzie jazda", gorączkuje się jeden. "Nie, chłopcze, zejdziemy powoli, z klasą -- i weźmiemy je wszystkie".

Dodaj nowy komentarz

Dostępne jest formatowanie Textile

Podpis:
Treść:
Strona WWW (opcjonalnie):
Wpisz kod:code
 
 

Śledzenie komentarzy (RSS) TrackBack URI


Jesteście obserwowani...