ChangeBlog  •  Archiwum  •  Kategorie  •  Artykuły  •  Galeria  •  Czytelnicy  •  Rupieciarnia
RSS wpisów  |  RSS komentarzy
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.

[STOS CD] A, mam nową zabawkę - nagrywarkę DVD. Ponieważ stara nagrywarka CD, LiteOn, nie sprawiała kłopotów, to i przy DVD zdecydowałem się na tę samą markę. No to mam dwa... DVD się robi coraz popularniejsze, Linux+ przysyła mi numery autorskie w wersji DVD właśnie, siostra ma u siebie kupę filmów na płytach DVD... a ja nie miałem jak tych płyt odczytywać. Przy okazji ceny nośników DVD tak poleciały na łeb, że nagrywanie na CD się robi nieopłacalne zupełnie (no, może z wyjątkiem CD-RW, bo te się mogą nieźle sprawdzać jako przenośne dyskietki). Nie no, serio - w czasach gdy mogę kupić sobie całkiem przyzwoitą płytkę DVD o oficjalnej pojemności 4.7GB (czyli tak naprawdę jakieś 4.4) za mniej niż dwa złote? Ceny nośników CD i DVD się zrównały praktycznie, a DVD oferuje tych ładnych parę razy większą pojemność... no i jest poręczniejsze - zamiast paru płytek wystarczy jedna... No i ostatecznie zlądowałem z tym napędem. Zapłaciłem 241zł w Magiku (kolejny mój zakup w tym sklepie), wariant OEM (bo po co mi windowsowe oprogramowanie skoro mam Linuksa?). W domu doinstalowałem dvd+rw-tools i tyle, k3b gotów do akcji. Teraz muszę jeszcze trochę się podszkolić jeśli idzie o jakość tanich nośników (jakie marki kupować, jakie typy, DVD-R czy DVD+R itp. - sugestie i rady mile widziane).

Skoro jesteśmy przy nagrywaniu - myślałem, że z K3B przejdę sobie ewentualnie na Gravediggera - na chacie linux@chat.chrome.pl parę osób go oglądało. Wygląda ciekawie, młody projekt front-endu do nagrywania w GTK+. Niestety u mnie segfaultuje przy próbie uruchomienia, a z wyrzucanych błędów wynika, że próbuje robić jakieś brzydkie rzutowania typów i to go wykańcza. Pewnie mam zbyt nowe gtk+. Trudno. Szkoda, bo korzystanie z K3B jest dla mnie trochę nienaturalne - nie używam KDE...

Aha, ilustracja obok to stos przeróżnych płytek CD - niektóre bardzo stare, inne całkiem młode... Przekopiowałem je na twardy dysk, niektóre odfiltrowałem (na bardzo starych płytkach 90% danych było już przeterminowane...), a rezultat wcisnąłem na... 2 płytki DVD. Z takiego stosu płytek CD przeszedłem na dwie eleganckie płytki DVD :) Ha! I to dopiero początek porządków!!! :)) Tych płytek CD wyrzucać nie będę, zapakuję je w jakiś kartonik i schowam gdzieś w szafie. Potraktuję je jako darmowy backup, ale nie będę już trzymał ich "pod ręką" obok komputera, usunę je też z bazy danych dic-a (dic to taki prościutki pythonowy skrypt do katalogowania zawartości wymienialnych nośników - bardzo prosty, spisuje tylko ścieżki/nazwy plików, ale mi pasuje doskonale. Jeśli zapragnę kiedyś np. katalogowania tagów z plików Ogg (bardzo możliwe, bo nazwy plików odzwierciedlają u mnie nazwy ścieżek na oryginalnych albumach, czyli np. Placebo/BlackMarketMusic/01.ogg, 02.ogg, 03.ogg itp., co uniemożliwia szybkie znalezienie konkretnego utworu), to samemu sobie to dopiszę i tyle) żeby mi się nie dublowały wpisy przy wyszukiwaniu...

Zmieniłem rozdzielczość ekranu :) Z 1024x768 przeszedłem na... moment... 1112x834. Zawsze to trochę więcej przestrzeni ekranowej. Nie mogę włączyć wiele wyższej rozdzielczości, bo mi odświeżanie spada, a poniżej @80 źle się czuję (teraz mam @81). Monitor wyciąga HorizSync 30-72, VertRefresh 50-160. Maksymalne HorizSync nieco za niskie. Zresztą wiele wyżej bym i tak nie poszedł, jestem przyzwyczajony do niezbyt wysokich DPI. Chociaż może jeszcze troszeczkę bym podbił... Polecenie gtf mówi, że powinienem spokojnie wyciągnąć np. 1140x855@80 - ciekawe czy przejście z @81 do @80 bym już widział? Właśnie, gtf - odkryłem to sobie niedawno przypadkiem, wchodzi w skład standardowej dystrybucji X.org... Nawet nie wiem czy w XFree86 to było, a jeśli tak to kiedy wprowadzono... bo ja dopiero teraz to zauważyłem. gtf to prosty kalkulator którym można na sucho szybciutko sprawdzić, jaki tryb będzie wymagał jakich parametrów monitora. Np.

[j:0 c:0]/home/grzegorz> gtf 1140 855 80

  # 1136x855 @ 80.00 Hz (GTF) hsync: 71.60 kHz; pclk: 109.98 MHz
  Modeline "1136x855_80.00"  109.98  1136 1216 1336 1536  855 856 859 895  -HSync +Vsync

Podaję mu interesujące mnie wymiary X, Y oraz odświeżanie. gtf zwraca mi modeline którego mogę użyć, podaje też techniczne parametry które trzeba spełnić. Mnie najbardziej interesuje fragment "hsync: 71.60 kHz;" - ta liczba nie może wyjść poza 72, bo takie jest ograniczenie mojego monitora (HorizSync 30-72). Więc mogę zmieniać sobie wysokość/szerokość/odświeżanie, a gtf mi podaje parametry... a ja jedynie staram się nie przekroczyć tej magicznej liczby 72, znajdując jakiś rozsądny kompromis rozdzielczości i odświeżania. Do tego dbam o to, by sama rozdzielczość miała proporcje 4:3 - można sobie wymyślić oczywiście inne proporcje, ale tradycyjny kineskop ma wymiary 4:3 i rozdzielczości też powinny takie być - inaczej wychodzą niekwadratowe piksele itp. dziwaczności. Poza tym liczba pikseli w poziomie/pionie musi być podzielna przez 2 albo 4, jakoś tak (widać to przy próbie wygenerowania modeline dla nieparzystych wielkości, zostaną zaokrąglone). A poza tym nie ma ograniczeń :)

Swoją drogą nawet teraz podoba mi się swoboda jaką oferuje linux - ot, mogę sobie wyrzeźbić własną rozdzielczość, taką która najlepiej pasuje do mojego sprzętu i osobistych preferencji. Nie potrzebuję do tego specjalnego wsparcia ze strony producenta, magicznych sterowników, nic z tych rzeczy. Każdy użytkownik XFree86/X.org może napisać sobie własny modeline (potem najwyżej szlifując go przez xvidtune)... Pewnie gdybym miał WinXP to nie dałbym rady włączyć sobie rozdzielczości 1112x834@81, prawda?

Aha, gtf umie też generować opisy rozdzielczości dla fbset - czyli można z jego pomocą wygenerować sobie też własny tryb tekstowy jeśli używa się framebuffera (wtedy proporcje 4:3 są nieistotne, ważne tylko by X był podzielny przez 8, a Y przez 16, bo standardowo znak tekstu to 8x16 pikseli).

PS. Wiem, że istnieją od dawna różne kalkulatory modeline. Ale zdziwiłem się znajdując takie coś pod samym nosem, niejako "w standardzie". A do tego jeszcze wsparcie dla fbset... Fajnie :)

A, mniej różowa sprawa - DPI mi się rozjechało. Zmieniła się rozdzielczość, zmieniło DPI, hinter zaczął odmiennie renderować fonty i przez dwa dni byłem poirytowany, bo jestem bardzo przyzwyczajony do moich fontów ekranowych i nie lubię gdy się nagle robią bardziej pękate. Ale już jest dobrze, troszeczkę zaniżyłem DPI (o jakieś 0,56 dpi), hinter zaskoczył i już jest dobrze. Uff.

AAAA! Wczoraj byłem w Carrefourze. Po jakieś drobne sprawunki (banany poszły w górę, więc żadnych bananów dla Hoppke, buu). Kupiłem sobie też na próbę 3 płytki DVD, każda poniżej 1zł (90 albo 99gr, nie pamiętam) - jedną zepsułem, dwie przetrwały (no co, muszę się na czymś uczyć, a taka taniocha jest w sam raz :) A przy kasie... ładna kasjerka. Ba, bardzo ładna nawet. Mimo tego okropnego, aseksualnego uniformu jaki musi nosić. Hmm, nigdy wcześniej nie widziałem ładnej kasjerki w markecie. A ta tutaj była na tyle ładna, że zwróciłbym na nią uwagę na ulicy, w parku, a nawet na jakimś spotkaniu ze znajomymi. A gdybym się z nią zaprzyjaźnił, to mógłbym zacząć być natarczywy. Mam nadzieję, że ona też :) Ale o czym ja gadam, przecież obiecałem sobie szlaban na laski... zresztą i tak mnie by nie chciała.

Ech, Harnir sobie zażyczył habaka w wersji "light" - tzn. okrojonego z większości funkcji i sprofilowanego pod Crystala. No cóż, przeróbki by polegały głównie na wycinaniu kodu, więc ostatecznie... czemu by nie. Wycinanie kodu jest przyjemne. To jak niszczenie zamków z piasku. Gdy byłem mały, to z kumplami budowaliśmy czasem w piaskownicach zamki, ryliśmy głębokie doły, usypywaliśmy trasy do wyścigów kapslami itp. A po skończonej zabawie z radością niszczyliśmy wszystko. Chyba każdy to zna, prawda? Radość z niszczenia własnej pracy. Tworzenie jest fajne, cieszenie się tym stworzonym też, ale niszczenie to też przyjemność. Habak-light może być bardzo miłym kwadransem przy edytorze :)

...a miałem zamiar dodać dzisiaj do Habaka sensowne tłumaczenie nazw bibliotek na nazwy pakietów (żeby np. przy "hbsremove gtk+" zamiast

You would break some dependencies:
libgdk-x11-2.0.so.0
libgdk_pixbuf-2.0.so.0
libgtk-x11-2.0.so.0

pojawiało się coś bardziej w stylu:

You would break some dependencies:
dia, easytag, ettercap-NG, firefox, gimp, gkrellm, gqview,
gstreamer-plugins, gtk+, gtk+-industrial, gtk-qt-engine, gtk-xfce-engine,
gtkmm, inkscape, libglade, libgtkhtml, librsvg, pygtk, python-matplotlib,
ROX-Filer, sodipodi, wxGTK

Przypuszczalnie dam radę to zakodować w hbshelperze tak, by "resolving" ten nie miał wpływu na prędkość działania skryptu. Nie chce mi się teraz analizować sposobu porównywania zależności, wykrywania gdy dochodzi do ich łamania itp., bo to dla przyspieszenia całości zrobiłem jako operacje na zbiorach (wydajne, acz zamotanie zakodowane i trudno teraz dodać translację nazw zależności na nazwy pakietów), więc zostawię to co jest zrobione i dolepię do tego ten resolving. Nie obejdzie się bez dodatkowego przejechania po plikach ze spisami zależności, ale że muszą być one odczytane wcześniej (by w ogóle wykryć zrywane zależności), to liczę na linuksowe buforowanie dysku, ono powinno zredukować wszystko do sensownego minimum. O wydajność samego kodu się nie martwię, hbshelper na razie miał znakomite osiągi (specyficzne grepowania robi szybciej niż grep, wycinki lepiej niż head/tail itp.), więc problemem nie jest dodatkowe obciążenie CPU a obciążenie dysku. Ale to buforowanie za mnie rozwiąże, mam nadzieję... Dobra, dosyć marudzenia o technikaliach. Czas mi wrzucać ten wpis na Repo... O, na pożegnanie jeszcze pokażę kawałek kodu z hbsinst :) Gdyby nie komentarze i podział na akapity, to mały wycinek skryptu wyglądałby tak:

if [ ! -z "$OLD_REQUIRES" -a ! -z "$REPLACED_PROVIDES" ]; then
echo "* checking PROVIDES supplied with new package(s)"
sort -u $OLD_REQUIRES > ${HBS_TMP}tmp
sort -u $REPLACED_PROVIDES > ${HBS_TMP}tmp2
sort ${HBS_TMP}tmp ${HBS_TMP}tmp2 | uniq -d > ${HBS_TMP}tmp3
if [ ! -z "$NEW_PROVIDES" ]; then
sort -u $NEW_PROVIDES > ${HBS_TMP}tmp
else
echo > ${HBS_TMP}tmp
fi
sort ${HBS_TMP}tmp ${HBS_TMP}tmp3 | uniq -d > ${HBS_TMP}tmp2
sort ${HBS_TMP}tmp2 ${HBS_TMP}tmp3|uniq -u >${HBS_TMP}tmp
temp=`cat ${HBS_TMP}tmp`
if [ ! -z "$OLD_PROVIDES" ]; then
sort -u $OLD_PROVIDES > ${HBS_TMP}tmp2
sort ${HBS_TMP}tmp2 ${HBS_TMP}tmp|uniq -d > ${HBS_TMP}tmp3
temp=`sort ${HBS_TMP}tmp3 ${HBS_TMP}tmp|uniq -u`
fi

...i to się tak ciągnie całymi ekranami. Moje ulubione zmienne/pliki tymczasowe to "tmp". Z cyferkami. Idealny kod używa tmp, tmp1, tmp2 i tmp3 do przeprowadzenia jakichkolwiek działań (tzn. inne zmienne nie występują, wierzę w re-usable variables ;). Na dodatek czasem wartość któregoś z "tmp" żyje sobie przez kilka procedur i jest w sprytny sposób wykorzystywana ponownie, podczas gdy pozostałe "tmp" mogą być zerowane bezkarnie... Oczywiście pięć minut po wklepaniu kodu zapominam o co chodziło. A same skrypty hbsinst/hbsremove powstały na podstawie rysunków, bo bez rysowania zachodzących na siebie okręgów itp. nie byłem już w stanie pojąć co tak naprawdę próbuję obliczyć :)

A skoro zahaczyłem o kodowanie, to sympatyczną rozmowę sobie z Void niedawno ucięliśmy. Tak wyglądają kulisy rozwoju HBS-a, kilka mniej hermetycznych fragmentów :) (mam nadzieję, że Void nie będzie miał za złe)

(...)
Void: co ta funkcja robi?....
Hoppke: ...tak to jest jak się kodu nie rozumie :/
Hoppke: mnie nie pytaj.
Void: ona jest Twoja!

(...)
Hoppke: to jak z moim kodowaniem w C :)
Hoppke: jeśli nie działa lub segfaultuje, to znaczy że dałem za mało gwiazdek.
Hoppke: Albo za dużo.
Void: nadajesz się w takim razie na studenta informy
Hoppke: A gdy wszystko zawiedzie, to sięgam po ampersanda :)
Void: dokładnie!
Hoppke: born to code ;)

(...)
Void: właśnie może olejemy ten problem?
Void: nikt go nie zareportował, a my nikomu nie powiemy
Void: jeśli ktoś odkryje, to się pomyśli

(...)
Void: mam pomysł!
Void: genialny!
Hoppke: boję się.

(...)
Hoppke: fajny jest opis realpath(): "Never use this function."
Void: ja mam: Avoid using this function. It is broken by design....
Hoppke: A, to masz mniej restryktywne manuale.
Hoppke: Masz "Avoid".
Void: ten z IEEE nie straszy niczym
Hoppke: hmm, coś szalonego mi przyszło do głowy :)
Hoppke: chyba mam solution :)
Void: teraz ja się boję

No i dobranoc :) Ja mam już dość na dziś.

Dopiski:

Od: marl57
Data: 20071013, 10:36
Witaj,
piszesz o audacity - mam pewnien problem z tym softem - bez[pośrednie nagranie wykładu 4,5 godzinne wywaliło się bez wczesniejszego zapisu, ale z zachowanymi plikami tymczasowymi *.au, w ilości około 3 tysięcy. Troszkę to dużo jak na ręczne kombinacje, czy znasz, potrafisz podać metodę "ręcznego" poprawnego posklejania tego w poprawną spójną całośc ?
-pozdrawiam, MarekLeder

Od: Hoppke
Data: 20071013, 12:04
hmm. Nie wiem jak odratować to z poziomu audacity, ale jeśli możesz je wsadowo posklejać (są odpowiednio ponumerowane itp.), to pewnie coś z pakietu sox da radę je wziąć i zlepić w jeden plik (nie wywalając się przy tym).

Pozostaw dopisek: