Dofus pod PLD Linux

…czyli walki z Adobe AIR.

Przeglądając The Linux Game Tome natrafiłem na opis gry Dofus. MMORPG, z ładną grafiką, ale bez zbytnich wymagań do sprzętu (grafika 2D) – wyglądało zachęcająco, postanowiłem więc spróbować.

Ściągnąłem instalator, uruchomiłem… i nic, okazuje się że RPMowych dystrybucji nie obsługuje. Jak to tak?! Odpaliłem z opcją ‚–keep’, żeby zobaczyć co jest w środku i ewentualnie zainstalować ręcznie. W środku trochę plików, skrypt instalacyjny, deinstalacyjny i jakaś binarka „UpLauncher”. Spróbowałem odpalić binarkę, brakowało starej wersji libjpeg. W PLDowych CVS na szczęście jest spec, to dobudowałem, doinstalowałem i coś ruszyło. Ruszyło, „uaktualniło grę”, ale odpalić już się nie dało. Okazało się, że czegoś brakuje…

Znalazłem logi (po francusku) i rzeczywiście jakby jakiś plików brakuje. Zajrzałem do skryptu instalacyjnego (komentarze częściowo po francusku) i zrozumiałem, że to miało sobie jeszcze Adobe AIR zainstalować, potem tym Adobe AIR zainstalować grę z plików *.air, a dopiero to ostatecznie jest uruchamiane…

Udałem się więc do Adobe po to całe AIR. Do wyboru paczki ‚deb’, ‚yum’, ‚rpm’ i ‚bin’. Wybrałem ostatnie, nie licząc na kompatybilność tego RPMa z PLD. Okazało się jednak, że to ‚bin’ to niby samo-rozpakowujące-się-archiwum, ale potem i tak próbuje budować i instalować RPM. Budować w PLD tym bardziej nie umie, więc nic z tego nie wyszło. Wziąłem więc paczkę rpm (albo jednak z tego ‚bin’ coś wykopałem, nie pamiętam)… coś się zainstalowało.

Zainstalowanym „Adobe AIR Application Installer” próbowałem zainstalować „Dofus.air” i „Reg.air” jak to miał robić skrypt instalacyjny Dofusa. Nie udało się. Okazało się, że ten cały „application installer” też próbuje jakieś RPMy budować, co mu nie wychodzi. Czemu nie można jak np. z javowymi aplikacjami „java -jar cośtam.jar”? Ja rozumiem, że developerzy postawili sobie za cel zrobić tak, że user dwa razy kliknie w paczkę i mu się zainstaluje jak każda inna aplikacje, ale żeby to osiągnąć strasznie przekombinowali jednocześnie zapewniając sobie kompatybilność tylko z kilkoma konkretnymi dystrybucjami, właściwie uniemożliwiając użycie tego w innych…

W końcu, jakoś strasznie hackując udało mi się to jednak opanować i grę zainstalować tak, że zadziałała. Właściwie zadziałało wszystko poza dźwiękami i urwanymi tekstami NPC już w samej grze (ten drugi problem najwyraźniej doskwiera też innym linuksowym użytkownikom Dofusa). Skoro zadziałało, to sobie trochę pograłem. I spodobało mi się. Prawie że noce nad tym zarywam, jak kiedyś nad Crossfire ;-)

Wciąż jednak nie dawało mi spokoju pytanie: „czy na prawdę nie dałoby się prościej”. I dzisiaj wygooglałem coś takiego: Adobe® AIR on Gentoo Linux. Artykuł ten mówi jak można uruchamiać aplikacje AIR używają ichniejszego SDK. Bez żadnych śmiesznych „instalatorów” próbujących budować paczki. Sprawdziłem, rzeczywiście działa. Przygotowałem też „uproszczoną procedurę” instalacji Dofusa pod prawie każdym Linuksem (poniżej). Co więcej, tym razem udało mi się uzyskać także dźwięk! :-)

Instalacja Dofusa pod ulubioną dystrybucją

  1. Ściągnijmy Adobe AIR SDK z http://www.adobe.com/cfusion/entitlement/index.cfm?e=airsdk
  2. Zainstalujmy Adobe AIR SDK (tutaj do /opt, więc potrzebne prawa roota):
    mkdir -p /opt/AdobeAIRSDK
    cd /opt/AdobeAIRSDK
    tar xjvf AdobeAIRSDK.tbz2
    cat >/usr/local/bin/adl <<'EOF'
    #!/bin/sh
    
    exec /opt/AdobeAIRSDK/bin/adl "$@"
    EOF
    
  3. Ściągnij instalator Dofusa dla Linuksa ze strony gry i rozpakuj do tymczasowej lokalizacji. To (i wszystko następne) już z prawami zwykłego użytkownika.
    mkdir /tmp/dofus-inst
    cd /tmp
    wget http://dl.ak.ankama.com/games/dofus2/setup/DofusInstall.run
    chmod a+x DofusInstall.run
    ./DofusInstall.run --keep --noexec --target /tmp/dofus-inst
    
  4. Stwórz katalog dla gry (tutaj w $HOME/Gry/Dofus) i rozpakuj tam aplikacje AIR:
    mkdir -p ~/Gry/Dofus
    cd ~/Gry/Dofus
    mkdir -p share/reg
    cd share
    unzip /tmp/dofus-inst/Dofus.air 
    cd reg
    unzip /tmp/dofus-inst/Reg.air
    cd ../..
    
  5. Stwórz pliki wykonywalne dla tych aplikacji:
    mkdir -p bin share/reg/bin
    cat >bin/Dofus << 'EOF'
    #!/bin/sh
    
    exec /opt/AdobeAIRSDK/bin/adl -nodebug ~/Gry/Dofus/share/META-INF/AIR/application.xml ~/Gry/Dofus/share
    EOF
    chmod a+x bin/Dofus
    cat >share/reg/bin/Reg << 'EOF'
    #!/bin/sh
    
    exec /opt/AdobeAIRSDK/bin/adl -nodebug ~/Gry/Dofus/share/reg/META-INF/AIR/application.xml ~/Gry/Dofus/share/reg
    EOF
    chmod a+x share/reg/bin/Reg
    
  6. Oryginalny instalator robi jakieś dziwne symlinki. Więc i my je zróbmy:
    mkdir share/reg/share
    ln -s ../Reg.swf share/reg/share/Reg.swf
    ln -s ../content share/reg/share/content
    
  7. Teraz skopiujmy pliki z instalatora:
    cp /tmp/dofus-inst/UpLauncher share
    cp /tmp/dofus-inst/games.xml share
    chmod a+x share/UpLauncher
    
  8. I zróbmy skrypt do uruchamiania gry:
    cat > start-dofus << 'EOF'
    #!/bin/sh
    
    cd ~/Gry/Dofus/share
    exec ./UpLauncher
    EOF
    chmod a+x start-dofus
    
  9. Teraz można spróbować uruchomić grę:
    ./start-dofus
    

    To może się nie udać, jeśli w systemie brakuje odpowiednich bibliotek w odpowiednich wersjach. W PLD Th np. trzeba było zbudować i doinstalować libjpeg6.

    Po doinstalowaniu brakujących bibliotek powinien się Launcher uruchomić i zacząć „uaktualniać” grę. Gdy Launcher ściągnie najnowszą wersję Dofusa będzie go można uruchomić.

Zabawa w video

Żonka porobiła Krzysiowi trochę filmików swoją komórką i w końcu chciała to opublikować. Moim zadaniem było znaleźć coś czym się to uda obrobić…

Obróbką video się nigdy nie bawiłem… zobaczyłem co tam mamy w PLD. Wszystko co miało coś wspólnego z KDE odrzuciłem z góry. Znalazłem jakieś PiTiVi i Cinelerra. Poza tym wiedziałem, że i Blender (program do grafiki 3D) ma jakiś edytor video. Do testów zabrałem się na laptopie żony… raczej słabiutkim…

Cinelerrę odpaliłem, załadowałem jeden filmik z komórki, wcisnąłem play… zobaczyłem jak to się muli… i dałem sobie spokój. Wyglądało to też jakoś… dziwnie.

PiTiVi wyglądało w miarę normalnie… ale trochę trwało zanim mi się udało tam jakiś filmik załadować… okazało się, że brakowało mi wielu modułów do GStreamer’a. Gdy już wszystko działało… okazało się, że to „wszystko” to prawie nic. Skleić filmiki razem to i cat potrafi 😉

Został Blender. Na początku oczywiście odrzucał ten kosmiczny interfejs użytkownika. No, trzeba przyznać, że „bardzo oryginalny”… w każdym razie różny od wszystkiego co się na co dzień używa. Jednak jak już się załapie co i jak to nie jest taki zły. I zasobów nie zżera wiele (zawsze mnie to fascynowało – Blender to jeden z niewielu programów z OpenGL, które jakoś da się bez sprzętowego wspomagania używać), i funkcji trochę ma… dla kogoś kto w obróbce video nie jest nawet amatorem to aż za wiele.

Trochę zabawy z tym cudem i udało się w „coś” połączyć dwa filmiki i parę zdjęć. Skorzystam z okazji i od razu <video> z HTML5 wypróbuję (proszę docenić, że żadnego Flasha nie potrzeba)…

Tu jest filmik dla tych, co mają dość nowe przeglądarki, innych zapraszam do Iki 😉

Jakby ktoś pytał o muzykę, to Ika gdzieś znalazła… ja tylko wklejam gotowe „dzieło”… jakby coś 😉

Jajcuś śpiewa – rozważania o podświadomości

Ostatnio bawię się programami muzycznymi. Tak żeby córka poza keybordem miała i jakieś muzyczne zabawki na komputerze. Ma więc już i Rosegarden i Solfege. Przy okazji dla PLD spaczkowałem też soundfonty dla fluidsynth, qsynth i coś jeszcze…

Mniej więcej w tym samym czasie na The Linux Game Tome pojawiły się wpisy o grach karaoke: Canta i Performous. Te wydały mi się interesujące przede wszystkim, że teoretycznie pozwoliły by jakoś „obiektywnie” pokazać jak Krysi idzie jej śpiewanie (oprócz nauki gry na klawiszach córka uczy się też śpiewu).

Canta coś nie za bardzo chciała mi działać, za to Performous skompilował się i uruchomił bez problemu. Od razu paczkę do PLD wrzuciłem. Udało mi się też znaleźć trochę piosenek w formacie UltraStar i wczoraj zaczęliśmy się tym bawić.

Zabawa polega na śpiewaniu piosenek do mikrofonu. Od zwykłego karaoke różni się tym, że komputer pokazuje jaki dźwięk z siebie wydaliśmy i przyznaje punkty za trafienia we właściwe nutki. Jak się można było spodziewać, Krysi szło całkiem nieźle w utworach które znała (niestety niewiele zna). Iwonka też radzi sobie świetnie w paru kawałkach. Ja też spróbowałem swoich sił…

Nie miałem żadnych wątpliwości, że nie umiem śpiewać. Z tego powodu też staram się nigdy nie śpiewać, przynajmniej nie tak, żeby mnie ktoś usłyszał ;-). Wczoraj, na potrzeby gry, zrobiłem wyjątek. Słuch muzyczny też mam specyficzny. Nie tylko słyszę, czy grają, ale potrafię docenić dobrą muzykę i bez problemu usłyszę fałszywą nutę. Ale czy ona za wysoka, czy za niska to już nie powiem. Zagra mi ktoś dwa dźwięki, a ja będę miał problem powiedzieć który wyższy, który niższy. O odtworzeniu czegoś ze słuchu na jakimś instrumencie mogę zapomnieć. Jak się pomylę grając z pamięci jakieś „wlazł kotek na płotek” to nie dojdę do tego który klawisz miałem rzeczywiście wcisnąć, tylko będę kojarzył że jest źle i mniej-więcej w którym miejscu.

No więc w Performous się wyników nie spodziewałem. A jednak, w dwóch utworach program dał mi aż ocenę „Amator” (Ika i Paskuda to „Wschodzące Gwiazdy). W niektórych fragmentach mój głos całkiem dobrze trafiał we właściwe nutki… ale ja zupełnie nad tym nie panowałem.

To wręcz odrobinę przerażające. Tak jakbym tylko zaczął ruszać ustami a z nich wydobywały się sensowne słowa w obcym języku. Czy śpiewałem tekst piosenki, czy buczałem jakieś „yyyy…” zastanawiając się co właściwie śpiewam, to w niektórych miejscach (najwyraźniej dobrze znanych mi fragmentach melodii) najwyraźniej trafiałem we właściwe dźwięki. Zastanawiałem się, czy to nie jakieś przekłamania… melodia złapana z głośników, albo coś… ale najwyraźniej nie. Ja rzeczywiście miejscami potrafię odtworzyć jakąś melodię. Właściwie nieświadomie. Gdy próbowałem coś świadomie korygować efekty były marne. Właściwie, tam gdzie nie wychodzi „samo” nawet nie wiedziałbym co robić, żeby śpiewać lepiej…

Wiadomo, że w takich rzeczach bardziej liczą się odruchy niż świadomość. Na StepManii też po prostu skaczę, nie ma kiedy świadomie przeanalizować każdej strzałki. Ale tych odruchów się nauczyłem. Na początku rzeczywiście analizowałem każdy ruch świadomie. Było to wolne i mało skuteczne, ale tak się nauczyłem właściwych odruchów. Podobnie było z nauką jazdy samochodem. Śpiewać nie uczyłem się nigdy. No, nie mogę powiedzieć, że teraz śpiewać umiem. Ale jednak umiem w pewnym zakresie modulować swój głos według konkretnej melodii. Tylko nie wiem jak to robię… To chyba jakiś wrodzony instynkt. W każdym razie interesujące.

…i ciekawe czy da się to jakoś rozwinąć? Czy jest jakakolwiek szansa, żebym mógł bez wstydu śpiewać przy ognisku? (Wstyd tym większy, że ja zawsze jestem trzeźwy) Nie liczyłbym na to… ale pytanie interesujące. :-)

Zabawa w kartografa-amatora

Przyszedł sezon rowerowy, to i mój GPS wrócił do łask. Skoro GPS, to fajnie by było sobie jakieś mapy do tego przygotować, czy nanieść przejechaną trasę na mapę. Niestety z mojego ulubionego Vikinga usunięto wsparcie dla map Google (na wniosek samego Google). Zamiast tego został podobno OpenStreetMap. Postanowiłem się więc przyjrzeć temu projektowi… i wsiąkłem. ;-)

Okazało się, że mają już niezły kawałek Gliwic opisany. Do tego proste w użyciu edytory. Sam ściągnąłem sobie JOSM. To ten „poważniejszy”, podstawowy edytor dla tego projektu. Oprócz tego jest jeszcze prosty webowy edytor Potlatch i parę innych. Wczytałem do JOSMa trasę swojej ostatniej wycieczki (do Wilczego Gardła)… i nie mogłem się powstrzymać przed dodaniem paru dróg do mapy. Od paru dni ciągle coś tam dodaję: trochę na podstawie przejechanych tras, trochę z pamięci (nie trzeba więcej, żeby wrysować coś pomiędzy istniejące drogi), trochę ze zdjęć satelitarnych (w JOSM dla mojej okolicy dostępne są zdjęcia Landsat, wystarczają do określenia obrębu lasu, czy jeziora). Parę uliczek przerysowałem też ze skanu starej (rok 1942) niemieckiej mapy, znalezionego kiedyś w sieci. Ze względów licencyjnych nie wolno przerysowywać ze współczesnych map, objętych prawem autorskim, ale tak jest nawet ciekawiej. ;-)

Na mapę Gliwic dodałem rzekę Kłodnicę, z zestawem mostów, dwie polne drogi, parę kilometrów ścieżki rowerowej i trochę drobiazgów. Już widzę (na wyrenderowanie gotowej mapy trzeba trochę poczekać), że parę rzeczy wyszło nie najlepiej, ale myślę że chociaż trochę projekt na moje pracy zyskał.

Fascynujące jest to, że na tej mapie można umieścić praktycznie wszystko i może ona służyć nie tylko jako mapa drogowa (zdaje się, że taki był pierwotny cel projektu), ale i turystyczna, czy rowerowa (w ten sposób powstaje OpenCycleMap. Zależnie od wybranego zbliżenie może przedstawiać sieć głównych dróg krajowych i wojewódzkich, albo układ alejek w parku.

Jak mi się zabawa za szybko nie znudzi, to powinno mi się udać opisać jeszcze parę z Gliwickich tras rowerowych (najlepiej byłoby zrobić komplet). Przynajmniej mam temat i motywację na najbliższe przejażdżki. :)

Co ja knułem przez ostatnie dwa tygodnie

Od dwóch tygodni byłem wyraźnie czymś zajęty. Tak, że aż żona zaczęła się niepokoić… A o co chodziło okaże się już za chwilę.

Wszystko zaczęło się od szwankującego odtwarzacza DVD. Dokładnie tego, o którym już tutaj pisałem. Tak jak się można było spodziewać, to było„ wszystkomające”, ale jednak tanie badziewie. Właściwie od początku coś szwankowało (np. OGGów w końcu nigdy na tym nie słuchałem, bo się nie dało), a od jakiegoś czasu kłopotliwe było normalne używanie, czyli puszczanie dziecku bajki: urządzenie długo się włączało, potem nie chciało wysunąć tacki (trzeba ręcznie wyciągnąć). Po filmie podobne problemy z wyciągnięciem płytki. I tak dużo z tym badziewiem wytrzymaliśmy (właśnie stuknęły by tej Mancie cztery lata), więc uznałem, że można by kupić coś nowego, markowego…

Jak już kupować, to czemu tylko odtwarzacz? Lepiej od razu nagrywarkę. Jak nagrywarkę, to tylko z twardym dyskiem. No i nie byle co, tylko, żeby wszystko działało jak należy. Przejrzałem w sieci co jest dostępne, poczytałem opinie i nieźle się napaliłem na nową zabawkę… Niestety, taka zabawka, jaka mi się podobała, to kosztowałaby około tysiąca złotych. Uznaliśmy z żonką, że to jednak byłoby zbytnie szaleństwo. A ja dalej byłem napalony na nagrywarkę… i zacząłem knuć…

Tydzień temu kupiliśmy dużo tańszy odtwarzacz DVD. Ma nawet wejście USB i potrafi odtwarzać muzykę i filmy z pamięci masowych USB (to taki bonus, bo chcieliśmy tylko odtwarzacza DVD i VCD). Ale ja już od tygodnia kombinowałem coś innego…

Gdy przekonałem się, że o nagrywarce z prawdziwego zdarzenia nie ma co marzyć, z ciekawości zacząłem się rozglądać za innymi opcjami. Rozejrzałem się na Allegro za tunerami do komputera. Poczytałem na ten temat. Zastanowiłem się, czy mógłbym coś z tym zrobić… i wyszło mi, że może dałoby się coś wykombinować.

Akurat na Allegro dość tanio dostępny był tuner na USB ze sprzętową kompresją MPEG-2: Hauppauge WinTV-PVR-USB2, najwyraźniej dość dobrze obsługiwany przez Linuksa i MythTV. Do tego miałem nadzieję wskrzesić laptopa, który umarł podczas mojego pobytu w Reptach. Nawet udało się osiągnąć pewne efekty: przestał się przegrzewać, pracuje już z pełną prędkością i wentylatory nie wyją mu cały czas. Zamówiłem więc tuner i zacząłem się szkolić i szykować inne elementy systemu.

Niestety, laptop działać działał, ale odmówił wyświetlania grafiki. Na wbudowanej matrycy często obrazu brakowało już przy starcie, a na zewnętrznym monitorze, niestety było niewiele lepiej: karta graficzna odmawiała współpracy już przy próbie zmiany trybu na graficzny. Co gorsza, to prawdopodobnie uszkodzenie płyty głównej (nie działa też jeden slot pamięci). Laptop się więc na nagrywarkę nie nada. Szkoda.

Na szczęście miałem w biurze jeszcze jedną maszynkę. Mały komputerek z procesorem VIA Eden 1GHz. Dostałem go, żeby przystosować do tej platformy sprzętowej nasze oprogramowanie, a od wielu miesięcy tylko się nudził Mogę go więc z czystym sumieniem pożyczyć na domowe multimedia. Pudełko ma wyjście TV i audio, wiec jest w sam raz.

Zamontowałem tam dysk z laptopa, zainstalowałem system i MythTV, wstępnie skonfigurowałem. Denerwowały mnie wentylatorki. Według tego co znalazłem w sieci, ten procesor i chipset powinny sobie radzić i z pasywnym chłodzeniem, ale niestety w tej „hermetycznej” obudowie i z tymi marnymi radiatorkami to się trochę grzeje i nie odważyłem się wiatraczków całkiem wyłączyć. Za to skonfigurowałem fancontrole z pakietu lm_sensors, żeby je wyłączał lub spowalniał, gdy pełna prędkość nie jest potrzebna. Przydała się też lutownica, bo płyta główna nie chciała sterować wiatraczkiem z obudowy, podłączyłem go więc do zasilania chłodzenia procesora. Teraz oba są sterowane razem. A kiedyś może zamontuje tam po prostu większe radiatory i zostawię tylko jeden wentylator na wszelki wypadek (normalnie wyłączony, mam nadzieję).

W końcu przyszedł tuner. Mogłem dokończyć konfigurację MythTV, niestety bez sygnału antenowego nie bardzo mogłem przetestować, a robiłem to wszystko przecież w biurze, w wolnych chwilach w pracy, bo nie chciałem wielkiego eksperymentu w domu zrobić. Do domu miałem zamiar przynieść gotowe rozwiązanie.

Gotowy zestaw przyniosłem do domu w czwartek i podłączyłem, gdy Ika była w szkole muzycznej. Niestety, nie działało jak należy. Obraz strasznie rwał, dźwięk przerywał i raczej oglądać TV się przez to nie dało, ale włączyłem nagrywanie House’a. Okazało się, że nagrało się prawidłowo, tylko z wyświetlaniem były problemy.

Dzisiaj parę godzin z tym walczyłem… i udało się. Najwyraźniej wbudowany programowy dekoder MPEG się nie wyrabiał (dziwne, bo mplayer nie ma żadnych problemów, nawet z „-vo x11” radził sobie nieco lepiej niż MythTV). Na szczęście ta płyta główna ma wbudowany dekoder MPEG2, który nawet zadziałał. Ze sprzętowym dekodowaniem działa. Są jeszcze pewne problemy z jakością obrazu, ale to głównie z powodu zamieszania z kabelkami, które tu teraz mamy, to powinno się dać jakoś poprawić.

No więc miałem przez dwa tygodnie rozrywkę i chyba nawet udało mi się nagrywarkę TV zbudować. Czy jest nam potrzebna? Czy będziemy jej używać? Prawdę mówiąc nie wiem, ale chyba po prostu czasem muszę coś „zmajsterkować” :-)

CJC i PyXMPP 1.0.1

Ostatnie wydanie CJC i PyXMPP było ponad trzy lata temu – w grudniu 2005 roku. Po tamtym wydaniu zacząłem poważne zmiany w API… i nigdy ich nie skończyłem, a niedokończonego dzieła wydawać nie chciałem. Potem przyszły kłopoty ze zdrowiem, pośrednio wynikłe też z mojego zaangażowania w Open Source (czyt. siedzenia całymi dniami przed kompem, świata nie widząc) i postanowiłem unikać angażowania się w kodowanie. Tak więc, planowane zmiany nigdy nie miały być dokończone.

W międzyczasie jednak w starym kodzie znajdowane były błędy, od czasu do czasu jakiś błąd poprawiłem, czasem ktoś podesłał patcha, to wrzucałem do SVN. Pojawiały się nowe wersje Pythona, czy M2Crypto, to kod dostosowywałem odpowiednio (CJC używam na co dzień, moja żona też, więc to musi działać). Właściwie, jak ktoś jeszcze używał PyXMPP albo CJC, to któryś z ostatnich snapshotów.

Ostatnio zastanawiałem się też, czy nie spróbować do CJC wreszcie dodać obsługi UTF-8. Wcześniej tego odmawiałem, bo Pythonowy moduł curses w ogóle nie ma obsługi Unicode, tylko start 8-bitowe API. I nic nie wskazuje na to, że to ktoś poprawi, ale uż jakiś czas temu jeden z użytkowników udowadniał mi, że to się jednak da zrobić, jeśli tylko moduł curses jest zlinkowany z biblioteką „libncursesw”. W PLD długo tak nie było, ale w Th już jest. To czemu by nie spróbować?

Wczoraj więc spróbowałem. Wyświetlanie UTF-8 działało bez żadnych zmian w kodzie, ale żeby wczytywać znaki Unicode z klawiatury musiałem dodać brzydkiego hacka. I w ogóle trochę obsługi klawiatury przerobić. Udało się. A skoro wreszcie się pojawiła funkcjonalność tak wyczekiwana przez użytkowników, to czemu by nie wydać nowej wersji? Resztę dnia spędziłem
przygotowując paczki z PyXMPP 1.0.1 (w tym jeszcze przed wydaniem poprawiłem jednego paskudnego babola) i CJC 1.0.1. Dzisiaj wysłałem informacje o wydaniach na listy mailowe dotyczące tych produktów. No to chyba udało mi się coś wydać. :-)

Po następne wersje zapraszam za trzy lata. ;-)

uinput_beeper, czyli jak zrobiłem sobie biperka w nowym laptopie

Podczas mojego pobytu w Reptach mój stary laptop umarł. Do zacinającej się klawiatury dołączyła wysiadająca grafika i w końcu zupełnie nie dało się z niego korzystać. No cóż, przeżył swoje. Tak więc w zeszłym tygodniu kupiłem sobie na allegro nowego, ślicznego i fajniusiego Della D620, a od poniedziałku już się nim bawię.

W laptopie właściwie wszystko działało od razu bez zarzutu. No, mały hack był potrzebny, żeby framebuffer działał w natywnej rozdzielczości. Niestety jeden feler wydał mi się poważniejszy: głośności pc-speakera nie da się kontrolować. Gdy nie załadowałem modułu pcspkr nie brzęczał w ogóle, gdy załadowałem – odzywał się na cały głos, co było nie do przyjęcia. Musiał zostać niezaładowany, ale bez biperka jest ciężko. Dla mnie konsola tekstowa to wciąż podstawowe narzędzie i mam tam np. odpalonego klienta Jabbera. I gdy przychodzi wiadomość, to klient pika… a mnie nie pikał. I było mi smutno. ;-)

Z wcześniejszego goolania wynikło, że to ograniczenie sterowników ALSA do tej wypasionej karty muzycznej HD, którą mam w laptopie i że właściwie powinienem się cieszyć, że mnie gra za głośno, albo wcale, bo innym tylko wcale.

Dzisiaj postanowiłem poszukać jakiejś alternatywy dla standardowego dźwięku, którego nie da się zciszyć. Uznałem, że powinno się dać podpiąć jakąś własną akcję w miejsce tego co robi moduł pcspkr. Okazało się, że mam rację. Jednak, o dziwo, wygodnego gotowca nie znalazłem. Znalazłem tylko dodatkowy moduł do kernela beeper, który współpracował z odpowiednimi demonami w userspace, ale z kompilacją dodatkowych modułów zawsze jest problem. A przecież dowiedziałem się też, że standardowy kernel ma już funkcjonalność potrzebną do obsługi bipania w userspace, bez potrzeby dodawania niestandardowych modułów. Można to zrobić przez interfejs uinput. Nawet znalazłem jakiś przykładowy kod.

Przykładowy kod okazał się być chyba pisanym z pamięci – brakowało includów itp. i się nawet nie kompilował. Do tego używał API esd, a to przecież bez sensu. Na szczęście przykładowy kod zawierał co najważniejsze i po przejrzeniu go i zerknięciu do źródeł kernela byłem w stanie napisać coś użytecznego.

Tak więc powstał uinput_beeper – prosty programik mojego autorstwa, który uruchamia zewnętrzny program za każdym razem, gdy terminal ma zabibczeć. Domyślnie jest to aplay beep.wav. I działa to świetnie, a przy okazji, z przygotowanym przeze mnie na szybko plikiem beep.wav, jest nawet zabawne (ale pewnie nie długo). :-) Kod oczywiście dostępny na GPL, może jeszcze komuś się przyda.

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

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ę?