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.

3 uwagi do wpisu “Czyżby libxml2 to był zły wybór?

  1. 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ć? 😉

    Polubienie

  2. 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.

    Polubienie

  3. 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".

    Polubienie

Co o tym sądzisz?