Funkcja browse-url
wyświetla w przeglądarce WWW stronę
o podanym adresie URL. Takie tam drobne ułatwienie: nie trzeba wklejać adresu
do przeglądarki; wystarczy ustawić ,,na nim'' kursor i wywołać funkcję
za pomocą M-x
lub uprzednio zdefiniowaną kombinacją klawiszy.
Wtedy Emacs uruchomi przeglądarkę, a ta z kolei wyświeli żądaną stronę.
Domyślną przeglądarką jest Mozilla; u mnie np. jest to Mozilla 1.7.12. Wraz z przejściem na wersję 22 Emacsa wróciłem do sprawy skonfigurowania Emacsa z Firefoksem i spróbowałem nastaw podanych na emacswiki.org:
(setq browse-url-browser-function 'browse-url-firefox browse-url-new-window-flag t browse-url-firefox-new-window-is-tab t) (global-set-key (kbd "C-c C-L") 'browse-url)
Działa ale wyświetla każdą kolejną stronę w nowej karcie Firefoxa podczas gdy Mozilla pokazuje nową stronę w starym oknie. Wolę sposób działania Mozilli, więc pozostanę przy domyślnych ustawieniach.
W uczuciach jestem stały, nie lubię zmian i związanego z nimi zamieszania i ryzyka. Ale wreszcie po latach pożegnałem Telekomunikację Polską na rzecz firmy UPC. Bo UPC jest tańsze. Prawdę powiedziawszy to wcale nie będę płacił o wiele mniej -- ponieważ wybrałem dość szybkie łącze -- ale gdybym takie coś zamówił w TP to by wyszło znacząco drożej. W związku ze zmianą trzeba było kupić nowy modem, którego konfiguracja była jeszcze prostsza od tego poprzedniego, używanego z Neostradą.
Internet z UPC działa sprawnie za to firma denerwuje mnie swoją absolutnie fatalną stroną WWW. Sprawa o tyle mnie dotyczy, że w ramach umowy mam opłacać faktury via ww. stronę. Z mojego zatem punktu widzenia jej funkcjonalność sprowadza się wyłącznie do możliwości pobrania plików PDF z formularzem faktury. Wydawać by się mogło, że nie można spartaczyć tak prostego zadania. A jednak w globalnej korporacji wszystko jest możliwe: jakiś ,,myśliwy'' wymyślił, że strona będzie wykorzystywała flasha. Po co? Nie wiadomo. Za to nie działa w moim L-systemie. Być może w jakimś bardziej up-to-date by działało ale nie będę sprawdzał. Anyway sprawa jest kuriozalna...
Jest coś śmiesznego w zaufaniu tzw. przeciętnego człowieka do tzw. wielkich firm... Wracając zaś do tematu, w UPC mam mieć ten sam numer co w TP. Zobaczymy co z tego wyjdzie, bo mam niejasne przeczucie, że z tym też będzie problem.
Kontynuując temat migracji: założyłem konto looseheadprop1 na gmail i teraz jest to moja główna skrzynka. Włączyłem IMAP. Na tym etapie doszło zresztą do pewnego nieporozumienia, bo na relewantnych stronach google nie jest napisane wprost, że IMAP jest dostępny wyłącznie dla kont w języku angielskim. Innymi słowy, aby włączyć IMAP trzeba zmienić Gmail display language na English US inaczej można czekać na włączenie się IMAP ad mortem defecatus. No cóż, widocznie ten co pisał ww. stronę założył, że jak dokument jest w j. angielskim to tylko Anglosasi go przeczytają. Taka sobie logika... Problem zresztą być może już nie istnieje, albo zniknie wkrótce.
W związku z powyższym zacząłem
korzystać z Thunderbirda (poprzednio używałem pine), który skonfigurowałem według wskazówek
ze strony google i wszystko działa doskonale.
Doinstalowałem kilka wtyczek: Attachment Extractor,
Display Mail User Agent, Enigmail, Quick Locale Switcher
oraz Virtual Identity.
Na razie tylko korzystam z Display Mail User Agent:-). Więc jeżeli ktoś nie
chce wyjść w moich oczach na buraka używającego Outlooka, to przynajmniej
niech usunie z nagłówka wiersz X-Mailer
(do was m.in. piję w tej chwili kol. BL:-).
Wtyczka Quick Locale Switcher przyda się jak będę większego coś w języku wysyłał. Trochę mi się
nie podoba sposób jej działania, ale podobna wtyczka
Dictionary Switcher nie działa
wcale -- i to nie tylko u mnie -- co widać po komentarzach na ww. stronie.
Tak się rozochociłem tą zmianą, że -- idąc za ciosem -- skonfigurowałem też gnusa jako alternatywę do czytania poczty. Nie wchodząc w szczegóły po co mi to, uruchomienie gnus wymagało zainstalowania Emacsa w wersji 22, bo zarówno sam pterodactyl jak i niezbędne do współdziałania z gmailem biblioteki są w wersji 21 raczej dated. W FC5 nie ma -- z tego co mi się wydaje -- wersji 22 Emacsa zatem przygotowałem pliki rpm z archiwum źródłowego. Na marginesie: w swoim czasie skompilowałem i uruchomiłem Emacsa 23, ale... Ale to jest wersja alfa. Niby działa tyle, że co pewien czas następuje crash, zatem do pracy raczej kłopotliwe narzędzie. Od dziś zamiast wersji 21 będę miał 22. Wersja 23 zaś będzie służyła promocji Emacsa w tym, a zwłaszcza, powalaniu niewtajemniczonych na kolana:-)
Zawartość plików ~/.gnus.el
oraz
~/.imap-authinfo
skopiowałem z bloga
Aleksieja Simakowa. Ale to było za mało żeby działało. Poza tym chciałem
skonfigurować gnusa do czytania grup nowości, czegu u Simakowa nie ma.
Dodałem zatem:
(setq gnus-select-method '(nntp "news.task.gda.pl" ))
A do konfiguracji konta pocztowego wykorzystuję zmienną
gnus-secondary-select-methods
:
(setq gnus-secondary-select-methods '((nnimap "imap.gmail.com" (nnimap-address "imap.gmail.com") (nnimap-server-port 993) (nnimap-authinfo-file "~/.imap-authinfo") (nnimap-stream ssl))))
Ponieważ gnus, z niewiadomych powodów, wstawiał błędne nagłówki,
ustawiające kodowanie na us-ascii
, dodałem wpisy:
(setq message-default-charset 'iso-8859-2) (setq gnus-default-charset (quote iso-8859-2)) (setq gnus-default-posting-charset (quote iso-8859-2))
Prawie OK. Tzn. w buforze *Groups*
widać grupy nowości, mogę
je przeglądać i wysyłać wiadomości. Niestety nie widać nigdzie folderów z gmaila.
Zaś bufor *Messages*
nie zawiera informacji o jakichkolwiek błędach--wygląda, że się
z gmailem łączy i wszystko jest OK. Zatem guglamy dalej.
No i jest
odpowiedź:
magiczny klawisz ^
, po naciśnięciu którego faktycznie
pokazują się foldery i można czytać listy. Niestety,
nie można wysyłać -- wyświetlany jest błąd: Sending failed; SMTP protocol error.
Znowu google. I jest wskazówka:
potrzebne jest zainstalowanie: gnutls-cli
.
Myślałem, że już to mam, bo locate gnutls
coś tam wyświetlało...
Zatem:
yum install -y gnutls-utils
I wreszcie (prawie) wszystko działa.
Na koniec wrócę do Emacs jako takiego. Problemy z migracją do wersji 22 są na razie
drobne i łatwe do usunięcia.
Nie działa ess. Na razie
wstawiłem po prostu ;
przed (require 'ess-site)
.
Nie działa zapis /ssh::~/public_html
(dotyczy biblioteki tramp), należy wpisać w pełnym brzmieniu
/ssh:tomasz@gnu.univ.gda.pl:~/public_html
.
Funkcja My-flickr-images-init
z mojej biblioteki do ładowania zdjęć
na flickr.com wyświetliła wspaniałe okno dialogowe a la MS Windows zamiast
skromnie wyświetlić pytanie w minibuforze.
Nie tylko wybranie katalogu trwa kilka razy dłużej, ale na dodatek szukane są
tylko istniejące pliki.
To ostatnie to akurat zapewne mój błąd:
parametrem interactive
było "fdir: "
,
a powinno być:
(interactive "Fdir: ")
Tyle, że oba ustawienia działają w ,,trybie minibufora''. Na szczęście nawet deweloperzy Emacsa mieli widocznie wątpliwości co do tego czy w tym wypadku nowe jest lepsze, bo już w ww. oknie dialogowym jest podpowiedź jak wrócić do starych sprawdzonych rozwiązań:
(setq use-file-dialog nil)
Kolejny drobny problem, to nieznana funkcja compile-internal
.
Faktycznie w dokumentacji jest oznaczona jako obsolete ze wskazaniem
compilation-start
jako zamiennika. Także i w tym przypadku modyfikacja
też była bardzo prosta.
Reasumując: po raz kolejny się okazało, że wszystko poszło w miarę sprawnie. No ale ja z natury jestem panikarz.
Zrezygnowałem wreszcie z używania do komunikacji z GPSem programu GPSman na rzecz GPSBabela. Ten pierwszy jest programem interaktywnym a przez to niezbyt wygodnym bo trzeba się trochę naklikać żeby przegrać zawartość pamięci Geko na PC. GPSBabel działa w trybie wsadowym, dzięki czemu można oszczędzić dużo (cennego) czasu:
#!/bin/bash TODAY=`date +"%Y%m%d"` # zapisz do pliku yyyymmdd.gpx gpsbabel -t -r -w -i garmin -f /dev/ttyS0 -o gpx -F "$TODAY.gpx"
Przyznać muszę, że podchodziłem do tego GPSBabela jak do jeża bo przy poprzednich próbach coś mi tam nie działało. A niesłusznie -- wystarczyło przeczytać dokumentację.
Najwięcej czasu straciłem zresztą na podłączeniu Garmina do komputera.
Mój Geko 301
jest podpięty do PC standardowym ,,fabrycznym'' kablem
pn. RS232 serial port connector
(part number: 010-10310-00). Port szeregowy, tj. /dev/ttyS0
w nomenklaturze Linuksa, w FC5 jest dostępny tylko dla superużytkownika.
BTW mam poczucie, że wcześniej był dostępny dla wszystkich.
Kłopot ten rozwiązałem w sposób przedstawiony
tutaj:
ls -l /dev/ttyS0 crw-rw---- 1 root uucp 4, 64 gru 18 2007 /dev/ttyS0 /usr/sbin/usermod -G uucp tomek # dodanie tomka do grupy uucp
Uwaga: program usermod
działa tak, że jeżeli
użytkownik jest obecnie członkiem grupy, której nie podano na
liście--wartości opcji -G
, to zostanie z niej usunięty.
Lepiej więc zwyczajnie uruchomić vi
i dopisać co trzeba
do /etc/groups
.
Mając już zgrany ślad (track) i punkty (waypoints)
zacząłem kombinować co dalej z tym robić. Sposób w jaki publikuję
moje ślady korzysta
z biblioteki
gpx-viewer
Kaza Okudy. Każdy punkt z pliku GPX jest przedstawiony w postaci
standardowej ,,pinezki'' znanej z google maps. Pinezka po
kliknięciu zamienia się w okienko zawierające zawartość
elementów-dzieci elementu wpt
(tj. ele
,
name
, cmt
, desc
oraz sym
)
oraz atrybuty tego elementu (lat
i lon
), np.:
<wpt lat="54.443087485" lon="18.540491704"> <ele>69.340332</ele> <name>168</name> <cmt>168</cmt> <desc>168</desc> <sym>Flag</sym> </wpt>
Gdyby ww. element zawierał element extension
, to
pokazana by była tylko zawartość extension
.
W przykładach ze strony Okudy extension
zawiera
element img
zawierający z kolei zdjęcie
zrobione w tym właśnie miejscu:
<wpt lat="49.237919" lon="-122.760106"> <ele>4.0</ele> <name>Photo 2</name> <extensions><html><![CDATA[ <a href="http://okuda.blogspot.com/2005/07/traboulay-poco-trail.html" target="_blank"> <img src="blog/2005-07/IMG_2370-01.jpg" /> </a> ]]></html></extensions>
Teraz mała dygresja: odsyłacze do zdjęć na flickr.com są tworzone według pewnego schematu.
Strona główna zdjęcia ma adres http://www.flickr.com/tprzechlewski/<photo_id>/
, gdzie
<photo_id>
oznacza identyfikator zdjęcia.
Plik ze zdjęciem ma zaś następujący URL:
http://static.flickr.com/<server>/<photo_id>_<secret>_<size>.jpg
Wartości <server>
oraz <secret>
można ustalić
np. poprzez wykonanie metody flickr.people.getPublicPhotos
.
Wartościami size
są s
(square), t
(thumbnail), m
(small), b
(large), o
(original). Oznaczają one odpowiednio pliki o wielkościach
75, 100, 200, 1024 pikseli i wielkość oryginalną. Rysunek typu
square to kwadrat, pozostałe to prostokąty o dłuższym boku
równym podanej licznie pikseli. Prostokąt o dłuższym boku równym 500 pikseli
to wielkość zdjęcia, która jest wyświetlana na stronie głównej zdjęcia.
Ta wielkość
jest wybierana jeżeli URL nie zawiera części _<size>
.
Ja chciałem żeby element img
wewnątrz extension
w pliku GPX
wskazywał na zdjęcie w rozmiarze thumbnail
na flickr.com a element a
odsyłał na stronę główną tego zdjęcia. Żeby nie wpisywać
kodu ręcznie wymyśliłem to następująco.
Za pomocą skryptu
flickr_getphotolist.pl
pobieram informacje nt. wszystkich zdjęć (publicznych, ale to ograniczenie
akurat jest OK). Skrypt zapisuje informacje w postaci następującej listy haszy:
@photos = ( {'owner' => '20425995@N00','isfriend' => '0','ispublic' => '1','secret' => '95826dcd42',\ 'farm' => '3','title' => 'dscf1209','server' => '2343','id' => '1747402167','isfamily' => '0'}, ...
do pliku ~/.flickr/hr.icio.ph
. Prosty skrypt zwraca kompletne
adresy URL po podaniu tytułu zdjęcia (działa przy założeniu, że tytuły są unikatowe):
#!/usr/bin/perl require "$ENV{HOME}/.flickr/hr.icio.ph" ; $photo_title = shift; for (@photos) { if ($photo_title eq $_->{title} ) { print "<extensions><html><![CDATA[ <a href=\"http://www.flickr.com/tprzechlewski/$_->{id}/\" target=\"_blank\"> <img src=\"http://static.flickr.com/$_->{server}/$_->{id}_$_->{secret}_t.jpg\" /> </a> ]]></html></extensions> \n"; } }
Teraz wystarczy dopisać w .emacs
funkcję, która w miejscu wywołania albo zapyta
o tytuł zdjęcia, albo pobierze go sama z wiersza gdzie jest kursor po czym wstawi to co
wypluje ww. skrypt do Emacsowego bufora. Genialne:-)
Na próbę dodałem zdjęcia do śladu
wygenerowanego 16. 12. 2007 r.
BTW patrząc na ten dziwny ślad nie mogę się powstrzymać od sarkazmu, mając w pamięci opinię niejakiej squishy z forum flickr.com: ... it's smaller than many cell phones and I think it's fabulous. I just turn it on and toss it in a backpack, then download the track log later to sync with photos... Gdzie ona mieszka? Na pustyni Gobi? Albo pracuje w Garminie... Albo to sync with photos jest plus/minus 10 kilometers. Bo mój geko 301 prawie zawsze zgubi ślad w trudnym terenie typu las, duże budynki, głębokie doliny itp...
Ten wpis to takie przypomnienie dla mnie. Skype używam sporadycznie i jak włączę to z reguły rozmówca mnie nie słyszy bo FC5 ciągle się rozkonfigurowuje. Zatem aby mnie słyszano trzeba, np. kliknąć w środowisko-preferencje-regulacja głośności i tam przełączyć nastawy w zakładce nagrywanie tak jak to widać na zrzucie ekranowym obok. Tutaj są pomysły na permanentne rozwiązanie problemu zobaczymy czy działające...