piątek, 15 lutego 2008

Redagowania www.gust.org.pl via WebDav

Portal www.gust.org.pl pozwala na redagowania zawartości poprzez WebDav. Kiedyś ustaliłem jak można wygodnie edytować pliki via WebDav posługując się Emacsem. Jest jeszcze prostszy sposób, wykorzystujący program wdfs i fuse.

Pakiet wdfs instaluję za pomocą yuma; fuse był w fc8 zainstalowany ,,fabrycznie''. Teraz można wykonać operację zamontowania odległego katalogu. Przykładowo dla strony głównej portalu GUST wygląda to następująco:


wdfs http://www.gust.org.pl:1980/ ~/dir/ -o username=user -o password=passwd

Zamiast powyższego można modyfikować /etc/fstab, ale ja tego nie próbowałem. Aby odmontować należy zaś wpisać:


fusermount -u ~/dir/

Żeby powyższe zawsze działało należy zadbać aby odmontowujący był w grupie fuse oraz wykonać sudo chgrp fuse /dev/fuse

Podmontowany katalog wygląda jak lokalny, więc można wygodnie edytować pliki nie tylko Emacsem ale dowolnym innym edytorem.

Jak to często bywa rozwiązanie jednego problemu rodzi następny. Zawartość portalu GUST jest kodowana w UTF-8. Do tej pory starannie unikałem posługiwania się UTF-8, a nawet wpisałem do /etc/profile zaklęcie EMACS_UNIBYTE=t. Muszę teraz skonfigurować Emacsa żeby był bardziej elastyczny. Ale o tym później--jak zacznie działać...

niedziela, 10 lutego 2008

Google earth w Fedora Core 8

Googleearth wersja na linuksa nie działa `out of the box'. Bardzo wolno startuje, a na ekranie pojawia się komunikat:


do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try running with LIBGL_THROTTLE_REFRESH and LIBL_SYNC_REFRESH unset.

Sądząc z liczby stron w Google jest to problem wielu użytkowników. Rozwiązanie znalazłem tutaj (pomocne mogą być też uwagi z tej strony). Na wszelki wypadek zniknięcia oryginału w czeluściach Internetu poniżej kopiuję co trzeba zrobić. Otóż do pliku drm_nowaitVblank.c wpisujemy:


#include <sys/time.h>
#include <unistd.h>
#include <string.h>

#define DELAY 33333

int drmWaitVBlank(void)
{
static struct timeval last = { 0, 0 };
static struct timeval now = { 0, 0 };
int udiff;

gettimeofday(&now, NULL);
udiff = (int)now.tv_usec - (int)last.tv_usec;
if (udiff < 0)
udiff += 1000000;
udiff -= DELAY;
if (udiff < 0)
usleep(-udiff);
memcpy(&last, &now, sizeof(struct timeval));

return 0;
}

Plik należy skompilować, uruchamiając gcc w następujący sposób:


gcc -o drm_nowaitVblank.so -shared -fPIC -ldl drm_nowaitVblank.c

Plik należy umieścić tam gdzie znajduje się plik googleearth-bin, u mnie jest to /opt/google-earth/. Teraz trzeba zmienić skrypt googleearth w wierszu zwierającym exec "./googleearth-bin" "$@" (jest tylko jeden wiersz z exec w skrypcie googleearth) na:


LD_PRELOAD="./drm_nowaitVblank.so" exec "./googleearth-bin" $*

Googleearth wyświetla też komunikat o brakujących fontach. To akurat jest łatwe do poprawienia:


yum -y install bitstream-vera-fonts

Teraz mogę w komfortowy sposób oglądać swoje zdjęcia z samodzielnie wygenerowanych, przy pomocy GPSbabela plików KML (sposób jaki w jaki to robię opisałem wcześniej). Tutaj są próbki a jednocześnie propozycje ciekawych do zwiedzania miejsc w okolicach Sopotu (więcej wkrótce): Oliwa, Dolina Radości | Rezerwat Kacze Łęgi, Witomino | Elekrownia Rutki, Jar Raduni | Z Gdyni do Sopotu wzdłuż plaży | wzdłuż Potoku Oliwskiego, potem Sopot. Więcej jest tutaj.

sobota, 9 lutego 2008

Garmin Etrex H

Dokupiłem najtańszy odbiornik Garmina pn. Etrex h. Urządzenie to ma monochromatyczny wyświetlacz i nie obsługuje map. Nie ma wysokościomierza jak geko, nie ma też kompasu elektronicznego. Wysokościomierz barometryczny geko wskazywał pi-razy-drzwi a kompas jest niepotrzebny. Etrex pokazuje kierunek bez kompasu, wystarczy się poruszać.

Etrex h (z literą H) ma chipset firmy MTK, tej samej co zrobiła Iblue747. Wyświetlacz tego urządzenia jest duży, litery wyraźne. Łatwiej też wyświetlić bieżący czas na ekranie; w geko wymagało to extra ekwilibrystyki. Z drugiej strony, podgumowane guziki są bardziej toporne niż w geko i trochę trudniej nimi operować.

Wygląda, że urządzenie ma wadę polegającą na błędnym wyliczaniu średniej i przebytej drogi (widać to na zdjęciu obok). Jeżeli podczas wędrówki wyłączę Etrexa a następnie włączę -- przy ograniczonej widoczności nieba -- na ekranie pojawiają się wyniki typu 2000 km/h. Na szczęście zapisany ślad jest OK, nie ma na nim punktów z Afryki czy Hondurasu. Niby nie jest to wada z gatunku mocno uciążliwych, ale denerwuje. No co tu dużo mówić: bubel.

Porównanie śladów iblue, etrexa oraz geko jest tutaj (czerwony ślad to etrex, niebieski iblue, turkusowy geko 301). Etrex wyłączył się nie wiedzieć czemu w pewnym momencie.

Ślady w różnych kolorach wymagały drobnych zmian w bibliotece gpx-viewer Kaza Okudy. Oryginalna biblioteka rysuje tylko na czerwono a moja modyfikacja zmienia kolor dla każdego elementu <trk> zawierającego <cmt> (por. GPX 1.1). Zmiana koloru dla każego elementu trk nie byłaby dobrym pomysłem, bo ślad pobrany z GPSa często jest dzielony na wiele elementów trk. Dodanie cmt ma wymusić zmianę koloru na żądanie. GPSbabel nie wstawia cmt do śladu pobieranego z urządzenia.

Zakładanie SVN

Celem synchronizacji danych na moich komputerach założyłem archiwum SVN na PC. Do tej pory trzymałem moje pliczki potajemnie na svn.gust.org.pl, ale baza padła, svn wypisuje, że takiej to a takiej wersji nie ma svn: No such revision 465, no i generalnie kicha. Ponieważ svn w moim przypadku to duży overkill myślałem o czymś w rodzaju unisone, ale szkoda mi czasu, a po drugie -- pewnie niesłusznie -- wydaje mi się, że unisone bardziej nadaje się do synchronizacji w jedną stronę, np. przesłanie plików konfiguracyjnych z serwera na wiele komputerów. Tak więc ostatecznie stanęło na svn.

Zacząłem od ,,konfiguracji'' mojej ,,sieci'' LAN. Po uruchomieniu /sbin/ifconfig ustaliłem, że mój PC ma adres 192.168.1.102. Dopisałem zatem do /etc/hosts:


192.168.1.102 darkstar.pinkaccordions.org darkstar

W zasadzie całą konfigurację zrobił router! Komputer ma zatem nazwę darkstar, a pinkaccordions.org jest ukłonem w stronę Elki. Laptopa konfiguruję podobnie, nie używam WiFi, tylko kabel. Sieć będę używał tylko do transferu-synchronizacji więc nie ma to (mam nadzieję) większego znaczenia. Teraz najtrudniejsze:


svnadmin create '/stuff/svn/repos/tomek/'
svn mkdir file:///stuff/svn/repos/tomek/weblog -m'pierwszy projekt'
chown -R g+w /stuff/svn/

Następnie dopisuję do /etc/group, grupę svn, a do niej tych, którzy mają korzystać z svn. Zmieniam grupę, do której należy katalog /stuff/svn/:


chown -R root:svn /stuff/svn/

Wylogowuję się jako root I dodaję do repozytorium pierwszy projekt. Ponieważ repo jest na lokalnej maszynie mogę wpisać:


svn import file:///stuff/svn/repos/tomek/weblog -m "Import mojego bloga"

Jeżeli nie zadziała, ale zamiast tego wyświetli:


svn: Can't create directory '/subversion/main/db/transactions/0-1.txn':\
Permission denied

Albo ekwiwalent w języku polskim, to trzeba zrestartować komputer i powinno działać. Jeżeli coś dalej jest nie tak, no to nie wiem -- u mnie działa.

Obezwładniam SELinuksa, edytując /etc/selinux/config:


SELINUX=disabled

SELinux jest usługą, która przeszkadza w wielu miejscach i z moich doświadczeń wynika, że lepiej ją prędzej czy później wyłączyć. Usługa ssh powinna być ,,zaufana'' (trusted services). Teoretycznie można konfigurować zaporę sieciową poprzez wybór z System/Administracja/Zapora, ale u mnie to nie działa. Być może jest to moja wina, bo nie używam domyślnego unicode tylko ISO-8859-2. W każdym bądź razie, radzę sobie uruchamiając program poprzez terminal (oczywiście jako root):


LANG=C system-config-securitylevel

Żeby nie wpisywać hasła, generuję odpowiednie klucze używając ssh-keygen, w sposób opisany tutaj:


ssh-keygen -t rsa

Teraz dwa razy Enter. W rezultacie klucz prywatny jest w .ssh/id_rsa, a publiczny w .ssh/id_rsa.pub Zawartość tego ostatniego trzeba dodać do .ssh/authorized_keys na maszynie, z którą mamy się łączyć bez podawania hasła. Procedurę powtarzam dla drugiej maszyny. Można sprawdzić:


ssl -l tomek darkstar

Powinno działać. Także będzie działać svn, np. mogę ściągnąć repozytorium z PC na laptopa:


svn co svn+ssh://tomek@darkstar/stuff/svn/repos/tomek/weblog

Dopisane 26 lutego 2008: Sam się dziwiłem jakim cudem router przydziela moim komputerom te same numery IP. Ale do czasu. Wczoraj przydzielił inne... Pomysł oparty na /etc/hosts miał raczej krótkie nogi. Nie mając bladego pojęcia jak to osiągnąć i posługując się google ustaliłem, że 1) static DHCP jest tym czego mi potrzeba; 2) fabryczny firmware do mojego routera WRT54GL nie potafi tego zrobić i należy wgrać alternatywny 3) są różne alternatywy, zachęcony tym wpisem postawiłem w ciemno na Tomato.

Mówiąc szczerze najwyżej w Google było nt. dd-wrt, ale strona tegoż jakaś taka podejrzanie dziwna, nie mówiąc już o www.dd-wrt.org/. I was a bit afraid.

Zatem ściągnąłem plik ze strony www.polarcloud.com/tomato. Zainstalowałem archiwizer 7-Zip, który do niczego nie był mi wcześniej potrzebny:


yum install p7zip p7zip-plugins

Wypakowałem zawartość archiwum, połączyłem się z routerem (http://192.168.1.1/) i wgrałem firmware (Administration/Firmware Upgrade, wybrałem plik wrt54g_wrt54gl.bin). Teraz ważne (nie zrobiłem tego i straciłem trochę czasu): należy zresetować router (Administration/Restore default configuration, wybrać Erase all data in NVRAM memory). Po resecie loguję się na router jako root/admin. Następnie trzeba przejść do zakładki Basic/Static DHCP i wpisać odpowiednie informacje (numery MAC są w zakładce Status/Device List).

Zgodnie z tym co jest napisane w dokumentacji należy wybrać adresy spoza puli przydzielanej automatycznie przez router. Ponieważ mój router przydziela z przedziału 192.168.1.100--149, wybrałem numery typu: 192.168.1.2 itp.

Jak już wszystko zainstalowałem to znalazłem detaliczny opis co i jak tu: Turbocharge your router with Tomato. Jest też poradnik co robić jak instalując nowy firmware popsujemy router: Recover from a Bad Flash.

sobota, 2 lutego 2008

Microsoft kupuje Yahoo

Podobno MS chce kupić za 44 Mld USD (z ogonkiem) Yahoo. Nie będę się mądrzył czy to dobrze czy źle ale tak dla ilustracji czego boi się Balmer, poniżej tabelka rocznych zysków netto zainteresowanych firm (wiersz oznaczony jako % oznacza dynamikę zysku rok/rok_poprzedni * 100 - 100; ostatni wiersz to udział zysku Google w zysku MSFT, w %).


Symbol 2007 2006 2005 2004 2003 2002
--------------------------------------------------------------------
MSFT 14,065.00 12,599.00 12,254.00 8,168.00 7,531.00 5,355.00
% 11.63 2.80 50.02 8.46 40.63 --

YHOO 660.00 751.39 1,896.23 839.55 237.88 42.81
% -12.3 -61.00 125.83 252.93 455.66 --

GOOG --+ 3,077.44 1,465.40 399.12 105.65 99.66
% --+ 101.00 267.15 277.77 6.01 --

GOOG/MSFT -- 24.42 11.96 4.88 1.40 1.86
--------------------------------------------------------------------
+ Brak danych za rok 2007.

Źródło: MSFT | GOOG | YHOO.

Jak widać zyski Google mają dramatyczną z punktu widzenia firmy Microsoft, w tym, a zwłaszcza jej akcjonariuszy, dynamikę. Jak tak dalej by poszło, Balmer jest już dead and buried ze swoim szmelcem aka pomnikiem dla ludzkości od Bila G. Z drugiej strony Yahoo też tak miało w latach 2005--2003 ale od dwóch lat jest kiepsko. Na zdrowy chłopski nie da się w nieskończoność robić super biznesu sprzedając Windows+Office. Ale czy da się długo robić super biznes sprzedając reklamy? Też nie wiadomo. MS w Internecie nic nie znaczy, więc kupno Yahoo niby nie jest złym pomysłem, ale... Ale Yahoo za wyjątkiem flickr.com z niczym (w przeciwieństwie do Google) mi się nie kojarzy... Jednym słowem zobaczymy...

Ważniejszy w całej tej sprawie jest ewentualny zakup przez Microsoft firmy od lat związanej/sponsorującej wiele projektów OS, por. what-happens-if-microsoft-buys-yahoo albo Yahoo! buy would give Microsoft ownership of open source e-mail, projects, code. Ugh.

Upgrade PCta

No więc problemy sygnalizowane wcześniej zostały rozwiązane i mam komputer z nową płytą, pamięcią i procesorem. Reszta została ze starego. Windows 2000, co był na nim na zasadzie eksponatu muzealnego omówił pracy, a Fedora #5 -- nie. He, he. Nawet bym jej nie zamieniał na coś nowszego, bo aktualizacja systemu to zawsze dla mnie Royal PITA ale nie obsługiwała (ta Fedora) w pełni poprawnie nowej karty graficznej. Można było wprawdzie pracować ale wszystko było przeraźliwie rozciągnięte; litery zwłaszcza w mniejszym stopniu mało czytelne. Nie było wyjścia i na partycji zajętej przez zupełnie już bezużyteczne Windows 2000 zainstalowałem na próbę FC8. Ekran wyglądał świetnie więc po uprzednim zarchiwizowaniu katalogów /home/, /etc/, /usr/local/ na wolne partycje poszedłem na całość i zainstalowałem FC8 zamiast FC5.

Wszytko było super do momentu kiedy nie odpaliłem xmms. Dźwięk nie działa i nie bardzo wiedziałem jak sobie z tym poradzić. W FC o tyle wszystko jest zamotane, że jest wiele miejsc, które służą do manipulowania dźwiękiem: System/Administracja/Wykrywanie karty, Preferencje/Sprzęt, Aplikacje/Dźwięk i obraz. Po pewnej szamotaninie, znalazłem na forum poradę sprowadzającą się do wykonania:


rpm -e alsa-plugins-pulseaudio

Spróbowałem. Poszło--nie było żadnych zależności. Głośniki zaczęły działać. Niestety--to było tylko pół sukcesu. Mikrofon -- potrzebny do komunikowania się przez skype -- jak był głuchy tak został. Odkręciłem odinstalowanie alsa-plugins-pulseaudio:


yum install alsa-plugins-pulseaudio

Następnie zmieniłem stan selinux modyfikując w pliku /etc/selinux/config:


SELINUX=permissive # było enforcing

Oraz manipulując alsamixer -- uruchomionym z wiersza poleceń -- zgodnie z sugestiami podanymi tutaj. Pozwolę sobie zacytować oryginał: 1. Odpalamy terminal i wpisujemy alsamixer. 2. Wciskamy na klawiaturze TAB, aż przejdziemy do zakładki All. 3. Jedziemy w prawo aż dojdziemy do pola Mic. 4. Naciskamy SPACJĘ (pod Mic pojawia się napis capture). 5. Jedziemy dalej aż do pola Mic Selection i wybieramy Mic1 (strzałka do góry). 6. Jedziemy dalej do paska Capture i uruchamiamy go spacją. 7. Upewniamy się, że wszystkie wyżej wymienione paski są na samej górze. 8. Wychodzimy z alsamixera klawiszem ESC. U mnie wprawdzie, co do szczegółów, to ekran alsamixer wygląda trochę inaczej, ale rezultat jest pozytywny: mikrofon i głośniki działają

FC8 zainstalowałem w wariancie Office (jeżeli dobrze pamiętam nazwę). W tym wariancie nie jest instalowany gcc--dziwna decyzja. Na dzień dobry doinstalowałem:


yum -y install gcc emacs emacs-el thunderbird gpsbabel gv xpdf tidy \
k3b k3b-extras-nonfree \
grip gprolog clips R amule subversion gqview xine exiv2 unrar
mod_dav_svn xinetd dejavu-fonts bitstream-vera-fonts lame mc \
apel gnutls-utils wdfs kile lyx

yum -y install xchm kchmviewer dia inscape scribus xmms \
audacious audacious-plugins-nonfree* \
amarok amarok-extras-nonfree mplayer audacity

Pakiety amarok oraz audacious, to odtwarzacze audio; kiedyś używałem też beep (pakiet bmxp). Beep dalej jest dostępny w FC8 ale nie działa z plikami MP3. Program gpsbabel to program do manipulowania danymi pobranymi z odbiorników GPS, gv, xpdf to programy do wyświetlania plików PS/PDF (domyślnie w FC8 służy do tego evince, też go używam). Pakiety gprolog i clips zawierają odpowiednio kompilator Prologa i środowisko Clips (systemy ekspertowe się kłaniają). Program gqview to moja ulubiona przeglądarka do zdjęć. Pakiet exiv2 to narzędzie do manipulowania metadanymi Exif (w zdjęciach robionych aparatem cyfrowym).

Opera wymaga libstdc++.so.5, co wymaga zainstalowania następujących dwóch pakietów:


yum -y install compat-libstdc++-33 compat-libstdc++-296

Programy xchm i kchmviewer to przeglądarki dokumentów w formacie CHM. Dia, inkscape i scribus to aplikacje graficzne. Kile/lyx to dwa alternatywne IDE do redagowania dokumentów w LaTeXu.

Problem pojawił się przy instalowaniu skryptów do obsługi flickr.com. Perl w FC8 ma wbudowany inny @INC--nie ma w nim żadnych katalogów w /usr/local, wszystkie są /usr/. Kolejna dziwna decyzja, bo niby gdzie wsadzać ,,swoje'' skrypty i/lub niestandardowe biblioteki. Dopisałem w /etc/profile:


PERLLIB="/usr/local/lib/perl5/site_perl/"
export PERLLIB

I w tym katalogu trzymam swoje skrypty. Żeby je uruchomić trzeba się było trochę pomęczyć:


yum install perl-ExtUtils-MakeMaker perl-SOAP-Lite perl-Crypt-SSLeay \
perl-Test-Simple perl-XML-Simple perl-Text-Iconv \
perl-GDGraph perl-Image-ExifTool

Moduł Crypt::SSLeay jest potrzebny do obsługi https przez LWP. Do tego dociągnąć ręcznie, z braku odpowiednich paczek .rpm: XML-Parser-Lite-Tree-0.03, Flickr-API-0.08, Geo-Coordinates-DecimalDegrees-0.08.tar.gz.

Dodanie repozytorium livna:


rpm -ivh http://rpm.livna.org/livna-release-8.rpm \
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-livna

Dużo wskazówek dotyczących instalowanie/konfigurowania FC8 można znaleźć na stronie: www.mjmwired.net

Dopisane 18 lutego 2008: Instalowanie FC8 na laptopie (HP nx 9020) zaczęło się niefortunnie, bowiem instalator całkowicie odmówił współpracy. Przeszukanie Google na tę okoliczność wskazywało, że problem jest podnoszony często a niektóre doniesienia brzmią dramatycznie. Już zacząłem wierzyć, że tak często raportowane na różnych forumach problemy sprzętowe i mnie w końcu dopadły, ale trafiłem na prosty opis co trzeba zrobić (por. Instalator Fedora 8 zatrzymuje się na laptopie):


floppy.allowed_drive_mask=0 clocksource=acpi_pm

I poszło bez problemu. Powyższy wiersz należy dopisać na pierwszym ekranie po uruchomieniu komputera z DVD Fedora 8 (przedtem wcisnąć Tab).

BTW: FC8 to już moja któraś tam wersja Linuksa. Zaczęło się w 1999 r. od RH5, potem było RH8/9, Fedora Core 4/5 no i teraz FC8. Innych wersji L-systemu nie używałem--przyzwyczajenie drugą naturą człowieka. Przed 1999 r. była epoka człowieka pierwotnego uzbrojonego w krzemień pn. system D:-).

Dopisane 20 lutego 2008: Na podstawie tego wpisu i poprzednich doświadczeń ze strojeniem FC5, przygotowałem dokument pn. Uwagi dot. instalowania Fedora Core 8.

piątek, 25 stycznia 2008

Iblue 747 GPS logger

GPS logger to odbiornik GPS wyposażony w pamięć pozwalającą na rejestrację przebytej drogi (śladu). Ślad z GPSa jest mi potrzebny do dodania współrzędnych geograficznych do zdjęć. Do tej pory do tego celu wykorzystywałem odbiornik Geko 301 firmy Garmin. Geko jednakże jest urządzeniem starszego typu i generalnie nie działa jeżeli nie widzi ,,czystego nieba''. Nie działa w lesie, często są duże problemy w terenie mocno zabudowanym, itp.

Postanowiłem kupić lepszy odbiornik. Czytając fora i blogi poświęcone GPS najpierw dowiedziałem się, że jest coś takiego jak SIRF. Już chciałem takiego SIRFa kupić ale doczytałem o chipsecie MTK. Według niektórych doniesień jest on lepszy niż SIRF 3 (są też tacy co twierdzą, że tak nie jest; głosów w stylu X to syf a ja jestem wielkim znafcom nie biorę pod uwagę).

Ceny loggerów na allegro zaczynają się od 300 zł (styczeń 2008) a ja znalazłem coś chwalonego, podobno działającego z Linuksem co jest dla mnie bardzo ważne i (okazało się) tańszego pn. i-Blue 747 Dziwne, ale w Polsce nikt tego nie sprzedaje, przynajmniej w Internecie. Znalazłem i-Blue na ebay za mniej niż 200 zł przy czym 30% tej kwoty stanowiły koszty wysyłki.

BTW opis na e-bay był w języku włoskim, sklep w Niemczech, sklepowy (sądząc po imieniu i nazwisku, Turek) po angielsku słabo pisał, ale się dogadaliśmy i paczka doszła.

Do obsługi loggera jest dołączony CDrom z programem. Program jest of course na system MSW, ale podobno działa z wine. Dokładnie postępując według instrukcji stąd dało się go uruchomić: należy zainstalować wine, uruchomić winecfg, a następnie:


cd ~/.wine/dosdevices
ln -s /dev/ttyUSB0 com1

Teraz należy skopiować plik instalacyjny i uruchomić wine DataLog.exe. Program zostanie zaistalowany tyle, że u mnie nie działa. Ściąga ślad całkiem dziarsko ale nie do końca bo zwisa. Próbowałem dwa razy raz zawisł gdy wskaźnik był na 49% drugi raz na 89%. W google znalazłem opinie użytkowników Ubuntu utrzymujących, że w ich systemie wszystko działa (like a charm). BTW w MS Windows też były problemy, zarówno z instalacją, jak i z uruchomieniem, ale jak w końcu poszło, ale co z tego przecież nie będę go używał w systemie W.

Uwaga: Aby ściągnąć ślad albo zmienić konfigurację urządzenia przełącznik musi być w pozycji LOG. Po uruchomieniu programu pierwsze co trzeba zrobić to zatrzymać zapis śladu (można to zrobić tylko programowo), bo inaczej logger cały czas zapisuje dane.

Zainstalowałem też w bólach bt747 (aplikacja Javy). Zresztą autor ostrzega, że dokumentacja jest niedoskonała. Po rozpakowaniu zipa, zainstalowałem zawartość katalogu rxtx-2.1-7-bins-r2, zgodnie z tym co jest napisane w pliku INSTALL, umieszczonym w tym katalogu. Następnie uruchomiłem skrypt run_rxtx.sh, zmieniając wartość zmiennej MYROOTPATH=/usr/local/bt747. Żby użytkownik miał dostęp do /dev/ttyUSB0 musi być w grupie uucp, to już ustaliłem wcześniej. Dalej jednak nie działało (check_group_uucp(): error testing lock file creation Error details: Permission denied check_lock_status: No permission to create lock file.). Kluczowa okazała się zmiana praw dostępu do /var/log:


chmod 777 /var/lock

Aplikacja, jak widać obok, wygląda okropnie, ale funkcjonalnie jest OK: ściąga dane i kasuje LOG. Więcej nie potrzebuję. Żeby skrypt run_rxtx.sh działał uruchamiany z dowolnego katalogu musiałem jeszcze zmienić wartości zmiennej CLASSPATH (albo wstawić zawartość CLASSPATH jako wartość opcji -cp przy uruchamianiu javy):


CLASSPATH=${RXTXJAR}:$MYROOTPATH/webstart/Waba_only.jar:\
$MYROOTPATH/dist/BT747_rxtx.jar:.:$CLASSPATH

Wreszcie jest też aplikacja pn. MTKbabel (skrypt Perla), działająca podobnie do programu GPSbabel, czyli z wiersza poleceń. Do działania wymaga zainstalowania modułu Device::SerialPort. Ten sposób działania podoba mi się najbardziej. Pobranie danych sprowadza się do wydania następującego polecenia:


mtkbabel -f nazwa-pliku-bez-rozszerzenia -t

Powstaną dwa pliki (dlatego nie podaje się rozszerzenia): jeden w formacie binarnym, drugi w fomacie GPX. Jedno wielkie ale -- transmisja jest bardzo wolna: plik binarny o wielkości ca 650 kB (czyli ca 30% pamięci) był ściągany z loggera 9 minut 47 sekund. Czyli cała pamięć byłaby ściągana 30 min. Hmm... Dla porównania obie wcześniej wymienione aplikacje ściągały te 650 kB w circa 2 minuty. Różnica jest.

Wykonałem już dwa eksperymenty porównujące iblue z moim Garminem 301. Pierwsza trasa to las, w wielu miejscach gęsty i wysoki. Do tego też w wielu miejscach jary o stromych zboczach. Trasa zapisana przez geko oraz trasa zapisana przez iblue. Nie ma porównania, bo geko w zasadzie w lesie nie działał.

Druga trasa to teren zabudowany, a konkretnie Sopot. Zabudowa w większości 3--4 kondygnacyjna. Dwa razy wszedłem do sklepu (Geko zgubił w pierwszym ślad, ale poczekałem po wyjściu aż znajdzie, a za drugim razem sam szybko się odnalazł). Oba ślady wyglądają nieźle (cf. geko iblue). Iblue pogubił się w okolicach skrzyżowania 1-go Maja z Aleją Niepodległości, gdzie wszedłem do sklepu (na dłużej). Nie zgubił satelity, tak jak geko, ale trasa w tym miejscu jest nieprawidłowa (wielki `tik' od 1-go Maja wzdłuż Al. Niepodległości w stronę Gdańska. Na mapie od szpilki oznaczonej jako `sklep' do szpilki `tik'. W rzeczywistości od sklepu poszedłem do szpilki oznaczonej `tunel' i dalej wzdłuż ul. Bohaterów Monte Cassino, co zresztą też jest zaznaczone). Nie ma różnicy pomiędzy śladami zredukowanymi do 500 punktów i dużo większym -- 2500 punktów.

Reasumując: wszystkie zdjęcia zrobione na obu trasach zostały (z zadowalającą precyzją) oznakowane współrzędnymi geograficznymi na podstawie śladu z Iblue, a po to go kupiłem.

Ślad iblue zredukowałem za pomocą gpsbabela, bo oryginalny ślad składa się z tysięcy punktów. Iblue zapisuje ślad co sekundę, Garmin w trybie auto (Iblue nie ma czegoś takiego jak auto). Kiedyś eksperymentowałem z Garminem i też go przestawiłem na zapis sekundowy, ale nie zaobserwowałem różnicy pomiędzy takim trybem a trybem auto. Polecenie uproszczenia śladu wygląda następująco (Log.nma zawiera dane zapisane jako NMEA):


gpsbabel -i nmea -f Log.nma -x simplify,count=450 \
-o gpx -F 2008-01-23BT_x.gpx

Poniżej bardziej zaawansowane polecenie: zapisz jako GPX, ślad od 2008-01-24T13:40 od 2008-01-24T14:50, następnie upraszczając go do 500 punktów. Uwaga: opcje -x nie są przemienne, tj. ich zamiana skutkowałaby najpierw uproszczeniem do 500 punktów, a potem wycięciem od-do, dając w rezultacie ślad dużo bardziej uproszczony:


gpsbabel -i nmea -f GPSDATA-20080123.nmea \
-x track,start=200801241340,stop=200801241450 -x simplify,count=2500 \
-o gpx -F 20080124BT_x.gpx

Kończąc, trochę mnie zastanawia/niepokoi trwałość tego urządzenia, bo jakość wykonania jest taka sobie (100% chińszczyzna). Jakby mi, np. wypadł z ręki, to chyba byłby to jego ostatni lot. Nawet nie próbuję tego sprawdzać. Poza tym logger wydaje się całkiem, całkiem...

Dopisane 16 marca 2008: Dioda GPS: pomarańczowa -- szuka satelitów; pomarańczowa/miga -- nawiguje; niebieska/miga -- mało pamięci (mniej niż 20%); niebieska -- pamięć jest zapełniona, stop (cokolwiek to znaczy); trzykrotny błysk -- zarejestrowanie POI. Dioda baterii: czerwona -- bateria prawie wyczerpana; zielona -- ładowanie; zielona/miga -- naładowana. Dioda BT: niebieska -- BT włączone, ale nie połączony; wolno miga -- połączony w sleeping mode; szybko miga -- połączony i gotowy.

Dopisane 16 marca 2008: projekt formularzy w aplikacji bt747 jest daleki od ergonomicznego, stąd poniżej krótka rekapitulacja. Aby usunąć plik: Fmt/Erase (albo Fmr/Set&erase). Pobranie pliku i zapis na dysk: Log/Get Log i inne przyciski z tej karty. Karta File: konfiguracja. Karta Con: połączenie z urządzeniem. Innych kart w zasadzie nie używam.

Dopisane 19 marca 2008: Poniżej skrypt do zamiany pliku NMEA pobranego z bt747 na plik GPX. Skrypt upraszcza uruchomienie gpsbabela. Ponadto uruchomiony z opcją -U wycina niepotrzebne znaczniki (np. <ele>, czyli wysokość, która w moim przypadku zawsze wynosi zero. Dodatkowo liczy długość wyciętego śladu. Pełny skrypt jest tutaj.


# !/bin/bash
#
# Skrypt ułatwiający uruchomienie programu gpsbabel
# Wycina fragment ścieżki + upraszcza ślad do zadanej liczby punktów
# Na koniec plik podaje długość wyciętego śladu.
#
OUT=''
FORMAT=nmea
ROK=`date +"%Y"`
XREDUCE="NO"

while test $# -gt 0; do
case "$1" in

-help|--help) echo "$USAGE"; exit 0;;

-od) shift; START="$1";;
-od*) START="`echo :$1 | sed 's/^:-od//'`";;
-do) shift; STOP="$1";;
-do*) STOP="`echo :$1 | sed 's/^:-do//'`";;
-max) shift; COUNT="$1";;
-max*) COUNT="`echo :$1 | sed 's/^:-max//'`";;
-rok) shift; ROK="$1";;
-rok*) ROK="`echo :$1 | sed 's/^:-rok//'`";;
-format) shift; FORMAT="$1";;
-format*) FORMAT="`echo :$1 | sed 's/^:-format//'`";;
-U) XREDUCE="YES";;
-out) shift; OUT="$1";;
-out*) OUT="`echo :$1 | sed 's/^:-out//'`";;

-h) echo usage; exit;;
-h*) echo usage; exit;;

*) FILE="$1";;
esac
shift
done

if [ "$XREDUCE" = "YES" ] ; then
echo "** Tracks will be simplified! (Option -U)" ; fi

EXTENSION=${FILE##*.}
BASE=`basename $FILE .$EXTENSION`

if [ "$OUT" = "" ] ; then OUTFILE="$BASE.gpx" ;
else OUTFILE="$OUT" ; fi

if [ "$START" != "" -a "$STOP" != "" ] ; then PERIOD="-x track,start=$ROK$START,stop=$ROK$STOP" ;
elif [ "$START" != "" ] ; then PERIOD="-x track,start=$ROK$START" ;
elif [ "$STOP" != "" ] ; then PERIOD="-x track,stop=$ROK$STOP" ;
fi

if [ "$COUNT" != "" ] ; then SIMPLIFY="-x simplify,count=$COUNT" ; fi

if [ -f "$BASE.$EXTENSION" ] ; then
gpsbabel -i $FORMAT -f $BASE.$EXTENSION $PERIOD $SIMPLIFY -o gpx -F $OUTFILE

if [ -f "$OUTFILE" -a "$XREDUCE" = "YES" ] ; then
extension=${OUTFILE##*.}
simname="`basename $OUTFILE .$extension`_s.$extension"
echo "** File $OUTFILE simplified to $simname" ;
# perl -e 'while ( <> ) { unless(/<ele|fix|course|speed>/) ... to błąd !!
perl -e 'while ( <> ) { unless(/<(ele|fix|course|speed)>/) { print $_ }} ' $OUTFILE > $simname
OUTFILE=$simname
fi
else echo "File $BASE.$EXTENSION found!" ; echo "$USAGE"
fi

if [ -f "$OUTFILE" ] ; then
## Oblicz dystans:
echo "** Counting distance covered in: $OUTFILE "

perl -e 'use Geo::Distance; my $geo = new Geo::Distance;
my $qchars = "\042\047"; # znaki cytowania pojedynczy i podwojny
while (<>) {
if (/<trkpt\s+lat\s*=\s*([$qchars])([^$qchars]+)\1\s+lon\s*=\s*([$qchars])([^$qchars]+)\3/) {
$lat=$2; $lon=$4;
unless ($trkpt < 1) { $dist += $geo->distance( "meter", $plon, $plat => $lon, $lat ); }
$trkpt++; $plat=$lat; $plon=$lon;
}
}
print "** Distance covered (meters): $dist\n"; ' $OUTFILE
fi

sobota, 19 stycznia 2008

Polonizacja FOPa

Fop w wersji 0.2* zniknął już dawno ze strony xmlgraphics.apache.org/fop/ co spowodowało m.in. że moja notka nt. polonizacji była nie tylko przestarzała ale także myląca. W szczególności fop 0.9* ma inną składnię pliku konfigurującego fonty, więc jeżeli ktoś próbował moich wskazówek, to mu raczej fop nie działał.

Uaktualniłem zatem notkę, poprawiłem ją także w paru miejscach bo była mętna a nawet błędna. Przetestowałem działanie z trzema zestawami fontów: MS Core Fonts, DejaVue. Całość jest tak sobie przydatna dla mnie -- fopa na co dzień nie używam, ale widzę z logów, że od czasu do czasu ktoś wpisuje do google fop+polskie+znaki no i ten dokument jest oglądany.

Synchronizacja książki adresowej w Thunderbirdzie

Do poprzednio zainstalowanych wtyczek: Attachment Extractor, Display Mail User Agent, Enigmail, Quick Locale Switcher oraz Virtual Identity doinstalowałem Sync Kolab, dzięki któremu mam zsynchronizowaną książkę adresową. Nie mogłem uruchomić tej wtyczki, z powodu błędu pn. Mail account '...' not found!. Podpowiedź znalazłem w dokumencie Geek to Live: Sync your address book via IMAP Giny Trapani. Nie miałem foldera na gmail.com na moje kontakty, po jego utworzeniu poszło gładko.

BTW Gina T. to chyba jakaś znana osoba. A tu link do jej projektu pn. lifehacker.com. Wygląda ciekawie.

poniedziałek, 14 stycznia 2008

Fedora Core 8

Wczoraj na komputerze kupionym na Św. Mikołaja w zeszłym roku zainstalowałem Fedora Core 8. Wykorzystałem, że Elka wyjechała z Jasiem i Krzysiem na ferie do Habovki. Nie będę raczej z tego komputera korzystał, bo został kupiony dla dzieci -- chciałem sprawdzić jak mi pójdzie z instalacją.

Na dysku był już zainstalowany produkt MSC pn. Windows XP (dzieciom do gier potrzebny). Doinstalowanie FC8 poszło świetnie i zajęło circa 40 minut. Można sprawdzić na zdjęciach porównując wartości tagów Exif ze zdjęć obok. Jest Firefox, Pidgin, Thunderbird, OpenOffice. Czegóż więcej potrzeba 99% użytkowników PCtów? Pewnie będzie problem z aplikacjami do audio/wideo, no ale to już jest problem nie do przeskoczenia, bo natury prawnej.

Emacs pisze out-of-the-box w Unicode. Czas już sprawdzić, jak ten UTF działa w Linuksie.

Mój PCet się zepsuł. Co pewien czas się resetuje. Kol. Pacek przelutował kondensatory, ale to tym razem nie pomogło. Pomogło za to wyłączenie cache w BIOSie. Coś jest nie tak albo z procem albo z płytą. Teraz wprawdzie nie ma resetów, ale komfort pracy taki sobie. Już jestem umówiony z kol. Markiem na upgrade. Jak będzie nowy komputer, to wtedy pomyślę o upgrade do FC8.

czwartek, 10 stycznia 2008

Kłopoty z Firefoksem

Rozjechał mi się Firefox. Objawy są takie, że przy starcie okno się od razu zamyka. Nie zawsze, ale bardzo często. Okno potrafi się zamknąć także później. Zawsze bez żadnych komunikatów, ani uruchamiania rozszerzenia Talkback.

Uaktualniłem Firefoksa ze strony www.firefox.pl/ do wersji 2.0.0.11. Nie pomogło. Wykonałem jeszcze kilka chaotycznych prób, ale to też nic nie dało. Między innymi zaktualizowałem pakiet nss.i386 3.11.5-0.5.1.fc5. Wreszcie radykalnie:


mv ~/.mozilla ~/.mozilla.kopia

Wygląda, że coś się poplątało w cache bo teraz wygląda, że jest OK. Okno Firefoksa się nie zamyka. BTW Firefoxa instaluję w katalogu /usr/local/firefox211 a potem dodaję następujące linki:


ln -s /usr/local/firefox/firefox /usr/local/bin/firefox
ln -s /usr/local/firefox211 /usr/local/firefox