Punkt pierwszy: aktualizacja Hierophanta. Nowy pythonowy skrypt
generujący zależności (nie działa dokładnie tak jak stary, więc momentami
może wyszukiwać nieco więcej zależności), Void dorzucił też mały patch
związany z dociąganiem plików z sieci. Nic wielkiego, ale po wstępnych
testach chcę dać innym możliwość przetestowania nowego generatora
zależności. A, w katalogu contrib/ jest skrypt orphseek.sh - prościutki
skrypt któremu podaje się jako argument pojedynczy katalog ("/usr/lib", "."
itp.), a on skanuje zawartość i podaje nazwy obiektów które nie należą do
żadnego zarejestrowanego pakietu. Czyli innymi słowy wyszukuje sierotki. Po
jego użyciu zdecydowałem się na spakietowanie u siebie fontów, danych
quake2, doom1/doom2 itp. Wywaliłem też jakieś bezpańskie pliki
z /usr/include... Dobre przy czyszczeniu systemu. Oczywiście nowy Hiero do
pobrania z Rupieciarni. A to bezpośredni link do paczki źródłowej.
Punkt drugi: jakiś czas temu poproszony byłem o próbkę "zwykłych" zdjęć
ze swojego aparatu, więc wziąłem parę widoczków Zielonej Góry strzelonych
jakoś jesienią. Leżało to "skrycie" na Repo, ale sobie przypomniałem o tym
"tymczasowo udostępnionym folderze" i chcę go skasować, ale zanim to zrobię
dam oficjalny link do tych paru fotek Zielonej
Góry. Fotki pstrykane z marszu, zgrabiałymi łapkami, w niezbyt przyjemny
jesienny dzień. W naturalnej rozdzielczości mojego aparatu, bez obróbki
gimpem. Pierwsza to kranik na deptaku, druga to ludzie przekładający dach
przy deptaku (na jakiejś dwu czy trzypiętrowej kamienicy), trzecia to
fragment Ratusza (a w zasadzie front Bachusa - takiej restauracji
w piwnicach Ratusza), czwarta to już "pod Filarami" - taki krótki kawałek
przy którym jest apteka, kawiarnia, bukiniści itp. A filary to widać na
zdjęciu. Piąta to zdewastowany obiekt Polskiej Wełny (ten co to latami nie
mógł zostać sprzedany mimo starań syndyka, bo Polska Wełna to zabytek
i konserwator zabytków narzuca inwestorom swoje reguły gry, więc mało kto
chciał to kupić), ostatnia fotka to fragment ul. Kupieckiej (tak, ona jest
w większości wybrukowana i zamknięta dla aut - styka się z deptakiem).
W sumie to mam takich fotek więcej, może wrzucę je kiedyś. Ale kogo obchodzi
jak wygląda miasto z którego pochodzę? :(
Punkt trzeci: backup muszę zrobić (dlatego porządkowałem drzewko
katalogów). Więc kończę i biorę się za backupowanie :)
Orbital - Lush. Fajny. Jak zresztą cały Orbital. Ale ja nie o tym miałem...
Uch, znowu zapomniałem co miałem napisać. Dobra, to zacznę
niechronologicznie. Parę dni temu prawie rozjechał mnie samochód. Była
ślizgawka, szedłem sobie grzecznie uliczkami osiedlowymi gdzieś przy
Budziszyńskiej chyba, miałem przechodzić przez jezdnię, ale widzę że coś
jedzie... a że to było przy samym zakręcie i widziałem samochód od frontu,
to nie mogłem oszacować jego prędkości i wolałem nie ryzykować wpychania się
pod koła. No więc widzę jak sobie tak dosyć szybko jedzie nieduże czerwone
autko... dojeżdża do mojej pozycji... i nie wyrabia zakrętu. Tzn.
zignorowało zakręt i pojechało sobie dalej. A w zasadzie to poślizgało się,
bo kierowca co prawda skręcił kołami, ale samochodzik to zignorował. No
i bez redukowania prędkości doślizgał się do mnie (na jakieś pół metra ode
mnie), wskoczył prawym przednim kołem na chodnik, lewym przednim już nie dał
rady, zaklinowało się przy krawężniku i go obróciło. Tylne prawe jeszcze
wskoczyło na chodnik, ale tylne lewe już nie. Obracając się tak przyrąbał
nim w krawężnik, że dziwne że go sobie nie urwał. W środku był jakiś młody
chłopak i dziewucha, on wyglądał na mocno przestraszonego a ona na
zszokowaną kompletnie. Korzystając z okazji że autko się nie rusza poszedłem
dalej swoją drogą. Swoją drogą co za palant pruje tak po osiedlowych
uliczkach? W zimie, gdy droga śliska a ludzie nogi łamią na chodnikach?
Wioząc swoją siostrę/dziewczynę/żonę na dodatek? To trzeba mieć naprawdę
w głowie narąbane. Piętnuję nieodpowiedzialnych młodych kierowców bez grosza
wyobraźni czy umiejętności prowadzenia auta. Więcej nawet, jestem za
odstrzałem. Państwo powinno każdemu pieszemu obywatelowi wydać obrzyna
i przydział kilkunastu naboi na miesiąc. Żeby móc się bronić przed matołkami
za kierownicami. Ile razy taki świr mnie już o-mało-co-a-by-potrącił na
przejściu... Gdybym miał Ustawowego Obrzyna to mógłbym go szybko wyciągać
zza pazuchy i strzelać do kierowcy przez tylną szybę jego oddalającego się
auta... A prywatny majątek kierowcy by można skonfiskować i przeznaczyć na
budowę porządnych dróg... Np. w zeszłym tygodni odstrzeliłbym takiego
palanta który na al. Wojska Polskiego wsiadł na ogon "erce" na sygnale. Ot,
spryciarz. Wszyscy zjeżdżają na bok żeby auto przepuścić, a on się przepycha
i gdy tylko karetka go minęła wsiada jej na ogon. Jemu również życzę
rozgrzanego pręta w... (...)
Czytaj dalej...
Void wziął się za dalsze pythonizowanie Hierophanta (na celownik wziął
/etc/hbs/{prep,post}) - wiele to tam nie wywalczy, ale po spythonizowaniu
będę mógł trochę ulepszyć automatykę tych sekcji. A w następnym kroku da się
może wchłonąć te mechanizmy całkiem w główny skrypt HBS i trochę uprościć
jego integrację z resztą, choć to by wymagało nielichych przeróbek.
Ja wziąłem się za skrypt generujący listy PROVIDES/REQUIRES. To był
brzydki "legacy code" którego tak naprawdę nie rozumiałem, pisany
w mieszance shella i awka i przeportowany prawie żywcem z RPM-a. Jego
spythonizowanie chodziło za mną od dawna. Ale ostatecznie napisałem
pythonową wersję /etc/hbs/deps... Wyszła przeszło dwa razy dłuższa niż
oryginał, ale to mnie nie martwi specjalnie. Ważniejsza jest wydajność:
[j:0 c:0]/home/grzegorz/projekty/PORT> time ./old_deps
./old_deps 25.72s user 4.86s system 98% cpu 31.007 total
[j:0 c:0]/home/grzegorz/projekty/PORT> time ./old_deps
./old_deps 25.47s user 4.79s system 99% cpu 30.398 total
[j:0 c:0]/home/grzegorz/projekty/PORT> time ./deps.py
./deps.py 0.87s user 0.11s system 99% cpu 0.991 total
[j:0 c:0]/home/grzegorz/projekty/PORT> time ./deps.py
./deps.py 0.86s user 0.11s system 99% cpu 0.975 total
Imponujące :) Każdy skrypt pracował oczywiście na tych samych danych
wejściowych. Przeanalizowałem działanie rpm-owego oryginału i znalazłem
sporo miejsc w których dało się coś zoptymalizować. Ogólnie obciążenie
procesora spadło przez to o całą masę procentów. A dokładniej to o 96,8%.
Nie znaczy to że generowanie zależności będzie od tej pory trwało taki
ułamek czasu, bo wąskim gardłem jest tu nadal I/O dysku (choć i tak
odwołania do dysku zredukowałem do drobnego ułamka koszmaru jaki wyprawiały
stare skrypty), więc przyspieszenie powinno być "zauważalne jak cholera".
Aha, w szybkim teście na /usr/lib nowa wersja wyłapała o parę zależności
więcej niż oryginał. Teraz muszę porobić jeszcze parę "regression tests",
każę mu generować listy dla każdego pakietu jaki mam teraz zainstalowany
i porównam je z oryginałami, choć nie sądzę by mi się jakieś usterki
przemknęły...
O, Void podesłał mi właśnie pythonową wersję procedury PREP. Na razie
odłożę na bok, bo tego się nie da tak po prostu podmienić jeszcze...
Sprostowanie: Można by odnieść wrażenie, że we wczorajszej mojej
wypowiedzi Void został przedstawiony w złym świetle. Ze względu na
tendencyjny i wyrwany z kontekstu cytat można go było odebrać jako
programistę olewającego użytkowników. To oczywiście nie jest prawdą,
przepraszam jeśli ktoś tak odczytał ten tekst, nie było to moją intencją.
Void jest oczywiście programistą bardzo wyczulonym na potrzeby użytkowników
i nigdy by nie odpuścił żadnemu odkrytemu błędowi.
Oświadczenie to napisałem w pełni zdrowia psychicznego, z własnej
nieprzymuszonej woli.
Hoppke.
Tym razem zdjęcie jest pożyczone :) To webcam zamontowany za szybą któregoś
z pokoików w Zielonej Górze. Powinien udostępniać nowe zdjęcie co dwie
sekundy, więc w chwili gdy czytasz te słowa Zielona Góra pewnie wygląda
właśnie tak jak to zdjęcie. Tylko że jest mniej rozmyta (mogliby na tym
webcamie ostrość lepiej ustawić albo co...)
Następny punkt dzisiaj - moja klawiatura. Sprawuje się bardzo dobrze.
Przyzwyczaiłem się już do ułożenia klawiszy, do niskiego entera, także wyżej
położony Home/End nie sprawiają mi problemów. Zacząłem używać tego wypustka
na "F" do rozpoznawania położenia klawiszy (wcześniej macałem raczej za
krawędzią tyldy, teraz się okazało - złapałem swoje palce na głaskaniu
plastiku obudowy w tamtych rejonach :) Doceniam wykończenie klawiszy - jest
naprawdę porządne, a na dodatek nie-gładkie. Tzn. to nie jest błyszczący,
gładki jak lustro lany plastik. Ma nieco chropowatą fakturę. Jakoś
przyjemniej się go muska opuszkami, no i nie widać na nim odcisków palców
i "nie brudzi się" tak jak gładkie klawisze. Klawiszy multimedialnych nie
wykorzystuję - po pierwsze jeszcze ich nie obindowałem (jedynie play/pause
podpiąłem pod xmms), po drugie nie jestem do nich nawykły jeszcze.
Dzisiaj wreszcie sprawdziłem czy stary, zdezelowany mikrofon jeszcze
działa... działa, ale szumi okropnie. Może da się jednak użyć do nagrania
kiedyś jakiejś burzy... albo deszczu. Uwielbiam muzykę deszczu. A dzisiaj
sobie na próbę nagrywałem moje stukanie w klawiaturę. Używałem audacity do
nagrania i usunięcia szumu (niestety deformuje to nieco dźwięk). Potem
podbiłem głośność (ale nie przez normalizację, więc znowu zakłóciłem balans
dźwięku - ale bez tego nie było słychać w ogóle części naciśnięć klawiszy).
A potem zakodowałem do Ogg Vorbis, ze średnią bitrate == 32kbps.
W rezultacie zachowało to może 70% oryginalnego dźwięku klawiszy (z tych 30%
jakieś 25 zeżarł fatalny mikrofon). Do nagrania próbek głosu nie mogę tego
jednak użyć, to by nie miało już sensu. A dla ciekawskich to ta próbka z mojej klawiatury (440KB, 85 sekund).
Aha, nagranie zostało wykonane w tempie 1:1 - mówię to, bo już mi Enleth
zwracał uwagę na nieco "dziwne" brzmienie momentami. Faktycznie, gdy pisałem
to jakoś nie zwróciłem na to uwagi. (...)
Czytaj dalej...
Na razie błyskawiczny update - nowa wersja Hiero (20050207). Void
poprawił coś przy ściąganiu źródeł i pakowaniu ich potem w pakiet "*.hbi",
a potem wzięliśmy się za naprawianie problemów z symlinkami wyłażącymi
w różnych częściach HBS. Od tej pory symlinki do katalogów nie będą już
w FILELIST zapisywane jak "prawdziwe" katalogi (tzn. nie będą już dostawały
"/" na końcu ścieżki), dzięki temu poprawiło się zdecydowanie działanie
hbsinst i hbsremove w sytuacjach gdy te symlinki trzeba usunąć. A ja
pogrzebałem jeszcze trochę przy hbshelper i teraz "hieroq -f" też sobie
o wiele lepiej radzi w różnych sytuacjach. Dzięki tym wszystkim przeróbkom
także tryb weryfikacji pakietów (hieroq -V) odzyskał pełną sprawność. Aha,
aby poprawić błąd wprowadzany przez starsze wersje Hierophanta przygotowałem
skrypt contrib/symlinks_convert.py. Skanuje on bazę w /var/lib/hbs
i konwertuje istniejące wpisy symlinków tak, by i zainstalowane już pakiety
mogły w pełni skorzystać z poprawek w narzędziach. Oczywiście przed operacją
warto zrobić gdzieś backup /var/lib/hbs, na wszelki wypadek (choć nie
przewiduję by coś się mogło popsuć, skrypt jest bardzo prosty i mieści się
na jednym ekranie). Have a nice day :)
PS. Nowy Hiero do pobrania oczywiście z Rupieciarni.
Doobra. Znowu się nie wyrabiam z czasem, niestety. Może jutro nadgonię...
taki mam zamiar przynajmniej. OK, więc o czym by tu... a, wiem. Hierophant.
Nieduży update. Zobaczmy co też się zmieniło... a, część regexpów
rozpoznająca źródła itp. jest teraz case-insensitive, to powinno
zwiększyć skuteczność automatycznych procedur w niektórych okolicznościach.
Void dodał ściąganie patchy z internetu (tzn. teraz można chyba
również patche podawać jako URL-e w [files]) i poprawił jakiś błąd
z zapętlaniem się HBS-a na symlinkach przy budowaniu pakietu źródłowego.
Cthulhu dodał generowanie skryptów postinstalacyjnych dla gnomowych
plików *.schemas, a Hoppke po bugreporcie Cthulhu załatał problem ze
ścieżkami dłuższymi niż 100 znaków. Ten release nie jest jakimś przełomem,
ale to dobrze - to znak, że hbs działa w sumie całkiem poprawnie.
Największym kłopotem był ten drobny feler w tarfile.py - ominięcie go
wymagału paru minimalnych zmian w kodzie, o wiele mniej inwazyjnych niż
początkowo myślałem. Zajęło mi to tyle czasu, bo chciałem mieć pewność że
dobrze wszystko zdiagnozowałem i że obrałem właściwą ścieżkę by to załatać.
Kiedy Void spythonizuje kompresowanie manuali i stripowanie
binarek/generowanie zależności, to kod ulegnie dużo drastyczniejszej
rearanżacji. Albo i nie :) No dobra, nowa wersja Hierophanta w Rupieciarni.
Problemy z siecią zażegnane. Przesiadłem się na droższy abonament który
zdaje się mieć lepiej dostrojone regułki dzielenia ruchu. Sieć działa
o wiele lepiej (60-90KB/s nie jest przeszkodą, przy dobrym partnerze na
drugim końcu połączenia i niedużym ruchu w lanie wykręcam i 150KB/s), na
dodatek admin poprawił mi regułki firewalla na mniej restryktywne. Ha, znowu
mogę słuchać smoothjazz.com :) Ale będę musiał płacić o 10 zł więcej
miesięcznie. Trudno, przeżyję to jakoś. Na dodatek admin planuje kupić
porządniejsze radio, więc możliwe, że jakość usługi pójdzie jeszcze bardziej
w górę. (...)
Czytaj dalej...