>> wybierz styl >> es :: ns :: bs

Weblog Tomasza Przechlewskiego [Zdjęcie T. Przechlewskiego] [[Ikona]]


scrum
random image [Photo gallery]
Zestawienie tagów
1-wire | 18b20 | 1wire | 2140 | 3rz | alsamixer | amazon | anniversary | antypis | apache | api | arm | astronomy | asus | atom.xml | awk | aws | balcerowicz | balta | bash | berlin | bibtex | bieszczady | biznes | blogger | blogging | blosxom | borne-sulinowo | breugel | bt747 | canon | cedewu | chello | chown | chujowetaśmy | cmentarz | contour | cron | css | csv | curl | d54250wykh | debian | dejavu | dhcp | dht22 | dia | docbook | dom | ds18b20 | dyndns | dynia | ebay | economy | ekonomia | elka | elm | emacs | emacs23 | english | ess | eu | excel | exif | exiftool | f11 | fc | fc11 | fc15 | fc5 | fc8 | fedora | fedora21 | ffmpeg | finepix | firefox | flickr | fontforge | fontspec | fonty | fop | foto | france | francja | fripp | fuczki | fuji | fuse | gammu | garmin | gawk | gdynia | geo | georgia | gft | git | github | gmail | gnokii | gnus | google | googlecl | googleearth | googlemaps | gphoto | gphoto2 | gps | gpsbabel | gpsphoto | gpx | gpx-viewer | greasemonkey | gruzja | grzyby | haldaemon | handbrake | historia | history | hitler | holocaust | holokaust | hpmini | humour | iblue747 | ical | iiyama | ikea | imap | inkscape | inne | internet | j10i2 | javascript | jhead | k800i | kamera | kml | kmobiletools | knuth | kod | kolibki | komorowski | konwersja | krutynia | kuchnia | latex | latex2rtf | latex3 | lcd | legend | lenny | lesund | lewactwo | liberation | linux | lisp | lisrel | litwa | logika | lwp | mapsource | marvell | math | mathjax | mazury | mbank | mediolan | mencoder | mh17 | michalak | microsoft | monitor | mp4box | mplayer | ms | msc | msw | mtkbabel | muzyka | mymaps | mysql | nanopi | natbib | navin | neo | neopi | netbook | niemcy | niemieckie zbrodnie | nikon | nowazelandia | nuc | nxml | oauth | oauth2 | obituary | okular | olympus | ooffice | ooxml | opera | otf | otftotfm | other | overclocking | panoramio | pdf | pdfpages | pdftex | pdftk | perl | photo | photography | picasa | picasaweb | pim | pine | pit | plotly | pls | plugin | po | politics | polityka | polsat | postęp | powerpoint | prelink | problem | propaganda | pstoedit | putin | python | r | radio | random | raspberry pi | relaxng | router | rower | rowery | rpi | rsync | rtf | ruby | rugby | russia | rwc | rwc2007 | rwc2011 | rzym | samba | sem | sheevaplug | sienkiewicz | signature | sks | skype | skytraq | smoleńsk | srtm | ssl | statistics | stats | statystyka | stix | svg | svn | swornegacie | szwajcaria | terrorism | tex | texgyre | texlive | thunderbird | tomato | tourism | tramp | trang | truetype | ttf | turystyka | tusk | tv | tv5monde | twitter | typetools | ubuntu | udev | umap | unix | upc | updmap | ups | utf8 | varia | video | vienna | virb edit | vostro | wammu | wdc | wdfs | webcam | webdav | wh2080 | wiedeń | wikicommons | wilno | windows | windows8 | wine | wioślarstwo | word | wordpress | wrt54gl | wtyczka | ww2 | www | wybory | wybory2015 | włochy | xemex | xetex | xft | xhtml | xine | xml | xmllint | xsd | xslt | xvidtune | youtube | yum | zakopane | zakupy | zdf | łeba | świdnica
Pobrania via google: [[Ikona]]
Archiwum
Inne blogi
N. Walsh | Morten H. Frederiksen | B. Clementson | prawo.vagla.pl | F. Hecker | M. Olson | J. Tennison | J. Clark | M. Nottingham | M. Shuttleworth | T. Isakowicz-Zalewski | J. Anglim | José A. Ortega Ruiz Modern Perl
Inne tematyczne
Ashwin Amanna | wiesia.nets.pl | Wojt | rwm.org.pl | DataBlog | Revolutions | Learning R | A. Gelman | C. Nel | J. Vogelgesang | ubl.xml.org/ | J.D. Long |
O stronie
wykorzystywany jest blosxom plus następujące wtyczki: tagging, flatarchives, rss10, lastbuilddatexhtmlmime. Niektóre musiałem dopasować nieco do swoich potrzeb. Więcej o blosxom jest tutaj
Subskrypcja
RSS 1.0
Wycieczka do Rzymu

Pokaż na większej mapie

Właśnie sobie uświadomiłem, że nie ma na blogu informacji o naszej wycieczce w zeszłym roku do Mediolanu, więc może kilka słów na początek o niej.

Wycieczka do Mediolanu o tyle jest bezproblemowa dla mieszkańców 3Miasta, że są tanie loty Wizzairem z Gdańska do/z Bergamo. Dalej się jedzie autobusem za kilka EUR. Kwaterę wynajeliśmy przez AirBNB, u francuskich studentek studiujących ekonomię na prestiżowym Luigi Bocconi. Panie dobrze się zapowiadają łącząc umiejętnie teorię z praktyką: wyglądało na to, że rodzice zafundowali im stancję a one cichcem dorabiały wynajmując jeden z dwóch pokoi przez AirBNB. Jak się trafił chętny -- tacy jak my -- to się przenosiła jedna do pokoju drugiej. Pomysłowe!

Co warto obejrzeć w Mediolanie? Zdecydowanie Muzeum Techniki jest obowiązkowe oraz Katedra (Duomo). Pałac Sforców już niekoniecznie. Ostatnia wieczerza DaVinci nie zrobiła na mnie jakiegoś piorunującego wrażenia--bilety trzeba na nią kupować przez Internet.

Przedostatniego dnia pojechaliśmy rano do Bergamo. Tam cały dzień zwiedzaliśmy stare miasto (warto, ciekawe), potem nocleg także w kwaterze zarezerwowanej przez AirBNB. Następnego dnia na lotnisko i do domu. Udana wycieczka.


Pokaż na większej mapie

Zachęceni sukcesem z poprzedniego roku pojechaliśmy na wycieczkę do Rzymu na 5 dni. Konkretnie od 8 lutego do 12 lutego, tyle, że dwa dni były tym razem dojazdowe--w całości zajęte dotarciem na miejce/powrotem do domu. Długa podróż była spowodowana m.in tym, że akurat do Rzymu z Gdańska nie ma bezpośrednich połączeń lotniczych i trzeba lecieć z innego lotniska, np. z Warszawy. No więc najpierw Pendolino (50PLN/osoby) do Warszawy, potem samolotem do Fiumicino, potem autobusem do Rzymu w końcu metrem na miejsce zakwaterowania. Zaczeliśmy przed 6 rano, a na miejscu byliśmy o 19.00. Powrót w podobnym stylu i czasie. Kwatera też przez AirBNB i też fajna, a nawet najlepsza z trzech w jakich do tej pory byłem (osobna łazienka, czysto/schludnie, dobre wyposażenie kuchni, gospodarz mieszka osobno itp...)

Dzień pierwszy (czyli 9 lutego): całodzienne zwiedzanie muzeum Watyńskiego, rozpoczęte 1,5 godzinnym staniem po bilet. Bilet można kupić przez Internet ale potrzebna jest (podobno) karta kredytowa. My poszliśmy rano, ale i tak był kolejka, wokół której krążą ludzie (o śniadej/ciemnej karnacji zwykle) oferujący wejście bez kolejki za podwójną cenę. Chętnych nie ma zbyt wielu. W pakiecie z muzeum jest też zwiedzanie kaplicy Sykstyńskiej i bazyliki św. Piotra. Muzeum oczywiście należy bezwzględnie odwiedzić.

Dzień drugi: Rzym Antyczny też całodobowo. Bilet kupiony w kasie pod Koloseum. Też poszliśmy rano i tym razem nie było kolejki, ale jak wychodziliśmy z Koloseum kierując się na Palatyn/Forum Romanum (wspólny bilet), to już kolejka była, a wokół niej ludzie oferujący bilety (za większą cenę oczywiście). Tego dnia daliśmy ognia: 20 km per pedes...

Dzień trzeci: Do południa zwiedzanie tego co zostało do obejrzenia (główny punkt Termy Karakalli -- zdecydowanie warto) a potem obiad i jazda na stadion Olimpijski, na mecz rugby Włochy-Irlandia. Mecz zaczynał się o 15:30 ale woleliśmy pojechać z wyprzedzeniem żeby się nie spóźnić, jak coś pójdzie nie tak. Poza tym chcieliśmy poczuć atmosferę przed meczem/obejrzeć kibiców gromadzących się przed stadionem. Mecz super: 50 tysięcy widzówm, w tym tysiące Irlandczyków. Wynik 63:10 dla Irlandii BTW.

Dla tych co nie wiedzą: kibice Rugby się nie biją, a wręcz przeciwnie--się lubią. Agresywny kibic Rugby jest uważany przez innych za osobnika nienormalnego (jak chcesz się bić, to zapisz się do amatorskiej drużyny rugby i bij się wtedy (tj. na boisku) ile chcesz, po co na ulicach/trybunach?) Tym m.in. Rugby różni się zdecydowanie od patologicznej części kibiców piłki kopanej.

Dzień czwarty: powrót z Rzymu. Samolot był o 15:30 więc kilka godzin jeszcze połaziliśmy, zwiedzając głównie kościoły. W domu byliśmy już 13.02, bo TLK się spóźnił 30min (miał być planowo 23:36 a był kilka minut po północy).

W Rzymie (podobnie jak w Mediolanie) przed ważniejszymi obiektami stoją patrole wojska z długą bronią. Wejście do wybranych obiektów (np. Muzeum Watykańskie, Koloseum, kościół św. Jana na Lateranie) jest dodatkowo zabezpieczone bramkami bezpieczeństwa (tak jak na lotnisku). Te bramki są uciążliwe, zwłaszcza jak się ma na sobie dużo elektroniki.

Jakby ktoś chciał mieszkać tam gdzie my (szczerze mogę polecić), to kwatera jest pod adresem Via Britannia 31. .

url | Thu, 16/02/2017 09:36 | tagi: , , , ,
Moja lista rekomendowanych książek na temat Holokaustu

Żeby nie było że mam fiksację i żem Germanofob (ci co przeczytali poprzedni wpis mogli nabrać takich podejrzeń), lista książek na pasjonujący mnie temat 2WŚ/Holokaustu:

Raul Hilberg: Sprawcy, Ofiary, Świadkowie. Zagłada Żydów 1933--1945 (tłumaczenie J. Giebułtowski) Centrum Badań nad Zagładą Żydów IFiS PAN/Cyklady, Warszawa 2006;

Raul Hilberg: Pamięć i polityka. Droga historyka Zagłady (tłumaczenie J. Giebułtowski) Centrum Badań nad Zagładą Żydów IFiS PAN/wydawnictwo Cyklady, Warszawa 2006;

Christopher R. Browning: The origins of the Final Solution. The evolution of the Nazi Jewish Policy, September 1939--March 1942, University of Nebrasca Press; Polskie tłumaczenie: Geneza ostatecznego rozwiązania. Ewolucja nazistowskiej polityki wobec Żydów. Wrzesień 1939--marzec 1942 Wydawnictwo Uniwersytetu Jagiellońskiego 2013;

Christopher R. Browning: Zwykli ludzie. 101. Policyjny Batalion Rezerwy i ostateczne rozwiązanie w Polsce Bellona 200 (nie do dostania nawet na Allegro!);

Christopher R. Browning: Pamięć przetrwania. Nazistowski obóz pracy oczami więźniów Czarne 2012;

Isabel Heinemann: Rasa, ziemia, niemiecka krew. Główny Urząd Rasy i Osadnictwa SS i nowy porządek rasowy Europy Muzeum II Wojny Światowej w Gdańsku, Gdańsk 2014;

Nikolaus Wachsmann: Historia nazistowskich obozów koncentracyjnych Świat Książki 2016;

Ulrich Herbert: Werner Best. Studium biograficzne (tł. Magdalena Kurkowska) Wiedza Powszechna, Warszawa 2007

Wszystkie powyższe są świetne. Dwaj pierwsi autorzy to Amerykanie (well, Hilberg to Austriacki Żyd, a do USA trafił po tym jak po Anslussie Austrii rodzina wyjechała do Ameryki); Heinemann i Wachsmann są młodymi (oboje urodzeni w 1971 r) a Herbert nieco starszym (ur. 1951 r) historykami Niemieckimi piszącymi uczciwe książki na temat swojej trudnej historii (i dlatego nie jestem Germanofobem a wręcz przeciwnie).

Na liście nie ma żadnych Grosów, Libionek czy innych Danieli Goldhagenów (czytaliście coś ww.? No to zmarnowaliście czas). Arendt z jej bestsellerem o Eichmannie też nie ma (wg. Hilberga zżynała od niego i faktycznie jak się przeczyta SOŚ -- która została napisana wcześniej -- to książka Arendt niewiele wnosi, jeżeli coś w ogóle). Nb teza Arendt iż każdy może być masowym mordercą (banalność zła) jest moim zdaniem (i nie tylko moim) fałszywa: pierdoły i lenie nie mogą, a takich jest większość. Eichmann wcale nie był zwykły--był utalentowanym zarządcą, do tego niezwykle pracowitym. Można co innego zauważyć, że osobnik jest wybitnym fachowcem (w pewnej dziedzinie) a tak w ogóle jest debilem-- coś jak mentor Arendt, wybitny filozof, ale zadeklarowany nazista Martin Heidegger.

url | Fri, 27/01/2017 05:22 | tagi: , , , , ,
Polskie obozy zagłady

Niemcy od lat bezczelnie promują w mediach zwrot polskie obozy śmierci/zagłady. Jak im się powie, że to bzdura to oni na to że to skrót myślowy. Wiadomo że nie, bo co to za "polski obóz" Auschwitz, w którym zginęło 150 tys Polaków a literalnie żaden organizator/nadzorca z Polską nie miał nic wspólnego, a z Trzecią Rzeszą (czyli współcześnie z RFN oraz Austrią; w świetle prawa międzynarodowego oczywiście)-- wszystko.

Były więzień niemieckiego obozu Auschwitz Karol Tendera wystąpił z pozwem przeciwko ZDF w związku z jej internetowymi publikacjami zawierającymi określenie polskie obozy zagłady Majdanek i Auschwitz. a 22 grudnia 2016 r. krakowski Sąd Apelacyjny wydał prawomocny wyrok, na mocy którego ZDF powinna przeprosić Tenderę za użycie tych sformułowań i opublikować na swojej głównej stronie internetowej przeprosiny. Te ukazały się zaraz po ogłoszeniu wyroku, tyle, że według p. Tendery nie spełniały wymogów (z tego co mi się wydaje nie były na przykład zamieszczone na głównej stronie). W rezultacie tzw. polscy internauci zainicjowali zmasowaną akcję polegającą na publikowaniu w różnych mediach społecznościowych wpisów informujących o prawdziwym przebiegu wydarzeń.

No to ja się też dołączam do akcji na mój skromny, uczciwy sposób jak mawiał elektryk Hagen w powieści Das Boot (Lothar-Gunther Buchheim, s.148, tł. Adam Kaska, Bellona 2009).

Jak już jestem przy głosie to wyjaśniam, że specyfiką 3Rz był labirynt urzędów, z których każdy miał własne obozy. Obozy koncentracyjne, których pierwotną funkcją nie było masowe mordowanie, ale zastraszanie/izolowanie (KL) podpadały pod (WVHA). Obozy zagłady powstały w  wyłączntm celu sprawnego zamordowania niechcianej społeczności żydowskiej, a organizował je właściwy dla terytorium gdzie powstały (wyższy) dowódca SS i Policji (SSPF/HSSPF) czyli SSPF Globocnik (Lublin), któremu podlegały Treblinka/Sobibór/Bełżec oraz SSPF Koppe (Poznań) ze swoim Kulmhofem. BTW Koppe, którego Kulmhof było pionierską instalacją spokojnie dożył do 1975 r. w eNeRFju, a nie w żadnej tam Argentynie (cf. Wilhelm Koppe) co jest wśród niemieckich zbrodniarzy regułą, a nie wyjątkiem. Globocnik (Austriak nie Niemiec) niepotrzebnie popełnił samobójstwo--też by się pewnie wymigał... Ciekawostką jest, że nie było formalnej współpracy czy koordynacji pomiędzy WVHA a SSPF (co by świadczyło że nie było mitycznego master planu w temacie zagłady Żydów; była ogólna idea że mają zniknąć z 3Rz i improwizowana realizacja: każdy zainteresowany urząd działał jak umiał), a ofiary dostarczał jeszcze inny urząd -- RSHA/Eichmann -- (ah ta wspaniała Niemiecka koordynacja).

IPN opublikował mapkę niemieckich obozów zagłady/KL, na której na czerwono są KL a na czarno obozy zagłady (oryginał tutaj). Auschwitz/Birkenau/Majdanek formalnie były KL i podpadały pod WVHA, to że są na czarno wynika z faktu że były "wielofunkcyjne"... Podobnie wielofunkcyjne były Stutthof i Mathausen (formalnie KL) -- miały komory gazowe, w których mordowano ludzi -- ale nie są na czarno na mapie zapewne dlatego, że robiono to na mniejszą skalę niż w tych bardziej znanych z tego procederu...

Tak przy okazji: Niemiecka Gazeta dla Polaków Tomasza Lisa uważała w związku z "aferą ZDF" -- zupełnie przypadkowo zapewne -- za celowe przypomnieć o obozach na Śląsku zakładanych przez NKWD i polskich komunistycznych kolaborantów bezpośrednio po wojnie (kiedy Polskę można z całą pewnością uważać za kraj okupowany przez wrogie mocarstwo a zarządzany przez zainstalowany przez to mocarstwo rząd złożony z renegatów) typu kapitan Morel (mimo, że to tylko jeden awans -- nie mylić z majorem Szechterem, bo się autorytet zdenerwuje), określając je -- a jakże -- mianem "polskie".

Abstract for non-Polish readers

German public television station ZDF called the German concentration camps at Auschwitz and Majdanek/Lublin as "Polish death camps". For this action ZDF was sued by former Auschwitz prisoner Mr. Karol Tender and lost that case in court. The court ordered ZDF to publish an apology on their main page and to leave it visible for 30 days.

ZDF published required apology very discreetly, at the very bottom of their website with the title Karol Tenders Apology. It is visible only upon clicking the title. For this reason Polish Internet community declared (propaganda) war on ZDF on this issue (look for #GermanDeathCamps hashtag).

url | Wed, 25/01/2017 17:23 | tagi: , , , , ,
Minął rok obrony demokracji w PL

Rok zleciał na obronie demokracji, wypada podsumować.

Przyglądam się temu całemu KODowi z pewną ciekawością, ale bez specjalnego zdumienia. Z punktu widzenia motywacji uczestników można ich podzielić na następujące kategorie (IMHO oczywiście):

1) #Zafixowani: hejterzy (zwykle nie potrafią się do tego przyznać) zafiksowani na Kościele Katolickim/PiS/Kaczyńskim (PISofobia), dla nich KOD to sposób na przyjemne spędzania wolnego czasu w gronie im podobnych (stąd manifestacja KOD mało przypominają protesty -- wszyscy wiecznie uśmiechnięci);

2) #ŁowcyJeleni: politycy byłej władzy lub aspirujący do niej, media/celebryci przez kasę związani z poprzednią władzą np. GW/Polityka/Newsweek. Także różnej maści kombinatorzy starający się zarobić oferując różne usługi dużej grupie naiwnych/z problemami psychicznymi (co nie oznacza choroby--PISofobia nie jest chorobą, podobnie jak inne fobie) ludzi.

3) #Durnie: autentycznie przekonani, że Polska po wyborach 2015 obrała kurs na dyktaturę/faszyzm/demokraturę itp...; Zaczynają rozmowę Nie wolno pozwolić na demontaż państwa lub podobnym tekstem.

4) #Inni: wszyscy pozostali (w tym ludzie, którzy wydają się niezrównoważeni psychicznie i/lub funkcjonariusze stosownych służb).

Liczebność poszczególnych grup oceniam jak w powyższej wyliczance, przy czym czy #zafiksowani są liczniejsi niż #łowcyjeleni czy odwrotnie, to już nie jestem pewien. Do tego kategorie #1 oraz #3 niekoniecznie są rozłączne. Działania grup 1 oraz 2 oceniam jako racjonalne, grupy 3 jako nieracjonalne (stąd pejoratywne #durnie), zaś z grupą 4 jest pod tym względem różnie (niezrównoważeni są z definicji nieracjonalni; no a ci z służb cóż--chodzą do roboty po prostu).

Nawiasem ze znanych mi 2 osób (osobiście, nie z TV), zaangażowanych w tzw. obronę demokracji, jeden pasuje mi do kategorii #1 a drugi niestety do #3.

PS: ten tekst powstał jakieś dwa tygodnie temu. W tzw. międzyczasie lider ww. Komitetu dokonał tzw. samozaorania, ale to nie zmienia mojej klasyfikacji: Mateusz Kijowski (kategoria #2, aspirujący do koryta/łowca jeleni, ale niegramotny-amator więc game-over)

url | Fri, 06/01/2017 06:27 | tagi: , , ,
Paradoks postępaka


Widzę w Internetach dużo kuriozalnych wpisów, w tym a zwłaszcza popełnionych przez ludzi deklarujących tzw. postępowe poglądy (przykłady z niejakiego pana Wimmera -- dumnie przyznającego się do bycia (de)funkcyjnym członkiem tzw. Komitetu Obrony Demokracji -- w załączeniu).

Zrekapitulujmy zatem fakty:

#1: 25 grudnia 2016 wojskowy samolot transportowy lecący z podmoskiewskiego lotniska wojskowego Czkałowski do bazy lotniczej Hmejmim/Latakia (Syria) na noworoczne występy dla rosyjskich żołnierzy rozbija się niedaleko Soczi/Krym ok. 5.30 (czasu lokalnego/ 3.30 polskiego). Nikt nie ocalał. Giną m.in. żołnierze propagandowego oddziału Armii Czerwonej znanego pod nazwą Chór Aleksandrowa. Odział leciał zapewne wesprzeć morale (nadwątlone z całą pewnością mordowaniem kobiet i dzieci--można by sądzić po tym co piszą/nadają postępowe media na całym świecie, i nie tylko postępowe w tym wypadku BTW) rosyjskich lotników, więc chyba dobrze że nie doleciał? Niskie morale--więcej kobiet, dzieci i szpitali dziecięcych ocaleje...

#2: po serii porażek (Brexit, Trump itp.) postępacy znaleźli sobie nowego czarnego luda i nowe tłumaczenie (aka teoria spiskowa) czemu od pewnego czasu biorą spektakularnie/regularnie w djupę: niezwykle skuteczną ruską propagandę (#RuskiTroll, dawniej #CzarnaWołga). Powtórzę: skoro niezwykle niebezpieczni, bo skuteczni funkcjonariusze tej propagandy polegli, no to chyba dobrze. Oczywiście jak ginie człowiek itp, no ale na wojnie żołnierze giną--taka jest logika wojny: my albo oni, więc lepiej, że oni a nie my...

#konkluzja: nie zaraz, wielka strata dla kultury, ojej jaka tragedia. Nie-po-we-to-wana.

PS: i jeszcze kuriozalna ale i charakterystyczna dla tej grupy ludzi dyskusja po oświadczeniu p. Chabika, w tym tzw. miażdżący argument gimbazy: czy po Einsteinie też nie należało płakać, bo pracując przy bombie A był złym człowiekiem (sic!). Ach ci IYI (Intelectual Yet Idiot), może i był, ale pracował dla nas, a nie dla 3-ciej Rzeszy idioto.

url | Tue, 27/12/2016 06:24 | tagi: , , , ,
Instalowanie skype w Fedora Linux

W zasadzie nie używam ale Elka chciała, w sumie też nie wiadomo po co. Okazało się że działa bezproblemowo, nie licząc problemu polegającego na blokowaniu ekranu logowania komunikatem o rzekomym błędzie nieprawidłowego adresu email (program nie czeka na wpisanie kompletnego emaila, tylko wyświetla okno z tekstem o błędzie i ni-chu-chu pozbyć się tego okna).

Skopiowane z tej strony.

## Doinstalowanie ew. brakujących zależności:
yum install alsa-lib.i686 fontconfig.i686 freetype.i686 \
  glib2.i686 libSM.i686 libXScrnSaver.i686 libXi.i686 \
  libXrandr.i686 libXrender.i686 libXv.i686 libstdc++.i686 \
  pulseaudio-libs.i686 qt.i686 qt-x11.i686 zlib.i686 qtwebkit.i686

## Ściągnięcie skype:
wget --trust-server-names http://www.skype.com/go/getskype-linux-dynamic

mkdir /opt/skype
tar xvf skype-4.3* -C /opt/skype --strip-components=1

## Link skype.desktop ##
ln -s /opt/skype/skype.desktop /usr/share/applications/skype.desktop

## Link icons (copy and paste all rows at once) ##
## Thank you Andrej Podzimek for this code and idea ##
for icon in /opt/skype/icons/*; do
ressuffix="${icon##*_}"
res="${ressuffix%%.*}"
ln -s "$icon" /usr/share/icons/hicolor/"$res"/apps/skype.png
done

## Update gtk icon cache (needed at least Gnome/GTK envorinments) ##
gtk-update-icon-cache /usr/share/icons/hicolor

## Create empty /usr/bin/skype file and set permissions ##
touch /usr/bin/skype
chmod 755 /usr/bin/skype

Teraz należy na przykład stworzyć plik skype w katalogu /usr/local/bin:

#!/bin/sh
export SKYPE_HOME="/opt/skype"
 
$SKYPE_HOME/skype --resources=$SKYPE_HOME $*

I to wszystko.

url | Thu, 22/12/2016 04:52 | tagi: , ,
Moje placki z dyni i ziemniaków


Już się chwaliłem, że jestem wielkim fanem dyni. Potrafię zrobić zupę, placki a nawet ciasto (opisane w innym wpisie na tym blogu). No i zapiec w piekarniku:-) Jak wszystkie dania z dyni, które potrafię wykonać, placki są bardzo proste w przygotowaniu. Składniki:

200 g utartej na tarce dyni

200 g utartych na tarce ziemniaków (waga po odlaniu wody)

50 g cebuli (drobno posiekanej/utartej na tarce)

1 jajko (60 g)

20 g mąki tortowej

Ponadto: zielona pietruszka/szczypiorek (co kto woli), zioła (oregano/prowansalskie). Ja robię placki na ostro (jak robię dla siebie): dodaję ostrą paprykę i dużo pieprzu.

Wszystko należy wymieszać na jednolitą masę, która powinna być w miarę sucha (inaczej będzie problem z usmażeniem). Smażę na minimalnej ilości tłuszczu. Placki dają się smażyć i nie przywierają nawet jak cały olej wsiąkł we wcześniej usmażone i patelnia jest (prawie) sucha.

W tę niedzielę przygotowałem 6 powyższych porcji na okoliczność obiadu z teściową/teściem plus rodzina szwagierki, co dało 6 x 40 = 2,4kg tartej dyni i kartofli. Nie było łatwo ale dałem radę; zresztą okazało się, że grubo przesadziłem i pół placków zostało. Do placków był łosoś pieczony w piekarniku, a na deser ciasto z dyni (do tego była jeszcze zupa rybna, ale kupiona nie własnej roboty).

url | Wed, 21/12/2016 06:22 | tagi: , ,
Montaż błotników SKS Bluemels


Ponieważ zamierzam ostro jeździć w zimie (bo zimy ostatnio się zrobiły dość łagodne) zmodyfikowałem swój rower MTB (koła 26 cali) pod kątem zabezpieczenia przed wodą. Do tej pory używałem błotników szybko montowanych: tylny -- SKS X-Tra Dry zakładany na sztycę plus jakiś tam tani przedni nasadzany na szynę przymocowaną do plastikowego korka wbitego w dziurę w rurze widelca. Patent na przedni widelec jest fajny, ale błotniki -- ponieważ jednak znajdują się w znacznej odległości od opony -- nie zabezpieczają przed wodą jak błotniki zamontowane porządnie.

Zdecydowałem się zatem na takie porządne i wybrałem SKS Bluemels. Do nabycia w CentrumRowerowym.pl za circa 95 PLN (z dostawą). Przed zakupem w CR sprawdziłem czy aby ktoś nie sprzedaje takowych na OLX. I faktycznie sprzedawał, praktycznie nowe, za 70 PLN (z dostawą). Bonusem zakupu na OLX było też to, że pierwszy właściciel poprzykręcał te wszystkie druty, nakładki i śrubki, oszczędzając mi pewnie ze dwie godziny albo i więcej.

Montaż tylnego nie stanowił problemu: mój zmodyfikowany Author Traction ma dziury na błotniki w tylnym widelcu. Z przednim było gorzej -- widelec nie ma dziur montażowych. Kupiłem zatem na Allegro, w sklepie z częściami samochodowymi, cztery aluminiowe opaski/obejmy w osłonie gumowej-- z tego co mi się wydaje te obejmy normalnie używane są do tuningu motocykli czy coś w tym stylu. Z dostawą za obejmy zapłaciłem 40 PLN, czyli więcej niż 50% tego co za błotniki. Trochę dużo ale niech tam, bez dziadowania ma być...

Plan był taki, że dwie obejmy przykręcone na dole goleni widelca posłużą do przymocowania drutów, a do dwóch przymocowanych na górze dokręcę poprzeczną blaszkę, do której z kolei przyśrubuję błotnik (za uchwyt z dziurą, który normalnie pasuje do dziury w widelcu). Na razie szukam estetycznej blaszki i prowizorycznie unieruchomiłem błotnik opaskami zaciskowymi, ale już wiem że plan był dobry i błotnik dało się elegancko wpasować tak że nie lata, nie hałasuje i da się dość szybko zdemontować/zamontować z powrotem (trzeba było w tym celu trochę skrócić druty). No dałem radę tym razem...

url | Wed, 21/12/2016 05:55 | tagi: , , ,
Kto nie ryzykuje nie pije szampana czyli kamera Contour #3

Na OLX kupiłem jeszcze jedną kamerę Contour (w wersji ROAM). Sprzedawana jako uszkodzona ponieważ nie ładuje się za 50 PLN. Myślę sobie bierę -- same uchwyty tyle są warte, o częściach zamiennych do moich dwóch pozostałych Contourów nie wspominając.

Contour/Roam ma wbudowany/niewymienny akumulator (o czym przyznam nie miałem pojęcia). Formatowanie karty odbywa się przez wsadzenie szpilki do dziury znajdującej się na tylnej ściance (zamiast przyciśnięcia niewielkiego guziczka jak w innych modelach). W mojej kamerze formatowanie jakby nie działa--wtykam szpilkę a reakcji nie ma; tyle że to nie problem, bo mogę sformatować inną kamerą (a być może i zewnętrznym programem, ponieważ tworzona podczas tzw. formatowania struktura katalogów nie wydaje się za skomplikowana).

Się okazało, że po wsadzeniu sformatowanej karty kamera się elegancko naładowała i jest moim zdaniem w 100% sprawna. Co więcej stała się moją ulubioną, bo akumulator (wbudowany) trzyma jakieś 30 minut dłużej niż w tych modelach w których jest wymienny (2,5 godziny vs 2 godziny).

No więc właśnie w taki sposób stałem się posiadaczem całkiem fajnej kamerki za jedyne 50 PLN :-)

url | Tue, 20/12/2016 06:09 | tagi: , , ,
Czujnik 1-Wire, USB-UART i nanoPi Neo

W ramach testowania nanoPi Neo podłączyłem do niego czujnik 18B20. Tym razem nie za pomocą układu MP00202 (FT232RL/DS2480B) który jest dość drogi (circa 60 PLN), ale wykorzystując USB-UART RS232 PL2303HX (za 4,40 PLN na Allegro + wysyłka.)

Podłączenie czujnika jest banalnie proste, mianowicie: styki oznaczone jako GND oraz +5V (na płytce układu USB-UART) łączy się z odpowiednimi stykami czujnika DS18B20, natomiast styki oznaczone jako RX oraz TX należy ze sobą połączyć a następnie połączyć ze stykiem DATA (środkowym) czujnika DS18B20.

I to wszystko. Korzystając z programu digitemp należy użyć digitemp_DS9097 (FT232RL/DS2480B działało z wariantem digitemp_DS9097U).

Nawiasem mówiąc nanoPi Neo działa tak średnio (wyrażając się oględnie), bo już go musiałem reistalować. Na dokładkę przy czytaniu dużych plików z pendrive'a USB się odłączał a system zgłaszał błędy -- powodem było być może zasilanie (jakiś super-wydajny zasilacz by pomógł/aktywny hub?).

Tak czy siak SheevaPlug działa mi bezawaryjnie a nanoPi Neo nie za bardzo.

url | Tue, 20/12/2016 05:46 | tagi: , , , , , , ,
Moje ciasto z dyni






Jestem wielkim fanem dyni, a potrawy z tego warzywa są jednymi z nielicznych, które przygotowuję sam (bo to proste). Ciasto też jest bardzo proste. Składniki:

400 g utartej na tarce dyni (100 kcal)

240 g mąki (768 kcal)

150 g oleju (1236 kcl)

240 g jaj (4 jajka, 340 kcl)

50 g cukru (lub ksylitolu dla poprawienia dietetyczności, 400 vs 120 kcal)

Ponadto: 1 łyżeczka sody oczyszczonej, 2 łyżeczki proszku do pieczenia 1 łyżeczka cynamonu, suszone owoce i posiekane orzechy (zamiast rodzynek).

Używam dyni w odmianie Hokkaido, bo nie trzeba jej obierać i podobno jest słodsza (ale można też trzeć tradycyjną dynię).

Używam mąki orkiszowej, można innej.

Można oprócz cynamonu dodać kardamonu i/lub startego imbiru. Ze względów dietetycznych nie polewam ciasta niczym, tylko posypuję wiórkami kokosowymi, i też jest dobre, ale jak ktoś chce to może je oblać polewą (czekoladową na przykład).

Także ze względów dietetycznych redukuję ilość niektórych wysokokalorycznych składników, dodając 3 łyżki stołowe oleju (około 30g) zamiast tych 150 g z przepisu, oraz ograniczając liczbę jajek do 3 (a można, i wyjdzie, bez jajek).

Teraz wszystko należy wymieszać na jednolitą masę dolewając w miarę potrzeby odpowiednią ilość mleka lub mleka kokosowego lub wody. Wariantu z wodą nie ćwiczyłem, zrobiłem raz jeden wariant wegański tego ciasta rezygnując z jaj i używając wyłącznie mleka kokosowego i też było dobre.

Masę przekładam do tortownicy i wstawiam na godzinę do nagrzanego do 180 stopni piekarnika. Ponieważ w moim piekarniku góra ciasta robiła się sucha i twarda, to po 5--10 minutach przykrywam je folią aluminiową (nie robię tego od razu żeby folia się nie przykleiła do mokrej i lepkiej masy). W tym też celu (żeby nadmiernie nie wyschło) po wyjęciu z piekarnika polewam górę odrobiną mleka/mleka kokosowego (być może niepotrzebnie).

Jestem w stanie przygotować takie ciasto w 30 minut (nie licząc pieczenia), w tym 10 minut zajmuje mi starcie dyni na ręcznej tarce.

Oprócz ciasta robię z dyni zupę, placki ziemniaczano-dyniowe oraz zapiekam po prostu w piekarniku i jem zapieczoną jako dodatek do drugiego dania. Zapiekanie jest wygodną formą utylizacji resztek dyni, pozostałych po przygotowaniu ciasta.

url | Sun, 11/12/2016 05:50 | tagi: , ,
Contour vs Contour2

#1

#2

#3

#4

#5

Tydzień walczyłem z kamerką Contour2, kupioną oczywiście używaną na OLX żeby było bardziej ryzykownie:-). Ta nie działała, podejrzewałem że jest uszkodzona, a nie na 100% sprawna, jak była opisywana i chciałem zwracać, tyle że poprzedni właściciel nie chciał brać z powrotem, więc przyjrzałem się dokładniej czemu nie działa i problem wydaje się rozwiązałem. Otóż gniazdo na baterię w nowym modelu jest ciutkę inne niż w starym (w starym było lepsze mówiąc krótko).

Bateria-zamiennik (często używana przez użytkowników, bo to Nokia BL-5C za 20PLN zamiast oryginału za 100PLN) minimalnie luźniej w nim siedzi (na zdjęciu widać że różnica jest na poziomie mniejszym niż 1mm). Jak się używa kamery przyczepionej do czegoś co amortyzuje (np. na głowie nosi) to jest OK, ja przyczepiam do ramy roweru za pomocą czegoś co Contour nazywa flex strap mount (i co BTW uważam za najlepszy uchwyt do kamer, no chyba że ktoś lubi nosić kamerę na głowie, albo jest narciarzem--ja ani nie jeżdżę na nartach ani nie lubię kamery na głowie, bo człowiek wygląda jakby Robocop/Marsjanin) i na wybojach styki musiały tracić kontakt i kamera się -- prędzej czy później -- wyłączała. Poprzedni właściciel okazał się niewinny -- z (miejscami) burzliwej rozmowy wynikało, że używał kamery z innym uchwytem (na głowie), i znał tylko nową wersję kamery, ja z kolei od lat używam starej wersji kamery na ramie (i mi działała bezproblemowo). On nie miał pojęcia że jest problem, ja zakładałem że producent nie spieprzy gniazda baterii w nowej wersji i to co działało będzie działać dalej więc się nie przyglądałem dokładniej--niesłusznie. Widać, że chłopaki z Contoura chcieli utrudnić życie tym co używają zamienników i zaprojektowali nowe gorsze gniazdo na akumulator (ponieśli koszty żeby było gorzej--jaka to teraz powszechna strategia w biznesie).

Rozwiązaniem jest doklejenie 1mm czegoś do baterii BL-5C żeby była dłuższa albo kupno Chińskiej podróbki baterii do Contoura (por. zdjęcie).

Nowy Contour lepiej filmuje i ma GPSa. Pierwsze doświadczenia z tym GPSem są jednakowoż negatywne, bo długo trwa zanim złapie satelity. Ponieważ nie chce mi się czekać dłużej niż 1--2minuty wsiadam na rower z migającą diodą GPSa, tyle że w ruchu w życiu nie złapie sygnału -- mogę jechać kilometry i dioda ciągle miga--co świadczy że GPS nie złapał sygnału. Nie jest to wszakże istotne bo mogę dodać parametry jazdy z lepszym skutkiem z Garmina (wskazanie czujników typu kadencja/tętno) z wykorzystaniem Garmin Virb Edit.

Zdjęcia ilustrują problem. Zdjęcia #1: dociśnięta palcem bateria dedykowana prawie wcale nie przesuwa się w gnieździe; #2 -- dociśnięta palcem bateria BL-5C w widoczny sposób przesuwa się w gnieździe; #3 -- porównanie wymiarów (dedykowana jest ciut dłuża); #4 -- zatrzask ze skoblem (pod znakiem +) w starym Contourze (w nowym nie ma skobla, tylko przekręca się zatrzask, co też zwiększa luz); #5 -- widok z lotu ptaka:-)

Pierwszy udany film jest tutaj

PS: dodam na swoje usprawiedliwienie, że obudowa kamery wygląda straszliwie, co było głównym powodem nieufności do niej/do sprzedawcy (Zeszlifowana jakby wpadła pod walec drogowy. Mi to nie przeszkadza, a nawet wręcz przeciwnie, mogę na przykład poszpanować ("Co się stało...", "Eeee tam nic wielkiego")). Do tego przyszła z wyczerpaną baterią. Parę rzeczy trzeba było sprawdzić/ustalić zanim wpadłem na opisaną wyżej jakże banalną przyczynę problemów.

url | Wed, 30/11/2016 09:22 | tagi: , , ,
Nowy ARM: NanoPi Neo

Działałem według opisu ze strony NanoPi NEO, tzn. ściągnąłem plik nanopi-neo-linux-rootfs-core-qte-sd4g-20160804.img.zip (BTW downloads: 1632, czyli jestem hipsterem/trendsetterem!). Rozpakowałem, wsadziłem kartę (micro SDHC 8Gb Toshiba, za +20 PLN BTW) do czytnika kart i za pomocą dd wykonałem obraz systemu:

NeoPo
NeoPi
dmesg
[10869.916710] sd 1:0:0:0: [sdb] 15196160 512-byte logical blocks: (7.78 GB/7.24 GiB)

Czyli karta jest w urządzeniu /dev/sdb. Zatem:

dd bs=4M if=nanopi-neo-linux-rootfs-core-qte-sd4g-20160804.img of=/dev/sdb

Kartę wyjąłem z czytnika, wsadziłem do Neo, urządzenie podłączyłem pod ładowarkę do smartfona i kabel sieciowy RJ45. W instrukcji jest napisane, że po podłączeniu zasilania nastąpi uruchomienie systemu sygnalizowane świeceniem się niebieskiej diody LED. I tak było w istocie: dioda świeci jak nie przymierzając kogut na radiowozie MO. Aby połączyć się z komputerkiem należy teraz wykonać (,,fabryczne'' hasło to fa):

  ssh -l root@192.168.1.123

Adres 192.168.1.123 ustaliłem łącząc się z routerem i oglądając device list (w instrukcji jest inny adres, pod którym urządzenie powinno być podłączone). Teraz:

apt-get update && apt-get upgrade
## dla pewności
apt-get install rsync less vim

Instalowanie mc

apt-get install mc # nie ma

apt-get install software-properties-common
## teraz zadziała

$add-apt-repository ppa:eugenesan/ppa
$ sudo apt-get update
$ sudo apt-get install mc

# dalej kicha 
$ apt-get install mc-data
# jakiś dziwny pakiet bez binarów, rzekomo zastępujący mc
# https://mail.gnome.org/archives/mc/2015-December/msg00020.html
# chyba jest problem z kompilacją na arma

Stay tuned

url | Sun, 30/10/2016 08:57 | tagi: , , , , ,
Okular i inne przeglądarki PDF

Acrobat Readera w zasadzie nie używam. Za duże, nieporęczne itp.

Domyślnie -- z przyzwyczajenia -- oglądam pliki pdf w xpdf (dość wiekowej aplikacji) lub za pomocą evince (ten z kolei jest domyślny w rzadkim przypadku korzystania przeze mnie z MS Windows).

Długie dokumenty lubię wydrukować w postaci broszurki (2 strony A5 na kartce A4, druk obustronny czyli 4 strony a5 na kartce) używając do tego pstops. Zatem najpierw PDF→PostScript, a potem zamiana pliku .ps na wersję z dwoma stronami na kartce. Zwykle działa xpdf. Kiedy zawodzi, wtedy próbuję evince, albo jako Wunderwaffe Acrobat Reader. Ostatnio mam już drugi przypadek pliku PDF, w którym po potraktowaniu pstops cudownie rozmnażają się strony. Konkretnie jest ich 2 razy tyle co powinno być. W rezultacie oczywiście broszurka jest do kitu -- strony nie pasują do siebie...

Za słabo znam PostScript żeby ustalić czemu tak, więc próbuję różnych programów: xpdf nie działa, evince nie działa, Reader tak samo. Okular produkuje prawidłowy plik PostScript.

Nb. feralny plik PDF wygenerowano za pomocąInDesign CS5.5 (Adobe PDF Library 9.9).

url | Thu, 15/09/2016 08:19 | tagi: ,
Wycieczka w Bieszczady

Wycieczka w Bieszczady 2016

No więc byliśmy z Elką i Jankiem oraz rodziną kolegi ZK (razem 7 osób) w Bieszczadach (10--17 sierpnia 2016). Trzy razy chodziliśmy po górach: Szeroki Wierch--Tarnica, Połonina Caryńska--Przełęcz Wetlińska, Mała/Wielka Rafka (odpowiednio 22km, i 2x po 16km). Byliśmy też w Sanoku (kolega ZK w Przemyślu) oraz na festynie w Lutowiskach. Z różnym skutkiem próbowaliśmy potraw regionalnych--fuczki/kwaśnica są OK, ale np. Klepak Młynarzowej w karczmie Młyn w Ustrzykach takie sobie...

Szczerze możemy polecić kwaterę pn. Santama, prowadzoną przez sympatycznych i gościnnych gospodarzy (tutaj jest link).

Załączona mapka przedstawia nasze wyczyny.

url | Wed, 17/08/2016 14:50 | tagi: , , ,
Zamiana MOV na MP4

W sobotę nagrałem na rowerze ponad 1,5 godziny filmu, który jest podzielony na 3 kawałki -- każdy po 4Gb. Teraz chciałem dodać do niego nakładki z danymi typu prędkość, dystans itp używając Garmin Virb Edit, ale ponieważ Virb Edit nie przetwarza plików większych od 4Gb, to trzeba najpierw połączyć wszystko w jeden plik, jednocześnie zmniejszając rozmiar (można też synchronizować każdy kawałek osobno w VE a potem połączyć, ale ja wolę prościej):

### zamiana na 720p, z redukcją jakości do 23 (domyślnie 20)
HandBrakeCLI -w 1280 -l 720 -q 23 -i Plik.mov -o Plik.mp4 --preset="Normal"

Pliki po konwersji jak wyżej mają circa nieco ponad 1Gb każdy.

Teraz trzeba połączyć je do kupy:

MP4Box -cat plik1.mp4 -cat plik2.mp4 -cat plik3.mp4 -new ALL.mp4

Ostatni etap to dodanie nakładek w VE, niestety w tym celu trzeba się przełączyć na MS Windows. Shame...

url | Sun, 05/06/2016 08:48 | tagi: , , ,
Wysyłanie śladów TCX na Endomondo/Strava z poprawioną wysokością

Ciąg dlaszy wpisu Rejestrowanie wysokości przez odbiorniki GPS

Ciąg dalszy bo ,,ciąg technologiczny'' FIT →TCX →GPX →srtm.py →lepszy_GPX→Endomondo/Strava pozbawia niestety przesyłany plik GPX danych, które nie są wspierane przez format GPX (takie jak tętno dla przykładu).

Problem można rozwiązać dodając do pliku TCX poprawione wysokości z pliku lepszy_GPX:

#!/usr/bin/perl
use XML::LibXML;
use XML::LibXML::XPathContext;
use Getopt::Long;

binmode(STDOUT, ":utf8");

my $Gpx_file; my $Tcx_file;

## gpx -- plik GPX z poprawionymi wysokościami
## tcx -- oryginalny plik TCX (w którym mają być poprawione wysokości)
GetOptions( "gpx=s" => \$Gpx_file, "tcx=s" => \$Tcx_file, ) ;

my $parser = XML::LibXML->new();

for my $file2parse ("$Gpx_file") {

  my $doc = $parser->parse_file($file2parse);
  my $root = $doc->documentElement();

  my $xc = XML::LibXML::XPathContext->new( $root );
  $xc->registerNs('gpx', 'http://www.topografix.com/GPX/1/0');

  foreach my $t ($xc->findnodes('//gpx:trkpt')) {

    my $xpe = XML::LibXML::XPathContext->new( $t );
    $xpe->registerNs('gpx', 'http://www.topografix.com/GPX/1/0');
    $node++;
    $gmttime = ($xpe->findnodes('gpx:time'))[0]->textContent();
    $altitude = ($xpe->findnodes('gpx:ele'))[0]->textContent();
    $GpxPoints{"$gmttime"} = $altitude;
  }
}

## for $e (keys %GpxPoints) { print "$e => $GpxPoints{$e}\n"; }

for my $file2parse ("$Tcx_file") {
  # http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2
  my $doc = $parser->parse_file($file2parse);

  my $root = $doc->documentElement();

  my $xc = XML::LibXML::XPathContext->new( $root );
  $xc->registerNs('tcx',
      'http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2');

  foreach my $t ($xc->findnodes('//tcx:Trackpoint')) {

    my $xpe = XML::LibXML::XPathContext->new( $t );
    $xpe->registerNs('tcx',
       'http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2');

    $gmttime = ($xpe->findnodes('tcx:Time'))[0]->textContent();

    foreach my $xpa ( $xpe->findnodes('tcx:AltitudeMeters') ) {
       $oldAltitude = $xpa->textContent();
       ## jeżeli istnieje w pliku GPX punkt z tym samym stemplem 
       ## czasu zmień zawartość elementu tcx:AltitudeMeters
       if (exists $GpxPoints{$gmttime} ) {
          ## replace content of tcx:AltitudeMeters
          $xpa->removeChildNodes();
          $xpa->appendText("$GpxPoints{$gmttime}");
          $changedNodesNo++;
       } else {
          ## jeżeli nie istnieje usuń cały węzeł
          my $parent = $t->parentNode;
          $parent->removeChild( $t );
          $droppedNodes .= "$gmttime;";
          $droppedNodesNo++;
       }
    }
  }

### ###
print "<?xml version='1.0' encoding='UTF-8' standalone='no' ?>\n";
print $root->toString;
### ###
}

print STDERR "Zmieniono: $changedNodesNo / Usunięto: $droppedNodesNo\n";
print STDERR "($droppedNodes)\n";

Ponieważ skrypt srtm.py nie tworzy pliku GPX zawierającego wszystkie punkty z pliku TCX (z jakiś powodów niewielka część jest pomijana); warunek exists $GpxPoints{$gmttime} sprawdza czy istnieje w pliku GPX punkt z podanym stemplem czasowym. Jeżeli istnieje zmieniana jest wysokość, jeżeli nie to punkt jest usuwany.

url | Sat, 28/05/2016 11:01 | tagi: , ,
Porównanie frekwencji/głosów nieważnych w wyborach 2014/15

Rozkład frekwencji i odsetka głosów nieważnych (odpowiednio pierwsza i druga kolumna) w wyborach: do Sejmu 2015, do Parlamentu Europejskiego 2014 oraz słynnych wyborach do Sejmików Wojewódzkich 2014 (trzeci wiersz)

Wydaje mi się że baza protokołów z wyborów samorządowych jest niekompletna, w szczególności protokołów z wyborów do Sejmików Wojewódzkich (SW) powinno chyba być tyle ile jest obwodów czyli 27435, a jest 26495 (96,57%). Nie wiem czemu jest mniej, ale na przykład w Szczecinie przy części komisji obwodowych faktycznie nie ma protokołów z głosowania do SW.

Dane z wyborów samorządowych 2014 (na razie dotyczące tylko frekwencji) pobrane ze strony http://wybory2014.pkw.gov.pl/pl są dostępne tutaj. W poprzednich wpisach dotyczących wyborów podano odnośniki do danych z innych głosowań.

url | Fri, 13/05/2016 20:55 | tagi: , ,
Rejestrowanie wysokości przez odbiorniki GPS

Rejestrowanie wysokości przez odbiorniki GPS jak wiadomo odbywa się z błędem. Do tej pory mi to wisiało, ale problem stanął, gdy zachciało mi się dodać nachylenie do danych GPS (wyświetlanych jako napisy generowane autorskimi skryptami z pliku GPX/TCX), które to nachylenie nie zgadzało się wielokrotnie ze stanem faktycznym. Szczególnie tajemnicze były różnice na plus/minus 300% i więcej...

W trakcie prób rozwiązania tego problemu dowiedziałem się tego i owego na temat rejestracji wysokości. I o tym jest ten wpis. Natomiast problem z obliczaniem nachylenia został nierozwiązany. Wartości nachylenia pokazywane w trakcie jazdy przez urządzenia, takie jak Garmin Edge 500 są wiarygodnie, co by świadczyło, że zaimplementowano w nich jakiś całkiem sprytny algorytm wygładzający. Szukałem co na ten temat wie google, ale nic nie znalazłem. Próbowałem wygładzać wysokość/nachylenie w R za pomocą funkcji loess (a także średniej ruchomej) -- rezultaty były kiepskie.

Znalazłem natomiast informacje w jaki sposób można poprawić dokładność danych o wysokości, zarejestrowaną (niedokładnie) przez urządzenie GPS. Otóż można albo skorzystać z usługi Google Elevation (GE) albo użyć danych SRTM, przy czym minusem GE jest dzienny limit 2500 zapytań.

Zaczniejmy od prostszego przypadku, tj. dodania/zmiany wysokości z modelu SRTM. W tym celu pobieramy/instalujemy pakiet srtm.py. Pakiet zawiera m.in narzędzie pn. gpxelevations:

## Dodaje dane SRTM, zapisuje do pliku PLIK_SRTMS.gpx
gpxelevations -s -o PLIK.gpx -f PLIK_SRTMS.gpx
  
## Wygładza dane i zapisuje do pliku PLIK_SRTMS.gpx
gpxelevations -o 20160511.gpx -f PLIK_SRTMS.gpx

Dane SRTM można też dodać/zamienić posługując się okienkową aplikacją pn. GPSPrune, jak ktoś lubi klikać ale nie lubi wiersza poleceń.

Zakładając, że dane są w pliku GPX pobranym z urządzenia, poniższy skrypt wygeneruje plik CSV zawierający m.in. wysokość oryginalną, wysokość z modelu SRTM oraz wysokość wygładzoną:

#!/bin/bash

FILE=`basename $1 .gpx`

if [ -f "$FILE.gpx" ] ; then
  ## Dodanie lepszych wysokości
  gpxelevations -o $FILE.gpx -f ${FILE}_SRTM.gpx
  gpxelevations -s -o $FILE.gpx -f ${FILE}_SRTMS.gpx

  ## Zamiana na CSV (skrypt gpx2csv.pl zamieszczono dalej)
  gpx2csv.pl ${FILE}.gpx > ${FILE}.csv && \
  gpx2csv.pl ${FILE}_SRTM.gpx > ${FILE}_SRTM.csv && \
  gpx2csv.pl ${FILE}_SRTMS.gpx > ${FILE}_SRTMS.csv

  ## Scalenie w jeden plik CSV
  paste -d ';' ${FILE}.csv ${FILE}_SRTM.csv ${FILE}_SRTMS.csv | \
  awk -F';' ' BEGIN{ print "daytime;lat;long;ele;srtm;srtms"; };\
     {print $1 ";" $2 ";" $3 ";" $4 ";" $8 ";" $12}' > ${FILE}_ALLE.csv

else
  echo "*** USAGE: $0 PLIK.gpx ***"
fi

Teraz można porównać wysokość oryginalną, wysokość SRTM oraz wygładzoną na wykresie:

library(reshape)
require(ggplot2)

args = commandArgs(trailingOnly = TRUE);

if (length(args)==0) { stop("Podaj nazwę pliku CSV", call.=FALSE) }

fileBase <- gsub(".csv", "", args[1]);
outFile <- paste (fileBase, ".pdf", sep = "");

d <- read.csv(args[1], sep = ';',  header=T, na.string="NA");

ggplot(d, aes(x = as.POSIXct(daytime, format="%Y-%m-%dT%H:%M:%SZ"))) +
  geom_line(aes(y = ele, colour = 'zarejestrowana', group = 1), size=.5) +
  geom_line(aes(y = srtm, colour = 'srtm', group = 1), size=.5) +
  geom_line(aes(y = srtms, colour = "srtm (wygładzona)", group = 1), size=.5) +
  ylab(label="Wysokość [mnpm]") +
  xlab(label="czas") +
  labs(colour = paste("Plik:", fileBase )) +
  theme(legend.position="top") +
  theme(legend.text=element_text(size=12));

ggsave(file=outFile, width=12, height=5)

## Uruchomienie:
## Rscript gps_vs_srtm.R PLIK.csv

Oryginalne dane z urządzenia są systematycznie zaniżone.

Dodanie danych z Google Elevation jest równie proste. Poniższy skrypt -- jako przykład -- pobiera wysokość dla punktu o współrzędnych podanych jako argumenty wywołania (szerokość/długość):

use LWP::Simple; 
use JSON qw( decode_json );

my $geocodeapi =
 "https://maps.googleapis.com/maps/api/elevation/json?locations";

 ## szerokość = $ARGV[0] ; długość = $ARGV[1]
 my $url = $geocodeapi . "=$ARGV[0],$ARGV[1]";
 my $json = get($url);

 my $d_json = decode_json( $json );

 if ( $d_json->{status} eq 'OK' ) {
   $elevationG = $d_json->{results}->[0]->{elevation};
   $resolutionG = $d_json->{results}->[0]->{resolution};
   $latG = $d_json->{results}->[0]->{location}->{lat};
   $lngG = $d_json->{results}->[0]->{location}->{lng};
 }

 print "$elevationG\n";

Drugi z wykresów zawiera dane pobrane z Google Elevation Service.

Na zakończenie jeszcze skrypt zamieniający gpx na csv:

#!/usr/bin/perl
# Wykorzystanie gpx2csv.pl PLIK.gpx > PLIK.csv
#
use XML::DOM;
my $parser = new XML::DOM::Parser;

for my $file2parse (@ARGV) {
  my $doc = $parser->parsefile ($file2parse);
  for my $t ( $doc->getElementsByTagName ("trk") ) {

    for my $p ( $t->getElementsByTagName ("trkpt") ) {  $node++;
        my $latitude = $p->getAttributeNode ("lat")->getValue() ;
        my $longitude = $p->getAttributeNode ("lon")->getValue() ;

	$gmttime = $p->getElementsByTagName ("time")->
	   item(0)->getFirstChild->getNodeValue();
	
	 $altitude = $p->getElementsByTagName ("ele")->
	   item(0)->getFirstChild->getNodeValue();
	printf "%s;%s;%s;%s\n", $gmttime, $latitude, $longitude, $altitude;
       }
   }
}
url | Thu, 12/05/2016 21:17 | tagi: , ,
Garmin Virb Edit

Według producenta program: łączy nagrania wideo z kamery sportowej VIRB z danymi GPS i innymi informacjami pochodzącymi ze zgodnych urządzeń firmy Garmin. Faktycznie łączy dane zapisane w formacie FIT/GPX z dowolnym plikiem wideo zapisanym w formacie MP4.

VIRB Edit można ściągnąć za darmo ze strony Garmina (dostępne są wersje dla systemów MS Windows/Mac).

Moja niegarminowska kamera zapisuje obraz w formacie MOV (Dane GPS są faktycznie z urządzenia firmy Garmin, ale równie dobrze mogłyby być ze smartfonu albo chińskiego loggera.) Zamieniam plik MOV do formatu MP4 za pomocą aplikacji HandBrakeCLI. Poniższe polecenie wykonuje konwersję, a wynikowy plik.mp4 będzie około 50% mniejszy niż plik MOV:

time HandBrakeCLI -i PLIK.MOV -o PLIK.mp4 -w 1280 -l 720 --preset="Normal"

Trzydziestominutowy plik MOV, zamieniany jest przez około pół godziny (Linux IntelNuc/i5/8Gb pamięci).

Uparłem się zainstalować HandBrakeCLI w systemie Fedora21, a ponieważ nie ma stosownych pakietów .rpm musiałem go skompilować:

yum install yasm zlib-devel bzip2-devel libogg-devel libtheora-devel \
libvorbis-devel libsamplerate-devel libxml2-devel fribidi-devel \
freetype-devel fontconfig-devel libass-devel dbus-glib-devel \
libgudev1-devel webkitgtk-devel libnotify-devel \
gstreamer-devel gstreamer-plugins-base-devel

sudo yum groupinstall "Development Tools" "Development Libraries" \
"X Software Development" "GNOME Software Development"

yum install lame-libs lame-devel x264-devel intltool

tar -xvzf HandBrake-0.10.3.tar.bz2
cd HandBrake-0.10.3
./configure
cd build
make
make install

W sumie mogłem sobie darować powyższe, bo i tak w końcu muszę używać MS Windows, no ale może ten HandBrake przyda się do czegoś innego.

Na mojej stronie na youtube można obejrzeć wygenerowane za pomocą VIRB filmiki z dodanymi danymi GPS.

url | Thu, 12/05/2016 06:53 | tagi: , , ,
Wybory do PE2014/Sejmu2015: komisje obwodowe z wysokim odsetkiem głosów nieważnych

W nawiązaniu do poprzedniego wpisu.

861 komisji obwodowych z ze znaczącym odsetkiem głosów nieważnych (przyjąłem 6% jako wartość progową):


duże mapy/dane

Na pierwszy ogląd, to nie wydaje się żeby w jakimś regionie mieszkali szczególnie niekumaci wyborcy, chociaż Dolny Śląsk/Podlaskie wydają się prezentować najkorzystniej:-)

url | Thu, 21/04/2016 17:17 | tagi: , ,