ChangeBlog  •  Archiwum  •  Kategorie  •  Artykuły  •  Galeria  •  Czytelnicy  •  Rupieciarnia
RSS wpisów  |  RSS komentarzy
Kategoria: Własne narzędzia
Chaos w głowie...

Prace na froncie Repo2.0 trwają. Nie idzie zbyt szybko, bo więcej czasu chyba spędzam na projektowaniu i zastanawianiu się jaka architektura będzie najkorzystniejsza i najbardziej "przyszłościowa" niż na właściwym kodowaniu. Ale chyba zrobiłem w końcu dodawanie komentarzy, łącznie z prostym antyspamem. Piszę "chyba", bo wydaje mi się, że wszystko działa należycie - ale wiadomo jak to jest, na pewno zaczną wyłazić jakieś przeoczenia, sytuacje których nie przewidziałem itp. Trochę czasu mi zabrało miotanie się w światku servletów i JSP, ale koniec końców chyba wszystko działa tak jak bym chciał. Nie ma co oczekiwać cudów bez sięgania po JS (którego nie mam zamiaru dotykać), ale powinno być OK. Grunt żeby przeładowanie strony nie powodowało wrzucania drugi raz tego samego komentarza - ale to chyba udało mi się zrobić. Mam nadzieję, że będzie się sprawdzało w praktyce :)

Co teraz... no cóż, mam ładnych parę rzeczy do wyboru ;) Artykuły powinny mieć zdolność do "przypinania" ich, ale nie tak jak to jest robione np. na joggerze. Przypięte by wędrowały (jako same tytuły) do specjalnej kolumny po prawej stronie ekranu. Taka kolumna z "zakładkami", o. Wtedy mógłbym wywalić cały dział "Czytelnicy", zamiast niego zrobić jeden wpis na blogu i przenieść do niego komentarze, a następnie przypiąć ten wpis żeby był łatwo dostępny. To akurat by była dłubanina praktycznie czysto xhtml-owa, bo z punktu widzenia silnika to drobna modyfikacja generatora layoutu i dowalenie kolejnej kolumny w bazie komentarzy. Więc pewnie odłożę to na później.

RSS bym mógł już teraz zrobić, a przynajmniej szkielet przygotować. Javowych bibliotek generujących i parsujących RSS-y jest od groma, kwestia wybrania sobie jakiejś. Może RSSLibJ? Wygląda na generator, a nie parserogenerator, więc API i dokumentacja powinny być bardziej zwarte. (...)

Czytaj dalej...
Ruch przy Repo 2.0

Progress update.

Dalej dłubię przy Repo 2.0 ;) Dzisiaj skończyłem dział z Artykułami. Wczoraj koszmarnie dużo czasu mi zeszło na wyciąganie ze statycznych stron HTML danych z lekkim markupem, takich które bym mógł potem wepchnąć do bazy danych. Sprawę dodatkowo skomplikował fakt, że większa (objętościowo) część tekstów była pisana w jakiejś antycznej konwencji, używała też całkiem innego szablonu CSS niż obecne Repo. Tak że sporo czasu zajęło mi dociąganie tekstów do obecnego standardu Repo. Masa vimowania, pisania regexpów i makr ad-hoc. No ale zrobiłem. Teraz będę mógł wywalić w końcu ten zalegający, stary arkusz styli i mieć na całym Repo jednolity look. Artykuły siedzą sobie grzecznie w bazie, spisy treści i nawigacja generuje się automagicznie, ogólnie jestem zadowolony.

Ale to wszystko bebechy, rzeczy które tkwią pod maską i cieszą pewnie tylko mnie :) Więc zrobię inaczej, "pokażę" to co zrobiłem do tej pory. Dzisiaj zainstalowałem sobie z ciekawości pewne rozszerzenie do FF, do chwytania screenshotów całych stron. No i pokazę rezultaty jego działania (na przykładzie nowego silnika Repo, a co! :)

Na pierwszy ogień - strona główna. Trochę zmieniłem politykę pokazywania wpisów - zawsze widać 5 ostatnich, z tym że teraz, tak jak i w innych systemach blogowych, nie będzie zbyt dużo tekstu na głównej (przycisk "Czytaj dalej...").

Drugi zrzut - widok pojedynczego wpisu, z komentarzami. Na razie niczego tu nie ulepszyłem, ot, udowodniłem sobie, że baza danych działa.

Dawny Moskwicz zostanie przechrzczony na Galerię. Jak widać spis "galeryjek" wygląda trochę inaczej. Nie zmieniły się za to specjalnie ani widok miniaturek, ani pojedynczych fotek. (...)

Czytaj dalej...
Przymiarki do Repo 2.0

Dane części "blogowej" Repo już od jakiegoś czasu siedzą sobie w moim domowym mysql-u, wyjmowanie ich też już działa. Zastanawiam się tylko co zrobić z artykułami. No i layout, nawigacja... ale to potem.

Powrót do Linuksa

Aj, nazbierało mi się trochę... więc może obiecany wpis techniczny?

Jestem znowu na starych śmieciach. Liiii-nux. Nie wiem, chyba nie jestem typem windowsowca. Mógłbym opisywać dokładniej - że nie podoba mi się kiepska interaktywność XP, że jeden proces intensywniej korzystający z I/O dyskowego potrafi skutecznie zamrozić cały system, że diagnostyka błędów jest bardzo utrudniona, że doinstalowanie jednej głupiej aplikacji może system rozwalić tak, że tylko odzysk obrazu partycji pomoże. Do tego dziwnie działający podsystem VM...

No i jestem jednak przyzwyczajony do tej mieszanki GUI/CLI, jakiej używam pod Linuksem. Gdy mogę coś wyklikać - to wyklikuję. Gdy szybciej zrobię coś jakąś pętelką w shellu - to shelluję. Windows jest sprofilowany na GUI, co odkryciem żadnym nie jest, ale ja przez tyle czasu nie miałem styczności z Win, że zapomniałem co to oznacza w praktyce.

Poza tym... może jestem dziwny, ale np. od Photoshopa wolę Gimpa. Do jabbera używałem Psi, choć mogłem przecież sięgnąć po coś windows-only. No i kiedy siedziałem na Windows, to nie pojawiałem się na GG - bo nie ma Kadu dla Windows. A oryginalnych klientów GG używać nie mam zamiaru. Tak że jestem zlinuksowiony do szpiku, choć za paroma aplikacjami windowsowymi będę tęsknił. The Bat!, Total Commander, Advanced Disk Catalog... z drugiej strony pod Linuksem mam normalnie działający program do filmów (MPlayer! Jego windowsowy build jakoś mi się wywalał :)

Aby mieć miejsce na sensowną instalację XP (z osobnymi partycjami na C:\Windows, C:\Program Files, profile użytkowników i dane) musiałem ostro ograniczyć swoją Mandrivę. Powywalałem większość zbędnych pakietów (*-devel) i wcisnąłem /home, dotychczas władające partycją 120GB, na malutką (10GB) partycję z samym systemem. Ot, forma przetrwalnikowa.

Więc teraz musiałem to odkręcać, trochę czasu zabrało. Potem update zaniedbanej mandrivy - w Cookerze pakiety szybko płyną, a ja przez dłuższy czas nie aktualizowałem, więc pół nocy system ściągał i instalował sobie uaktualnienia. (...)

Czytaj dalej...
Zazdrość szczęścia?
:)

Jakiś czas temu dane mi było jechać pociągiem. Lubię pociągi, ten miarowy stukot i krajobrazy przesuwające się za oknem... ale nie to jest główną osią tego wpisu.

Bardziej zwróciła moją uwagę pewna parka, z którą dane mi było przejechać spory kawałek w jednym przedziale. Nie zainteresowały mnie ich ubrania, wygląd, sposób mówienia, za to zachowanie było ciekawe. Bardzo szybko zasnęli. To co się rzucało w oczy, to jakaś taka, hmm, bliskość w ich zachowaniach. Tzn. mi się rzuciło w oczy - "głodnemu chleb na myśli" i zawsze byłem szczególnie wyczulony na te rzeczy za którymi sam tęskniłem...

Więc zwróciłem uwagę na dłonie. Zastanawiałem się jakie to musi być uczucie mieć kogoś tak blisko siebie... nawet we śnie nie tracili tego kontaktu ze sobą. No i umieli zasnąć razem. A mnie naprawdę ruszają takie "drobne" rzeczy, bo ja sam bardzo potrzebuję bliskości wyrażanej w ten sposób. Często nie namiętnych pocałunków czy wyrafinowanych pieszczot, tylko takiego zwykłego czucia, że kogoś mam. Poczuć jak ktoś opiera głowę na moim ramieniu, jak czyjeś palce ruszają się w mojej dłoni... zasnąć przy kimś - o, to dla mnie bardzo, bardzo ważne. Chyba jedna z najintymniejszych sytuacji (dla mnie) to właśnie zasypianie. I jeśli umiałbym przy kimś spokojnie zamknąć oczy i po prostu zasnąć, a potem obudzić się i zobaczyć tego kogoś obok siebie, i tylko się uśmiechnąć, to... to to by było już coś naprawdę, naprawdę cudownego. Bo za każdym gestem stoją u mnie emocje i uczucia. I nawet takie proste ujęcie czyjejś dłoni w trakcie podróży jest dla mnie sposobem na przekazanie wielkiego ładunku uczuć. I dlatego automatycznie złapałem sobie ten obraz na strasznie rozmazanym zdjęciu (pociąg podskakiwał, a ja nie mogłem błyskać lampą). (...)

Czytaj dalej...
Hornet, tropiciel zbędnych RPM-ów
[j:0 c:1]/home/grzegorz/projekty/rpmq> rpm -qa|wc -l     
666

Hmm... "przypadek my ass", jak mawiają Francuzi :) To efekt sesji z H-r (wymawiać przez nieme "i" i z prawie słyszalnym "n", bo inaczej da.killa kręci nosem), nazwa kodowa "Hornet" (a to już w ogóle niezrozumiałe). To takie małe coś wspomagające usuwanie pakietów-których-nic-nie-używa (coś jak deborphan chyba).

Wygląda tak... i jest bardzo toporne... ale w gruncie rzeczy robi co należy. Tyle, że pewnie i tak nie doprowadzę tego do poziomu "konsumenckiego" - działająca prowizorka w rękach lenia nigdy nie wyjdzie poza stadium prowizorki :) (nie doczeka się też wydania)

PS. Zasłuchuję się ostatnio w Jesus Jones - muzyka ta pomagała mi zbierać siły jakieś, eee, siedem-osiem lat temu. Może i teraz coś da...

Zzzzimno... idę się jakoś rozgrzać.

Dystrybucje nie dla mnie?

Moje poszukiwania dystrybucji - zarzucone...

Oglądałem gentoo, debiana stable, debiana unstable, archa, ubuntu, pld... Może niedługo opiszę moje wrażenia z zetknięcia się z tymi distros.

Wniosek: zamiast szukać sobie nowego podwórka powinienem raczej pokombinować z dalszą automatyzacją HBS-a.

Korzyść uboczna: mam wygospodarowaną partycję 10GB. Zanim przepartycjonuję dysk ponownie (jestem w tym już biegły ;) mogę ją wykorzystać do wykonania benchmarków filesystemów. XFS, Reiser, JFS, Ext3... ale tym razem nie syntetyczne testy z bonnie++, a real-life zadania. Np. rozpakowanie paczki z kernelem, kompilacja, skopiowanie drzewka ze źródłami, skasowanie go.

A co do partycjonowania dysku, to mam już rutynę :) System (/usr, /bin, /etc itp.) są tarowane, gzipowane i wypalane na DVD+RW, z /home wywalam dane "stałe" (filmy, muzyka, zdjęcia) na DVD+R a następnie zgrywam ten katalog na drugie DVD+RW. Potem weryfikacja danych na płycie, restart, do gry wchodzi Knoppix, partycjonowanie, zakładanie fs-ów na nowo, dekompresowanie paczek z DVD, ewentualne odświeżenie bootloadera, restart. Proste. Dwie płytki DVD+RW Philipsa (nabyte kiedyś za ~7zł od sztuki) są baaardzo przydatne do takich zabaw.

Miałem problem z Huginem. Jeden z dialogów powodował segfault. Najpierw szedłem po najmniejszej linii oporu - rekompilacja gtk, glibc, X-ów, wxGTK z mniej agresywnymi flagami... nic, zero efektu. A np. w Archu działa, chociaż nie nakładają patchy. No to dzisiaj przysiadłem, gdb w dłoń... drobna (i obleśna) modyfikacja kodu i już działa. Jak na nie-programistę który pojęcia nie ma o kodowaniu w C++, toolkicie wxWidgets etc. to chyba dobry wynik? :)

PS. Clearlooks wygląda świetnie. Tak tylko zauważam. Żeby go ktoś pod Qt przeportował jeszcze...

No i mamy komentarze na Repo :)

Komentarze! Tak, nareszcie, jedna z rzeczy których nie chciało mi się nigdy implementować. No ale są. Dzisiaj usiadłem, podłubałem no i są. Ha. Oczywiście pisane odręcznie, "tymi palcamy" i w ogóle zgodnie z tradycyjnym "ja siaaaam chcię!!!". Prosty(?) system płaskich plików (bazy danych nie będą mi potrzebne), prosty mechanizm lockowania żeby uniknąć "race conditions", sporo zabezpieczeń przed złośliwością użytkowników (sprawdzanie spójności podawanych danych itp.) - tutaj wieeelkie podziękowania dla ekipy z linux@chat.chrome.pl, gdzie liori, da.killa i lanrat pracowicie próbowali mi rozwalić system komentarzy, organizując solidny bugtest.

A z konkretów: Etykietka z datą wpisu, ta z kropelkami w tle, działa obecnie jak odnośnik i przenosi do widoku komentarzy (a po wejściu w widok komentarzy zamienia się w link prowadzący z powrotem do głównego indeksu). W Konquerorze trochę się psuje zmiana tła w tym linku, ale to najwidoczniej problem samego Konquerora. Renderowanie obrazków jako tła CSS nie wychodzi tej przeglądarce za dobrze. Do widoku komentarzy można też przejść używając tego przycisku pod każdym wpisem... jak kto woli.

Zasady dodawania komentarzy proste - nie wyłazić poza nic czego nie da rady skonwertować na iso8859-2, proszę nie bluzgać (eeee, tego to nawet mówić nie musiałem :), w każdym wpisie zmieści się pewnie do kilobajta tekstu, więc nie powinno być problemów. Żadne tagi HTML nie przejdą żywcem, więc nie ma sensu próbować wstawiać pogrubień itp. Nadmiarowe spacje czy zwielokrotnione puste wiersze będą wycinane, czyli nic szczególnego. O pozostałych zabezpieczeniach nie będę wspominał, oby nie były nigdy potrzebne.

Komentować można wszystkie wpisy - czyli możesz pomóc mi nadrobić zaległości i skomentować stare wpisy, nawet te sprzed roku czy jeszcze wcześniejsze. Będę wdzięczny... jeśli zadasz sobie trochę trudu i przejrzysz szybko archiwum szukając jakichś rzeczy które kiedyś chciałeś/chciałaś opatrzyć paroma słowami komentarza ale nie było możliwości. O ile oczywiście jeszcze pamiętasz co tu się działo tak dawno temu ;)

I jeszcze APEL. Jeśli linkujesz do Repo, czy to do głównego indeksu, czy do jakichkolwiek innych stron, to PROSZĘ upewnij się czy używasz nazwy dobremiasto.net. Po sieci krąży pełno linków na stary alias "lubuska.zapto.org" - już kiedyś się wyłączył na jakiś czas, nie wiem czy będzie jeszcze opłacany itp. Więc "lubuska" jest deprecated. Dlatego proszę o przestawianie się na dobremiasto.net. Dziękuję :)

PS. A jak się widzi layout? Trochę się tu pozmieniało ostatnio... może nie wykorzystuję wszystkich tych nowomodnych tricków itp. (po części dlatego, że nie mam o nich zielonego pojęcia), ale chyba nie wygląda prostacko czy spartańsko?

RSS na Repo, wiosna na działce i Flash

[roślinka] Byłem na działce, fajnie się zaczyna robić. Tulipany jeszcze nie kwitną, ale to już niedługo. Więc wyżywałem się na bratkach i innych takich. Hmm, od jakiegoś czasu używam na pulpicie tylko tych tapet które samemu złożyłem. Tak jest i z tym tutaj... ponieważ to moje "dzieło", to i się napatrzyłem i trudno mi powiedzieć, czy to ładne czy nie... więc mile widziane opinie z zewnątrz :) Podobnie zresztą z tą tutaj tapetą. Może to zbyt banalne?

Swoją drogą to mogę tu pokazać jeden z tych powodów w których fajnie jest mieć w aparacie trochę więcej megapikseli niż się ostatecznie wymaga. Dzięki temu mogę z oryginalnego zdjęcia wykadrować sobie tylko interesujący mnie fragment (oznaczony ramką)...

A, ostatnia nowina - RSS ruszyło. To całe przechodzenie na CGI itp. miało na celu uporządkowanie bajzlu jaki mi z czasem narósł w Repo, a gdy się coś ułoży z głową to i potem łatwiej jest to obrabiać itp. Więc po przekształceniu danych w ChangeBlogu na osobne wpisy przetwarzane w locie bardzo łatwo było napisać generator RSS (72 wiersze kodu w pythonie, licząc razem z pustymi wierszami, szablonem XML w jaki feed jest oprawiany itp.). Więc teraz dostępne są dwa feedy, jeden okrojony (lekki) zawierający tylko nagłówki wpisów (normalnie byłyby to tytuły, ale ja nie tytułuję wpisów więc pokazuję zamiast tego pierwszych parę słów - to tak samo dobre) i jeden full-wypas (ciężki jak cholera) zawierający całą treść wpisów z ostatnich 40 dni. Ten drugi może być dobry dla samodzielnych czytników RSS, jeśli ktoś nie lubi korzystać z przeglądarki WWW. Na samym dole strony doszły odpowiednie linki jeśli ktoś by potrzebował (razem z linkami do walidatorów css/xhtml, jak szaleć to szaleć ;) (...)

Czytaj dalej...
Trzynastkowy miks

[LAS] Ciamk, ciamk. Rzodkiewki, pomidory, sałata, papryka... moje ulubione jedzenie. Preferuję taką dietę, ale nie mogę na niej jechać przez cały rok... poza sezonem ciężko kupić sensowne pomidory (owszem, w każdym markecie bez problemu dostanie się jakieś pomidoropodobne, twarde jak kamień i pozbawione soku i aromatu kulki, ale ja ich nie lubię) czy rzodkiewki. Ogórki też są fajne.

A, dzisiaj trzynasty! Nic pechowego się mi nie przydarzyło, wręcz przeciwnie - dzień upłynął bardzo miło. Jakiś czas temu nawaliły mi ostatecznie głośniczki komputerowe (kupione daaawno temu) więc wymieniłem je na używane 4.1 i osłuchuję się w śpiewie Alanis Morissette. Używam ich i tak tylko w trybie stereo, ale dwie dodatkowe satelitki za plecami znakomicie polepszają wrażenia (jestem w końcu przyzwyczajony do słuchawek, więc lubię dźwięk dookólny). No a osobny subwoofer (szkoda że w plastiku, ale nie charczy i nie psuje, więc obleci) poszerza dół pasma. Tak że sobie osłuchuję audio, jeszcze grzebię trochę w ustawieniach miksera (chyba już mam moje idealne ustawienia) i w ogóle się cieszę całkiem fajnym jak na głośniki dźwiękiem.

Ostatnio pojawiło się sporo nowego oprogramowania - glibc-2.3.5, gimp-2.2.6, gtk+-2.6.6 i parę innych... Napisałem sobie kilka prostych skryptów porównujących moje domowe oprogramowanie z tym dostępnym w Archu i uzupełniłem zaległości. Wyrzuciłem z systemu pppd i wvdial, pozbyłem się też ostatecznie pakietu rpm. Tym samym nie mam już ani jednego pakietu który by nie był instalowany za pomocą HBS. Ostatnim, najstarszym pakietem z ery pre-hbs był wvdial, z datą instalacji 20020825. (...)

Czytaj dalej...
Teoria seksualności, krytyka Lain, Wielkanoc i Husk

Wiosna się rozpoczęła, śniegi puściły, mogę ganiać bez czapki i szalika... a Repo zarosło kurzem. To nawet nie jest brak czasu, bo tę godzinkę zawsze bym dał wyskrobać - to raczej jakaś taka, hmm, "niemoc twórcza". Nie chce mi się robić niczego do czego mnie się nie zagna solidnym skórzanym pasem. Śpię więcej niż zwykle. Energia mi się kończy koło czwartej po południu i do północy najnormalniej w świecie sobie wegetuję. I tak dzień za dniem... A od wiosennego słońca łeb mi pęka, zwampirzyłem się już chyba do reszty.

Aha, miewam nawet tzw. "sny erotyczne", chociaż akurat tej kategorii praktycznie nigdy nie miewałem. Przez jakiś czas po przebudzeniu z takich snów czuję się jeszcze bardzo "nastrojowo", hyhy, a na kobiety patrzę wyjątkowo łaskawie. Na tyle, że w "porannym amoku" spodobały mi się ze dwie z kasjerek z pobliskiego marketu (tak, każda kobieta która się wtedy na mnie nadzieje ma prze-rą-ba-ne, bo w stanie rozerotyzowanym wszystkie kobiety nagle wydają mi się atrakcyjniejsze).

Na szczęście znam takie stany z czasów nastolatkowania i jestem uodporniony - mam nawet taką prywatną teorię dotyczącą radzenia sobie z instynktami seksualnymi, zgodnie z którą mężczyźni są o wiele bardziej opanowani niż kobiety, jeśli idzie o seks. Wynikałoby to z hormonalnych szałów jakie przechodzi się dorastając. Ponoć u chłopaków wewnętrzna presja jest o wiele silniejsza niż u dziewczyn, więc albo popada się w obsesyjny onanizm, albo zaczyna zaliczać wszystkie "chętne" laski, albo wypracowuje się solidne mechanizmy samokontroli. Najczęściej dorastający chłopak próbuje jakoś zrównoważyć sobie te trzy sposoby, ale uważam, że ponieważ w tak ciężkim stanie przychodziło nam dorastać, to i potem łatwiej jest nam nad sobą zapanować i generalnie na pokusy ciała możemy być odporniejsi niż kobiety z którymi się potem stykamy. I odczuwam za każdym razem satysfakcję gdy widzę jak kobieta pod wpływem pożądania kobieta przestaje myśleć/zachowywać się racjonalnie. A mówi się, że "faceci myślą fiutem"... Akurat. W moim świecie to babki są opętane seksem... ale może przenoszę subiektywne wnioski na ogół populacji, nie każdy musi spotykać tak namiętne (czy to odpowiednie słowo?) kobiety jak ja, choć sądzę że to całkiem reprezentatywna część żeńskiej populacji jest. Możliwe też, że nie mogę służyć jako model dla męskiej części ludzkości, ale wydaje mi się, że aż tak bardzo nie odstaję od reszty naszych? (...)

Czytaj dalej...
Aktualizacja HBS i mój kontakt z Anime

Dzisiaj szybko, bo nie mam wiele czasu. Aktualizacja Hierophanta - usunięty banalny acz paskudny błąd w nowym skrypcie /etc/hbs/deps - przez gapiostwo użyłem tam iteracji nie po tym słowniku co trzeba (kopiowałem kod z innego fragmentu skryptu i nie zmieniłem nazwy pewnej zmiennej) i w rezultacie połowa kodu generującego PROVIDES była nieaktywna. Były generowane "proste" PROVIDES, bez "wersjonowanych symboli", tzn. wykrywało np. libc.so.6, ale nie wykrywało już libc.so.6(GLIBC_2.1.3). Kod generujący REQUIRES był za to pełnosprawny, więc to się dosyć szybko zaczynało rozsuwać. Wyłaziło na wierzch np. przy paczkowaniu glibc, gcc czy firefoksa. Poprawiłem. Poprawiłem też inny błąd, pojawiał się on w hbsremove gdy usuwało się równocześnie wszystkie pakiety które miały między sobą konflikt plików, a nazwa jednego z nich była (niepoprawnie) kończona "/" (np. "hbsremove pakiet1 pakiet2/ pakiet3"). W takim wypadku pliki będące w konflikcie (powtarzające się w pakietach) nie były w ogóle usuwane z dysku. Wiem, że to dosyć egzotyczna sytuacja, ale jednak zachodziła, w tym parę razy u mnie. Wbudowałem stripowanie ostatniego "/" z nazwy pakietu, powinno wystarczyć. Prawdopodobnie wykluczyło to też kilka mniejszych, podobnych błędów. Nowy Hiero oczywiście w Rupieciarni.

[ZAPALNIK] Przyłapałem mojego tatkę na majstrowaniu czegoś, co z grubsza wyglądało na jakąś terrorystyczną zabawkę i kojarzyło się mi niejasno ze słowami takimi jak "trotyl", "ładunek" i "detonacja". Części które umiałem rozróżnić to: jakiś element LED, małe okrągłe cosik (mikrofonik?), cholernie wrażliwy pręcik drgający w metalowym oczku (coś jak czujnik ruchu czy wibracji), od spodu wmontowane parę jakichś tranzystorków i jeden scalak, z boku jeszcze jakiś ekranik którego roli nie rozumiem. Mina? No nic, zostawmy mojemu Radykalnemu Ojczulkowi jego zabawki (które na dodatek wyprodukował w paru egzemplarzach, pewnie żeby proces technologiczny ulepszyć). Oczywiście ja wiem co to jest, ale oczywiście nie powiem :P Zgaduj! (...)

Czytaj dalej...
Nowy HBS, fotosy mojego miasta,

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 :)

Zoptymalizowałem wykrywanie zależności w HBS

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.

Nowe zakupy, nowe obserwacje

[CITY WEBCAM] 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...
Poprawki w HBS

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.

Nowa klawiatura, nowa taryfa sieciowa, nowy HBS

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...
Walka z programami (i nowy Hierophant)

Nowsza wersja Hierophanta do pobrania z Rupieciarni. Tym razem tylko jedna zmiana, w sekcji [info]. Pozwala ona na używanie słowa kluczowego "AUTO" zamiast numeru wersji. W takim przypadku hbs spróbuje samodzielnie wyłuskać sobie wersję z nazwy pliku ze źródłami znalezionego w FILES/. Oczywiście stara składnia typu wersja-release jest nadal obsługiwana. Ale podawanie AUTO może być często wygodniejsze - kiedy np. wyjdzie nowe gqview wystarczy że skasuję stare źródła, wrzucę nowe do FILES/ i tyle. Nie będę już musiał aktualizować numerku wersji w gqview.plan... Aha, obok AUTO można też użyć AUTO-release, np. AUTO-3 - spowoduje to wymuszenie release=3 w tworzonym pakiecie (inaczej hbs domyślnie doklei do wyszukanej samodzielnie wersji przyrostek "-1"). Część nowych pakietów już używa opcji AUTO. Mi się podoba :) Aaa, oczywiście nie ma ona 100% skuteczności. Jak zwykle wyłuskiwanie wersji jest trudne do zalgorytmizowania. Ale AUTO powinno sobie poradzić z jakimiś 90% przypadków.

Głupie GCC. Po skompilowaniu x.org z flagami "-Os -march=athlon-xp" zauważyłem, że glxgears segfaultuje. Inne aplikacje OpenGL jak trackballs czy q2 działały bez zarzutu, ale glxgears nie... Widzę, że -Os gryzie się z -march=athlon-xp. Problem ustępuje gdy zamiast -Os użyję -O2, albo zamiast athlon-xp podstawię i686... Podobny problem zauważyłem przy mplayerze. Teraz rozumiem dlaczego czasem spotykałem zaciekłych przeciwników -Os, wszystko zależy od architektury... Na i686 nie odnotowałem praktycznie żadnych problemów, na athlon-xp już dwa maleństwa namierzyłem... Hmm. (...)

Czytaj dalej...
Mam linuksowe spinki do mankietów ;)

[ŚWIECA] Lubisz świece? Ja bardzo. Gdy siedzę w nocy przy komputerze to nie ma jak porządny kawał wosku z knotem. Mhm. Stanowczo. Lubię to ich miękkie, ciepłe światło. Lubię też ruchliwe cienie na ścianach. Przy świetle świec noc nie wygląda tak nocowato. Poza tym są pewnie romantyczne, o ile Hoppke stukający o północy w klawisze, w zalanym mrokiem pokoju, gdzie świeca jest obok monitora jedynym źródłem światła nie gryzie się z Twoim pojęciem romantyzmu. Ech, świece rządzą rulezem. Możesz zawsze wrzucić mi parę złotych do FPR na cel "świeczkarnia" - to takie malutkie, magiczne miejsce w Zielonej Górze gdzie Hoppke idzie i wsiąka na minimum pół godziny. Chodzi sobie między regałami i ogląda (oraz obwąchuje) świece, świeczki, olejki, kadzidełka, stojaczki, świeczniki i pudełeczka. A potem kupuje kilka z nich i idzie do domu. Tak to wygląda...

Pingwinki. W ramach współpracy z Linux+ dostałem 3 pingwinki do przypięcia gdzieś na ubraniu. Pingwinki mają długie szpilki sterczące z tyłu, zatykane specjalnymi zatyczkami/kapturkami, żeby nie odpadły. Przypomina to trochę samomocujące naparstki w kształcie kapelusików, ze sprytnym mechanizmem zaciskowym. Swoją drogą bardzo solidnie to wykonane, żaden badziew... Dwa mogą służyć za ekscentryczne spinki do mankietów, trzeci nada się na kolczyk. Tylko musiałbym sobie ucho przebić. Tak udekorowany mógłbym jechać na każdy linuksowy konwent... hmm, nigdy na żadnym nie byłem. Może czas się gdzieś wybrać, pooglądać innych linuksiarzy, upić się tanim piwem i... eee, no właśnie dlatego chyba nie jeżdżę na konwenty. Choć mogłoby być fajnie... bym sobie usiadł incognito gdzieś w kącie i... (...)

Czytaj dalej...
FPR Tymbark, płeć mojego mózgu i narzekania na providera

[TYMBARK] Punkt pierwszy dzisiaj - FPR :) Jak widać padło na Tymbark. Otrzymałem przez FPR m.in. zlecenie wypróbowania specyfiku o nazwie "Tymbark Jabłkowo-Miętowy". Co i zrobiłem (zdjęcie dokumentujące część zakupionych "materiałów konsumpcyjnych").

Akurat dręczy mnie jakaś grypa-nie grypa, przeziębienie, diabli wiedzą co, więc nie mogę pić niczego prosto z lodówki. Jeśli chcę sobie czegoś łyknąć to muszę wyjąć parę godzin wcześniej żeby doszło do temperatury pokojowej. Mleko po prostu podgrzewam na kuchence... kłopotliwe strasznie. Ale trudno.

Wrażenia smakowe mam pozytywne - nie miałem pojęcia jak może smakować kombinacja mięty i jabłka, teraz już wiem. Pierwsze co udzerza w kubeczki smakowe to mięta, potem zaczynam czuć kwaskowatość soku jabłkowego, a sam smak jabłka, co ciekawe, odczuwam dopiero jako tzw. "aftertaste" - czyli mówiąc po chłopskiemu "posmak" :) W każdym razie bardzo orzeźwiające ze względu na sok jabłkowy (uwielbiam sok jabłkowy, mogę go hektolitrami pić), a mięta dodaje solidnego "kopa" zwiększając siłę z jaką wrażenia smakowe drążą sobie drogę do mózgu. Ogólnie - bardzo pozytywne. Można śmiało kupować. Aczkolwiek kapselek sprawiał mi problemy - nie wiedziałem jak to się otwiera... na delikatne sugestie zejścia z butelki nie reagował, a bałem się pociągnąć mocniej żeby a) nie oderwać "oczka" (nie wiedziałem jak mocno się ono trzyma kapsla), b) nie poderżnąć sobie ścięgien palca na "oczku" (jakoś tak miałem wrażenie, że ta drapieżna bestia tylko czyha by się mi werżnąć w palec) no i c) nie chciałem szarpnąć i porozlewać zawartości. Więc zaklinowałem sobie butelczynę między udami i jednym zdecydowanym ruchem zerwałem kapsel. Śmiesznie to pewnie wyglądało, Freud by wywnioskował że przejawiam autoagresję w stosunku do swojej "męskości" (ale to tylko tak na boku wtrąciłem i winę zwalam na przeziębienie oraz wieczorną gorączkę ;) (...)

Czytaj dalej...
Nowy camport 0.2.2

Nowy camport, wersja 0.2.2. Poprawiłem przepełnienie w pasku postępu, dodałem trochę informacji o błędach wyrzucanych na stderr, camport przerywa też pracę przy błędach odczytu/zapisu. Przy wyłączonym MOVE_MODE camport przeskakuje już przekopiowane (istniejące w katalogu docelowym) pliki.

Nowy camport-0.2

Wspominałem, że te karty SmartMedia wyglądają mi na bardzo kruche? Oto dwie minifotki - widać tu wielkość karty w porównaniu z monetą 1zł, widać też jak cienka jest sama karta. To właśnie ta jej znikoma grubość mnie przeraża. Przy wpychaniu jej do slotu zawsze się bałem, że mi trzaśnie w palcach.
SmartMediaSmartMedia
Aha, na drugiej miniaturce widać taki czarno-biały symbol "Z!" na tle czarnego słoneczka (zresztą oficjalnego symbolu Repo) - oznacza on, że miniaturka jest linkiem do większej wersji zdjęcia ("Z!" oznacza "zoom"). No bo w trosce o czytelnika muszę jakoś optycznie odróżnić "zwykłe" obrazki od tych, które są linkami do większych zdjęć. A że nie chcę kombinować nic z obramowaniami samej grafiki to i zaprojektowałem sobie takie małe logo. Chyba będzie się od tej pory dosyć często pojawiało. Czyli jeśli zobaczysz u mnie obrazek z takim symbolem, to możesz w niego kliknąć by obejrzeć większą wersję. Proste, czytelne, przyzwyczaisz się :)

Nowy camport-0.2: spakowane źródła lub paczka źródłowa HBS. Zmieniłem wielkość bufora używanego przy kopiowaniu danych na 512KB (co zmniejsza zużycie ramu), po skopiowaniu każdego takiego bloku aktualizowany jest pasek postępu, więc teraz przesuwa się on płynniej. Oprócz tego dodałem sortowanie plików w podkatalogi. Podkatalogi mają nazwy YYYY-MM-DD, czyli np. 2004-10-16. Data jest rozpoznawana na jeden z dwóch sposobów - w przypadku plików jpeg jest wyciągana bezpośrednio z tagów EXIF (dlatego CamPort ma nową zależność - libexif - swoją drogą biblioteka ma ZERO dokumentacji), a w pozostałych (nie-jpeg) sprawdzany jest stempel mtime samego pliku w aparacie. Mój aparat ustawia go w miarę sensownie, ale to nie musi być regułą. Swoją drogą może olać exif i polegać tylko na tych stempelkach? No bo teraz i tak odczytuję te dane tylko z jpeg-ów... dla plików TIFF i MOV używam mtime... z TIFF niby też mógłbym odczytywać tagi podobne do tych w JPEG (gqview to robi ładnie), ale mi się nie chce ryć w dokumentacji libtiff. No i nawet jeśli bym to zrobił, to potem i tak pozostają mi jeszcze ew. pliki z filmami - a jak wyciągnąć "creation time" z filmu? Na pewno jest gdzieś zapisany, ale przecież nie będę pisał parsera do tego... Hmm, ten mtime chyba jest najlepszym wyjściem, jednak. (...)

Czytaj dalej...
Podłączanie C-4000 pod Linuksem (USB mass storage)

Ha, przechodziłem parę dni temu mroźnym porankiem przez miasto i co widzę? Ano coś takiego:
Kolejka przed PKO
Nie, nie jest to młodzież szkolna przed wejściem do kina. Bo to nie kino. To bank PKO. I to chyba wystarczy za komentarz ;)

Dzisiaj miałem opowiedzieć o podłączaniu aparatu pod Linuksem i, o dziwo, dotrzymam słowa ;)
Punkt pierwszy - mój aparat (C-4000) jest zgodny z ogólnym schematem USB mass storage (Hurrej!). To jednak oznacza, że praktycznie nie ma aplikacji które by jakoś miały z tym współgrać (Hurrej!, acz mniej entuzjastycznie). OK, możesz zapytać "Czy to naprawdę problem? W końcu urządzenia usb mass storage są w linuksie montowane jak normalne dyski i z punktu widzenia systemu traktuje się je tak, jak dodatkowy dysk podłączony do komputera..." - i będziesz mieć, mój czytelniku/czytelniczko absolutną, rację. Ja jednak lubię sobie automatyzować pracę, tzn. chciałbym aby to komputer zajął się wszystkim - tak jak to się dzieje przy tych mniej wygodnych aparatach wspieranych przez gphoto2, gdzie produkuje się dedykowane aplikacje zgrywające fotki na dysk itp. Nie no, oczywiście że cieszę się z tego, że sterowniki "do aparatu" są standardowo w kernelu i nie muszę się gimnastykować by sobie fotki zgrywać, ale mimo wszystko brakowało mi jakiegoś zautomatyzowanego front-endu. Tutaj możesz powiedzieć "No to sobie napisz jakiś skrypt czy coś" i znowu będziesz mieć rację, ale o tym za chwilę.

Repo dostaje sporo odwiedzin z googla, więc opiszę cały proces podłączania po kolei, może ktoś tutaj trafi kiedyś w poszukiwaniu haseł "aparat cyfrowy", "linux", "usb", "jak podłączyć", "konfiguracja", "mass storage", "Olympus C-4000".
Pierwsze co potrzebne to obsługa USB. Istnieją dwa wykluczające się modele - UHCI i OHCI. Jak rozpoznać posiadany? Najprościej przez "lspci -v|grep USB". Płyta będzie posiadała raczej tylko jeden model kontrolera, więc drugiego nie warto włączać. Istnieje jeszcze EHCI, aka "USB 2.0". Szczęśliwcy posiadający płyty z USB 2.0 mogą włączyć EHCI i, oprócz niego, UHCI lub OHCI (wg. informacji z lspci). Samo EHCI nie obsługuje niczego poza USB2.0, dlatego też chipsety z EHCI zawierają też odpowiednie podzespoły UHCI/OHCI dla komunikacji ze starszymi urządzeniami USB. (...)

Czytaj dalej...
Apatia

No i kolejny miesiąc mi minął. Chaotyczny, niespokojny i bardzo, bardzo pusty. Ech. Nic nie czuję. Absolutnie nic. Żadnej większej radości czy smutku, nadziei lub żalu, gniewu czy miłości. Nawet zmęczenie na stałe wgryzło się mi w skórę i jest tak samo uciążliwe jak stary tatuaż. Nie wiem co o tym myśleć. Nie powinienem chyba popadać w taką apatię, ale to wszystko się jakoś "samo" dzieje. Wymknęło się spod kontroli.

Zainstalowałem sobie Operę 7.51. Łał. Naprawdę, naprawdę fajna. Teraz praktycznie nie mam się już do czego przyczepić. Domyślna skórka jest wreszcie bardzo estetyczna, konfigurowalność pasków z narzędziami jest doskonała, prędkość i wygoda używania znakomite. Wbudowany konfigurator klawiatury i myszy bardzo mi się podoba - owszem, z początku można się w nim zagubić i ma jeszcze wiele braków, ale szybko ustawiłem by np. nowe zakładki otwierał po ctrl-t, a ctrl-m powodowało "maksymalizowanie" aktywnej ramki... Świetny produkt, brakuje mi tylko mozillowego "type ahead find" i możliwości zablokowania migotania tekstu. Szkoda, że to nie freeware.

Moment, moment... Ej, przecież to ma "type ahead find"! Klawisze kropki/przecinka... Super :) (...)

Czytaj dalej...
Wyjaśnienia w sprawie URL-a

Zmiana adresu? Niedawno przez jakiś czas niedostępny był serwer lubuska.zapto.org. To znaczy serwer tak na prawdę działał, tylko alias zniknął. Bo lubuska.zapto.org to alias. Tak naprawdę maszyna to (www.)dobremiasto.net. Ale to wydarzenie kazało mi zastanowić się nad istotą aliasów. Wychodzi na to, że alias ten istnieje teraz tylko ze względu na mnie i moje przyzwyczajenia :( No i sobie pomyślałem, że może czas zerwać ze starym przyzwyczajeniem. Dlatego zastanawiam się nad planowym tym razem wyłączeniem aliasowania za miesiąc czy dwa. Jakby co, to Repo jest ciągle dostępne przez http://dobremiasto.net/~hoppke/, a mój email to nadal "hoppke", tyle że na dobremiasto.net zamiast lubuska.zapto.org. W końcu to jedno i to samo konto.

Towarzysz Brodzky zauważył, że Hierophant wywala się przy usuwaniu większych pakietów (z długą listą plików). Mianowicie zawodzi wywołanie "rm" z komunikatem "argument list too long" czy jakoś tak. Przerobiłem to tak, by teraz hbshelper zajmował się sam usuwaniem plików. Nie powinno to mieć wpływu na wydajność, a uniezależnia hbsremove od tych fanaberii poleceń "rm" i "rmdir". Nowa wersja gotowa do pobrania. Oprócz tego doszło automatyczne uruchamianie ldconfig w $HBS_DESTDIR$LIBDIR (aby utworzyć brakujące czasem symlinki przy bibliotekach), zniknęła również zmienna $DOCDIR (teraz jest po prostu przyjmowane $DATADIR/doc).

Mam dobry humor. Po raz pierwszy od dawna. Więc warto to odnotować. Jupi :) Z uwagi na morale Czytelników nie opiszę nowych technik poszerzania świadomości jakie ostatnio wypróbowuję wieczorami, nie opowiem też o zdumiewających rzeczach jakich się przy tym nauczyłem, nie zrelacjonuję też jak to w wieku wczesnoszkolnym przekonałem się czym jest kłamstwo, jak go używać oraz w jaki sposób słowa pozwalają panować nad ludźmi i światem :))

PS. Strasznie wietrznie w Zielonej Górze. Przez okno widzę w oddali sznur do którego przyczepione jest czyjeś schnące pranie. Myślę, że te wszystkie koszule, chusteczki i halki nie jeszcze nie odleciały tylko ze zwykłej przyzwoitości. Przy tak silnym wietrze i tak nikt by im tego nie wziął za złe.

HBS kontroluje coraz większy kawałek mojego systemu

Występują przejściowe (mam nadzieję) problemy z generowaniem statystyk Repo/grup dyskusyjnych, więc statystyki mogą mieć znaczne opóźnienia. A statystyki Repo są fałszowane. Ale coś z tym spróbuję niedługo zrobić. A na razie wrzucam solidną porcję nowych pakietów HBS. Za pomocą HBS przebudowałem już 89% systemu, jak pokazuje spis zainstalowanych u mnie pakietów.

Buty buty buty

Miałem przejściowe problemy z dostępem do swojego konta email, nie mogłem też aktualizować Repo. Choć z punktu widzenia "szerokiego świata" wszystko świetnie działało. Na dodatek akurat zrobiłem w moim newsreaderze tryb wysyłania wiadomości gdy znowu padł serwer news.gazeta.pl (ech, chyba trzeba mi się jednak przerzucić na serwer onetu, on podobno nie jest tak niestabilny).

Ale jak wspomniałem mój newsreader posiadł jakże potrzebną zdolność wysyłania artykułów. Zabrałem go wczoraj (a może już przedwczoraj?) na jazdę próbną po Apcoln. Najbardziej bałem się o kodowanie - to taka dosyć śliska sprawa, ale chyba działa poprawnie. Oczywiście nie ustrzegłem się błędów, np. źle generowałem References: (doklejałem nowe msgid na początek łańcucha, podczas gdy należy doklejać na koniec), ale to już poprawiłem. Poza tym jestem zadowolony, bo udało mi się chyba w końcu znaleźć sobie sposób pokazywania drzewka artykułów tak, by było to dla mnie czytelne, wygodne, nie zajmowało zbyt wiele przestrzeni ekranowej i równocześnie dawało się łatwo kontrolować z poziomu PyGTK. Ogólnie jestem zadowolony, mam już całkiem funkcjonalną bazę. Przygotowałem nawet mały (92KB) screenshot z opisami :) (...)

Czytaj dalej...
Golenie się na pięć minut przed wyjściem to głupi pomysł

Miałem dzisiaj pewne ważne spotkanie zaplanowane na przedpołudnie. Więc się przyszykowałem, ubrałem itp., ale przed wyjściem z domu popatrzyłem w lustro jeszcze ostatni raz i pomyślałem "a może byś się jeszcze ogolił?". Co też zacząłem robić i, jak chce ironia losu, pozacinałem się przykładowo. Wyglądałem jak jednosobowe performance pod tytułem "świniobicie", a przynajmniej kolorki miałem utrafione idealnie. No i musiałem kwadrans odczekać żeby nie mieć kropek krwi na twarzy po wyjściu. Przez co prawie się spóźniłem i cały czas nerwowo zastanawiałem czy nie wyglądam jak niedoszła ofiara wampiszcza.

Wczoraj po powrocie z działki znowu mnie wywiało z domu i szwendałem się bez wyraźniej sprecyzowanego celu po mieście w nieco szemranym i ad hoc przyszytym towarzystwie złożonym z malarki, skrzypaczki, jakiegoś fotografa i paru gości o których wolałem nic nie wiedzieć. Ale było całkiem fajnie. A na spóźnioną kolację zjadłem sobie trochę truskawek ze śmietaną i cukrem, dorzucając do tego conieco ryżu ugotowanego na mleku (ryż był w chwili jedzenia co prawda już wczorajszy i zbił się w twardą bryłę, ale dał się zjeść - problem był tylko z pocięciem go na kawałki mieszczące się w salaterce)

Dzisiaj po raz pierwszy od paru tygodni siadłem znowu do mojego małego-acz-własnego czytnika newsów. Wywaliłem pasek który wcześniej pokazywał From:, Date: i Subject:, a zamiast tego dołożyłem pokazywanie nagłówków bezpośrednio nad artykułem, oczywiście te banalne nie są pokazywane. Czyli podobnie jak to robi slrn. Przesunąłem też widok drzewka wiadomości na prawą stronę okna, ale to mi się jakoś średnio teraz widzi (300-kilobajtowy screenshot).

Teraz chyba pozostaje mi dorobić mu jakiś tryb odpowiadania i będę mógł z tym wrócić na usenet. A potem się dorobi resztę. Nie bardzo wiem jak mi wyjdzie obsługa kodowania wychodzącego artykułu, nie wiem też jeszcze jak generować msgid-y (pewnie jakimś md5?). Jeśli będę miał ochotę to to zrobię, a jeśli nie to znowu kod poleży parę tygodni.

PS. Dzisiaj zauważyłem też, że jest już gkrellm-2.2.1. Fajny, bo wreszcie dobrze współpracuje z UTF-8, nie ma też kłopotów z fontami na najnowszych gtk+. Cała obsługa fontów pochodząca jeszcze z ery gdk-pixbuf (gtk+-1.2) została przepisana tak, by używać Pango. W rezultacie wszystko znowu działa poprawnie, a na dodatek fonty są antyaliasowane.

Statystyki słów na Repo, HBS i czereśnie

Hurra, jutro mam cały dzień wolny i tylko dla siebie :) Rany, jak fajnie.

Jakiś czas temu przepuściłem materiał Repo przez maszynkę zliczającą słowa. Teraz sobie przypomniałem, że wyniki leżą cały czas na dysku... Najczęściej używane jest słowo "to" - 2732 wystąpienia. Po zliczeniu razem z formami pochodnymi ("tego", "tej" itp.) jest tego prawie 4000. Drugie miejsce zajmuje "nie" - blisko 2500 wystąpień. Co ciekawe, przeciwstawne słówko "tak" wystąpiło tylko 655 razy. Jak widać dużo częściej mówię "nie" niż "tak" :)
"Top 20" wygląda tak:

1-5 6-10 11-15 16-20
2732 to
2414 nie
2332 się
1933 na
1380 do
1275 jest
1143 ale
1028 że
823 po
655 tak
640 jak
562 można
526 co
509 też
492 sobie
470 od
469 już
460 bo
449 tylko
439 mi

A, wczoraj próbowałem zbudować pakiety vim, mplayer oraz elinks przez "hbs -bb mplayer vim elinks" czy jakoś tak. I zauważyłem jakiś poważny błąd - przy drugim pakiecie HBS próbował użyć opcji ./configure z pakietu poprzedniego. Gdzieś się mu mieszają "środowiska" przy łańcuchowym budowaniu pakietów. Nic dziwnego, w sumie nigdy tego nie testowałem. Muszę pamiętać by to poprawić kiedyś. Oprócz tego jest jeden znany błąd w funkcji --compare-versions (pewnie trywialny, ale jakoś nie mam chęci teraz grzebać w kodzi). No i zamiast realpath() powinienem chyba używać czegoś innego, bo realpath() robi od razu "symlink resolving" co skutecznie uniemożliwia używanie tej funkcji na samych symlinkach. Co jeszcze... no, muszę poprawić hbshelpera na tyle, by znowu nadawał się do wyławiania obiektów z plików PROVIDES/REQUIRES, dodać wsparcie dla tych funkcji do hieroq, powinienem też przejrzeć hbs i zrozumieć dlaczego nie są wyświetlane nazwy źródeł jeśli są one sztywno wpisane w [files] (tzn. rozumiem "dlaczego", ale powinienem zmienić ten aspekt działania HBS). A hbsremove przy wykryciu zrywania zależności powinien wyświetlać, oprócz nazwy samej zależności, również nazwy pakietów które tej zależności potrzebują (czyli nie "libgtk.so jest potrzebne", a "pakiet gkrellm wymaga libgtk.so"). Do tego dochodzi jeszcze upierdliwe portowanie /etc/hbs/prep bezpośrednio do skryptu hbs. I pewnie inne rzeczy które trzeba zrobić. Jednym słowem sporo rzeczy do zrobienia, a jak przypuszczam "w trakcie" pojawi się jeszcze trzy razy tyle innych "drobnostek" do zrobienia. No nic, może teraz będę miał parę dni wolnego, to i siądę od czasu do czasu do edytora i pogrzebię w kodzie. (...)

Czytaj dalej...
Errata do HBS i wizyta u Agi

Oczywiście najnowsze wydanie HBS nie działa. Grrr...
Okazało się, że pospiesznie wyciąłem o jedną linijkę kodu za dużo a w innym miejscu dałem o jedno wcięcie za mało i parser opcji przestał działać. Poprawiam, aktualizuję, wstydzę się :)

Update: Wiesz ile dzisiaj spałem? Cztery godziny. Na dodatek niecałe. Od pierwszej dwadzieścia do punkt piątej rano. Czuję się "adekwatnie". I tak się to już ciągnie od zeszłego weekendu. Sam nie wiem jakim cudem jeszcze żyję - przyzwyczajony jestem do 8+ godzin snu na dobę, a... no i straciłem wątek. Zupełnie nie mogę myśli zebrać.

Myślałem, że dzisiaj będzie tak samo okropny dzień jak wczoraj, przedwczoraj, przedprzedwczoraj - ale nie. Rano byłem co prawda klasycznym zombie, ale koło ósmej byłem już całkiem komunikatywny i rozbudzony.

Ech, chciałbym się wziąć za swój czytnik news, ale nie mam kiedy. Teraz postanowiłem obejrzeć Pan-a, nie potrzebuje niby Gnome, zadowala się zwykłym gtk+ (oraz libgnet, ale to mała biblioteka). OK, skompilowałem, uruchomiłem... i spadłem z krzesła. Z obrzydzenia. Z nerwowym chichotem wciągnąłem się z powrotem na moje krzesełko i co widzę? Polonizację widzę (czy, jak kto woli, "native language support") w pełnej krasie.

Nie no, ręce mi opadają. Zgadnij jak przetłumaczono słowo "Newsgroups"?
Powiem Ci - "Grupy nowin". Przecież za takie coś powinno się z miejsca tłumacza wysterylizować żeby się przypadkiem nie rozmnożył kiedyś. Ja rozumiem zawalić tłumaczenie jakiejś drobnostki, ale jak można w głównym menu wstawić coś jak "Grupy nowin"? Na dodatek to konsekwentnie promowany potworek w tym Pan-ie, bo tak samo istnieje też menu "serwery nowin" :(

I co się dziwić, że wszystko co się da konfiguruję z --disable-nls? Naprawdę wolę mieć interfejs w pełni anglojęzyczny niż komunikaty angielskie mieszające się z "grupami nowin". Normalnie urazu się można nabawić. Po usunięciu plików z polskimi tłumaczeniami jest już lepiej, ale wtedy wyłażą na wierzch wady samego programu - nie widzę np. tak podstawowej funkcji jak podgląd artykułu razem z wszystkimi nagłówkami. To nie dla mnie. (...)

Czytaj dalej...
Kolejne zmiany w HBS

Postanowiłem dłużej nie zwlekać i zamieściłem najnowszy zrzut Hierophanta. Trochę drobnych zmian się nazbierało, więc proponuję zainteresowanym jeszcze raz przejrzeć dokumentację. A tak w skrócie, to: kod w dużej części przeredagowany, hieroq ma opcję "-f" pozwalającą odpytywać przynależność plików, większość standardowych katalogów używanych przez Hiero jest teraz konfigurowalna przez zmienne środowiskowe, polecenie "hbs" ma teraz szereg opcji i jest w stanie budować wiele pakietów "jeden po drugim" w jednym wywołaniu (jak RPM), polecenie "hbs" jest teraz w stanie budować pakiety źródłowe oraz rozpakowywać je (jak hbspack), drobna poprawka w Hierophantize, sporo błędów usuniętych z hbsinst/hbsremove, Void dodał kompresowanie dokumentacji w katalogach /usr/share/doc/pakiet-wersja oraz tryb pobierania z sieci źródeł zdefiniowanych w [files] przez pełne URL-e, całe mnóstwo poprawek technicznych które pewnie nie będą widoczne gołym okiem...
Nadal jest parę błędów o których wiem ale których jeszcze nie usunąłem - nie są one jednak niebezpieczne i na pewno nie czynią tej wersji Hiero gorszą niż wersja poprzednia.
Mimo licznych zmian zachowana została bodajże całkowita kompatybilność z wersją 20040504, co mnie specjalnie cieszy. Teraz główny nacisk położę na okolice hieroq i hbshelper, bo engine budująco-instalująco-usuwający zdaje się działać zgodnie ze specyfikacjami - więc czas podgonić narzędzia odpytujące. No, to wszystko co mam teraz do powiedzenia. Nara :)

Aha, ponad 65% mojego systemu zostało już przebudowane pod kontrolą HBS. Pozostałe 35% pochodzące jeszcze z czasów RPM-a powoli, acz konsekwentnie zanika.

Wampiszcz na dobranoc

Grrrr... Zły dzień, zły. Deszcz, zimno, sennie. Na dworze złapała mnie przelotna ulewa, potem oblałem sobie dłoń świeżo zaparzoną herbatą (na szczęście niegroźnie), a tak poza tym to nie mam ani trochę energii. Skończyła mi się dzisiaj koło trzynastej, potem przeszedłem w tryb "wegetacji" w którym tkwię do tej pory. Jedyny powód dla którego teraz piszę te słowa to wiszące nad moją głową dwa teksty do przeredagowania - po prostu mi się nie chce i odwlekam :(

Ja i Void dłubiemy ciągle przy HBS. Tzn. on dłubie, a ja wydziwiam. Kurczę, zaczyna mi się podobać ta "praca grupowa" ;)

Ach, coś dziwnego się dzieje - w ostatnich paru dniach byłem już wielokrotnie (znaczy się trzy razy) pytany o to "jaki mam iloraz inteligencji". Otóż zaczęło mnie owo proste z pozoru pytanie frapować. Frapowało, frapowało, a potem się znudziło i sobie poszło. Ale kwestia IQ pozostaje otwarta... Więc jakie posiadam? Oficjalnie bardzo ładne, takie lekko niebieskawe, z szarymi smugami. Przepraszam, ale nigdy nie traktowałem takich spraw poważnie :) Osobiście najlepsza definicja mojej "jenteligiencji" jaką umiałem wypracować to "zbyt mała, by naprawdę coś osiągnąć - ale wystarczająco duża, by sprawiać mi przykrości". W każdym razie radzę wszystkim znajomym zawsze by oceniali mnie równając moooocno w dół.

O, o, - chcesz wiedzieć co mi się wczoraj śniło? Proszę, usiądź wygodnie a ja przedstawię Ci moją małą fantasmagorię. Muszę ją przekładać w locie na język polski, bo zdaje się że wszystkie dialogi śniłem anglojęzyczne... więc resztki stylu pewnie wyparują bez śladu po translacji... albo po prostu pominę dialogi, tak będzie najlepiej. A więc nie uciekaj, a ja pokażę Ci co też płynie w mojej głowie gdy śnię... Czytaj! (...)

Czytaj dalej...
Smutek to mała dziewczynka

Dzisiaj miałem zły dzień. No, w sumie to nie mogę mieć zastrzeżeń - wszystko mi się raczej dobrze układa, kapryśna Pani Losu znowu się do mnie uśmiechnęła i po raz kolejny pewien drobny problem którym musiałbym się w przyszłym tygodniu zająć wyparował "sam z siebie"... ludzie też są dla mnie zadziwiająco mili ostatnio... ale mimo wszystko zaczynam się czuć jakoś tak, no, źle. Nie chce mi się nic robić. Chyba po prostu jestem niezadowolony z samego siebie, czuję się zupełnie nic nie wart. To bardzo przygnębiające. Ale nie będę o tym mówił, bo to dla mnie za duży wysiłek teraz. I tak czuję się już bardzo zmęczony.

Więc może z innej beczki... Ale o czym by tu...
No patrz, nie mam żadnego tematu pod ręką. Hmm. Więc może o Hierophancie - pewnie niedługo zamieszczę kolejny snapshot. Jakub "Void" Panachida jednak zauważył Hiero (choć na początku uparcie się od niego odżegnywał) i nawet zaczął używać, co mnie cieszy. Druga para oczu, zwłaszcza tak krytycznych, bardzo się przyda. Nie mówiąc już o drugiej parze rąk odwalających czarną robotę, tfu, chciałem powiedzieć "wykonujących stosowne korekty" ;) Kuba ma trochę inne wymagania od moich, więc dodał do hbs funkcję pobierania źródeł z sieci (w [files] podaje się URL). Podobno to bardzo przydatne gdy ma się względnie sprawne stałe łącze, nie trzeba magazynować źródeł na dysku. Wprowadził też bezpośrednio do hbs możliwość budowania pakietów źródłowych, więc zapewne hbspack stanie się w przyszłości zbędny. Te zmiany wymusiły trochę zmian w kodzie, znowu parę błędów zostało usuniętych, hbs w końcu ma parę opcji które przyjmuje z linii poleceń... Mógłbym zrobić snapshot już teraz, ale na wszelki wypadek dam sobie większy "margines testowy".

W tzw. "międzyczasie" dłubałem też conieco przy swoim czytniku newsów. Ale czuję organiczną wręcz do tego niechęć, dlatego posuwa się to do przodu w naprawdę ślimaczym tempie i w każdej chwili gotów jestem rzucić to w diabły. Z drugiej strony niewiele mu już brakuje bym mógł go zacząć w miarę normalnie używać, więc... A zresztą to nieważne. Znowu czuję się źle, pójdę skulić się w kłębek w jakimś ciemnym kącie.

Na koniec tylko piosenka kabaretowa pt. "Smutek" (kabaret Mumio):

Pytasz mnie co to smutek
powiem ci jeśliś ciekawy
smutek to mała dziewczynka
która siada na śniegu
i patrzy zdziwiona
na ślady
to jest smutek

Pytasz mnie co to radość
powiem ci jeśliś ciekawy
smutek to mała dziewczynka
która sika do kawy
i patrzy zdziwiona
na ślady
to jest radość

Refleksja pourodzinowa i aktualizacja paru prywatnych projektów

Maj. Dobra pora na aktualizację. Długi(?) majowy weekend był połączony z pewnym bardzo ważnym wydarzeniem, wszyscy wiedzą co mam na myśli.
To były moje urodziny.
Fajnie jest mieć urodziny. Dobrze, że każdy się kiedyś urodził i może obchodzić swoje urodziny. Choć niektórzy obchodzą urodziny na smutny sposób, wbrew swojej woli. Szkoda. A jeszcze inni zapominają całkiem o swoich urodzinach i są bardzo zdziwieni gdy ktoś im przypomni. Jeszcze inni wyprawiają wieeelkie przyjęcie, zapraszają mnóstwo krewnych-i-znajomych, po czym upijają się i robią jakieś głupie rzeczy, których potem się tygodniami wstydzą. Są też ludzie, którzy bardzo lubią urodziny bo wychodzą z nich obdarowani masą prezentów. Niektórym urodziny przypominają o upływających latach...
...a ja nie zaliczam się do żadnej z tych grup :)

"Sweet love,
hello, make a
slave of me, I should have no control.
Little dove,
hello, you take
full advantage of my open window.".

To początek "You go to my head", Tori Amos. Ładna piosenka. Trochę poza nurtem w jakim Tori "standardowo" śpiewa, z roku '88 (więc dla niektórych może być niestrawna), ale IMO bardzo przyjemna.

W Rupieciarni leży odrobinkę poprawiona wersja Hafemette. Poprawiłem upakowywanie klikalnych rzeczy (teraz są bardziej "zwarte"), hafemette sama szuka skryptu ./configure w aktualnym katalogu, jakieś inne drobne poprawki. W każdym razie ten skrypt już mi się bardzo poprzydawał :) Po prostu jakoś sympatyczniej jest mi wyklikać wszystkie ciekawsze opcje a następnie przekleić wynik do pliku *.plan niż ręcznie śledzić ./configure --help. Proste, ale przydatne. Na pewno będę to rozbudowywał...
Oprócz tego wrzucam tam też swój patch na kernel 2.6.5 dodający sterownik dla /dev/mga_vid. To to urządzenie dla Matroksów, pozwalające im odtwarzać filmy w X-ach/pod framebufferem z minimalnym obciążeniem głównego CPU. Coś jak xv, tylko jeszcze bardziej specjalizowane i działające identycznie także pod framebufferem VT. No cóż, programistą nie jestem, ale u mnie działa (gdyby mi ktoś w 2003 powiedział, że będę sobie włączał jakieś zewnętrzne moduły do jądra to bym go wyśmiał - czasem przerażają mnie rzeczy za które się biorę. Przecież ja nie mam kompetencji!). Patch ten dodaje nową pozycję w "character devices". Można ją skompilować tylko do modułu (więcej robić mi się już nie chciało), zresztą umieściłem to w opisie opcji. (...)

Czytaj dalej...
Sen o jedzeniu

Miałem dzisiaj bardzo przyjemny sen. W śnie tym byłem z grupą bliżej niesprecyzowanych przyjaciół w jakimś drewnianym domku. To znaczy oni byli w domku, a ja na werandzie. Lał deszcz i wszędzie dookoła kapała woda, a ja sobie siedziałem późnowieczorową porą na jakimś wygodnym fotelu na werandzie. Pod nogami miałem jakiś podnóżek czy taboret, tak że mogłem się w fotelu nisko opuścić i przejść do pozycji prawie poziomej. Po lewej i po prawej stronie miałem jeszcze po jednym takim taboreciku, a każdy zastawiony był miskami i miseczkami z pysznym jedzeniem. Ba, aby mieć więcej jedzenia przy sobie poustawiałem nawet część miseczek na sobie - na brzuchu, nogach, piersiach itp. Po kolei brałem do rąk każdą z miseczek i wyjadałem zawartość, leżąc sobie błogo na drewnianej werandzie, podczas gdy deszcz jednostajnie szmerał po dachu a światło z okien domku rozpływało się w nieprzeniknionych ciemnościach na zewnątrz. Niesamowicie relaksujący sen, bo dokładnie tak wyobrażam sobie idealne szczęście. Do tej pory świetnie się czuję.

Wracając do jawy: ściąłem na działce jeden z tulipanów i postawiłem na biurku. Ładny jest, czerwony i pachnie bardzo tulipanowato :) Stoi w kruczoczarnym, smukłym wazoniku. Idealny byłby co prawda żółty tulipan, ale żółte sobie tak wesoło rosły w grupce, że nie miałem serca ich ścinać. Choć żółty by dużo lepiej wyglądał w tym wazoniku. Lubię tulipany. Najbardziej z wszystkich kwiatów. Naprawdę, żaden kwiat nie może się równać z tulipanem. One mają w sobie to "coś". Oszczędność formy, zdecydowane rozgraniczenia barw, geometryczna doskonałość płatków/pręcików/liści... Piękne, po prostu. Na dodatek wyglądają "solidnie", nie są to kwiaty które by się rozpadały pod dotykiem palców. Zapach też nie jest zbyt silny czy irytujący (dla kontrastu pomyśl np. o konwaliach...). Kocham tulipany. To jedna z niewielu rzeczy która mi się zawsze i niezmiennie podoba. Świat za oknem może wyglądać lepiej lub gorzej w zależności od pogody, sposób w jaki odbieram malarstwo czy muzykę jest uzależniony od mojego aktualnego nastroju, naga kobieta też raczej nudzi niż pociąga, ale tulipany zawsze są po prostu piękne. Naprawdę mam dużo lepszy humor tylko dlatego, że mogę sobie w każdej chwili popatrzeć na ten czerwony kielich sterczący na moim biurku. BTW, czy tulipan to tzw. "motyw falliczny"? ;) (...)

Czytaj dalej...
Nowy habak (teraz także w Gentoo), mały front-end do ./configure

Dlaczego nikt mi nie powiedział, że Habak wywędrował do zasobów Gentoo? Hę? To w każdym razie kazało mi wczoraj znowu usiąść do niego i usuwać błędy. Poprawiony parser opcji (już, mam nadzieję, nie segfaultuje bez powodu), trochę bardziej sensowne defaulty, poprawione drobne błędy i przeoczenia, oraz możliwość opuszczania opcji "-hi" w większości sytuacji, dzięki czemu Habak może ładować teraz tło np. po prostym "habak ~/tło.jpg", albo zrobić tło z nałożonym logo przez "habak ~/tło.jpg logo.png". Myślę, że dopiero teraz się to nadaje do pokazywania ludziom. To poprzednie segfaultowanie przy byle okazji mnie naprawdę irytowało, więc w końcu coś z tym zrobiłem. Nowy Habak jest do pobrania z Rupieciarni, a tutaj masz bezpośredni link do paczki z nową wersją 0.2.4.

Ostatnio po nocach trochę eksperymentowałem z różnymi swoimi pomysłami. Jednym z nich było coś, co miałoby ułatwiać jeszcze bardziej tworzenie paczek dla Hierophanta. A przynajmniej tych takich banalnych paczuszek. W sumie powinno dać się stworzyć narzędzie, które weźmie jakąś paczkę ze źródłami i wypełni większość pól w pliku .plan... Na razie się pobawiłem troszeczkę z PyGTK i zrobiłem mały front-end do skryptów ./configure. Nazwałem to coś imieniem "Hafemette".

Robi się po prostu "hafemette ./configure", a ta zabaweczka uruchamia sobie wewnętrznie "./configure --help", skanuje wyjście tego polecenia i wyławia opcje. Następnie odfiltrowuje ten występujący wszędzie pospolity szum typu --mandir, --prefix itp., tak że pozostają tylko specyficzne dla danego pakietu opcje. A potem wyświetla to używając interfejsu gtk+, gdzie opcje można włączać/wyłączać po prostu klikając na stosowne checkboxy. Po zatrzymaniu kursora nad nazwą jakiejś opcji wyskakuje tooltip pokazujący jej opis. Klikając prawym przyciskiem na opcjach typu --enable czy --without następuje ich odwrócenie (tzn. --with-foo zamienia się w --without-foo, a np. --enable-alsa w --disable-alsa). Wartości dla opcji przyjmujących argumenty wpisuje się w stosowne pola tekstowe obok nazw opcji. A po kliknięciu przycisku "Apply" na stdout wydrukowany zostaje listing zaznaczonych opcji i ich wartości w formie zdatnej do bezpośredniego włączenia w sekcji [vars] Hierophanta. Posiadający PyGTK mogą sobie Hafemette po prostu pobrać i wypróbować, pozostali zaś mogą obejrzeć ten screenshot (65KB), przedstawiający bardzo skomplikowane ./configure Mozilli. Szkoda, że na tym obrazku nie mogłem uchwycić wyskakujących opisów opcji. Ale są i wyskakują, daję słowo :)
Aaale nie mam pojęcia czy Hafemette ma jakąkolwiek praktyczną użyteczność...
No, to na razie.
A, pogoda była dzisiaj boska w Zielonej Górze. Ultrasłonecznie :)

Nowy Hierophant i omyłkowo skasowany plik

Witam po Wielkanocy. Skompletowałem sobie aż dwa nowe kamienie, nie przytyłem ani kilograma i jestem w okropnym nastroju. A na dodatek połączenie z Repo znowu zaczyna szwankować. A już było dobrze...

Wrzuciłem nowy snapshot Hierophanta, napisałem krótki opis wszystkich jego poleceń, poprawiłem pozostałą dokumentację w jego dziale. A co nowego w samym Hiero? No, na pewno pousuwałem trochę błędów. hbsinst i hbsremove podają teraz objętość zainstalowanych/usuniętych danych. Pojawił się tryb weryfikacji zainstalowanych plików (opcja -V w hieroq, sprawdza czas modyfikacji i uprawnienia). Hierophant ma teraz prawdziwy plik README oraz prawdziwy Makefile, więc można zrobić "make install". Makefile jest konieczny, bo HBS wzbogacił się o jedną binarkę ("hbshelper") którą należy najpierw skompilować. Dzięki tej binarce pozbyłem się w skryptach hbsinst i hbsremove wywołań takich poleceń jak grep, find, bc, cut, date, head, tail i może jeszcze innych, o których już nie pamiętam. "hbshelper" ulepszył znacznie procedurę porównującą wersje dwóch pakietów przy wykrywaniu downgrade-ów. Jednocześnie poprawił wydajność całego mechanizmu, bo każdą z funkcji które przejął wykonuje szybciej niż miało to miejsce dotychczas. Tak że największą zmianą jest wprowadzenie tej pomocniczej binarki, ale oprócz tego poprawiłem też sporo innych rzeczy, od wielkich błędów jak np. pewien babol w porównywaniu wersji pakietów po malutkie ulepszenia, jak np. rezygnacja z używania sekwencji koloryzujących ANSI w poleceniach hbsremove/hbsinst/hieroq jeśli wykryte zostanie, że ich wyjście jest przekierowywane do pliku lub na fifo. (...)

Czytaj dalej...
Dlaczego zbieram kamienie?

Mam tyle rzeczy o których bym chciał napisać... Ale wszystkie ulatują mi z głowy gdy tylko o nich pomyślę. Po pierwsze zbliża się Wielkanoc!!! Zgodnie z paroletnią tradycją w okresie wielkanocnym wychodzę na pole i chodzę szukając Kamienia. Chodzę sobie, chodzę, aż w końcu moją uwagę przykuje jakiś kamyk wystający spod ziemi, albo którego istnienie pod powierzchnią jedynie przypuszczam. Kamień powinien mieć niewielkie wymiary (czyli jak orzech włoski, no, może parę razy większy, a może nieco mniejszy). Potem kamień ten zabieram do domu, szoruję w łazience i odkładam do mojego Pudełka na biurku, do innych Kamieni. Nie wiem co takiego jest w kamieniach, ale niektóre mnie po prostu jakoś... nie wiem, chciałem napisać "elektryzują", ale to nie o to chodzi. To raczej tak, jakby one coś w sobie przechowywały... No, nieważne. Niedługo dojdzie kolejny do kolekcji. A dlaczego wybieram sobie nowy kamień zawsze w Wielkanoc? Nie mam pojęcia, to chyba jakiś instynkt :) Z wszystkich kamieni jakie mam chyba tylko dwa przygarnąłem o innej porze roku. A jeden kamień kiedyś wyrzuciłem. Zepsuł się. Miałem go przy sobie w okresie gdy otaczało mnie bardzo dużo zła i kamień chyba tym nasiąknął, w każdym razie czułem się bardzo nieprzyjemnie biorąc go w dłonie. Więc się go pozbyłem, tracąc w mojej geomantycznej chronologii jeden rok ;) Aha, ta Wielkanoc chyba nie będzie dla mnie zbyt wesoła :( No trudno.

O, o, zanim zapomnę :) Szedłem ja sobie Deptakiem i przechodziłem akurat obok jednego z kościołów gdy dosłyszałem rozmowę dwóch kobiet w średnim wieku (wykropkowałem to, czego nie dosłyszałem): (...)

Czytaj dalej...
Spacer po lesie

Nowy spis zainstalowanych u mnie pakietów. Stary "rpmqa.html" został zamieniony na przypomnienie o nieaktualności, a spis treści w dziale QuaTrin wskazuje już na nową stronę z listnigiem pakietów.

W środę była śliczna pogoda, a ja miałem akurat trochę wolnego czasu, więc wybrałem się z Grepi do lasu. Po raz pierwszy w tym roku nie zastałem tam śniegu. Grepi szalała sobie wśród zeszłorocznych, wysuszonych liści, przeganiała jakieś małe ptaki grzebiące w ziemi i ogólnie wyglądała na zadowoloną. Brak śniegu mnie zmylił i w którymś momencie pomyliłem strony strumyka który tam płynie, wybrałem złą trasę i zrobiłem kółko większe niż bym przypuszczał. A mówiąc po prostu - zgubiłem się :) No, to może zbyt wielkie słowa, w końcu jak można się "zgubić", gdy do cywilizacji ma się najwyżej kilkanaście kilometrów... Po prostu dotarłem do granicy lasu w miejscu nieco odmiennym od oczekiwanego. Zniosło mnie z kursu, ale tylko o parę kilometrów, tak że wylądowałem gdzieś na peryferiach miasta zamiast na Wzgórzach Piastowskich. Więc oszacowałem sobie trasę powrotną i przeciąłem las zgrabnym łukiem, wychodząc tym razem dokładnie w miejscu którego sobie życzyłem :) W każdym razie fajnie było. Widziałem dużo motyli, jednego trzmiela, mnóstwo małych ptaszków buszujących w zeszłorocznych liściach (pewnie szukały jakichś robaków czy innych samobieżnych źródeł protein), paru ludzi, ślady po paru dużych ogniskach na większych polankach (to taka lokalna tradycja młodzieżowo-studencka, sam kiedyś brałem udział w paru takich leśnych, całonocnych imprezach). Znalazłem też jedno odizolowane miejsce na szczycie wysokiego pagórka, sterczącego w miejscu raczej niedostępnym, niewdzięcznym we wspinaczce i ogólnie totalnie niepociągającym. Ale instynkt kazał mi na niego wleźć, chociaż musiałem przedzierać się przez jakieś krzaki i zeschłe gałęzie. A na szczycie znalazłem rozłożone parę metrów kwadratowych jakiejś szarej wykładziny (tak na oko było tam miejsca dla dwóch leżących lub trzech siedzących osób), resztki ogniska (analiza popiołu zdradziła, że paliło się poprzedniej nocy) oraz kilkanaście(!) jednakowych butelek po piwie siakimśtam. Nie sprawdzałem co to za gatunek piwa był, bo mi to i tak nie robi różnicy i "się nie znam" na piwach. Ale widać ktoś urządził tam sobie nocną popijawę przy ognisku, a wysiłek jaki trzeba było włożyć w przytarganie tam paru metrów kwadratowych wykładziny sugerował, że nie było to miejsce jednorazowego użytku. A potem jeszcze wnosić na górę opał na całą noc... Kupa roboty, ale efekt jest bardzo romantyczny. Tyle że nie można sobie pozwolić na duże ognisko, bo nie ma na nie miejsca - co może być minusem jeśli noc okazałaby się chłodniejsza. (...)

Czytaj dalej...
Zmiany w Hiero i na Repo

Znowu trochę poprawek w Hiero. Skróciłem nazwę jednej zmiennej (do MAKEINST_OPTS), usunąłem dużo błędów ze skryptu instalującego i usuwającego (głównie powiązane z operacjami na wielu pakietach w jednej transakcji), skrypt instalujący powinien teraz prosić o potwierdzenie tylko przy próbie downgrade-owania jakiegoś pakietu. Przynależność jednego katalogu do paru pakietów nie jest już konfliktem. No i pewnie parę innych usprawnień których już nie pamiętam.

A, trochę zmieniłem layout Repo. Nie marnuje tyle powierzchni ekranu. Oczyściłem też przy okazji arkusz styli. Nareszcie udało mi się jakoś uzyskać identyczny (no, prawie) wygląd Repo w Mozillowatych i w Operze. Poodwracałem też kolejność wpisów w zarchiwizowanym ChangeBlogu, teraz każdy miesiąc jest spisany chronologicznie z góry na dół, żeby dawało się go "normalnie" przeglądać.

A na koniec wiadomość do Marcina C.: Twój serwer pocztowy nie chce przyjmować listów z Repo. Nie podoba mu się HELO jakim przedstawia mu się zainstalowany tu Postfix. Nie będę takimi drobnostkami zawracał teraz głowy Mojemu Ulubionemu Adminowi, bo i tak ma na głowie kłopoty z łączem (co pewnie wszyscy widzą w spowolnieniu transferów z Repo). Więc po prostu odpowiem tutaj: nie próbuj ustawiać klawiatury przez windowmanagera, bo to nie należy do jego kompetencji. Spróbuj ustawić poprawną mapę w XF86Config czy XF86Config-4 (/etc/X11), to powinno rozwiązać wszystkie problemy. Np. najistotniejsze ustawienia mojej klawiatury wyglądają tak:

    Option "XkbRules"   "xfree86"
    Option "XkbModel"   "pc105"
    Option "XkbLayout"  "pl"
Aktualizacja Hiero i Hydrozagadka

Co przyniósł dzisiejszy dzień w Repo? Aktualizację Hiero i jego dokumentacji. Doszła nowa sekcja [keep] (kontrolująca nadzorowanie plików konfiguracyjnych), stripowanie i generowanie zależności wreszcie respektuje ustawienia sekcji [ban], mnóstwo poprawek w skryptach hbsinst/hbsremove, o niebo wydajniejsze i ładniejsze automatyczne generatory skryptów POSTIN/PREUN...

Przydałoby się jeszcze zoptymalizować poerpeemowską procedurę kompresowania manuali itp., ale że byłoby to czystą kosmetyką, to i sobie odpuszczę - a przynajmniej na razie.

O, w tym momencie mi prąd wysiadł. Po paru minutach wrócił. Jak się okazało, to panowie z energetyki przyszli sobie pogrzebać przy kablach i coś tam zepsuli. A że nie mam ups-a, to i nagle znalazłem się przed ciemnym monitorem, w cichym pokoju, bez świateł itp. Na szczęście mam dekoracyjne świece na biurku. Po powrocie prądu uruchomiłem maszynę w singlu i puściłem fsck, bo mi się i tak już od paru dni filesystem o to upominał. Zero błędów, fragmentacja na poziomie 2.1%. Ext3 sam się podniósł, bez problemów. A zmian w edytowanym akurat w momencie awarii pliku też nie utraciłem, vim i jego pliki .swp mnie przed tym uchroniły. Inaczej mówiąc - super, system nie ucierpiał.

Wracając do Hiero... Używam go już całkiem swobodnie na swoim systemie. Nadal mam zainstalowanego RPM-a, ale nie używam go do niczego więcej niż rozpakowywanie pakietów źródłowych i konwertowanie ich do formatu Hierophanta. Baza danych rpm coraz mniej pokrywa się z tym co faktycznie leży na dysku. Za pomocą Hiero zbudowałem już i zainstalowałem takie pakiety jak glibc, XFree86, nowe gtk+ z dodatkami, SDL z CVS i sporo innej drobnicy, jak coreutils czy gqview. A tak swoją drogą, to muszę sobie ułożyć jakiś sposób przechowywania Hierophantowych przetrwalników (odpowiedników "pakietów źródłowych"). Ponieważ każdy pakiet jest trzymany w osobnym podkatalogu, to wystarczy taki podkatalog przelecieć tarem i po sprawie... ale chciałbym sobie do tego dorobić wygodną infrastrukturę. Coś, co by działało np. jak rpm-owe "rpmbuild --rebuild"... (...)

Czytaj dalej...
Dokumentacja HBS i upadek The Prodigy

Zacząłem pisać podstawową dokumentację Hierophanta, niestety nie mam teraz czasu by ją dokończyć. Zamieszczam też zaktualizowaną wersję Hiero z paroma przykładami do obejrzenia, a może nawet przetestowania u siebie...

Update: O dziwo, znalazłem jeszcze trochę czasu i popchnąłem dokumentację Hiero o duuuży kawałek do przodu. Została mi w sumie do zrobienia tylko część praktyczna, ale nie wiem nawet czy jest specjalnie sens, bo w połączeniu z przykładami zawartymi w paczce z Hierophantem każdy zainteresowany powinien wyczuć jak to działa... Ja tam w każdym razie sobie dzisiaj Hierophantem zbudowałem i zainstalowałem nowego Gimpa (2.0rc1). Poszło jak z płatka. A że jestem w świetnym humorze, to i gimpnąłem od razu Oficjalną Ilustrację dla HBS :) Mam nadzieję, że się podoba. Cholernie ciężko rysuje się za pomocą samej myszki :/

U mnie pada, wieje, pada, wieje. Taaa... Pierwszy dzień wiosny, co? A zresztą, ja na swój sposób lubię wiatr. A, słuchając jakiejś stacji radiowej dowiedziałem się, że w całej Polsce tak sobie "powiewa". Najgorzej w warmińsko-mazurskim. Na 191 ogólnokrajowych nocnych interwencji służb ratowniczych (czyli strażaków) tam przypadło 90 z nich. Zwalone drzewa, zablokowane drogi itp. U mnie nie było tak źle, po prostu wieje mocny wiatr. Czasem sobie trochę powyje za oknem, ale ja to lubię. Prawie jak burze i grzmoty.

A, zajrzałem dziś do działu statystyk i co ujrzały moje szaro-żółto-zielone oczęta? Ano ujrzały statystyczne 179 wizyt dziennie. Czyżby gdzieś ktoś znowu pokazał adres Repo? W Linux+ wydrukowali czy co?

No i pytanie retoryczne, które nurtuje mnie przez cały dzisiejszy dzień... Grzebałem sobie wśród starych kaset i zastanawiałem się co by było, gdyby Prodigy się tak nie zeszmaciło po albumie "Music for the jilted generation"? Bo przecież po nim obrali kurs prosto na dno. Nie chodzi mi o komercyjny sukces, bo "Firestarter" na pewno takim był, ale o jakość muzyki... "The Prodigy Experience" było bardzo fajne (zwłaszcza ta starsza edycja w czerwonej okładce), później też było fajnie, "Their Law" i "Voodoo People" to bardzo fajne kawałki, ale potem już nic dobrego nie było... Tzn. kupiłem sobie kiedyś CD "Fat of the land", nie żałuję, ale nie była to też jakość jakiej bym oczekiwał. Późniejsze różne single też nie mają tego "czegoś". Liczyłem kiedyś, że Chemical Brothers zajmie miejsce Prodigy. Bo naprawdę zespół miał szansę. Gdyby się trochę doszlifowali, zrezygnowali z tego podciągania pod niemieckie techno... Ale nie, nic z tego. Oh well, dla odprężenia włączę sobie Therapy? "Nowhere". Wiesz, że ostatnio dużo śpiewam do słuchanej muzyki? Znaczy się, wtóruję wokalistom. Tylko że ja totalnie nie umiem śpiewać :)

Tresowane hardlinki i żyletki w ustach

Lada dzień muszę się wziąć za dokumentowanie Hiero. Zbudowałem sobie nim już chyba kilkanaście pakietów, w tym takie "drobiazgi" jak gcc czy glibc. Skrypt instalujący działa już zadowalająco, miałem okazję popatrzeć parukrotnie jak sobie radzi z instalowaniem glibc, uruchamianiem skryptów okołoinstalacyjnych, usuwaniem osieroconych plików itp. Zacząłem wyłączać niektóre "prośby o potwierdzenie", bo uznałem je za godne zaufania.

Budując glibc natknąłem się na bardzo kłopotliwego buga dotyczącego hardlinków. Jeśli miałem np. pięć hardlinków wskazujących na jeden inode, a używając sekcji [ban] wyłączyłem jeden z tych plików, to w paczce lądowały czasem cztery hardlinki wskazujące właśnie na ten piąty, wyłączony i nieobecny. O dziwo, nie było to zbyt destruktywne (prawdę mówiąc paczka się rozpakowywała zupełnie normalnie), ale nie dawało mi to spokoju. No i pojawiały się warningi przy instalowaniu paczki. Więc spędziłem pół godziny na analizowaniu mojego kodu oraz kodu tarfile.py. Zrozumiałem problem i zacząłem modyfikować swój kod, tworząc dosyć złożoną klamrę warunkową rozciągającą się na spory kawałek kodu. Gdy ją skończyłem zauważyłem możliwość optymalizacji. Spodobało mi się to, więc zauważyłem jeszcze raz ;) Okazało się, że zamiast marnować pięć minut na stukanie tej cholernej klamry mogłem po prostu wyjać z różnych kawałków kodu pięć wierszy, zredukować je do jednego i umieścić u szczytu pewnej funkcji. Ironia losu. Więc zrobiłem tak, po czym okazało się że tylko pogorszyłem sprawę. Teraz bowiem hardlinki generowane były bardzo fantazyjnie, mianowicie pierwszy w paczce wskazywał na samego siebie (takie tam zawiłości formatu tar), a pozostałe hardlinki wskazywały na niego. Odniosłem nieodparte wrażenie, że te małe hardlinki świetnie się bawią przy tym "spychaniu odpowiedzialności". W tym momencie byłem już pewien, że jeśli będę dalej modyfikował kod to szybko uzyskam hardlinki tworzące struktury pierścieniowe albo wskazujące na nieistniejące inody. Więc zacząłem dogłębnie analizować wszystko, po raz kolejny. I wtedy mnie olśniło. Prawidłowe rozwiązanie sprowadzało się w sumie do odkręcenia wszystkich zmian jakie porobiłem próbując "naprawić" całość i przesunięciu jednego wiersza o parę pozycji w górę. Oczywiście rozwaliłem przy okazji parsowanie sekcji [ban], ale to zauważyłem parę zbudowanych pakietów później; na szczęście poprawka była trywialna. (...)

Czytaj dalej...
I znowu Hierophant

Uruchomiłem sobie mały skrypt na całych zasobach Repo, przekonwertował html na lany tekst a potem porównał to ze średnią ilością tekstu na wydruku A4...
...i wyszło na to, że wydrukowanie całego Repo (pomijając strony ze statystykami) na kartkach A4, używając dziesięciopunktowego fontu z "pojedynczym odstępem między wierszami", zajęłoby ponad 200 stron. A dokładniej to coś koło 260. Nie zdawałem sobie sprawy, że tyle tego już jest. A o tym, że to własnoręcznie wstukałem, to wolę nawet nie myśleć.

Tematem głównym znowu jest Hiero. Usunąłem kilka paskudnych bugów i dopracowywałem brakujące części w hbs.py. Primo, zliczana jest już wielkość pakietu i zapisywana w INFO. Secundo, wprowadziłem sensowną obsługę skryptów (pre/post)(in/un), razem z dwoma samodzielnymi automatami - jednym rejestrującym i wyrejestrowującym dokumentację Info (hurra ;), drugim zajmującym się plikami konfiguracyjnymi. Tutaj właśnie nie wiedziałem za bardzo co też mam zrobić, bo... To bardziej złożone niż może się wydawać, a na dodatek jest kilka sposobów podejścia do problemu. Generalnie chodzi o to, żeby przy instalacji nowej wersji pakietu nie zamazać sobie przypadkiem starej konfiguracji. Z drugiej strony jeśli stara konfiguracja jest "waniliowa", tzn. użytkownik jej nie zmieniał po zainstalowaniu pakietu, to nowszy pakiet powinien bez skrępowania ją nadpisać. Tak też właśnie zrobiłem. Hierophant wyszukuje sobie pliki położone w katalogach /etc, /usr/etc, /usr/local/etc (o zgodności z FHS nie chcę teraz mówić, ja po prostu starałem się pokryć te najpopularniejsze przypadki - u siebie w domu używam tylko /etc). No więc wyszukuje sobie te pliki a następnie wylicza ich sumy md5 (za takie coś można pokochać Pythona - stosowny kawałek kodu miałem gotowy w pół minuty :) i zapisuje w specjalnym pliku. Oprócz tego generuje dwa dodatki do skryptów instalacyjnych, jeden wykonywany przy instalowaniu pakietu, drugi przy jego usuwaniu. Przy usuwaniu Hiero sprawdza po kolei czy pliki konfiguracyjne zmieniły zawartość (suma md5). Jeśli wykryje że któryś plik się zmienił, to zostaje wykonany jego duplikat z rozszerzeniem .hbs_saved. Czyli po usunięciu pakietu zmienione konfigi pozostają na dysku, ze zmienionymi nazwami. Przy instalacji pakietu z kolei Hiero sprawdza, czy dla każdego pliku konfiguracyjnego nie znajdzie na dysku jego wersji .hbs_saved. Jeśli znajdzie, to używa właśnie tej starej wersji, a nową zapisuje jako .hbs_new (czy jakoś tak), komunikując to od razu użytkownikowi. (...)

Czytaj dalej...
Dębowe kotki

Chyba wygrzebałem się z przeziębienia, choć znając mnie za parę dni znowu będę kichał. Wczoraj już łaziłem bez czapki :)
Parę osób już zaczęło mi przypominać, że obiecałem ten artykuł o GUI. Niecierpliwce jedne. A ja naprawdę po prostu nie mam zbyt wiele czasu. No i Hiero, jako mniej wymagający (a więc wdzięczniejszy), nieoczekiwanie zaabsorbował resztki mojej uwagi.

A, skoro jestem przy Hierophancie - zamieszczam nowszy snapshot. Dodałem dwa prototypowe skrypty instalujące/usuwające pakiety. Przeszły w sumie tylko symulacje, żadnych prawdziwych testów, ale chyba działają poprawnie... Skrypt instalujący uruchamia się podając mu nazwy plików z pakietami do zainstalowania (np. "hbsinst foo-1.1-2.tar bar-2.13-1.tar"), a skrypt usuwający podając nazwy zainstalowanych pakietów (tak, jak figurują w /var/lib/hbs), czyli np. "hbsremove foo bar". To, jak powiedziałem, prototypy. Objawia się to przede wszystkim dużą liczbą wyświetlanych informacji i pytań zadawanych w razie wątpliwości - oraz całkowitym brakiem jakichkolwiek opcji :)

Niedługo sobie spróbuję napisać jakiś prosty konwerter mojej bazy RPM na wpisy w Hiero, wtedy będę mógł "zarejestrować" sobie glibc i inne pakiety, a potem zacząć używać Hierophanta normalnie do zarządzania pakietami w systemie. To powinno być najlepszą procedurą usuwania błędów. A, ale wcześniej obowiązkowy backup systemu ;) Nie, Hiero nie jest aż tak niebezpieczny. Przez nieuwagę już mu pozwoliłem faktycznie zainstalować i usunąć parę pakietów i nic nie popsuł.

Dodałem jeden marcowy Sen. Nie mam zamiaru informować o zmianach jakie wprowadzam w tym akurat dziale, ale to był IMO dosyć ciekawy sen, więc nie mogłem się powstrzymać :) (...)

Czytaj dalej...
Ból i ironia losu

Ała. Głowa mnie boli. A jeśli chcę być bardziej precyzyjnym, to jakaś niewidzialna siła rytmicznie stuka niewidzialnym młotkiem w moją lewą skroń. I to tak przez większą część dnia. Nie chce mi się uśmiechać, nie chce mi się rozmawiać. Biedni są ludzie, którzy dzisiaj próbowali ze mną porozmawiać... zwykle warczałem. Po prostu nie mam nastroju do rozmowy. No i jeszcze muszę przygotować kilka dokumentów na jutro... zaraz wracam... ...TRZY GODZINY PÓŹNIEJ... No, zrobione. Jednak laserowa drukarka to nieoceniona wygoda gdy ktoś musi drukować sporo tekstu, i to regularnie. Działa cichutko, więc mogę spokojnie drukować dokumenty w samym środku nocy. Drukuje też szybko (no, niektóre ekspresowe plujki Lexmarka są szybsze, ale one palą tusz jak ruski czołg paliwo). Jest tania w eksploatacji (toner kosztuje co prawda 2-3 razy tyle co zasobnik z tuszem do plujki, lekko licząc, ale ja na jednym zasobniku wydrukuję spokojnie półtora tysiąca stron, podczas gdy atramentówka... no, lepiej nie mówić). Wydrukowany tekst jest po prostu śliczny, używanie LaTeX-a nagle stało się niesamowicie przyjemne ;) No i nie ma problemu ze wsparciem pod Linuksem. A co najważniejsze, przy dłuższych wydrukach mogę się do woli sztachać zapachem tonera wtapianego w papier pod wysoką temperaturą i doprawiać to sobie wizualnym efektem migoczących żarówek (roztapianie pigmentu ciągnie tyle watów, że zaczyna mi światło w pokoju mrugać). W sumie to chyba ten zapach tonera jest dla mnie największą zaletą. No i to, że kartki po wydrukowaniu są takie cieplutkie ;)

Ech, nic nie zrobiłem przy Hiero. Brak czasu. Chociaż nie, zrobiłem tę obsługę wielu pakietów w skrypcie instalującym, nawet udało mi się przy tym uprościć kod. Zacząłem robić skrypt usuwający, w zasadzie napisałem go już (część załatwiająca upgrade-y w skrypcie instalacyjnym to prawie identyczna funkcjonalność), teraz tylko muszę kawałki kodu oprawić w nowy skrypt. (...)

Czytaj dalej...
HBS ma już skrypt instalujący!

Napisałem sobie prosty skrypt instalujący pakiety HBS. Wy