sobota, 3 lutego 2018

Migracja do Debian Stretch na jupiterze

Jupiter to mój niepubliczny serwer. Podłączona do niego jest stacja pogody, termometry DS18B20, wykonywane są kopie zapasowe oraz założone repozytorium CSV. No i to powodowało że zabierałem się do aktualizacji systemu jak do jeża. Wszystko było tak stare, że już zapomniałem jak działa--a że działało, to teoretycznie nie było potrzeby wymiany.

Z drugiej strony jednak: system był już tak wiekowy, że niepielęgnowany. Nic nie można było ani doinstalować ani uaktualnić. Ponadto na drugiej szewie była inna wersja -- uruchamiany z karty SDHC Debian Lenny. Uruchamianie z karty (zamiast tego co jest wbudowane w komputerek) wydaje mi się bardziej eleganckie after all. No więc sytuacja dojrzała...

Obejrzałem sobie pliki crontab (roota i jedynego użytkownika tomek) i ustaliłem co trzeba uruchomić: rsync do robienia kopii zapasowych (nie pamiętam jak); pywwws do pobierania danych ze stacji pogodowej i wysyłania na wundergroud oraz jakieś skrypty Perla do prezentowania danych pogodowych na stronie pinkaccordions.blogspot.org (nie pamiętam jak to było konfigurowane); wreszcie odtworzenie repozytorium svn, którego używam na potrzeby wewnętrzne.

  ## Pobranie instalacja:
  root@umbriel:/home/tomek# pip install pywws
  Collecting pywws
  Downloading pywws-17.11.0.tar.gz (465kB) ....

  ## Testowania czy działa:
  root@umbriel:/home/tomek# pywws-testweatherstation
  10:52:45:pywws.Logger:pywws version 17.11.0, build 1380 (b01d94a)
  0000 55 aa 80 10...
  
  ## pakiet został umieszczony tutaj:
  /usr/local/lib/python2.7/dist-packages/pywws
  
  ## Inicjalizacja (/media/usbstick/Logs/weather/ to katalg z danymi)
  python -m pywws.LogData -vvv /media/usbstick/Logs/weather/
  ## Tutaj jest plik konfigurujący
  vi /media/usbstick/Logs/weather/weather.ini

  ## musiałem dodać typ stacji: ws type = 1080
  ## Wpis do Crontaba
  ## Dane pogodowe z WS1080
  ## 9 * * * *  /usr/local/bin/pywws-hourly -v /media/usbstick/Logs/weather >> \
  ##   /media/usbstick/Logs/root/weather/Hourly.log 2>&1

Wszystko działa but the wundergound. Trzeba dokonfigurować plik weather.ini, żeby pywwws wysyłało tam stosowne dane.

[underground]
station = IPOMORSK8
password = <PASSWORD>
template = default

[hourly]
services = ['underground']
text = []
plot = []

Dokładnie ma być jak wyżej underground a nie wunderground, bo tak się nazywa plik (/usr/local/lib/python2.7/dist-packages/pywws/services/).

Ponieważ mam dwie stacje (druga kupiona w projekcie, który nie został w końcu zrealizowany), to podłączyłem to drugą, do komputera z Debian Lenny (tego uaktualnię za czas jakiś, żeby mieć to samo na obu). Z tym drugim był większy problem bo w systemie nie ma pipa (pipy?)

#http://pywws.readthedocs.io/en/latest/guides/getstarted.html#test-weather-station
# stacja #2 ::

wget --no-check-certificate https://pypi.python.org/packages/49/ed/cd05eff0177b569c60230db5c13aded51355aada59f7f9d441d2d1353c4f/pywws-17.11.0.tar.gz
tar -zxvf pywws-17.11.0.tar.gz 
cd pywws-17.11.0
python setup.py build
python setup.py install

wget --no-check-certificate https://pypi.python.org/packages/fc/38/026f001aa0cf2656a3e52556be73cb2a84fc7f6f40ae1bf75099cb6fa3ea/libusb-1.0.21b1.zip
unzip libusb-1.0.21b1.zip 
cd libusb-1.0.21b1
python setup.py build
python setup.py install

wget --no-check-certificate https://pypi.python.org/packages/ec/5d/4fdac6c53525786fe35cff035c3345452e24e2bee5627893be65d12555cb/libusb1-1.6.4.tar.gz
tar -zxvf libusb1-1.6.4.tar.gz 
cd libusb1-1.6.4
python setup.py build
python setup.py install

neptune:/home/tomek# mkdir /media/patriot/Logs
neptune:/home/tomek# mkdir /media/patriot/Logs/weather
neptune:/home/tomek#  python -m pywws.LogData -vvv /media/patriot/Logs/weather/
09:27:28:pywws.Logger:pywws version 17.11.0, build 1380 (b01d94a)
09:27:28:pywws.Logger:Python...

## Na stronie wunderground dodałem drugą stację, po czym
## dopisałem co trzeba do weather.ini
vi /media/patriot/Logs/weather/weather.ini

[underground]
station = ISOPOT14
password = <PASSWORD>
template = default

Obie działają

Kopie zapasowe

No robię kopie, chociaż nie były mi potrzebne przez 6 lat eksploatacji moich komputerków. Strategia jest taka, że co tydzień robię kopię całego systemu a co 24h wybranych katalogów. Wszystko w sumie prosto ale problem pojawił się w przypadku tworzenia kopii na innym komputrze:

#!/bin/bash
# Kopią jest cały system na innym komputerze (neptune):
SOURCE=neptune::wholefs/
ROOTLOG=/media/usbstick/Logs/root/RSync/rsync-neptune.log

EXCLUDE=/root/.rsync/backup_exclude_neptune.lst
DESTDIR=/public/sheeva/backup/neptune/rootfs
COPYDIR=/public/sheeva/backup/neptune
rsync -av --bwlimit=500 --exclude-from=${EXCLUDE} --delete ${SOURCE} ${DESTDIR}

## Edytujemy /etc/rsyncd.conf
max connections = 2
log file = /var/log/rsync.log
timeout = 300

[share]
comment = Public Share
path = /home/share
read only = no
list = yes
uid = nobody
gid = nogroup
auth users = tomek
secrets file = /etc/rsyncd.secrets

##  Zawartość rsyncd.secrets

/etc/rsyncd.secrets
user:<PASSWORD>

## /etc/hosts
#Dopisane
192.168.1.142   neptune.pinaccordions.org       neptune
     
## na neptune konfiguracja demona
/etc/rsyncd.conf
hosts allow = 192.168.1.121

Sprawdzenie czy działa

rsync neptune::wholefs/

Svn

Prosta sprawa

# zapisanie starego
svnadmin dump svnrepo > svnR.out
# odtworzenie
svnadmin create svnrepo
svnadmin load svnrepo < svnR.out

Ponieważ mam trzy sheevy, miałem ten komfort że uruchomiłem zapasową, na której wszystko dokonfigurowałem. Ta nowa którą nazwałem umbriel przejęła zadania starej, którą po 6 latach wyłączyłem. Zamiast jupitera jest zatem umbriel (księżyc Urana), bo jupiter się mi już znudził.

poniedziałek, 22 stycznia 2018

Protest przeciwko zachowaniu

Kuriozum goni kuriozum. Robiący wiatr od 2 lat debile (KOD, i inni) protestowali 17.01.2018 przeciw (zachowaniu się :-) opozycji. Czemu debile?

Bo działają jak debile. Większość parlamentarna nie uchwali ustawy zgłoszonej przez mniejszość, to jest oczywiste. Że nie przyjmie ustawy sprzecznej ze swoim programem -- podwójnie oczywiste. Po cóż więc tracić czas na projekt mający dokładnie 0 (zero) szans powodzenia na realizację, i z tego powodu wszczynać kryzys?

Jeżeli z powodów czysto wizerunkowo-propagandowych, to kto-kogo bardziej oszukał? Biernacki przecinający PR-owy balon od razu, czy ci co chcieli gonić zajączka dalej? No i wreszcie z punktu widzenia elementarnych zasad demokracji parlamentarnej: oszukali was?, to głosujcie na innych. To takie proste. Ale tych innych-ni-ma, i tu jest problem. Stąd pewnie ,,protest przeciwko zachowaniu'' (domagamy się zmiany ,,zachowania''). Arbitrzy elegancji się kurna znaleźli...

It is better to keep your mouth closed and let people think you are a fool than to open it and remove all doubt.

niedziela, 14 stycznia 2018

Finis pseudoelit?

Wpis pro memoria, bo to co się dzieje teraz w pale się nie mieści. Zatem kalendarium pokrótce:

9 stycznia 2018. Tzw. wielka rekonstrukcja rządu, w tym pozbycie się A. Macierewicza. Część tzw. twardego elektoratu PiS demonstruje jawnie wielkie rozczarowanie. Pachnie problemami dla partii rządzącej, potencjalnym podziałem. AntyPiS ma nadzieję--wydaje się uzasadnioną. Przew. Schetyna wieszczy wojnę domową. Wygląda na poważny kryzys... (szczegóły tutaj)

Dzień po, czyli 10 stycznia w Sejmie procedują (pierwsze czytanie) tzw. obywatelskiego projektu ustawy pn O prawach kobiet i świadomym rodzicielstwie. Ustawa jest światopoglądowa, a dobrą tradycją jest nie zarządzania dyscypliny w takich sprawach, zwłaszcza w partiach światopoglądowo zróżnicowanych. Ww. Schetyna uważa inaczej--Platforma Obywatelska jest jedynym klubem (chyba), w którym taką dyscyplinę zarządzono. Nb. ustawa nie ma szans na uchwalenie (co jest oczywiste--przecież partia rządząca nie uchwali ustawy zgłoszonej przez opozycję i to taką z pianą na pysku chociażby dlatego, że dziwne byłoby branie na siebie odpowiedzialności za realizowanie nie swojego programu wyborczego -- przecież PiS nie obiecywało w tym temacie złagodzenia ustaw w/s aborcji czy obowiązkowej edukacji/indoktrynacji seksualnej dzieci) i jest wysoce beznadziejna merytorycznie.

Projekt zostaje odrzucony i nie przechodzi do prac w komisjach. Staje się tak z powodu dziwnej obstrukcji ze strony części posłów opozycji (dziwnej bo w sumie nie wiadomo czym motywowanej). Otóż 40% Nowoczesnej i 25% posłów PO nie popiera wniosku o dalsze procedowanie projektu, który to wniosek popierają źli ludzie z PiS typu prezes, b. minister Macierewicz czy Krystyna Pawłowicz. Wywołuje to szok, oburzenie i niedowierzanie:-) Trzech posłów PO zostaje usuniętych z partii...

W mediach, także antPiSowych, następuje wysyp opinii/komentarzy/analiz, iż opozycja jest beznadziejna i potrzebna jest inna, nowa. 2 lata wysiłków antyPiSa poszło się bujać albo inaczej: po 2 latach intensywnych wysiłków antyPiS jest dużo głębiej w ciemnej dupie niż był w 2015 roku jak przerżnął wybory i wydawało mu się, że już gorzej być nie może. Taka teza jest powszechna, nie ma innej narracji. Oczywiście nie wywołuje to refleksji: czy naprawdę jesteśmy tak (intelektualnie) wspaniali jak to sobie wmówiliśmy. Tradycyjnie winni są ONI (tym razem politycy typu Schetyna--tak jakby intelektualnie wspaniali nie mogli sobie wybrać lepszych i byli skazani na nieudaczników).

Jednocześnie pojawiają się głosy przed sesją Sejmu, że PiS samo wywoła kryzys--nie uchwalenie budżetu skutkuje -- zgodnie z konstytucją -- przyśpieszonymi wyborami. W sytuacji kompletnego uwiądu opozycji wynik tych wyborów byłby raczej łatwy do przewidzenia. Nic takiego nie następuje -- na tej samej sesji Sejmu bez zbędnych ceregieli uchwalono budżet na 2018 rok. Żaden z liderów opozycji nie zabrał głosu w sprawie. Jaskrawo to kontrastuje z tzw. puczem organizowanym rok wcześniej.

Ekspert TVN czyli R. Giertych twierdzi Nowacka jest agentem Kaczyńskiego (twitter: podejrzewam, że projekt @barbaraanowacka został zrobiony na zlecenie @pisorgpl).

W kolejnych dniach opozycja demonstruje nadzwyczajną skłonność do autodestrukcji (powód: umysłowa niesprawność?). Przykładowo była premier Kopacz/Nowa przewodnicząca Lubnauer opowiadają w detalach w mediach jak to było (zamiast milczeć i/lub zmienić temat). Lubnauer jest powszechnie wyśmiewana za naiwne tłumaczenia w rodzaju: jesteśmy nową partią i nie mamy jeszcze doświadczenia. Poseł Mężydło (PO): nie ma co myśleć o wygraniu wyborów w 2019. Powszechne są opinie, że partia pn. Nowoczesna jest już trupem.

W tle tych wydarzeń i na dokładkę osobnik, który wydawał się elitom wybitny, kompetentny i świetny pod każdym względem czyli R. Petru obwieszcza z poważną miną inicjatywę ponadpartyjną (cokolwiek to znaczy) pn. planPetru. PlanPetru póki co to jednostronicowa ulotka umieszczona na zarządzanej przez WordPressa stronie pn. planpetru.pl

Przed Sejmem demonstracja rozczarowanych. Nad tłumkiem powiewają czerwone flagi. IMO w PL maszerowanie z czerwoną flagą wydaje się samobójstwem, ale kto bogatemu zabroni? No i wreszcie "elita" nie używa fałszywych tylko przychodzi ze swoimi (flagami).

wtorek, 21 listopada 2017

Instalowanie Debiana Stretch na SheevaPlug


Stretch zainstalowany

Co to jest SheevaPlug? Przodek rapberryPi. Ciągle używam, bo jest niezawodne, a z rapberryPi jest gorzej -- czasami przestaje działać. Rzadko bo rzadko ale się zdarza.)

Ponieważ SheevaPlug (dalej Szewa) jest taka stara to i Debian na niej do nowych nie należy. Sytuacja dojrzała do wymiany. Mam na szczęście rezerwową/testową Szewę, co ułatwia decyzję, bo w razie problemów z aktualizacją nie zostanę z niczym.

Korzystam z tej samej strony co lata temu kiedy zaczynałem z Szewą, tj. Installing Debian on Plug Computers, która opisuje wszystko detalicznie i zawiera wszystko co potrzeba. Procedura jest prosta:

1. Należy uaktualić firmware zwany U-bootem. W tym celu trzeba się połączyć z Szewą kablem miniUSB-USB i uruchomić na PCcie program cu:

cu -s 115200 -l /dev/ttyUSB0

Teraz trzeba włączyć Szewę, a w terminalu PCta należy szybko nacisnąć dowolny klawisz co przerywa normalną sekwencję startu systemu i U-boot przechodzi do trybu interaktywnego zgłaszając się znakiem zachęty. Polecenie:

Marvell>> version

Pokazuje wersję system. Jeżeli w nazwie jest Marvell albo wersja jest stara (przed 2014/10) to należy dokonać aktualizacji. Przed aktualizację należy koniecznie ustalić MAC adres urządzenia Ja miałem przepisany z dokumentacji na obudowie; jak ktoś nie wie jaki ma adres, to może wydać polecenie:

print ethaddr

Teraz pobieramy stosowny firmware i kopiujemy go na (bootowalny) pendrive. Pendrive wsadzamy do Szewy, po czym wydajemy polecenie:

usb start
fatload usb 0:1 0x0800000 u-boot.kwb

Następnie

nand erase 0x0 0x80000
nand write 0x0800000 0x0 0x80000

Restartujemy szewę

reset

Na koniec przywracamy MAC adres

setenv ethaddr 00:50:43:01:c0:ab
saveenv
reset

Uwaga: przy (re)starcie komputer zawiśnie na etapie ładowania systemu, którego jeszcze nie ma...

2. Poniższy opis zakłada instalowanie systemu z karty SDHC (bo tak jest najprościej, skoro system ma potem być z tejże karty uruchamiany). Zatem należy sformatować kartę SDHC jako ext2 (wyłącznie ext2, nie należy używać innych typu ext4, że niby lepsze). Do tego użyłem gparted.

3. Pobieramy instalator składający się z 2 plików (SheevaPlug without eSATA: uImage and uInitrd). Pobrane plik kopiujemy na sformatowaną kartę. Kartę wsadzamy do Szewy, z którą połączymy się kablem miniUSB/USB i programem cu w sposób identyczny jak w przypadku aktualizacji firmware'a), wydajemy polecenie (jeżeli karta jest sformatowana jako vfat to zamiast ext2load ma być fatload):

ext2load mmc 0:1 0x00800000 /uImage
ext2load mmc 0:1 0x01100000 /uInitrd

Uruchamiamy instalator:

setenv bootargs console=ttyS0,115200n8 base-installer/initramfs-tools/driver-policy=most
bootm 0x00800000 0x01100000

Instalacja trochę trwa, ale jest bezproblemowa. Well, był problem bo zapomniałem wpisać następującej sekwencji (When the installation is done, you have to configure u-boot so it will automatically boot Debian. Interrupt the boot process of u-boot and enter the following commands.):

setenv bootargs_console console=ttyS0,115200
setenv bootcmd_mmc 'ext2load mmc 0:1 0x00800000 /uImage; ext2load mmc 0:1 0x01100000 /uInitrd'
setenv bootcmd 'setenv bootargs ${bootargs_console}; run bootcmd_mmc; bootm 0x00800000 0x01100000'
saveenv

Przyznam się bez bicia, że ponieważ pominąłem ten krok i system zawisł beznadziejnie potrzebna była konsultacja aż samego Marina Michlmayra.

Uwaga: 0:1 to nazwa bootowalnej partycji. Może być inna, można to ustalić wpisując (pierwsza wypisana jest bootowalna):

Marvell>> usb dev
Marvell>> usb part 0

Ostatecznie:

run bootcmd

Znowu dałem D... Nie przywracając MAC-adresu, co objawiło się tym że wprawdzie system się bootował ale instalator nie mógł się połączyć z Internetem. Należy czytać dokumentację uważnie i bez pośpiechu cnd.

Z uwagi na to, że projekt Szewa wydaje sie być dead&burried skopiowałem co trzeba lokalnie tutaj, na wypadek gdyby zniknęło w Internecie.

poniedziałek, 20 listopada 2017

Przeniesienie bloga zarządzanego przez WordPress na inny komputer

Problem jest oto taki, że chcę przenieść kopię bloga (oryginał jest/był na serwerze nazwa.pl) na Sheevaplug (taki rodzaj NAS), która byłaby dostępna przez Internet. Pierwszy krok do likwidacji bloga na nazwa.pl, bo drogo BTW.

Na Sheevaplug jest zainstalowany Debian w wersji Stretch i nie ma WordPressa.

Rozpocząłem od pobrania narzędzia wp-cli ze strony wp-cli.org/. Zainstalowałem toto (prawie) w sposób opisany na ww. stronie, tj.:

https://raw.github.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar ~/bin/wp

Heurystycznie ustaliłem, że treść tego konkretnego klonowanego bloga znajduje się bazie mysql (teksty) oraz w katalogu wp-content, w którym to w szczególności są zdjęcia (wp-content/gallery) oraz filmy i chmara jakiś plików .gif (wp-content/wp-uploads). Oprócz tego są jeszcze katalogi themes, upgrade, plugins, ngg oraz languages. Uprzedzając wydarzenia wszystko kopiuję jak leci ze starej instalacji (w obu jest/będzie ta sama wersja WP). Natomiast teksty z bazy eksportuję (do pliku SQL):

 wp db export

Można też to zrobić logując się do URL-BLOGA/wp-admin. Teraz wszystko ściągam korzystając z rsync (/media/WP-SITE/ oraz /media/WPSQL/ to oczywiście przykłady):

rsync -avzP -e "ssh" USER@BLOG:PATH-TO-WP/wp-content/* /media/WPSITE/
rsync -avzP -e "ssh" USER@BLOG:PATH-TO-WP/_sqldump_/* /media/WPSQL/

Zamiast rsync można użyć ftp albo:

scp -r USER@BLOG:path/to/files/

Teraz pobrałem archiwum WP ze strony wordpress.org/download/ i rozpakowałem je (Uwaga: być może można skopiować po prostu całą starą instalację WP na nowy komputer i będzie działać, ale ja tak nie robiłem.):

wget https://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz

Za pomocą klienta mysql stworzyłem użytkownika pn. wordpress, który otrzymał stosowne uprawnienia. Utworzyłem następnie bazę pn. wordpress:

  mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
  mysql> CREATE DATABASE wordpress;
  Query OK, 1 row affected (0.00 sec)
 
  mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'user'@'localhost'
  -> IDENTIFIED BY '*password*';
    Query OK, 0 rows affected (0.00 sec)

Następnie wstawiłem stosowne wpisy do wp-config.php

define('DB_NAME', 'wordpress');
define('DB_USER', '**USER**');
define('DB_PASSWORD', '**PASSWORD**');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');

Teraz zaimportowałem treść bloga do bazy:

wp db import kopia-bazy.sql --path='/var/www/html/'

Doczytałem, że trzeba zmienić URLe ze starych na nowe:

wp search-replace 'STARY-URL' 'NOWY-URL' --dry-run

Konkretnie w moim przypadku:

  wp search-replace 'http://nazwabloga.nazwa.pl/' 'http://oberon.pinkaccordions.org/' \
  --path='/var/www/html/' --dry-run
  ## --dry-run nic nie zmienia ale wyświetla raport
  ## jeżeli wszystko jest OK:
    wp search-replace 'http://nazwabloga.nazwa.pl/' 'http://oberon.pinkaccordions.org/' \
     --path='/var/www/html/'

Sprawdzam i nie działa, ale wypisuje, że nie ma jakiegoś theme. No to kopiuję jak leci ze starej instalacji katalogi themes, upgrade, plugins, ngg, languages, o czym już pisałem. Teraz działa.

Jeszcze został problem udostępnienia tego w Interncie poprzez DynDNS. Sprawę komplikuje to, że mam już dwa zarejestrowane serwisy a Tomato wydaje się obsługiwać tylko dwa hosty. Okazuje się wszakże że pole host niekoniecznie musi zawierać pojedynczy wpis, może zawierać listę oddzielonych przecinkami nazw hostów. No to dopisałem następny host z puli, którą mam oraz dopisałem co trzeba w Tomato.

Dodatkowa komplikacja jest taka, że chcę ten sklonowany blog udostępnić na innym komputerze. Konkretnie do tej pory udostępniałem jeden komputer, a teraz będą dwa. Na taką okoliczność oprócz dopisania nazwy hosta do listy trzeba także zmodyfikować wpis w części port forwarding (por. rysunek). Drugi komputer wymaga mianowicie zadeklarowania innego ExPort-u.)

Po tym wszystkim nadal działa:-)

wtorek, 31 października 2017

Geotagowanie zdjęć za pomocą ExifTool

Uwaga: Poniżej zakłada się, że program ExifTool jest używany w środowisku MS Windows.

Pobierz plik ExifTool.exe i umieść go w jakimś katalogu (SomeDir)

Otwórz wiersz polecenia (przejdź do wyszukiwania systemu Windows, wpisz polecenie cmd i otworzy się okno)

W oknie wiersza polecenia zmień katalog na SomeDir.

Geotagowanie zdjęć przy użyciu śladu w formacie GPX

Zdjęcia zrobione z nowoczesnych smartfonów są już geotagowane (jeśli opcja Lokalizacja jest włączona).

Dla aparatów nie wyposażonych w GPS, geotagowanie jest możliwe jeżeli dysponujemy śladem (zarejestrowanym za pomocą zewnętrznego odbiornika GPS.)

Synchronizowanie zdjęć ze śladem GPS

Pobierz plik GPX z odbiornika/rejestratora GPS (dokładna procedura zależy od typu odbiornika GPS) do katalogu SomeDir.

Zrób zdjęcie odbiornika GPS/ekranu lub wyświetlacza, na którym wyświetlany jest zegar z dokładnym czasem (na przykład ekranu komputera/smartfona).

Wpisz w wierszu poleceń:

exiftool -DateTimeOriginal IMG_20171021_113121.jpg 
Date/Time Original : 2017:10:29 11:52:46

Wartość taga DateTimeOriginal określa, że zdjęcie zostało wykonane o 11:52:46. Dokładny czas odczytujemy ze zdjęcia. Załóżmym że czas na zdjęciu wynosi 11:50:19 CET. Zatem DateTimeOriginal jest równe 11:52:46 CET a czas dokładny 11:50:19 CET, stąd różnica 11:32:46 - 11:50:19 = 2min 27s.

Wszystkie odbiorniki GPS wewnętrznie używają/rejestrują wyłącznie używając czasu UTC, nawet jeśli na ekranie pokazywany jest czas lokalny (Por. UTC_offset). Zwykle aparat wewnętrznie korzysta z czasu lokalnego. Jeśli tak jest, należy zadeklarować odpowiednie przesunięcie UTC_offset (w przeciwnym przypadku exiftool używa systemowego przesunięcia czasu względem UTC).

Skopiuj wszystkie zdjęcia do programu SomeDir.

Wpisz w wierszu poleceń:

exiftool -geosync=-02:27 '-geotime<${DateTimeOriginal}+01:00' -geotag my_gps.log SomeDir

Tag Geotime określa punkt w czasie dla którego obliczana jest pozycja GPS. Zapis -geotime<${DateTimeOriginal}+01:00 oznacza, że pozycja jest obliczana według czasu z taga DateTimeOriginal. Zaś dodanie +01:00 ustala CET jako strefę czasową (Przesunięcie +01:00 względem UTC)

Tag Geosync dodaje dodatkowy dryft czasu, jak wyjaśniono powyżej.

Utworzenie pliku KML

Opcja -p służy do generowania plików GPX i/lub KML.

exiftool -fileOrder gpsdatetime -p gpx.fmt SomeDir > SomeTripPhotos.gpx

albo

exiftool -fileOrder gpsdatetime -p kml.fmt SomeDir > SomeTripPhotos.kml

Pliki KML mogą być importowane do Map Google i Google Earth.

Uwaga: jeżeli mapa ma być wyświetlona nie lokalnie, ale na jakimś serwerze WWW (na przykład: http://www.gpsvisualizer.com/), zdjęcia muszą być przesłane na jakiś serwer, a następnie w pliku KML/GPX należy poprawić linki do tychże zdjęć. Dokładna procedura zależy od tego, który serwer jest używany do przechowywania zdjęć.

Przykładowe pliki formatów

gpx.fmt

#[HEAD]<?xml version="1.0" encoding="utf-8"?>
#[HEAD]<gpx version="1.0"
#[HEAD] creator="ExifTool $ExifToolVersion"
#[HEAD] xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
#[HEAD] xmlns="http://www.topografix.com/GPX/1/0"
#[HEAD] xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
#[BODY]<wpt lat="$gpslatitude#" lon="$gpslongitude#">
#[BODY]  <name>$directory/$filename</name>
#[BODY]  <ele>$gpsaltitude#</ele>
#[BODY]  <desc>$directory/$filename</desc>
#[BODY]  <link href="$directory/$filename"><type>large</type></link>
#[BODY]  <link href="$directory/$filename"><type>thumbnail</type></link>
#[BODY]  <time>$gpsdatetime</time>
#[BODY]</wpt>
#[TAIL]</gpx>

kml.fmt

#[HEAD]<?xml version="1.0" encoding="UTF-8"?>
#[HEAD]<kml xmlns="http://earth.google.com/kml/2.0">
#[HEAD]  <Document>
#[HEAD]    <name>My Photos</name>
#[HEAD]    <open>1</open>
#[HEAD]    <Style id="Photo">
#[HEAD]      <IconStyle>
#[HEAD]        <Icon>
#[HEAD]          <href>http://maps.google.com/mapfiles/kml/pal4/icon38.png</href>
#[HEAD]          <scale>1.0</scale>
#[HEAD]        </Icon>
#[HEAD]      </IconStyle>
#[HEAD]    </Style>
#[HEAD]    <Folder>
#[HEAD]      <name>Waypoints</name>
#[HEAD]      <open>0</open>
#[BODY]      <Placemark>
#[BODY]        <description><![CDATA[<br/><table><tr><td>
#[BODY]        <img src='$directory/$filename'
#[BODY]          width='$imagewidth' height='$imageheight'>
#[BODY]        </td></tr></table>]]></description>
#[BODY]        <Snippet/>
#[BODY]        <name>$filename</name>
#[BODY]        <styleUrl>#Photo</styleUrl>
#[BODY]        <Point>
#[BODY]          <altitudeMode>clampedToGround</altitudeMode>
#[BODY]          <coordinates>$gpslongitude#,$gpslatitude#,0</coordinates>
#[BODY]        </Point>
#[BODY]      </Placemark>
#[TAIL]    </Folder>
#[TAIL]  </Document>
#[TAIL]</kml>

Powyższe łącznie z przykładami można pobrać klikając tutaj.

Geotagging images with ExifTool

Note: Below it is assumed that ExifTool is used in MS Windows environment.

Download the ExifTool.exe file and place it in some directory (SomeDir)

Open the Command line (go to windows search, type cmd and the window will open)

In the command line window, change directory to SomeDir.

Geotagging photos using GPX log

Photos taken with modern smartphones are already geotagged (if Location option is On.)

If camera is unable to add geocoordinates geotagging is still possible if GPS log is available (registered with some external GPS receiver/logger).

Synchronize photos with GPS log

Download the GPX file from your GPS receiver/logger (exact procedure depends on the type of GPS receiver) to SomeDir.

Take picture of GPS receiver/or any screen displaying accurate time (PC/Smartphone screen for example).

Type in command line:

exiftool -DateTimeOriginal IMG_20171021_113121.jpg 
Date/Time Original : 2017:10:29 11:52:46

So the file was created at 11:52:46 according to DateTimeOriginal tag. Exact time is depicted. and if for example the time depicted (accurate time) is 11:50:19 CET and DateTimeOriginal is 11:52:46 CET, then the time difference is 11:32:46 - 11:50:19 = 2min 27s, ie. accurate time is obtained by substracting 2min 27s from DateTimeOriginal.

All GPS receivers internally use/record UTC time only, even if they diplay local time (cf UTC_offset). Usually the camera internally uses local time. If it is the case one should declare appropriate UTC_offset (otherwise exiftool uses system offset).

Copy all photos to SomeDir.

Type in command line:

exiftool -geosync=-02:27 '-geotime<${DateTimeOriginal}+01:00' -geotag my_gps.log SomeDir

The Geotime tag specifies the point in time for which the GPS position is calculated. -geotime<${DateTimeOriginal}+01:00 means GPS position is calculated according to DateTimeOriginal and it is CET time (+01:00 offset from UTC)

The Geosync tag specifies extra time drift, as explained above.

Generate KML file

Exiftool -p option have to be used to output files in GPX and/or KML.

exiftool -fileOrder gpsdatetime -p gpx.fmt SomeDir > SomeTripPhotos.gpx

or

exiftool -fileOrder gpsdatetime -p kml.fmt SomeDir > SomeTripPhotos.kml

KML files can be imported to Google maps and or Google earth.

Note: If such a map is not displayed locally but upload to some WWW server (http://www.gpsvisualizer.com/ in the case of GPX file for example), photos have to be uploaded to some server first and then URL to photos fixed. Exact procedure depends on which server is used for storing photos.

Example format files

gpx.fmt

#[HEAD]<?xml version="1.0" encoding="utf-8"?>
#[HEAD]<gpx version="1.0"
#[HEAD] creator="ExifTool $ExifToolVersion"
#[HEAD] xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
#[HEAD] xmlns="http://www.topografix.com/GPX/1/0"
#[HEAD] xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
#[BODY]<wpt lat="$gpslatitude#" lon="$gpslongitude#">
#[BODY]  <name>$directory/$filename</name>
#[BODY]  <ele>$gpsaltitude#</ele>
#[BODY]  <desc>$directory/$filename</desc>
#[BODY]  <link href="$directory/$filename"><type>large</type></link>
#[BODY]  <link href="$directory/$filename"><type>thumbnail</type></link>
#[BODY]  <time>$gpsdatetime</time>
#[BODY]</wpt>
#[TAIL]</gpx>

kml.fmt

#[HEAD]<?xml version="1.0" encoding="UTF-8"?>
#[HEAD]<kml xmlns="http://earth.google.com/kml/2.0">
#[HEAD]  <Document>
#[HEAD]    <name>My Photos</name>
#[HEAD]    <open>1</open>
#[HEAD]    <Style id="Photo">
#[HEAD]      <IconStyle>
#[HEAD]        <Icon>
#[HEAD]          <href>http://maps.google.com/mapfiles/kml/pal4/icon38.png</href>
#[HEAD]          <scale>1.0</scale>
#[HEAD]        </Icon>
#[HEAD]      </IconStyle>
#[HEAD]    </Style>
#[HEAD]    <Folder>
#[HEAD]      <name>Waypoints</name>
#[HEAD]      <open>0</open>
#[BODY]      <Placemark>
#[BODY]        <description><![CDATA[<br/><table><tr><td>
#[BODY]        <img src='$directory/$filename'
#[BODY]          width='$imagewidth' height='$imageheight'>
#[BODY]        </td></tr></table>]]></description>
#[BODY]        <Snippet/>
#[BODY]        <name>$filename</name>
#[BODY]        <styleUrl>#Photo</styleUrl>
#[BODY]        <Point>
#[BODY]          <altitudeMode>clampedToGround</altitudeMode>
#[BODY]          <coordinates>$gpslongitude#,$gpslatitude#,0</coordinates>
#[BODY]        </Point>
#[BODY]      </Placemark>
#[TAIL]    </Folder>
#[TAIL]  </Document>
#[TAIL]</kml>

The above with examples can be download from here

poniedziałek, 16 października 2017

Nigvziani Badrijani czyli gruzińskie roladki z bakłażana


Oryginał z Signagi

W czasie ostatniej wycieczki spróbowaliśmy i bardzo nam smakowały. Takie same lub podobne podano nam podczas wycieczki do Armenii, więc być może to potrawa bardziej kaukaska niż gruzińska.

Generalnie jest to smażony bakłażan z pastą z orzechów włoskich z dodatkiem przypraw. Spróbowałem zrobić wersję opisaną na stronie magicznyskladnik.pl i rezultat jest bardzo dobry. Przepis zaś jest następujący:

Bakłażana kroimy na 3-4 milimetrowe plastry, smarujemy olejem i smażymy do miękkości na patelni grillowej lub zwykłej.

W blenderze miksujemy orzechy włoskie, czosnek, kolendrę, pietruszkę kumin, zmielone ziarna kolendry oraz pieprz (proporce do ustalenia). Autor magicznyskladnik.pl modyfikuje przepis miksując orzechy włoskie i migdały w proporcji 2/1.

Smarujemy bakłażany pastą, zawijamy w rulony lub składamy plastry w pół. W Signagi podawane były na zimno i faktycznie na zimno (z lodówki) jakby lepsze.

Jeszcze każą sypać ziarna granatu na zawinięte/złożone rulony, ale w Signagi każdy rulon miał na wierzchu dokładnie 1 ziarno, więc uważam -- być może niesłusznie -- że ten składnik jest do zaniedbania :-)

Jak się wpisze w google: gruzińskie roladki z bakłażana albo georgian eggplant walnuts albo w oryginale jak ktoś potrafi: ბადრიჯანი ნიგვზით to są setki stron na temat. Jest nawet stosowna strona wiki: Badrijani.

piątek, 13 października 2017

Wycieczka do Gruzji i Armenii


Piekarnia ze słodkimi bułami

Przystanek do Signagi (naprzeciw tej stacji)

Lotem W-wa--Tbilisi start 2.10.2017 22.30 lądowanie 4.00 (różnica czasu) powoduje że leci się niby 5,5 godziny (w rzeczywistości jest to 3,5h) Wsiadamy (Elka i ja) w autobus 37 do miasta i wysiadamy przy stacji metra Samgori skąd mają odjeżdżać marszrutki do Singagi. Jest 6 rano, noc i siąpi deszcz. Nie wiemy dokładnie skąd te marszrutki odjeżdżają. Przystanków marszrutek jest pełno--pytanie z którego jadą tam gdzie chcemy się dostać. Paniki nie ma--wiemy że da się to ustalić, a rozkładem nie ma co się przejmować, bo zawsze coś przyjedzie. Pytanie się wszechobecnych taksówkarzy nie ma sensu -- nic nie powiedzą bo sami będą chcieli zarobić. W tym temacie zresztą nawet nie trzeba się ich pytać -- sami namolnie się oferują: najbardziej konkretny najpierw chce 100 lari (160 PLN), w następnym zdaniu już 70. Jakbyśmy się targowali, to może by i mniej chciał, ale my nie jesteśmy zainteresowani. W końcu ustalamy metodą łażenia tam i z powrotem skąd konkretnie ww. marszrutka odjeżdża. Mówi nam to młody Gruzin -- społeczny kierownk przystanku można powiedzieć, bo łaził po placu wte-i-wewte, informował nas i parę innych zgubionych osób gdzie co jedzie, ale nie wyglądało że sam gdzieś się wybiera i że to jest jego zajęcie za pieniądze.

Czekamy, bo pierwsza marszrutka odjeżdża o 9:00. Czekanie umilamy sobie zwiedzaniem pobliskiego dużego bazaru, który właśnie zaczyna działalność (rano jest). W szczególności nabywamy takie fajne słodkie buły, podobne do chaczapuri, tyle że nadziewane dżemem albo jakąś słodką masą zwierającą orzechy. Taka buła to trylion kalorii ale kurcze smaczna jest, tyle że to chyba nie jest Gruzińskie danie, bo później nigdzie tego nie widzieliśmy. Jakby ktoś był w tych rejonach i chciał spróbować, to sklep z bułami jest pod adresem: 2--3 Mevele St (współrzędne 41.684604/44.854012, obok wejścia na bazar).

Marszrutka do Signagi kosztuje 6 lari (od osoby). Jedzie z nami wycieczka Chińczyków (6 osób) lub osób podobnych do Chińczyków. Nb takich osób w całej Gruzji było dość sporo. Być może było to związane z porą roku, ale mało było Polków, dużo Rosjan no i całkiem sporo turystów pochożych na Kitajców...

Aha, przed wejściem do autobusu kupiliśmy na lotnisku gruzińskie karty SIM za 7 i 5 lari (2Gb/1,5Gb). Jest to super proste--specjalne stoisko było czynne nawet tak wcześnie rano. Trzeba podpisać umowę, ale z pomocą kompetentnego, doskonale mówiącego po angielsku sprzedawcy nie stanowi to problemu. Smarfon się przydał a Internet działa całkiem-całkiem. A jak nie działał, to wspomagałem się OsmAnd -- mapą statyczną czyli zainstalowaną na telefonie...

W Signagi też pada. Idziemy na kwaterę pn Nato & Lado guesthouse, z którą kontaktowaliśmy się przez stronę FB. Mieliśmy jakieś obietnice zwiedzania winnicy/uczestnictwa w zbieraniu winogron, ale ponieważ pada nic z tego. Po południu idziemy do Bodbe obejrzeć klasztor pw. św. Nino. Fajna wycieczka i polecam.

Następnego dnia znowu pada. Decydujemy się na zmianę kwatery na Lagodekhi. Z rana idziemy do muzeum--niewielka instytucja i całe zwiedzanie zajęło nam może godzinę, ale można obejrzeć kilkanaście obrazów Pirosmaniego, więc warto. Wyjaśniło się zresztą iż pomnik na mieście osobnika na ośle to nie jest gruziński hołd dla Sancho Pansy tylko doktor na Ośle --motyw z obrazu Pirosmaniego.

Marszrutką jedziemy do Tsnori, które jest o rzut beretem, potem następną do Lagodekhi. Oczekując na przystanku co chwila jesteśmy nagabywani przez taksówkarzy koniecznie chcących zawieść nas do Lagodekhi za jedyne 20 lari. Próba wytłumaczenia im, że nam się nie spieszy i w związku z tym nie mamy cisku na taksówkę, nie odnosi rezultatu.

W Lagodekhi mamy ambitne plany pokonania wszystkich czterech szlaków opisanych w Internetach, więc nie tracąc czasu idziemy prosto do informacji, która jest kilka kilometrów pod górę. Tam pytamy się o realność naszych planów. (Personel mówi dobrze po angielsku BTW.) Jest kiepsko, pada śnieg (w wysokich górach) więc ten trzydniowy odpada, pada deszcz więc te kilkugodzinne też są wątpliwe, zobaczymy jutro--prognozy są takie że będzie pogoda. Proponują nam kwaterę. No i tu popełniamy błąd...

Reguła Wi-Fi (zwana także warunkiem koniecznym Przechlewskiego)

Otóż wg mnie jak na kwaterze nie ma Wi-Fi to nie ma też wielu innych rzeczy, które my uważamy za minimum a Gruzini niekoniecznie. Ponieważ pan w informacji władał dobrze angielskim zgodziliśmy się na kwaterę bez pytania o detale. Na miejscu okazało się że warunki są fatalne: nie ma Internetu; mieszkanie nieogrzewane a jest dość zimo; w związku z zimnem korzystanie z łazienki a zwłaszcza z wanny jest wybitnie teoretyczne; kuchnia jest, ale wspólna z gospodarzami i o wszystko trzeba prosić, co o tyle jest kłopotliwe że kuchnia wprawdzie jest w domu, ale żeby do niej dość, to trzeba wyjść na zewnątrz, obejść chałupę i wejść z drugiej strony (no czajnik elektryczny w pokoju by rozwiązał sprawę, ale jeszcze na to nie wpadli). Kurcze nawet stół w pokoju nie ma obrusa czy czegoś takiego a do tego w pokoju gdzie mamy spać nie ma światła--jest w pokoju obok, tam gdzie stoi stół, tyle że ten z kolei jest przechodni. Żarówki nie wkręcą, bo po co? Przecież się świeci w tym przechodnim... Rosyjski gospodarzy jest beznadziejny. Nasz niewiele lepszy (jeżeli w ogóle lepszy), ale jak Gruzin mówi dobrze to idzie się dogadać, a jak dwie strony kaleczą, to ustalenie czegokolwiek jest trudne.

Jest już późno (o tej porze roku noc zapada koło 19:00), dziś już niewiele zrobimy. Idziemy do miasta coś kupić do jedzenia i się rozejrzeć. Kupujemy chleb w piekarni--facet pyta czy zawinąć. Da pażausta. Wyciąga gazetę, starannie oddziera pół, i zawija--poczułem się 30 lat młodszy. Śmiejemy się z Elką...

Następnego dnia rano (8:00) idziemy na szlak. Tzn. podwozi nas nasz gospodarz, który ma taksówkę. Pierwsze co to jedzie na stację i za 20 naszych lari kupuje paliwo (za te 20 lari zawiezie nas i przywiezie z powrotem). Ten myk już znamy z poprzednich wojaży i nas wcale nie dziwi czemu nie zatankował przed kursem. Pierwszy szlak (do twierdzy Machi) jest łatwy. Około 13:00 wracamy taksówką (co nas kosztuje ekstra 8 PLN bo musimy dzwonić via Polska--jedyny telefon wykonany w Gruzji). Wychodzi nam, że dziś jeszcze warto zrobić drugi szlak--jak jutro pójdziemy na ten wielodniowy, to już nie zdążymy później. Każemy się wieść do Informacji (stamtąd zaczyna się ten drugi szlak pn Ninoskhevi Waterfall aka Great Waterfall). Ciężko jest wytłumaczyć Gruzinowi, że nie chcemy jeszcze wracać do domu ale udaje się...

Coś trzeba zjeść więc prosimy naszego kierowcę, że my choczom pokupić chaczapuri. To akurat zrozumiał i nas zawiózł do niepozornego lokalu. Wchodzimy nie ma chaczapuri--piecze się i będzie za 10 minut, są jakieś pierogi. No-to-nie, wracamy. Kierowca widząc, że wracamy za szybko pyta się co się stało i sam proponuje że poczeka. No to wracamy z powrotem.

Może te pierogi sobie kupimy co nam proponowali w oczekiwaniu na chaczapuri? Zamawiamy--nie ma. Kurcze dziwne, skończyły się a jakby klientów oprócz nas nie było...


Chaczapuri z Lagodekhi

Chaczapuri za 1,5 lari od sztuki (2,40 PLN) jest super. Na czymś w rodzaju francuskiego ciasta. Bierzemy jeszcze dwa na wynos na kolację. W Gdańsku w piekarni gruzińskiej chaczapuri o jakości take-awaya podgrzewanego na mikrofali z Tbilisi 16 PLN (dla porównania). Taksówkarz pojechał gdzieś i musimy chwilę poczekać (pytał się czy może, nie porzucił nas) -- się okazuje, że złapał kurs, wraca pod chaczapurnię z kobitą z dzieckiem. Po drugiej stronie ulicy jest bank, przywiózł je do banku. No proszę jaki zaradny.

Jedziemy teraz do Informacji pytać się co dalej. Tam już jest inna obsada--bardziej konkretna. Mówią że lepiej nie iść na Black Rock Lake i my też coś czujemy, że to nie byłoby rozsądnie. Trzeba być przygotowanym (buty/śpiwór/aprowizacja) i mieć jakieś tam doświadczenie. To nie dla nas... Pytamy się że może do połowy dość i wrócić -- podobno nie warto. Dwa dni łażenia po lesie a dopiero druga połowa jest super-atrakcyjna widokowo. Ostatni ze szlaków -- Black Grouse Waterfall -- jest zalany wodą i niedostępny No to sprawa jest jasna: dziś jeszcze przejdziemy się do wodospadu a jutro pojedziemy do stolicy.

Drugi szlak jest znacząco trudniejszy i bardziej męczący. Schodzimy ze szlaku praktycznie równo z nadejściem zmierzchu, mając w nogach +20km. W nocy rezerwujemy nocleg w hostelu Envoy, w którym już nocowaliśmy w 2015 roku. Po prostu wysyłam im emaila i po chwili jest potwierdzenie--być może dlatego tak szybko, że już nas znają.

To że tu wszystko na gębę można załatwić w 15 minut i za taką samą cenę jak rezerwowane miesiąc wcześniej, to jasna strona Gruzji:-)

Dwa szlaki zaliczone. Z dwóch co zostały do zaliczenia jeden jest za trudny, a ostatni -- zalany wodą i nie radzą tam chodzić. Rano wiozą nas taksówką (10 lari) na postój marszrutek. Nawiasem mówiąc za pobyt zapłaciliśmy 60 lari a za trzy krótkie kursy taksówką 30 lari. Paradoks. Być może było się targować...

Tbilisi

Marszruta nie staje na Samgori, tylko gdzie indziej. Nie wiemy dokładnie gdzie, ale po chwili widzimy stację metra. Wyciągam smartfona. Przez google maps ustalam, że do Envoya jest 40 minut piechotą, a jak pojedziemy metrem na stację Avlabari, to stamtąd jest 12 minut. Wysiadamy na Avlabari. Eeee, te rejony to my już znamy. Lecimy do Envoya, zostawiamy bagaże i do wieczora chodzimy po mieście.

Ciekawostką są setki kibiców Walii w koszulkach narodowych -- niechybny znak, że dziś wielki mecz w piłkę kopaną. Nawet przez chwilę rozważałem pójście, ale dałem sobie spokój (gdyby grali rugbyści to by nie było dylematu.) Rano pytam się recepcjonistę o wynik--nie wie. You prefer rugby? Yes--nie wiem czy szczerze czy przez grzeczność potwierdził.

Walia wygrywa 1:0.

W sobotę-niedzielę będzie się odbywał festyn pn: Tbilisoba. Więc nasze plany są takie: w Sobotę bierzemy udział w festynie a w niedzielę zapisujemy się na wycieczkę do Armenii. Impreza festynowa okazuje się mało ciekawa: część towarzyska atrakcyjna dla Gruzinów, którzy wszędzie stawiają grille i jedzą te swoje szaszłyki ale to nie dla nas; część artystyczna nieobecna praktycznie, na scenach nic się nie dzieje; cześć handlowe mizerna, kupa ludzi ze wsi sprzedaje to co zwykle. Rozczarowanie i nie polecam.

Normalnie to chodziliśmy na obiad do Machakhela na placu Vakhtang Gorgasali (Nb to chyba sieciówka bo identyko lokal był/jest w Batumi.) ale z uwagi na tłumy szukamy czegoś poza centrum i decydujemy się na Cheburek Cafe, zaraz za łaźniami tureckimi (ulica Ioseb Grishashvili). Chcemy zupę z fasoli, po dwa chinkali i coś warzywnego. Zupy nie ma, chinkali nie ma nawet w menu (to chyba nie jest lokal prowadzony przez Gruzinów). W zamian proponują -- elementary my dear Watson -- czebureki. Niezłe. Pierwszy raz w życiu jadłem, a do czerwca br. to nawet nie wiedziałem co to jest (w czerwcu w Jastrzębiej Górze zobaczyłem toto w budzie fastfudowej).


Tbilisi nocą

W nocy z soboty/niedzielę nie mogę spać, o 4:00 idę zwiedzać Tbilisi/sprawdzić jak wygląda festiwal nocą. Wcale nie wygląda, bo w sumie nic się nie dzieje. Ulice opustoszałe oprócz tych w centrum gdzie są lokale i trochę ludzi się kręci. Tbilisi jest fajnie podświetlona więc wpadam na pomysł pyknięcia paru fotek z wysokości twierdzy Narikala. Idę w górę, nikogo, kompletnie wyludniona okolica. Na górze nawet stragan z całym szajsem pozostawiony bez dozoru... Wracam o 5:30 do Envoya.

Ten nocny wojaż to także empiryczna weryfikacja stanu bezpieczeństwa w Gruzji. Zero strachu wałęsania się po obcym mieście w nocy. Zresztą nie spotkałem tutaj nikogo podobnego do chuligana--chlory są, wiadomo, bo to biedny kraj jest, ale agresywna młodzież--nie widziałem. No i podobno policja jest sprawna/nieprzekupna.

Armenia

Wycieczkę do Armenii wykupiliśmy w hostelu za 135 lari od osoby. W programie wyjazd do trzech klasztorów: Sanahin, Hachpat i Akhtala (w kanionie rzeki Debed), w takiej właśnie kolejności. Wyjeżdżamy o 9.00 około 14:00 mamy obiad przygotowany przez Ormiańską rodzinę we wsi Hachpat. Wracamy około 20:00. Wrażenia mieszane. Pozytywy: widoki, klasztory, obiad (kuchnia Ormiańska IMO jest lepsza od gruzińskiej, która jak dla mnie jest zbyt kaloryczna w części jarskiej, że tak powiem oraz obok moich upodobań z tymi swoimi szaszłykami i innym czerwonym mięsem), fajne towarzystwo z całego świata (USA, Nowa Zelandia, Australia, Niemcy no i my). Negatywy: straszna bieda i zdegradowana do niepojętych granic infrastruktura/domy, które trzeba oglądać...

Odmeldowujemy się z Envoya. Kupuję na mieście chaczapuri w wersji take-away i jemy je na trawniku obserwując dogorywającą imprezę pn. Tbilisoba. Stoiska już w większości są zamknięte, ludzie z prowincji zwijają biznesy. W hostelu twierdzili, że na scenie w pobliżu łaźni będzie gala koncert, ale słusznie stwierdziliśmy że to false-alarm jest i nie poszliśmy tam (podejrzane wydało się miejsce dla tego koncertu--toż tam w ogóle nie ma przestrzeni dla widzów). Że było to słuszne posunięcie potwierdza kompletna cisza -- gdyby grali/śpiewali byłoby coś słychać--nasz trawnik jest niedaleko.

Nota Bene Elka-optymistka sugeruje jechać na lotnisko i tam coś zjeść (don't do that--ceny z księżyca), na szczęście jej nie słucham. Około 22:00 jedziemy na lotnisko autobusem linii 37. Do odlotu zostało nam 7 godzin, ale w sumie nie ma nic do roboty. Od Envoya do najbliższego przystanku 37 jest blisko, należy tylko przejść przez most, a następnie kierując się na stację metra, minąć ją i szukać pierwszego przystanku autobusowego po prawej stronie. Przejazd jak zwykle, tj. pół lari czyli około 80 groszy.


Sklep przy lotnisku

Na lotnisku nie ma co robić, zabijając czas można by coś kupić i zjeść--ceny wszakże zniechęcają. Moja ulubiona, bo duża, kawa Americano za 14 PLN, i jest tego może 100ml (jak to jest Americano to jak wygląda Espresso:-?). W Wa-wie to się w Costa dostaje za podobną cenę pół litra.

Nie kupuję, idą sobie sprawdzić przed lotniskiem. I jest sukces. Obok efektownego posterunku policji (Isani Samgori PoliceStation #6 na google maps) jest mały sklepik, a w nim normalne ceny. He, he... ostatnia sprawiedliwa na wschód od Tbilisi (sprzedawczyni zwana w PRL sklepową) śpi, stukam w szybę: Kofi u was jest. -- Jest... Jest też lodówka z lodami: katoryje morożenoje charosze? -- Wsie charosze... No i faktycznie dobre były.

Tbilisi-Wwa start 9.10.2017 05.05 rano.

Przydatnie informacje

Wycieczka wyszła nam 1500PLN/łep z czego połowa to cena biletów lotniczych. Specjalnie się nie ściskaliśmy z kasą wię pewnie dałoby radę i taniej, ale po co?

Miejsce odjazdu marszrutek spod Samgori do Singagi: 2 Ketevan Dedofali Ave (wsp. geograficzne: 41.686001/44.852066)

Chaczapurnia w Lagodekhi: 23 Qiziki St., naprzeciw oddziału Libery Bank (jeżeli czegoś nie pokręciłem)

Ślad ze zdjęciami do twierdzy Machi oraz wodospadu Ninoskhevi

Tani sklepik pod lotniskiem: po lewej patrząc od terminala w stronę miasta, tj. przed posterunkiem policji (wsp. geograficzne 41.673424/44.961378)

Ślady naszych wycieczek 2014/2015/2017 (czerwony -- 2014, niebieski -- 2015)

Zdjęcia z wycieczki z 2017

Dane w formacie GPX/KML do pobrania tutaj

wtorek, 10 października 2017

Trzecia podróż na Kaukaz

Właśnie wróciliśmy z Elką z Gruzji i Armenii, która to wycieczka była naszą trzecią w tamte rejony. Zanim więcej na temat, na razie podsumowanie naszych wyczynów w postaci pliku GPX (na pierwszej mapie czerwona kreska oznacza rok 2014, niebieska -- 2015, ciemno-zielona -- 2017): 2014-17 | 2014 | 2015 | 2017

Ponieważ powyższe linki prowadzą do dość rachitycznego serwerka, to na wypadek gdyby ów zniknął albo przestał działać kopie plików GPX są w repozytorium na githubie tutaj

środa, 27 września 2017

Żuławy wKoło 2017 -- podsumowanie

Podsumowanie wyników dla lat 2015--2017

z16 <- read.csv("wyniki_zulawy_2016_D.csv", sep = ';',  header=T, na.string="NA", dec=",");
aggregate (z16$time, list(Numer = z16$dist), summary)
z16$year <- 2016;

z15 <- read.csv("wyniki_zulawy_2015_D.csv", sep = ';',  header=T, na.string="NA", dec=",");
aggregate (z15$time, list(Numer = z15$dist), summary)
z15$year <- 2015;

z17 <- read.csv("wyniki_zulawy_2017_D.csv", sep = ';',  header=T, na.string="NA", dec=".");
aggregate (z17$time, list(Numer = z17$dist), summary)
z17$year <- 2017;

zz15 <- z15[, c("dist", "kmH", "time", "year")];
zz16 <- z16[, c("dist", "kmH", "time", "year")];
zz17  <- z17[, c("dist", "kmH", "time", "year")];

zz <- rbind (zz15, zz16, zz17);

## tylko dystans 140
zz140 <- subset (zz, ( dist == 140 ));
sum140 <- aggregate (zz140$kmH, list(Numer = zz140$year), summary)

boxplot (kmH ~ year, zz140, ylab = "Śr.prędkość [kmh]", col = "yellow", main="140km" )

## tylko dystans 55
zz75 <- subset (zz, ( dist > 60 & dist < 90 ));
sum75 <- aggregate (zz75$kmH, list(Numer = zz75$year), summary)
sum75
boxplot (kmH ~ year, zz75, ylab = "Śr.prędkość [kmh]", col = "yellow", main="80/75km" )

## tylko dystans 55
zz55 <- subset (zz, ( dist < 60 ));
sum55 <- aggregate (zz55$kmH, list(Numer = zz55$year), summary)
sum55
xl <- paste ("średnie 2015=", sum55$x[1,4], "kmh   2016=",
  sum55$x[2,4], "kmh   2017=", sum55$x[3,4], " kmh")

  boxplot (kmH ~ year, zz55, xlab = xl,
  ylab = "Śr.prędkość [kmh]", col = "yellow", main="55km" )

A ja (numer 418) byłem 70 w kategorii 140 km, z czasem 5:42:03 co dało 24,56 kmh przeciętną. Do pierwszego bufetu się spinałem, potem już nie...