Zaloguj się

Jog Jajcusia

xmpp:jajcus@jajcus.net

Działający parser i kompilowany szablon

Wczoraj udało mi się doprowadzić nowy parser strumienia w PyXMPP do działania. Nie piszę skończyć, bo zasługuje jeszcze na wiele, głównie kosmetycznych, poprawek. W każdym razie już CJC z libxml2 2.6.7 dzała, a to najważniejsze.

W pracy dokończyłem analizę tego nieszczęsnego machine check exception i wyszło mi na to, że błąd został zgłoszony przez north bridge i dotyczy kontroli ECC w pamięci. Czyli albo pamięć walnięta, albo płyta główna. Będzie trzeba to sprawdzić i felerny sprzęt wymienić.

Potem na jogu Marcoosa przeczytałem o XFN i postanowiłem użyć tego cuda u siebie. Ale że wymagałoby to poprawienia linków w dwóch plikach (index.html i comments.html), to postanowiłem najpierw coś z tym utrudnieniem zrobić. Więc resztę czasu w pracy, pomiędzy telefonami klientów, spędziłem na tworzenie szablonów do szablonu i systemu kompilacji tego do formy strawnej przez Joggera. Udało mi się - z kawałków będących well-formed XML składane jest (XInclude, zaimplementowane w xmllint) szablony dla strony głównej i z komentarzami. Po drodze jest wszystko walidowane - w tym celu stworzyłem DTD do szablonów dla XHTML 1.0. Pliki źródłowe się nie walidują, bo musiałbym zrobić jeszcze DTD uzwględniające XInclude, a docelowy nie waliduje się, bo ma deklarację DTD dla XHTML, nie uwzględniającą tagów Joggera, poza deklaracją waliduje się względem tego mojego Joggerowego DTD.

Dla odmiany style CSS tworzone są przy pomocy preprocesora M4. Zrezygnowałem z używania @import do składania szablonów w przeglądarkach czytelników, zamiast tego na Joggerze leżą już kompletne, posklejane pliki stylów. Dzięki temu walidator przestał głupieć, a i strona ma szansę szybciej się załadować (aby wyświetlić stronę w pełni teraz wystarczy załadować 3 pliki zamiast 7).

Wszystko razem spięte jest przy pomocy plików Makefile dla GNU Make Oznaczeń XFN jeszcze nie dodałem. Nie starczyło czasu... :-)

Obiadek (schabowy z frytkami i surówką) zjadłem Pod Pierożkiem, tak jak pisałem. I smakował mi bardziej, niż wczorajszy w Sphinksie. Do tego był tańszy, ale odrobinę mniej.

A teraz zabiorę się za zamalowywanie pamiątek po krysinych obiadkach. Ciekawe czy po tym ta ściana nie będzie wyglądać jeszcze gorzej...

7 komentarzy do wpisu „Działający parser i kompilowany szablon”


Problemy z CSS

Coś spieprzyłem CSS w moim szablonie. Mnie się wydaje że jest OK, ale Validator ma inne zdanie. No cóż - nie wiem jak to poprawić (nie zmieniając za bardzo sposobu zapisu kolorów), więc na razie usuwam ikonkę Valid CSS, ale będę musiał coś z tym zrobić. :-(

4 komentarze do wpisu „Problemy z CSS”


Jakoś sobie radzę

Wczorajszym obiadkiem się nawet nie otrułem. Co ciekawsze nawet mi smakował, a przecież tylko wrzuciłem na patelnię co mi w ręce wpadło: boczek, kiełbasę, cebulę, czosnek, marchewkę, makaron i ser.

Wieczorem zabrałem się za nowy parser strumienia dla PyXMPP, bo z libxml2-2.6.7 dotychczasowy nie działa i podobno to jest ficzer a nie bug. Mam już gotowy analizator leksykalny - automat Mealy'ego na 35 stanach, który bez problemu wyłuskuje konkretne tagi oraz dane pomiędzy nimi ze strumienia XML, nie głupiejąc nawet na sekcjach CDATA, czy niewyeskejpowanych > w wartościach atrybutów. Nie obsługuje DTD, ale to i tak w strumieniach XMPP jest zabronione. Obsługuje za to (tzn. umie ignorować) PI i komentarze, mimo że też nie musi. Najlepsze jest to, że automat zadziałał poprawnie (na ile go przetestowałem) za pierwszym razem gdy go uruchomiłem i udało mi się go jakimiś danymi nakarmić. Teraz jeszcze muszę dokończyć wyłuskiwanie początku/końca strumienia i pełnych zwrotek oraz przekazywania tego do parsowania przez libxml2 (mój preparser nawet nie do końca sprawdza czy otrzymany XML jest well-formed).

Pracę zacząłem on restartowania serwera na Opteronach który zrobił Ooopsa. Niektóre kernele na nim odpalane od razu wywalały się z machine check exception, więc wiem że coś jest skopane. Dzisiaj nawet próbowałem dojść do tego co dokładnie i zacząłem analizować kody które mi któryś z tych kerneli wyrzucił. Ale zanim się mniej-więcej w tym połapałem i znalazłem odpowiednie tabelki w specyfikacji, to minęła 16-ta i czas było wracać do domu.

Po drodze do domu poszedłem na obiad do Sphinksa. Pierwszy raz zresztą. Jedzenie może nie rewelacyjne, ale dobre, dużo i w miarę tanie. Zresztą w moim przypadku to już sukces, że byłem w stanie to zjeść bez kombinowania. Wielokrotnie już zamawiałem jedzenie, którego potem nie byłem w stanie zjeść i zostawiałem nieruszone. Tym razem dla pewności nawet wypytałem najpierw kelnera czy ta Shoarma na pewno nie ma żadnych pomidorów i czy przypadkiem nie jest przyprawiona na słodko. Nic z tych rzeczy, więc zamówiłem. I rzeczywiście na talerzu było wszystko jadalne - frytki, mięsko i normalna (bez majonezu/śmietany/pomidorów/buraczków) surówka. Podali też trzy różne sosy w miseczkach, ale tego nie musiałem ruszać (dwa spróbowałem na końcu frytki, ale ten ostry był z pomidorami i wcale nie taki ostry, a czosnkowy chyba na śmietanie - nic dla mnie). Jeszcze kiedyś się tam wybiorę, może z żonką. A jutro Bar pod Pierożkiem :-) .

2 komentarze do wpisu „Jakoś sobie radzę”


Zostałem sam

Żona i córka wyjechały na dwa tygodnie do Bochni wypoczywać. Nie będzie miał kto pilnować, żebym za długo przed kompem nie siedział. Nie będzie miał kto mi pysznych obiadków gotować. Nie będzie miał kto fundować mi wieczornej łóżkowej gimnastyki. Moje zdrowie jest więc zagrożone, ale dwa tygodnie powinienem jakoś przeżyć. Szczególnie, że na weekend do nich się wybieram.

Ten czas postaram się spędzić jakoś pożytecznie. Może przynajmniej część moich projektów ruszy z miejsca. Mam nadzieję że wcześniej nie znajdę jakiejś super gierki ani innego pożeracza czasu, ani że w firmie za dużo roboty mi nie przywalą.

Na razie rozpoczynam destrukcję mieszkania, od kuchni - idę sobie przygotować jakąś namiastkę obiadu.

2 komentarze do wpisu „Zostałem sam”


Niekompetencja informatyków czai się wszędzie...

Oto wiadomość jaką dzisiaj dostałem na adres zapisany w bazie WHOIS:

From: "LiveNet.pl" <bok@livenet.pl>
To: [cenzura]
Subject: Wlamanie z waszej sieci !!!

Dzien dobry
Jestem wlascicielem firmy hostingowej livenet.pl. Pisze w sprawie jednego z Państwa klientów, otóż uw klient wykazuje zdolności hakerskie włamując się na serwery smtp i podszywając się pod właścicieli serwera wysyła spam co w świetle dzisiejszego prawa jest przestępstwem. Ja w imieniu swoim oraz kilku innych zaprzyjaźnionych firm z branży zaobserwowaliśmy to już od jakiegoś czasu. My oraz nasi klienci dostajemy maile z załącznikami w których znajdują się wirusy. Chcieli byśmy poznać dane tego człowieka. poniżej przesyłam wycinek z logów serwera na który polowaliśmy jakiś czas. dla uproszczenia proszę mi podać dane człowieka który o godzinie 12:16 korzystal z IP [cenzura] prosze o kontakt telefoniczny [cenzura].

Poniżej tego tekstu nie było żadnych logów, ale nagłówki wiadomości. Już na pierwszy rzut oka widać że to wirus, a pierwsze użycie Google wykazało że to Bagle.H. Oczywiście postarałem się o zablokowanie dalszego rozsyłania wirusa z komputera nieostrożnego klienta, jednak przesłane w skardze nagłówki nie ułatwiały mi tego jak powinny - nazwa serwera podanego w nagłówków Received: stuff.livenet.pl w ogóle nie istnieje. Przy okazji okazało się że ta skarga przyszła do mnie jedynie z powodu przeoczenia przy konfiguracji mojego serwera - taka nazwa w HELO nie powinno w ogóle być przyjęta. I więcej przyjmowana nie będzie (oczywiście poza pocztą wysyłaną na konto postmaster).

Wszystkie [cenzura] są oczywiście wstawione przeze mnie zamiast informacji których nie chciałem publikować. Myślałem nad wycięciem także nazwy firmy, ale niech zostanie - ku przestrodze potencjalnych klientów.

4 komentarze do wpisu „Niekompetencja informatyków czai się wszędzie...”


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 komentarze do wpisu „Czyżby libxml2 to był zły wybór?”



[szpieg] Jesteście obserwowani...