MP3 192kbit/s z Muzodajni

Niedawno zapisałem się do plusowej Muzodajni. Strona nie wygląda zachęcająco i wyraźnie brakuje tam moich ulubionych wykonawców, ale muzyki mają sporo i 5zł miesięcznie za 25 utworów (plus cyrograf na co najmniej 8 miesięcy) to całkiem niezła stawka. Dzisiaj np. ściągnąłem sobie całą najnowszą płytę Kasi Kowalskiej i wykorzystałem na to tylko część z tych pięciu złotych. Za CD kupione w sklepie musiałbym zapłacić dużo więcej, a ostatecznie i tak zripowałbym do OGG i MP3 i słuchał przez komputer i telefon.

No więc jest fajnie, można za grosze sobie ściągać legalną muzykę. Jest nawet parę formatów (w opcji, z której korzystam, bez DRM) do wyboru: MP3 128kbit, WMA 128kbit, WMA 256kbit i MP4 128kbit. Można nawet ściągnąć piosenkę we wszystkich formatach, a i tak płaci się raz.

Problem polega na tym, że mnie WMA nie interesuje, a do 128kbit wolałbym się nie ograniczać, jeśli nie muszę. Napisałem więc sobie taki skrypcik wma2mp3:

#!/bin/sh -xe

input="$1"
output="$2"

if [ -z "$output" ] ; then
	output="${input%.wma}.mp3"
fi

tmpfile="$output.tmp"
ffmpeg -i "$input" -acodec libmp3lame -ab 192k -f mp3 "$tmpfile"
if [ -e "$output" ] ; then
	id3cp "$output" "$tmpfile" || :
fi
mv "$output" "$output.bak"
mv "$tmpfile" "$output"

Skrypt uruchamia się podając nazwę pliku WMA jako argument. Plik ten zostanie przetworzony na MP3 192kbit, mam nadzieję, że z minimalną utratą jakości. Dodatkowo, jeśli już istnieje odpowiedni plik MP3, to tagi ID3 z niego zostaną skopiowane do pliku nowo utworzonego. W ten sposób, jeśli z Muzodajni ściągnę WMA 256 i MP3 128, to z pierwszego biorę muzykę, z drugiego tagi (nie chciało mi się kombinować jak dane o artyście i tytułach wyciągnąć z WMA – łącze mam na tyle szybkie, że mogę sobie ściągać podwójnie).

Reklamy

Zabawy z GPS-em

Chciałem napisać kolejną notkę o mojej zabawce… i zorientowałem się, że
przecież jeszcze nic nie napisałem na ten temat. A więc, od początku…

Już od dawna fascynowała mnie technologia GPS – możliwość
rejestrowania aktualnej pozycji i nawigacji w czasie rzeczywistym do wybranego
punktu. No i obrabianie zebranych danych w komputerze. Bardzo chętnie bym się
czymś takim pobawił… ale jak na zabawkę to było zawsze zbyt drogie.
Turystyczne urządzenia GPS albo bardzo prymitywne, albo drogie. Do gołego
odbiornika musiałbym mieć laptopa albo palmtopa, a samochodowe nawigacje jakoś
mnie nie pociągały specjalnie (drogie i właściwie do użytku tylko
w samochodzie).

Na szczęście sytuacja nieco się zmieniła. Odbiorniki GPS potaniały,
a zmądrzały telefony komórkowe. Więc za niewielkie pieniądze mogłem kupić
sobie odbiornik na Bluetooth, który całkiem sprawnie może być obsłużony przez
mój, też nie najdroższy, telefon komórkowy.

Zabawy

No to co ciekawego można takim zestawem robić. No moim głównym celem było
móc jechać w nieznane i dalej wiedzieć gdzie się jest, żeby móc wrócić.
;-) No i rejestrowanie swoich wycieczek. Gdy szukałem
oprogramowania do swojej zabawki często natykałem się na określenie
geocaching. Nie wnikałem w to, zakładałem, że to po prostu zbieranie
informacji o tym gdzie się było (wiecie, skojarzenie z cache przeglądarki).
Później okazało się, że bardzo się myliłem…

Geohashing

Skoro ignorowałem geocaching to pierwszą zabawą z GPS którą się
zainteresowałem był geohashing,
wymyślony przez autora popularnego komiksu XKCD w odcinku 426. Po prostu, gdy zobaczyłem ten
obrazek i przeczytałem odpowiadający mu wpis na blagu, to
uznałem, że muszę tego spróbować. Wygląda na to, że jestem jedynym takim
wariatem w Polsce. :-)

Zabawa polega na tym, że dla każdej daty wyznaczane są konkretne
współrzędne geograficzne, dla każdej kratki 1° na 1°. Algorytm
wykorzystuje notowania nowojorskiej giełdy z dnia poprzedniego (lub ostatniego
w którym były dostępne), więc nie można określić przyszłych punktów. Po prostu
znane są współrzędne na dziś lub jutro. W piątek także na weekend (aż do
poniedziałku), ale nic więcej. Zadanie polega na tym, żeby w odpowiednim dniu
trafić w odpowiednie miejsce. W soboty, o 16:00 czasu lokalnego przewidziane
są w tych miejscach spotkania miłośników XKCD, więc teoretycznie można spotkać
się z innymi świrami (o ile tacy są w okolicy).

Ja pierwszy punkt zaliczyłem wczoraj. Trafiłem na stare, opuszczone
i zdewastowane torowisko w Sośnicy. Całkiem interesujące miejsce.
:-)

Geocaching

Gdy zainteresowałem się geohashingiem, to w końcu poczytałem też co to ten
geocaching. No i to też
całkiem fajna sprawa. W skrócie: ludzie robią skrytki z dzienniczkiem
i skarbami i publikują współrzędne geograficzne. Zadanie polega na
odnalezieniu skrytki i wpisaniu się do dzienniczka. Może być ciekawe.

Zaleta w porównaniu z geohashingiem: jest po co iść, skrytki zwykle są
w interesujących miejscach (można pozwiedzać) i z zasady są dostępne
(geohashing może prowadzić prosto na środek morza, czy do zamkniętej bazy
wojskowej). Jednocześnie wadą jest to samo: wiadomo mniej-więcej czego można
się spodziewać i generalnie skrytki są w znanych miejscach. Miejsca ukrycia
najbliższych skrzynek prawdopodobnie się już kiedyś odwiedziło, przy innej
okazji.

Jutro będę w pobliżu jednej takiej skrytki, to może i swój geocaching
zaliczę. :-)

Geodashing itp.

Z geozabaw czytałem jeszcze o geodashingu. Trochę podobne do geohashingu
– też miejsca są rozmieszczane losowo. Jednak tym razem są to wylosowane
punkty na całym świecie ważne przez miesiąc. Pewnie jest jeszcze parę
innych takich zabaw.

Moje zabawki

se_gps2.jpg

Odbiornik GPS Navibe GB735

Wybrałem taki, bo to był jeden z najtańszych, od sensownego sprzedawcy na
Allegro, na popularnym chipsecie (SiRF Star III) obsługiwanym przez większość
oprogramowania, a w zestawie miał ładowarkę samochodową i domową. Był dodany
też kod umożliwiający ściągnięcie na próbę programu Wayfinder, ale to
niespecjalnie mi się przydało (zniechęcała głównie cena pełnego produktu, ale
także to jak mnie program przywitał, gdy chciałem wypróbować).

Urządzenie działa całkiem przyzwoicie, chociaż czasem długo trzeba czekać
aż po raz pierwszy ustali pozycję. Przy gorszej pogodzie, to może być i pół
godziny, jeśli w ogóle się to uda. Mam wrażenie, że dokładność (czy raczej
czułość) mogła by być nieco lepsza (często widzi tylko 3/4 satelity). Ale
w praktyce nie sprawiło mi to większych problemów, więc nie mam co narzekać.
Bateria wystarcza chyba na jakieś dziesięć godzin. Spokojnie wystarczy na
wycieczkę, a na dłuższej trasie samochodem odbiornik może stale być podpięty
do ładowarki.

Telefon SE k550i

O telefonie już wspominałem. Dodam tylko, że wydaje się bardzo dobrym
wyborem do zabaw z GPSem. Może nie zainstaluję na nim oprogramowania
przygotowanego pod Symbiana czy Windows CE może nie zainstaluję, ale i pod
Javę znalazłem wszystko czego potrzebuję. Wszystko działa szybko i sprawnie,
na karcie pamięci mogę zmieścić praktycznie dowolną ilość map. Przydaje się
też wbudowany aparat fotograficzny – wystarczająco dobry, żeby
udokumentować swoje wyprawy.

Dodatkowe duperele

Dodatkowe rzeczy jakie dokupiłem do tego zestawu:

  • Samochodowy uchwyt na telefon – żeby sprawnie korzystać z nawigacji
    samochodowej trzeba mieć wyświetlacz telefonu na widoku. Kupiłem chyba
    najtańszy uchwyt, przyczepiany przyssawką do przedniej szyby. Wygląda trochę
    tandetnie, ale spełnia swoje zadanie. Problem pojawia się, gdy chcemy
    podłączyć ładowarkę (dla mnie to mus), ze względu na nieszczęśliwe położenie
    złącza w moim telefonie. Ale i z tą wtyczką jakoś się trzyma, tyle że krzywo.
    Jakbym kupił oryginalny uchwyt Sony-Ericsson (kosztujący parę razy więcej), to
    nie miałbym takiego problemu.
  • Ładowarka do telefonu – gdy korzysta się z nawigacji online, to
    konieczność. Mój telefon strasznie żre prąd przy aktywnym połączeniu
    z Internetem.
  • Rozdzielacz gniazda zapalniczki – dzięki niemu mogę jednocześnie
    podłączyć zasilanie telefonu i odbiornika GPS i nie martwić się, że mi któraś
    bateria padnie w samochodzie.

Oprogramowanie

NaviExpert

Żeby GPS nie był tylko zabawką, potrzebowałem czegoś co zrobi z niego
prawdziwą nawigację samochodową. Jeszcze przed zakupem rozglądałem się w sieci
za odpowiednim oprogramowaniem i moją uwagę zwrócił NaviExpert. Sam program jest za darmo, ale
nie posiada map. Zamiast tego łączy się przez Internet z serwerem, który
wyznacza trasę i udostępnia mapkę okolicy. Płaci się za tę usługę, można
wykupić abonament na jeden dzień i wypróbować. A jak się spodoba, zapłacić za
rok lub dwa.

Ten sposób działania ma jeszcze dodatkowe zalety: mamy do dyspozycji
aktualną bazę danych o niemiłych niespodziankach na drodze (jak fotoradary),
a podczas wyznaczania trasy mogą być uwzględnione korki w których utknęli inni
użytkownicy.

Ściągnąłem, zapłaciłem za tydzień wypróbowałem. Działało, wykupiłem więc
dłuższy abonament. Blondynka (NaviExpert mówi tylko głosem kobiecym)
doprowadziła nas już do Krynicy i do Ustronia. Było parę potknięć, ale zdaje
się, że innym produktom też się zdarzają. Ja na zakup nie narzekam.

TrekBuddy

GPS miał być do zabawy… więc potrzebowałem też programu, który przyda mi
się na wycieczkach i który pozwoli mi na wymianę danych GPS z komputerem.
Oglądałem w sieci różne Javowe aplikacje GPS na komórkę. Jedne były zbyt
prymitywne, inne za drogie, a TrekBuddy darmowy i ma właściwie
wszystkie funkcje jakich bym chciał.

Główną funkcją TrekBuddy’ego jest pokazywanie aktualnej pozycji na mapie.
W tym celu trzeba mieć odpowiednio przygotowane mapy. Na szczęście są
narzędzia, które pozwalają taką mapę przygotować, niestety głównie pod Windows
(o nich dalej). Można też gotowe mapy kupić. W Polsce firma
Compass produkuje i sprzedaje takie mapy
. Trochę drogo, ale jak próbowałem
samemu papierową mapę zeskanować i przygotować do użytku z TrekBuddy, to
uznałem, że może warto zapłacić.

TrekBuddy pokaże nam także kierunek w którym się poruszamy, wprowadzone
wcześniej punkty nawigacyjne, czy kierunek i odległość do wybranego punktu.
Przebytą trasę może na bieżąco zapisywać w pliku GPX (standard wymiany danych
GPS). Punkty nawigacyjne także trzyma w plikach GPX.

Atlas Creator

TrekBuddy
Atlas Creator
to proste narzędzie w Javie przerabiające mapy Google na
atlas TrekBuddy. Niestety dość prymitywne.

Googleak

Podobne narzędzie, ale dużo bardziej zaawansowane. Pozwala także
przetwarzać mapy terenowe, zdjęcia satelitarne, a także mapy z kilku innych
źródeł niż Google. Przy pomocy tego narzędzia można sobie przygotować całkiem
niezły atlas dla TrekBuddy’ego. Niestety, Googleak
jest pod Windows, na szczęście – całkiem dobrze działa teraz w wine.

OziExplorer i skrypty do dzielenia map

Generalnie OziExplorer to jest jakiś komercyjny program pod Windows do
obsługi urządzeń GPS. Mnie jednak interesuje mały wycinek jego
funkcjonalności, dostępny także w wersji demo – kalibracja map. Tak się
składa, że TrekBuddy używa danych kalibracyjnych właśnie w formacie
OziExplorera. Program działa pod wine, niestety nieznośnie powoli.

Udało mi się przy jego pomocy
skalibrować jakąś przedwojenną niemiecką mapę 1:25000 znalezioną w internecie.
Z podobną polską sztabówką, czy własnoręcznie zeskanowaną papierową mapą
turystyczną poszło znacznie gorzej. Przy okazji dowiedziałem się jaka
kartografia, a szczególnie kwestie współrzędnych geograficznych
i odwzorowania, jest skomplikowana…

Skalibrowaną mapę należy jeszcze pociąć i ewentualnie zapakować do atlasu.
Różne narzędzia do tego celu można znaleźć na stronach TrekBuddy.

Na szczęście nie trzeba się samemu w przygotowywanie map bawić.
:-)

Viking

Oprogramowanie na komórkę z GPS-em i mapy do niego to nie wszystko.
Przydałoby się coś, czym można by było sobie planować trasy, a także oglądać
dane zebrane przez nasz zestaw GPS. I fajnie byłoby się obyć bez Windows, czy
wine. Trochę się naszukałem zanim znalazłem coś fajnego, ale w końcu się
udało. Viking to prosta aplikacja
GTK umożliwiająca pracę z mapami (znów z Google itp.) oraz danymi z i dla GPS.
Można wyświetlić sobie mapę wybranej okolicy, na nieść na nie punkty, które
chcemy odwiedzić i wyeksportować do pliku GPX, który załadujemy do komórki.
Po powrocie z wycieczki można sobie do Vikinga wgrać zebrane dane i obejrzeć
którędy się szło, a nawet gdzie jakie zdjęcia się zrobiło (ale to gdyby
robienie zdjęć z poziomu TrekBuddy było praktyczniejsze).

GPSBabel

Czasem może pojawić się potrzeba przekonwertowania jakiś danych do lub
z jakiegoś egzotycznego formatu (nie wszystko umie GPX), albo jakiegoś
przekształcenia danych GPX. Tu przydaje się GPSBabel. Narzędzie to potrafi nie tylko
konwertować między mnóstwem różnych formatów danych GPS, ale ma także
wbudowanych parę przydatnych filtrów. Chcesz się pozbyć ze ścieżki
niedokładnie ustalonych punktów? Chcesz z tysiąca punktów (np. skrytek
geocaching) wybrać te w obrębie kilku kilometrów od wybranego punktu, czy może
po prostu odwrócić kierunek trasy? GPSBabel to załatwi.

Happy Camel

Wspomniałem, że w wycieczkach z GPS-em fajnie jest mieć aparat
fotograficzny. A może by tak w plikach ze zdjęciami zaznaczyć gdzie dokładnie
były one zrobione? To się nazywa geotaging i Wesoły Wielbłąd w tym pomoże.
Wystarczy, że podasz mu zestaw zdjęć i dane z GPS-a (ścieżka) obejmujące czas
w którym zdjęcia były robione, a on powiąże jedno z drugim. Może zapisać dane
geograficzne w metadanych (EXIF) zdjęcia, może stworzyć plik .KMZ dla
GoogleEarth (w którym potem można np. obejrzeć sobie własne zdjęcia na tle
satelitarnych), może nawet wyszukać nazwy miejscowości w pobliżu których
fotografowaliśmy.

Happy Camel ma także
wsparcie dla Flickr, ale tym nie udało mi się jeszcze czegoś sensownego
osiągnąć.

Kalendarzowo

Ja mam pamięć dobrą, ale krótką – jak to mój tata mówi. Potrafię
zapomnieć o wszystkim, jak mi się w porę nie przypomni. Pół biedy jak zapomnę,
że właśnie posłodziłem herbatę i wrzucę kolejne trzy łyżeczki (serio, zdarza
mi się), gorzej jak się np. z kimś umówię, a potem nawalę.

Dlatego zawsze ciągnęło mnie trochę do elektronicznych przypominaczy.
Jednak zwykle i tak nie znajdowałem dla siebie nic odpowiedniego. Nie może to
być coś, do czego miałbym ciągle zaglądać (dlatego odpadają papierowe
terminarze), najfajniej by było, jakby nie trzeba było nawet tam nic wpisywać
(ale tego to już się raczej nie przeskoczy)… Dobrze, żeby wpisać można było
wszystko, i przypominać o ważnych sprawach mogłoby to mi zawsze i wszędzie (no
chyba, że śpię – budzić mnie nie może)…

Próbowałem paru kalendarzy komputerowych. Kombajnów typu Evolution nawet
nie tykałem – do poczty mam mutta, a nie kalendarz! W ogóle chciałem
uniknąć GUI – uruchomienie Xów nie powinno być wymagane dla
przypomnienia o ważnej sprawie. Z drugiej strony… jak już te Xy mam odpalone
(zwykle mam), to fajnie jakby przypomnienie było w jakimś okienku… Konsolowe
programiki tego typu miały jeszcze jeden feler – jakiś własny format
danych niekompatybilny z niczym. Właściwie obsługa czegoś takiego niewiele się
różniła od obsługi crontaba – do sensownego używania trzebai by sobie to
nieźle oskryptować. A ja przecież chciałem coś, co by mi samo
przypominało, a nie wymagało programowania…

Oczywiście praktycznie wszystkie rozwiązania oparte o komputer miały pewną
wadę: mogły mi o czymś przypomnieć tylko wtedy, gdy akurat byłbym przy
komputerze. Czasem nawet wymagały, żeby je specjalnie uruchomił. Dlatego
doceniłem aplikację kalendarza w telefonie. Wtedy to był jakiś pierwszy
Sony-Ericsson. To była pierwsza przypominajka, którą w miarę regularnie
używałem. Jakieś wizyty u dentysty itp. tam wpisywałem. Potem, w dużo
prostszym Samsungu X200 też. Już wtedy uznałem, że fajnie byłoby komórkowy
terminarz synchronizować z komputerowym, ale szybko się przekonałem, że raczej
nic mi z tego nie wyjdzie. Po pierwsze wciąż brakowało mi odpowiedniego
kalendarza w komputerze, a po drugie wymiana jakichkolwiek danych między tym
Samsungiem a Linuksem była praktycznie niemożliwa (odniosłem umiarkowany
sukces jedynie w przypadku książki adresowej).

Używając sobie po trochy komórkowego kalendarza wciąż kombinowałem
z kalendarzami w komputerze. Gdy usłyszałem, że Google Calendar potrafi wysyłać
SMSy, to postanowiłem to wypróbować. Nie bardzo mi się podobało, że swoje
plany, czy wręcz rozkład dnia, miałbym publikować w sieci, ale coś za coś.
Wyglądało na to, że w tej aplikacji Google mógłbym łatwo wprowadzać swoje
terminy, a przypomnienia przychodziłyby mi na komórkę. Przy okazji dostałbym
parę łebdwazerowatych bajerów, jak publikacja kalendarzy, czy rozsyłanie
terminów do znajomych. Przez jakiś czas się tym bawiłem, powpisywałem różne
terminy… czasem dziwne rzeczy z tego wychodziły (aplikacja nie działała
idealnie). A najgorsze było to, że Google potrafiło mi wysyłać SMSy w środku
nocy, co było dość nieprzyjemne, gdy zapomniałem wyłączyć telefon… No
i aplikacja webowa, to nie to, co tygryski lubią najbardziej.

Jakiś czas później trafiłem na ogłoszenie o nowym wydaniu Sunbirda.
Pomyślałem sobie, że to może wreszcie będzie jakaś użyteczna aplikacja
kalendarzowa pod Linuksa. Trudno, że GUI. Przynajmniej używa jakiś otwartych
standardów… i nawet jest wtyczka do Google Calendar. Zainstalowałem sobie
więc tego słonecznego ptaszka i zasubskrybowałem swój googlowy kalendarz.
Rzeczywiście dało się tego używać. Żeby nie publikować wszystkich swoich spraw
w Google zrobiłem sobie dodatkowy lokalny kalendarz. Potem
z lokalnego zrobiłem sieciowy (opublikowany przez WebDAV na moim
serwerku), bo przecież nie z jednego komputera korzystam. Pobawiłem się
trochę… i jakoś nie zacząłem regularnie z tego korzystać. Jak coś było na
tyle ważne, że potrzebowałem przypomnienia, to i tak wpisywałem w komórkę. Dla
innych spraw nie chciało mi się kalendarza odpalać.

W końcu kupiłem sobie nową komórkę. Już wybierałem pod kątem obsługi jakiś
standardów wymiany informacji. Zakładałem, że taką nowoczesną komórkę,
obsługującą standardy łatwo ze swoim Sunbirdem zsynchronizuje. Rzeczywistość
okazała się niestety nie taka piękna. Do sychronizacji takich urządzeń pod
Linuksem jest właściwie tylko OpenSync (inne aplikacje zwykle korzystają z tej
biblioteki), a ja nieźle musiałem się nagimnastykować, żeby tym jakiekolwiek
dane między komputerem a telefonem wymienić. A przy synchronizacji kalendarza
znikały z terminów informacje o przypomnieniu, czyli to, co dla mnie
najważniejsze. Zgłosiłem swoje problemy na odpowiednią listę mailową i nic.
Nie wygląda, żeby w tej kwestii miało się coś zmienić.

Nie poddałem się jednak. Skoro telefon ma funkcje synchronizacji, to musi
się dać to wykorzystać. Jest funkcja synchronizacji online, może to się nada?
Najpierw sprawdziłem Google Calendar, przecież taka aplikacja, takiej poważnej
firmy musi mieć taką funkcjonalność… gdzie tam. Wygląda na to, że Google
SyncML zignorowało. No to
rozejrzałem się za jakimiś publicznymi serwerami SyncML. Spośród paru
kandydatów najbardziej przekonało mnie ScheduleWorld. Po poprzednich
doświadczeniach miałem spore wątpliwości czy to zadziała, ale spróbowałem…
i zadziałało.

Teraz na komputerze mam Sunbirda, w nim swój sieciowy kalendarz
i wtyczkę (rozszerzenie) ScheduleWorld. Jak dodam na komputerze termin i wcisnę
sync, to po uruchomieniu synchronizacji w telefonie i tam się ten
kontakt pojawi. Tak samo w drugą stronę – kontakt dodany w telefonie
pojawi się na komputerze. Zachowane są przy tym informacje o przypomnieniach.
Był jeden problem – zdarzenie wpisane w komputerze na całą dobę
w telefonie było widoczne jak dwudniowe (od 00:00 jednego dnia, do 00:00
drugiego dnia). Okazało się jednak, że wystarczy zaznaczyć jedną opcję
w ScheduleWorld i problem zostaje rozwiązany. Jest tam też sporo innych
przełączników, umożliwiających ominięcie potencjalnych problemów z innymi
urządzeniami.

Do pełni szczęścia brakowało mi jeszcze jednej funkcji – jakieś
minimum funkcjonalności bez potrzeby odpalania Xów. No to napisałem sobie
Pythonowy skrypt, przy użyciu biblioteki icalendar, który wyciąga dzisiejsze
i jutrzejsze terminy z mojego kalendarza (niech żyją otwarte formaty plików!).
Lista ta jest wyświetlana przy logowaniu. Wydaje mi się to rozsądnym sposobem
przypominania mi o rzeczach, dla których alarm z telefonu byłby przesadą.

No to wydaje mi się, że już mam użyteczny zestaw, z którego będę w stanie
regularnie korzystać. Jedyna słabość, to publiczny serwer, który pośredniczy
w synchronizacji z komórką… no cóż, czasem można poświęcić odrobinę
prywatności dla wygody. I chyba nie mam zbyt dużych powodów, żeby
ScheduleWorld nie ufać.

Teraz pytanie: czy rzeczywiście będę z tego wszystkiego korzystał, czy
dalej tylko raz na ruski rok coś sobie w komórkę wklepię?

Koniec z przeskakującym Firefoksem! :-)

Od paru miesięcy męczył mnie problem Firefoksa przeskakującego na aktywny
desktop XFCE4, gdy poprosi się go o otworzenie jakiegoś URLa z innej
aplikacji, albo gdy po prostu załaduje się jakaś strona. Bardzo nieprzyjemne,
gdy w tym czasie próbuje się korzystać z innego aplikacji na innym
ekranie. Problem się pojawiał (kilka razy, bo na różnych maszynach) po
jakimś upgradzie XFCE albo Firefoksa i nie potrafiłem się go pozbyć.
Próbowałem wszelkich opcji w about:config
Firefoksa, wszystkich przełączników w konfiguracji XFCE… i nic. Googlałem za
tym wielokrotnie, bez skutku, ale trudno mi było uwierzyć, że nikt inny nie
zauważył takiego zachowania, albo że nikomu innemu to nie przeszkadza…

Dzisiaj, po kolejnym takim przeskoku nie wytrzymałem i zajrzałem do źródeł
XFWM. Wyszło na to, że zachowanie to zależy od parametru
activate_action, XFWM przełącza desktop na aktywne okno, gdy
parametr ten jest równy ACTIVATE_ACTION_BRING. Potem wyczytałem,
że parametr ten jest pobierany z opcji konfiguracyjnej pod nazwą
Xfwm/ActivateAction.

Najpierw uruchomiłem GUI konfiguracyjne XFCE, żeby jeszcze raz zobaczyć,
czy nie ma tam tej opcji. Nie znalazłem. Zajrzałem więc do swojej konfiguracji
(~/.config/xfce4/mcs_settings/xfwm4.xml) i takiej opcji tam nie
było, ale miejsce wyglądało na właściwe. Dopisałem więc:

<option name="Xfwm/ActivateAction" type="string"
value="none"/>

… i zadziałało. :-) Wreszcie! Po wielu miesiącach męczarni!

Potem zajrzałem na Google, tym razem szukając tego konkretnego parametru.
Okazało się, że nie ja jeden miałem ten problem, a rozwiązanie w sieci jest
podane, wiele razy. Widać, jeszcze nie do końca umiem z Google korzystać…
:-(

No i nie rozumiem czemu tak wyjątkowo upierdliwe zachowanie jest
kontrolowane jakąś ukrytą opcją, której normalnie nie można kilkoma
kliknięciami wyłączyć…

Update: Kurde, znowu przeskoczył. :-( Chyba jednak na tym komputerze mam zbyt stare XFCE… Jak ja to testowałem?

Update 2: Właściwym plikiem dla wspomnianej opcji jest: ~/.config/xfce4/mcs_settings/wmtweaks.xml. Po zmianie należy całe środowisko zrestartować. Wygląda na to, że teraz naprawdę działa.

Kamerka pod Linuksem

Żonka ostatnio wspominała, że chciałaby mieć kamerkę internetową. Ja lubię
takie zabawki, więc od razu podchwyciłem pomysł i postanowiłem jej kamerkę
kupić. No to zajrzałem na Allegro co tam mają… cała masa do wyboru… no to
biorę parę z brzegu i Googlam za ich wsparciem w Linuksie. Ciężko to idzie. Nic
na temat wsparcia w Linuksie dokładnie tych urządzeń co znalazłem na Allegro w
Google nie było. Jak
coś znalazłem, co miało wsparcie, to albo tego na Allegro nie było, albo
kosztowało więcej niż byłem w stanie zapłacić. Na Allegro był tak wielki wybór,
że nie sposób było sprawdzić wszystkiego. Podobnie na wygooglanych listach
sprzętu obsługiwanego przez Linuksa. Oczywiście każdy producent chipsetu
zrobił interfejs po swojemu (urządzenia oparte o standard UVC się dopiero
pojawiają i do tych najtańszych nie należą), a który chipset jest w której
kamerce to dopiero po podłączeniu można stwierdzić…

Na Allegro i tak nie chciałem tego kupować (w końcu to kot w worku),
uznałem, że wybiorę się do sklepu. Normalnie wziąłbym ze sobą listę
obsługiwanego sprzętu, żeby porównać z tym co jest na półkach. Ale dostępne
listy są olbrzymie… a i tak niekompletne… Poszedłem więc bez listy, parę
popularniejszych nazw zapamiętałem, a w ogóle, to uznałem, że może trafię. I
umówię się ze sprzedawcą, że jak nie uruchomię tego, to zwrócę…

No więc przyszedłem do sklepu. Przerażanie w oczach – chyba z
dziesięć różnych kamerek na półce, żadna nie przypomina niczego o czym
czytałem… No nic, mówię, że chcę kamerkę i nieśmiało dodaję ale taką,
żeby działała pod Linuksem
. A sprzedawczyni, ku mojemu zaskoczeniu, bierze
jedną kamerkę z półki (i to chyba taką, jakiej żonka oczekuje – na
laptopa, z klipsem) i mówi, że ta będzie na pewno działać. Okazało się, że był
tam już jeden klient z takimi wymaganiami, przyszedł z laptopem i na miejscu
sprawdził. Zapytałem jeszcze o parametry, bo kosztowała mniej niż byłem
przygotowany na to wydać. Pani zaproponowała, że może podłączyć do jakiegoś
laptopa i pokazać. Już brała jednego laptopa, ale stwierdziła: Ale ten ma
zainstalowaną tę kurewską… oj, przepraszam… na nim jest ta Vista
.
Kobieta była rzeczywiście przerażona, że jej się takie słowo wymsknęło. Widać
szczerze. :-D

W końcu dała mi jakiegoś laptopa z Windows XP, żebym sobie podłączył i sprawdził.
Taaa… równie dobrze mogłaby mnie posadzić przed sterami helikoptera, żebym
się przeleciał ;-). Ale jakoś sobie w tym egzotycznym systemie, i
to jeszcze z jakimiś dodatkowymi przeszkadzajkami, poradziłem. Kamerka
zadziałała, obraz był zadowalający (przynajmniej jak na tą cenę). Biorę.

Za sterownikami rozglądałem się wcześniej, więc jakiś miałem już w pracy
skompilowany, dla najnowszego kernela PLD AC. Okazało się, że pasuje do tej
kamerki. Załadował się bez problemu i xawtv pokazało obraz. Ale Ekiga
marudziła, że nie może otworzyć urządzenia. Bałem się, że kamerka z Ekigą
niezgodna (może dlatego, że JPEG)… ale okazało sie, że po prostu ten
sterownik to V4L1, a w Ekidze miałem załadowane tylko V4L2. Doinstalowałem
libpw-vide-v4l i ruszyło!

Teraz trochę danych praktycznych:

  • Kamerka to:
    A4Tech Evo Cam Note
  • Sterownik do niej to: gscpav1
    (wersja: 20070110)
  • Aby ręcznie zbudować ten sterownik na PLD Ac trzeba:
    • Zainstalować pakiet kernel-module-build w wersji zgodnej z
      używanym kernelem (zrobić upgrade kernela i zainstalować najnowszy
      kernel-module-build)
    • Rozpakować źródła sterownika gdzieś w katalogu domowym.
    • Poprawić Makefile:

      Zamienić:

      default:
              $(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) CC=$(CC)
      modules

      na (w przypadku używania kernela up, zamienić wszystkie smp na up):

      default:
              mkdir -p o/include/linux
              ln -sf $(KERNELDIR)/config-smp o/.config
              ln -sf $(KERNELDIR)/Module.symvers-smp o/Module.symvers
              ln -sf $(KERNELDIR)/include/linux/autoconf-smp.h
      o/include/linux/autoconf.h
              $(MAKE) SYSSRC=$(KERNELDIR) SYSOUT=$(PWD)/o O=$(PWD)/o -C $(KERNELDIR)
      CC=$(CC) prepare scripts
              $(MAKE) SYSSRC=$(KERNELDIR) SYSOUT=$(PWD)/o O=$(PWD)/o -C $(KERNELDIR)
      SUBDIRS=$(PWD) CC=$(CC) modules
    • Przelogować się na roota, skopiować zbudowany gspca.ko do
      /lib/modules/`uname -r`/misc, zmienić mu właściciela na
      root:root, odpalić depmod -a.

Dopiero teraz zobaczyłem, że w repozytorium PLD jest gspca.spec i
się nawet buduje, więc można zapomnieć o tym, co napisałem wyżej i po prostu
zbudować sobie pakiet. Wersja w specu jakby trochę inna, jeszcze nie sprawdzałem czy
działa, najwyżej trzeba by speca nieco poprawić.

Update: Nagrałem mały testowy filmik, żeby pokazać co kamerka może. No, nie do końca pokazuje on co chciałem – podczas nagrywania obraz stracił nieco na jakości, bo nie znalazłem jeszcze sposobu na nagrywanie z tego w optymalnej jakości. Na bezpośrednim podglądzie w spcaview/xawtv/mplayer obraz jest odrobinę lepszy.

Głupie Safari…

Na Pingwinariach dowiedziałem się, że mój blog nie działa pod Safari…
Zastanawiałem się, co z pieprzyłem, ale nic nie wymyśliłem. Dzisiaj poznałem
szczegóły, pogooglałem i wiem: Safari nie radzi sobie z XHTML serwowanym jako
XML. Mój Jogger miał ustawione serwowanie jako XML (na sztywno… dziwne,
byłem przekonany, że była włączona autodetekcja). Przełączyłem na text/html
i podobno jest już dobrze.

Zły piesek, zły!

Żonka potrzebowała dzisiaj do czegoś jednego ze zdjęć, jakie trzyma na
laptopie. Okazało się, że zdjęcia nie ma… ani tego, ani setki innych…
w katalogu w którym kiedyś były zdjęcia teraz były tylko numerowane katalogi
i puste pliki, wszystkie z walentykową datą… Niedobrze.

Oczywiście zostałem wezwany do wyjaśnienia sprawy i naprawienia szkód. Wyglądało
to dość zagadkowo. Najpierw odmontowałem /home i zapuściłem fsck. Nic
podejrzanego nie znalazł. Dalej jedyną wskazówką była dla mnie data i godzina
utworzenia tych dziwnych plików… Zajrzałem do /var/log/syslog… nic
szczególnego w tym czasie tam nie było widać.

Zacząłem sobie przypominać, co tam ostatnio na laptopie mieszałem.
Instalowałem Beagle‚a. Chciałem żonce
zrobić dobrze i dać jej narzędzie, które pozwoli połapać się w tych jej
wszystkich plikach, z których większość (w szczególności zdjęcia) lądowały w
magicznym katalogu 1 w jej $HOME. Teraz w tym katalogu były tylko dziwne
cyferki…

Podkatalogi i pliki w ~/.beagle miały czasy modyfikacji 14 lutego lub
późniejsze, czyli ciepło. Ale trudno mi było sobie wyobrazić jak narzędzie do
indeksowania i przeszukiwania plików mogło kasować pliki… Postanowiłem obadać,
czy przypadkiem ktoś tam czegoś głupiego nie robił w tym czasie na konsoli.
vim ~/.history, tam /beagle i ukazały mi się moje
rozpaczliwe próby doprowadzenia Beagle’a do działania: nie chciał mi indeksować
plików, więc próbowałem go do tego zmusić różnymi poleceniami
beagle-* (a chodziło, zdaje się, o brak biblioteki sqlite3, czy
czegoś takiego). Od razu wydało mi się podejrzane jedno z poleceń:
beagle-exercise-file-system – zawartość katalogu 1
wyglądała na wynik jakiegoś ćwiczenia…

Google potwierdziło, co podejrzewałem:
beagle-exercise-file-system tworzy katalog 1 z numerkami
w środku, który można bezpiecznie usunąć. No tak, po fakcie już można…
Sprawdziłem jeszcze, czy ja byłem aż taki głupi, czy to narzędzie nie ostrzega
o destrukcyjnym działaniu. Rzeczywiście nie ostrzega. Jeśli przed jego uruchomieniem
katalog 1 istniał, to go po prostu usuwa. Poza tym tylko bzyka chwilę dyskiem
i wypluwa niewiny komunikat Created X files across Y directories
Twórca tego genialnego narzędzia powinien chyba zginąć w ciężkich męczarniach…

Na szczęście mamy backup, z 30 stycznia, który nawet zadziałał, a więc
bezpowrotnie utracone zostały tylko pliki z dwóch tygodni, zdaje się, że w tym
czasie dużo nie było tam wrzucane. A twórcom Beagle‚a zgłosiłem już
bug reporta.
Mam nadzieję, że potraktują to poważnie, a nie zjadą mnie, że odpalam coś,
czego nie powinienem…