Nextbike monitorowany

Rowery miejskie w Poznaniu, mimo swoich niedoskonałości, stały się na tyle popularne, że ich liczba na poszczególnych stacjach czasami spada w okolice zera. Jak tylko dowiedziałem się, że Nextbike udostępnia aktualizowane na żywo informacje dotyczące rowerów na poszczególnych stacjach (duże, naprawdę duże brawa i szacun), wpadłem na pomysł, że fajnie byłoby mieć dostęp do danych przez komórkę (stara Nokia 3110c, Opera mini) w lekkiej i wygodnej formie. Po prostu od razu łatwo sprawdzić, ile jest rowerów na której stacji Nextbike, czy jest sens iść na daną stację, czy lepiej na tramwaj, albo pieszo, bo roweru raczej nie znajdziemy.

Ponieważ oryginalny XML jest dość ciężki (~250 kB, szczegółowe dane o wszystkich krajach, miastach i stacjach), postanowiłem wyciągać z niego tylko najważniejsze dane i tylko dla Poznania, a następnie wrzucać do lekkiego HTML.

Aktualnie powstało coś takiego: dostępność rowerów Nextbike w Poznaniu.

Działa prosto: wget i mały skrypt perlowy z użyciem modułu XML::Simple (przyznaję, przez ułamek sekundy chciałem to opędzić grep + awk), wywołanie z crona co 5 minut (mógłbym częściej, ale póki co nie widzę sensu, szczególnie, że na razie tylko ja korzystam) i wyplucie wyniku do statycznego HTML. Jest data aktualizacji, są kolory. Nie jest piękne, pewnie się nie waliduje, ale jest b. lekkie (całość aktualnie waży ok. 500 bajtów, docelowo – pewnie dodam trochę tekstu – mniej, niż 1kB) i działa. Liczę na komentarze dot. funkcjonalności i wyglądu.

PS. Coś dawno nie wypożyczałem roweru…

UPDATE: Za sprawą Sternika nie zaciągam już 250 kB, tylko od razu dane dla danego miasta – częstotliwość zmieniona co minutę. I nieco inny URL wykorzystuję. I w ogóle polecam wpis Sternika o Nextbike (wersja live, wersja IVR i za moment być może wersja z Google maps).

Czy to naprawdę kod źródłowy tego programu?

Polecam cały artykuł Is that really the source code for this software? a dla niecierpliwych lub niespikających krótkie streszczenie. Wiele wolnego oprogramowania przychodzi w postaci binarnej, do której dołączony jest kod źródłowy w teorii odpowiadający dokładnie temu, z którego zostały zbudowane wersje binarne. Zagadnienie jest ważne zarówno z punktu widzenia wolności oprogramowania, jak i bezpieczeństwa.

Autor ww. artykułu postanowił sprawdzić, jak to wygląda w praktyce dla popularnych dystrybucji Linuksa (Debian, Fedora, OpenSUSE) na przykładzie tak prostego oprogramowania jak tar. Wykorzystał do tego celu minimalne instalacje systemu, korzystał ze źródeł dostarczonych w dystrybucjach i metod budowania zalecanych przez dystrybucje.

Wyniki są dość zaskakujące ani razu nie udało mu się uzyskać dokładnej (bit w bit) kopii tego prostego przecież pakietu.

W przypadku Debiana różnice były minimalne (data i id buildu w plikach wykonywalnych), w przypadku OpenSUSE było gorzej – powstałe pliki binarne były 5 razy większe od oryginału, ale po stripnięciu wersji binarnych sytuacja wyglądała już podobnie jak w przypadku Debiana. Najgorzej wypadła Fedora – nie tylko różnic było najwięcej, ale autorowi artykułu nie udało się ustalić przyczyn wszystkich rozbieżności i „niełatwo stwierdzić, czy samodzielny build ze źródeł będzie funkcjonował identycznie, jak opublikowana wersja binarna z dystrybucji”.

W przypadku skomplikowanych pakietów i projektów luźniej podchodzących do kwestii wolności oprogramowania, niż dystrybucje Linuksowe (np. firmware routerów z wykorzystaniem wolnego oprogramowania – często zamieszczają kernel, ale zwykle jest to wersja waniliowa wzięta na żywca z kernel.org…) różnice będą jeszcze większe. Gdyby ktoś znalazł komentarz RMS do sprawy, proszę o linka – bardzo jestem ciekaw, co ma do powiedzenia w tej sprawie.

Domena debian-multimedia.org przejęta.

Zespół Debiana donosi, że domena debian-multimedia.org, pod którą wcześniej było dostępne nieoficjalne, lecz popularne repozytorium pakietów, wygasła, a obecnie została przejęta przez osobę niezwiązaną z projektem.

W związku z tym, wszystkie repozytoria odwołujące się do niej powinny być usunięte z sources.list, gdyż zachodzi możliwość przedostania się w ten sposób do systemu złośliwego kodu.

Aby sprawdzić, czy w systemie są one aktualnie obecne, można wykonać polecenie:

grep debian-multimedia.org /etc/apt/sources.list /etc/apt/sources.list.d/*

Przypominają również, że począwszy od wydania Wheezy’ego najprawdopodobniej nie będzie ona już potrzebna ze względu na poprawione wsparcie dla multimediów w tym wydaniu.

Przy okazji: z dyskusji na Facebooku wynika, że www.deb-multimedia.org nadal jest bezpieczne.

Konferencja Atmosphere 2013.

O konferencji Atmosphere dowiedziałem się z maila – organizator jest ten sam, co PLNOG i ma świadomość, że na PLNOG nie tylko sieciowcy jeżdżą, ale także sysadmini. Atmosphere w założeniu miało być dla devopsów i wypełnić lukę między konferencjami dla programistów, a konferencjami dla sieciowców. Organizator sprawdzony (na PLNOG ludzie się zapisują nie znając agendy), konferencja na miejscu w Poznaniu, tematyka ciekawa, więc uznałem, że warto się wybrać, bo może być ciekawie. Zresztą na pierwszego PLNOGa też pojechaliśmy na zasadzie „zobaczmy, co będzie”. I było wtedy fajnie, nie tak krótkie wrażenia z pierwszej edycji PLNOG opisałem (część 1 i część 2).

Oczywiście nie wybrałem się sam. Zebraliśmy mieszany skład (sysadmini, programiści, i ja robiący za management i z doskoku sieć) i… pojawił się pierwszy problem: strona konferencji jest w całości w języku angielskim, sporo zagranicznych prowadzących… O ile administratorzy raczej u nas sobie ze spikaniem radę dają, to okazało się, że dla części programistów jest to problem. Szybki kontakt z organizatorami i wiemy, że jest mieszane, ale ok. połowy wykładów jest po angielsku. W praktyce: jak ktoś nie zna języka, to przy takiej proporcji nudzić się też raczej nie będzie. Nawet jeśli opuści któryś wykład, to znajdą się ciekawi ludzie, żeby pogadać w przerwie.

Jeśli chodzi o atmosferę, to spodziewałem się drugiego PLNOG, a było znacznie bardziej kameralnie, co przełożyło się na zupełnie inną atmosferę. Mniej ludzi, mniej oficjalnie, w jednej z sal wykładowych obok tradycyjnych krzeseł były z tyłu leżanki różnej maści – fajny pomysł, szczególnie w połączeniu z ekranami po bokach, na których wyświetlana była treść prezentacji. Można było odpocząć (fizycznie), nie tracąc przy tym wykładu. Bo siedzenie przez cały dzień na krzesłach to jednak nie jest to, co tygrysy lubią najbardziej. Wracając do atmosfery – bardzo fajnie. Inaczej, niż na PLNOG, ale fajnie.

Pora na wady: za głośna muza na afterparty. Ciężko było pogadać w lokalu, z kolei na zewnątrz było jednak za zimno. Zdaję sobie sprawę, że problem jest nietrywialny do rozwiązania (i występuje raczej zawsze, nie tylko na konferencjach, ale także przy zwykłych wypadach do lokali, w większym lub mniejszym stopniu). Kolejna wada – z mojego punktu widzenia – to proporcje tematyczne. Mam wrażenie, że jednak z 70% wykładów na których byłem, było celowanych w programistów. Niemniej, były dwie ścieżki, więc był wybór, a na obu naraz nie byłem. Last: jak pierwszego dnia rozdawane są gadżety, to przyda się coś do noszenia. Nie wymagam plecaka/torby (PLNOG rozpieszcza), ale choćby reklamówka ułatwia życie. I długopisy + notes byłyby fajne. Choćby parę kartek w identyfikatorze.

Prezentacji omawiać po kolei nie będę. Generalnie było ciekawie, także te niby offtopiczne prezentacje były OK. Niektóre z prezentacji ciut zbyt pojechane/hermetyczne jak na mój gust, ale ogólnie dobrze. Jeśli chodzi o uczestników, to zdecydowanie dominowały na plakietkach Allegro i Wikia. Sporo także wykładowców z tych firm. W sumie trudno się dziwić… Jak na pierwszy raz – zdecydowanie fajnie. Mam nadzieję, że w przyszłym roku uda mi się dotrzeć.

No i tyle tych dość chaotycznych i spóźnionych wrażeń (zacząłem pisać wcześniej, potem zapomniałem o nim). Ku pamięci: przez dziewięć edycji PLNOG nie udało mi się nigdy niczego wygrać, mimo wielokrotnego poświęcenia i porannego wstawania do rannych ptaszków. Ostatnio zgarnąłem dwie nagrody. Na Atmosphere kontynuowałem dobrą passę. Mam podejrzenie, że odkryłem hacka, ale muszę to jeszcze sprawdzić…

Debian, Huawei E3131 od Play i Aero2.

Będzie krótko o tym, jak uruchomić i korzystać z modemu Huawei E3131 od Play na Debianie (unstable). Dokładny opis dotyczący Aero2 z Huawei E3131 jest na DUG, tu najważniejsze rzeczy i parę zmian.

Modem Huawei E3131 od Play

Źródło: http://www.play.pl/telefony/huaweie3131_white/img/gal/big/1_1100x1100.png

Instalacja potrzebnych programów:

wajig install usb-modeswitch wvdial

Ustawienie trybu automatycznego (domyślnie jest tylko Play). Wykonanie na rozłączonym modemie, tylko raz, po kupnie modemu:

echo "AT^SYSCFG=2,0,3FFFFFFF,1,2\r" >/dev/ttyUSB0

Zawartość pliku konfiguracyjnego wvdial.conf:

$ cat /etc/wvdial.conf 
[Dialer aero2]
Modem = /dev/ttyUSB0
Init1 = AT+CGDCONT=1,"IP","darmowy"
Phone = *99#
Stupid mode = yes
Username = "aero"
Password = "aero"
Dial Attempts = 0
Auto DNS = "off"

[Dialer power]
Modem = /dev/ttyUSB0
Init1 = AT+CSQ

Gwoli wyjaśnienia – opcja Auto DNS nie działa, ani wywołana w powyższy sposób, ani jako Auto DNS = 0 – zawsze ustawia serwery DNS w /etc/resolv.conf. Nadpisuję ręcznie przez

echo "nameserver 127.0.0.1" > /etc/resolv.conf

Aby faktycznie wvdial nie ustawiał serwerów DNS oferowanych przez dostawcę, tylko korzystał ze statycznie ustawionych w /etc/resolv.conf, należy, poza powyższymi ustawieniami, w pliku /etc/ppp/peers/wvdial zakomentować opcję usepeerdns. Info z wpisu static DNS with wvdial.

I tu pierwszy trick – lokalny cache DNS powinien znacznie przyspieszyć odczuwalne działanie sieci, zwł. na tak wolnym łączu.

Trick drugi – używam tunelowania SSH z kompresją (ssh -CND 9000 user@host_z_lepszym_łączem)i socks proxy 5 (localhost:9000) w przeglądarce. Na oko, łącząc się do hosta 1/0,25 Mbps jest minimalnie szybciej, niż na gołym Aero2, w przypadku VPS z porządnym łączem jest znacznie szybciej. Warto zwrócić uwagę, by zapytania DNS nie były tunelowane, jeśli korzystamy z lokalnego cache’ującego serwera DNS.

Połączenie z siecią nawiązuję przez wvdial aero2 – w tym przypadku nie zależy mi na automagicznym wznawianiu w tym przypadku.

Drugi wpis, czyli power służy do określania siły sygnału GSM (znowu sprawdzanie siły sygnału GSM opisane jest szerzej na DUG). Wywołanie to wvdial power, otrzymujemy dwie cyfry oddzielone przecinkiem, interesuje nas pierwsza cyfra. 2 km od nadajnika (strona z rozmieszczeniem nadajników GSM poszczególnych operatorów z możliwością pomiaru odległości od nich), w budynku, na parterze, bez żadnej anteny mam 7-10 i wystarcza to do bezproblemowego działania sieci. Ogólnie jestem bardzo zadowolony z Huawei E3131 i jego działania pod Linuksem.

UPDATE: W związku z tym, że od 1 kwietnia 2014 do nawiązania połączenia przez Aero2 wymagane jest rozwiązanie CAPTCHA, należy uważać ze zmianą DNSów. Jeśli zmienimy z serwerów DNS Aero2 na inne, to nie nastąpi automatyczne przekierowanie żądania HTTP na stronę z CAPTCHA. Dla porządku: adres, na który następuje przekierowanie to http://bdi.free.aero2.net.pl:8080/ (uwaga na port!), a resolvuje się to – tylko z sieci Aero2 przed uzyskaniem pełnego dostępu do internetu – na http://10.2.37.78:8080/