No i stało się

Przed chwilą dokonałem zmian w PyXMPP w kierunku który doradził Jarek,
ostatecznie zrobiłem tak:

  • fr -> from_jid
  • to -> to_jid
  • typ -> stanza_type
  • sid -> stanza_id

Dla ułatwienia życia sobie, a także innym developerom używającym PyXMPP
(są tacy?) przygotowałem też skrypt poprawiający kod pythona używający starych
nazw. Mnie nawet ten skrypt nic nie popsuł.

A w pracy wkurzałem się na interfejs WWW zarządzania switchy DLink
i access-pointów Proxima. Chcę dać na zewnątrz (żebym miał w domu,
czy gdzieś w terenie) dostęp do tych urządzeń. Że urządzenia nie mają SSL, to
nie mogę tego po prostu przeroutować, więc robię to przez reverse-proxy na
Apache z mod_ssl. Pierwszy problem to bezwzględne linki na stronach tych
interfejsów. Ale to załatwia (teoretycznie) mod_proxy_html.
Tylko, że mod_proxy_html parsuje otrzymany HTML, poprawia co
trzeba i serializuje od nowa. Ale jak to ma działać na czymś co do HTMLa jest
tylko miejscami podobne (tak jest w przypadku Proxima — po prostu
koszmar)? No nie całkiem działa. Do przeglądarki dochodzi już poprawny HTML,
ale wyrażający nie całkiem to co autor miał na myśli. Miejscami prześwituje
kod JavaScript, inne rzeczy poprzestawiane itp. Z tym pewnie będę jeszcze
długo walczył.

mod_proxy_html poprawia też skrypty JavaScript w kodzie
HTML, robi to na głupa, ale jak się postarać, to można uzyskać ciekawe
efekty. Gorzej ze skryptami zewnętrznymi, w osobnych dokumentach. W przypadku
switchy nie jest niby źle, bo w zewnętrznych skryptach nie ma zaszytych
żadnych ścieżek, ale za to są serwowane jako text/html, a co za
tym idzie mod_proxy_html próbuje z nich robić poprawnego
HTMLa. No i taki skrypt po dodaniu <html><body> na początku
i po przetworzeniu tagów w środku nie bardzo chciał działać. Musiałem więc tak
skonfigurować mod_proxy_html, aby zajął się jedynie
dokumentami *.html.

Proximy za to mają zaszyte ścieżki w plikach *.js, jednak
serwowanych poprawnie, jako text/javascript.
mod_proxy_html w ogóle tego nie rusza, za to znalazłem
jeszcze mod_ext_filter (standardowa część Apache 2.x). Przy pomocy tego
moduliku można serwowane dokumenty przepuścić przez zewnętrzny program. A więc
przepuściłem przez seda i poprawiłem ścieżki gdzie trzeba.
Nawet zadziałało. Chyba tego samego modułu wraz z sedem, albo
jakimś mądrzejszym skryptem w
perlu/awku/pythonie będę
musiał użyć do tego paskudnego HTMLa z Proxima. To jest do zrobienia,
ale może być z tym kupa roboty i nie wiem czy się wcześniej nie poddam.

Prezent?

Mojej żonie obcy facet (jej znajomy z Internetu) kupił prezent na urodziny. I to
nie taki całkiem drobny prezent. Ja nawet wierzę, że bezinteresownie i wiem, że
facet od tego raczej nie zbiedniał, ale nie wiem co o tym myśleć. Głupia
sytuacja, dla żony też.

Dopiąłem do swojego Joggerka skrypt zbierający informacje o odwiedzających. Co
prawda użyta metoda — obrazkowa, ze wspomaganiem JavaScriptu — nie jest
idealna i trochę fałszuje wyniki (olewane są przeglądarki tekstowe — w tym
wiele moich wejść), ale i tak ciekawe co z tego wyniknie. Na razie najciekawsze
są zapytania Google używane do wejścia na mój blog. W każdym razie inwigilacja
trwa…

A w pracy się wkurzyłem nieco, aż o mało nie nawymyślałem szefowi. Dostałem
godzinę na skonfigurowanie urządzenia. Urządzenie takie miałem pierwszy raz w
rękach, opcji cała masa, do tego miało działać z urządzeniem innej firmy. Żeby
to zrobić porządnie potrzebowałbym przynajmniej jeden cały roboczy dzień.
Skonfigurowałem, ale na pewno nie optymalnie ani najbezpieczniej. Jak się sypnie
będę musiał jeździć niewiadomogdzie, żeby to naprawiać. Nie lubię takiej
roboty.

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…

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ć. :-(

Routerek i partactwa na WWW

Rano wyjęliśmy felerną kartę z routera, zainstalowalismy spowrotem
dystrybucyjny kernel, a ostatnią sieć maskaradowaną przez ten router
przepięliśmy do innego. W południe przyszedł routerek 3Coma. Udało się go
skonfigurować i nawet ładnie działa. Test polegający na ping-floodzie
przeszedł na 5+, innych na razie nie robiliśmy. Nieciekawie natomiast
wyglądał efekt nmapa zapuszczony na tym urządzeniu. Chyba 5 portów TCP
otwartych, w tym telnet, domyślnie bez hasła. Nie rozumiem co za idioci tak
domyślnie konfigurują takie urządzenia. Przecież mogłem zapomnieć sprawdzić.
Co gorsza okazało się że tych usług nie można wyłączyć. Na szczęście dało się
zablokować wbudowanym firewallem. Założyłem więc regułki blokujące wszystkie
połączenia TCP i UDP do maszynki i mam spokój. Na „dużym” routerze, gdy już
POLPAK działa i nie ma żadnej NATowanej sieci, mogłem wywalić moduł
ip_conntrack. Teraz powinien sobie i z kilkoma GB/s poradzić.
:-).

Najlepsze jest to, że dzisiaj, pierwszy raz od początku tygodnia, przez cały dzień nic nam
się nie powiesiło! :-) (odpukać!)

Żona poprosiła mnie o pomoc przy robieniu screenshotów stron WWW, co
zlecono jej w pracy. Pracuje ona w małej lokalnej firmie Linuksowej zajmującej
się głównie tworzeniem serwisów WWW. Te strony które mieliśmy strzelać
wyglądają całkiem nieźle, ale miejscami się rozjeżdżają. Z ciekawości
zapuściłem na nich walidatora W3C.
Masakra :-(. A łudziłem się że przynajmniej mała, linuksowa
firma, prowadzona przez rozsądnych i bardzo sympatycznych ludzi nie będzie
robić takich partactw…. No ale cóż, ja jestem idealista, a oni muszą
przede wszystkim zarobić
. Ale czy na pewno nie da się tego połączyć? Po
prostu wymagać od tych którym się robotę zleca, żeby wynik się walidował?
Konkretne wymaganie odnośnie jakości zleconej pracy, a nie wymagające od
wykonawcy wcale dużo więcej pracy, jedynie odrobinę kompetencji i wiedzy. No
i w wielu wypadkach pozwala uniknąć konieczności testowania strony we
wszystkich możliwych przeglądarkach.

Może hobbystycznie przerobię jedną stronę w zgodzie ze standardami…
ciekawe ile roboty zajmie to mnie. Przecież ja się tym normalnie nie zajmuję
no i nie wiem co autor miał na myśli.

Na razie starczy

No i zrobiłem swoje szablony. Nie jestem w pełni z nich zadowolony, ale na
razie szkoda mi więcej czasu na to marnować.

Niektórzy czytelnicy skarżą się na kolorystykę i jej małą czytelność.
Chciałem więc dla nich zrobić alternatywny styl. Okazało się jednak, że
w Joggerze się nie da :(. Nie można wrzucić dodatkowych plików *.css na
serwer, a zewnętrznych nie chcę robić. Jednak okazało się że jak ten jedyny
styl zdefiniuje się jako domyślny (default), a nie trwały
(persistent), to FireFox (polubiłem w końcu tę przeglądarkę)
pozwala łatwo wybrać pomiędzy tym stylem, a swoim domyślnym. Więc jak ktoś
niedowidzi albo ma kiepski monitor, to niech włączy FireFoxa i po kliknięciu
ikonki na dole okna wybierze Basic Theme albo co tam jest
w jego wersji językowej ;-). A wszystkim Joggerowiczom polecam dopisanie
atrybutu „title” do <link type="stylesheet"
.../>
w swoim szablonie.

Czas na własne szablony

No i w końcu i ja zacząłem robić swoje szablony dla Joggera. Szablon
dla strony głównej już właściwie gotowy, do komentarzy może zrobię jutro.
Oczywiście starałem się zrobić wszystko zgodnie ze standardami. Nie tylko
jest Valid XHTML 1.0 Strict, ale także ma np. sensowny podział
nagłówkami h1-h3. Najgorszą robotą było poprawianie wszystkich starych wpisów,
żeby całe archiwum też było poprawnym XHTMLem, ale przy okazji mogłem sobie
poprzypominać co to się w zeszłym roku działo.

Kontrola wersji i „myśl techniczna”, ech…

Przedwczoraj szef do mnie dzwonił z pytaniem jak załatwić sprawę
uprawnień różnych programistów w naszej firmie do kodu źródłowego, żeby
każdy widział swoją część, nie miał dostępu do pozostałych, a wszystko
działało razem. Wytłumaczyłem, że jeśli ten kod jest w PHP i ma działać
razem na serwerze, to w 100% nie da się zabezpieczyć przed tym, aby ktoś
sobie cudze źródła np. wyświetlił na stronie WWW. Zaproponowałem
natomiast użycie jakiegoś systemu kontroli wersji, który zapewnił by
kontrolę dostępu podczas tworzenia kodu i dokumentował ew. próby
nadużyć w kodzie służących dostępowi do „zakazanych” części. Miałem tę
sprawę obadać.

Najpierw przyjrzałem się dostępnym narzędziom. Wstępnie ograniczyłem
się do CVS, arch i Subversion. CVS odpadł, bo przestarzały i ma różne
głupie ograniczenia. Arch, bo nie chodzi pod Windows, a nasi programiści
(nie wiedzieć czemu ;-)) używają Windows. Subversion
z dostępem przez WebDAV wydał się najodpowiedniejszy. Problemem było
wymaganie apache-2.0, ale zainstalowałem sobie wszystko co trzeba
w chroot i ładnie chodzi.

Sam przerzuciłem do Subversion z CVS swoje projekty, przez
głupotę/niedopatrzenie tracąc jeden z ostatnich – rozpoczęty server DHCP
korzystający z bazy SQL – dzisiaj musiałem to pisać od nowa. Ale
Subversion mi się podoba, dużo bardziej niż CVS. A podstawową obsługa
praktycznie się nie różni.

Dzisiaj szef mnie wezwał do siebie w sprawie tych praw dostępu. Był
tam już szef działu oprogramowania, dość pozytywnie (a przynajmniej
neutralnie) nastawiony do mojej propozycji. Okazało się, że „nie ma sensu
takiej kobyły do tego zaprzęgać” i wszystko zostanie załatwione prawami
dostępu do plików na serwerze i skryptami – całe szczęście że nie ja
będę tego pilnował. I w sumie przekonywanie kogokolwiek więcej do tego
subversion mi odpada. Tylko szkoda że wczoraj tyle się z tym męczyłem,
gdy miałem lepsze rzeczy do roboty.

Podczas tej dyskusji szef twierdził, że ten kod źródłowy powinien
być najbardziej chroniony ze wszystkiego w naszej firmie. Chciał kupić
jakiś moduł do szyfrowania kodu PHP (żeby nikt od nas nie podejrzał,
a jakby co to można by go sprzedawać), wspominał nawet o odłączaniu
stacji dysków i Internetu programistom. Powtarzał, że tu nie ma miejsca
na żadne zaufanie itd. Chyba nawet Microsoft tak nie boi się o swoje
kody źródłowe, bo w końcu udostępnia je na zewnątrz (oczywiście tylko
wybranym i na diabelskich zasadach) Gdy użył stwierdzenia „myśl
techniczna”, to we mnie się gotowało. Sam mam zupełnie inne spojrzenie
na to jak powinno być tworzone i udostępniane oprogramowanie,
szczególnie dla instytucji publicznych (a o takim była mowa).
Zastanawiałem się co ja właściwie robię w tej firmie. Nie próbowałem
wyjaśniać moich poglądów, bo wyszedł bym tylko na fanatyka, a z powodu
mojego słabego rozeznania z biznesem i prawem może także na głupka. Na
szczęście nie jestem programistą, ale administratorem i mogę uznać, że
sprawa mnie nie dotyczy. Ale fajnie by było pracować gdzieś gdzie Wolne
Oprogramowanie i Open Source to rzecz naturalna nie tylko w sensie brania ale
także dawania.

Brat publikuje, he he

Dowiedziałem się wczoraj że mój brat publikuje w Internecie. Wiersze.
Dzisiaj postanowiłem to obejrzeć – mało mnie obchodzi co on robi, ale
ponabijać się mogę. Pisemko w którym publikuje to Experyment (ni to po polsku,
ni po angielsku, ale przecież „x” rulez!) pod pseudonimem „artystycznym”
MacieK. Widać że webmaster serwisu (możliwe że admin całego friko.pl
też) chyba nie ma pojęcia co to HTML (validator.w3.org nawet nie
pokazuje błędów – w ogóle tego nie łyka, pewnie dlatego że strona
zaczyna się od <SCRIPT>). Kodowanie znaków oczywiście windows-1250, bez
deklaracji. W sumie dziwne że w ogóle zawartość da się czytać. Co do
samych wierszy to się nie znam, ale osobiście wolę te, które pojawiały się na
joggerze 🙂

Pewnie zastanawiacie się po co to piszę. Sam nie wiem. Chyba dlatego,
że dawno nie miałem okazji się z brata ponabijać. A lubię to – w końcu
ja mam umysł ściśnięty, a on humanista 🙂 No i dobry uczynek zrobię
– magazyn będzie miał więcej punktów w Google (o ile Google indeksują
joggera) 🙂