Menu

Pomiędzy bitami

Techno, porno i duszno. Blog niezupełnie technologiczny.

Inne

Całkowite zaćmienie Słońca

rozieblox

Dzisiaj będzie rzadka okazja na obejrzenie pełnego zaćmienia Słońca. Co prawda niestety nie w Polsce, bo widoczne będzie ono w USA, ale dzięki odrobinie techniki możemy obejrzeć to zjawisko astronomiczne za pośrednictwem transmisji online. Czyli na żywo, ale zdalnie.

Tu strona NASA poświęcona zaćmieniu wraz z licznikiem czasu pozostałego do zaćmienia, a samą transmisję z pełnego zaćmienia Słońca będzie można zobaczyć na tej stronie. Gdyby ktoś miał ochotę obejrzeć, to powinien zarezerwować sobie trochę czasu około godziny 18:00.

Zasilaczowe perypetie cz. 1 - zasilacz do laptopa Dell

rozieblox

Na urlopie któregoś wieczora włączyłem laptopa (Dell Vostro 1440), a ten powitał mnie przy starcie komunikatem, że nie rozpoznał zasilacza. Dałem kontynuuj i myślałem, że na tym się skończy, ale szybko stwierdziłem, że to za mało. Laptop działał, ale bateria się nie ładowała. Dodatkowo, procesor działał z najniższym możliwym taktowaniem, czyli odpowiednik trybu powersave. Niezbyt komfortowe, delikatnie mówiąc. Sprzęt ma swoje lata (dokładnie pięć) i choć nie był zbyt intensywnie używany, to na urlopie po prostu wrzucałem zasilacz do plecaka, więc stwierdziłem, że może gdzieś się kabel złamał.

Próbowałem poruszać kablem w co bardziej newralgicznych miejscach, ale bez rezultatu. Ponieważ wiedziałem, że zasilacz jest sprawny, postanowiłem poczytać o wewnętrznej żyle, służącej do sygnalizacji. Z innych zabaw z zasilaczami do laptopów wiedziałem, że jest tam obecne napięcie. Liczyłem, że to tylko prosty dodatek i jest zmostkowane z plusem. Postanowiłem zapytać znajomych, czy tak jest faktycznie. Gdyby tak było, to plan był następujący - wziąć wtyczkę i gniazdo i zrobić przedłużacz, który jednocześnie będzie mostkował plus z tą wewnętrzną żyłą.

Niestety, szybkie rozpytanie i rzut oka w wyszukiwarkę ujawniły, że jest to nieco bardziej skomplikowane: wewnętrzna żyła służy do komunikacji 1-wire zasilacza z laptopem. Natomiast sama usterka faktycznie jest popularna. Na tyle, że można kupić gotowe kable do przylutowania w zasilaczu. Tyle, że wspomniana przejściówka byłaby wielokrotnego użytku i prostsza w montażu...

Postanowiłem zmodyfikować podejście i zobaczyć, czy da się tani zrobić oszusta, czyli przedłużacz jak wyżej, ale udający zasilacz. Czyli trzeba by doczytać o komunikacji 1-wire na linii zasilacz-laptop i układach, które ją realizują. Już rozmyślałem, kto ze znajomych ma oscyloskop, ale sprawa okazała się o wiele prostsza. Ktoś już sprawdził komunikację, opisał format, a nawet zamieścił kod źródłowy i schematy. Tutaj znajdziecie cykl bardzo interesujących wpisów nt. komunikacji laptopów Dell z zasilaczami (oczywiście po angielsku) oraz repo GitHub. Jak widać autor również wpadł na pomysł przejściówki, tyle, że motywowany nieco inną potrzebą.

A jak się sprawa zakończyła u mnie? Nie zależy mi na debugu i zabawie, więc powyższe rozwiązanie nie bardzo ma sens ekonomiczny. Stosowne chipy do komunikacji 1-wire co prawda nie są drogie, bo - jeśli dobrze pamiętam - wychodziło ok. 2 zł za sztukę, ale w paczkach po 5-10 sztuk i przy sprowadzaniu z Chin. Dodatkowo trzeba jeszcze je zaprogramować, programator jest dość drogi, a nikt posiadający takie urządzenie nie przychodził mi do głowy.

Ponieważ korzystanie z laptopa na najniższym taktowaniu było zauważalnie męczące, nie bylem pewny, czy uda mi się otworzyć zasilacz w taki sposób, że złożę go z powrotem, a także nie miałem pewności, czy faktycznie chodzi o kabel, czy też może o uszkodzony układ do komunikacji, szybko kupiłem zastępczy zasilacz oraz... dwa kable. Planuję spróbować zreanimować stary zasilacz przez wymianę kabla - przy odrobinie szczęścia na parę lat starczy, a przejściówka... może innym razem. Kable dwa, bo od sprzedawcy zasilacza, więc wysyłka gratis, a kosztowały niecałe 5 zł za sztukę.

Przy okazji: otworzyć zasilacz do laptopa można wkładając nóż w szczelinę i delikatnie pukając w niego młotkiem. Sposób jest niestety inwazyjny, bo są one klejone - po naprawie trzeba albo skleić klejem (wersja trwała/ładna), albo złożyć i brzydko skleić taśmą z wierzchu.

Dokładność zegarków kwarcowych

rozieblox

Jakiś czas temu w komentarzach pod wpisem u Boniego zeszło na dokładność zegarków kwarcowych. Było o tym, że są znacznie dokładniejsze od mechanicznych. Poszperałem w sieci i znalazłem informacje[1], że chronometry (certyfikowane) mechaniczne, to dokładność -4/+6 sekund dziennie, natomiast kwarc (dowolny) to -15/+20 sekund miesięcznie.

Spostrzeżenie organoleptyczne było takie, że zarówno budzik Casio, naręczny MQ-24 oraz p zegarek naręczny reguluję dwa razy do roku - przy zmianie czasu. I żadnych niedokładności nie widzę, więc musi być jeszcze dokładniej w praktyce. Co prawda na sekundnik nie patrzę w żadnym z przypadków, ale różnicę rzędu minut czy też minuty mógłbym zauważyć.

Postanowiłem zrobić amatorski test dokładności mojego Casio naręcznego. Zsynchronizowałem czas na komputerze przy pomocy NTP[2], zatrzymałem zegarek z sekundnikiem rozpoczynającym minutę. W momencie zmiany minuty włączyłem zegarek naręczny. Czyli powiedzmy dokładność do jednej sekundy. Dla pewności zapisałem datę: 21 czerwca.

W trakcie testu zegarek był użytkowany - zaliczył wyjazd na wakacje, więc i trochę leżenia, i trochę noszenia, i trochę podgrzania na słońcu, chociaż kwarcom niespecjalnie takie rzeczy powinny robić różnicę.

Przedwczoraj, czyli 24 lipca, nadszedł czas na podsumowanie testu. Ponownie sprawdziłem synchronizację czasu na komputerze i sprawdziłem różnicę czasu. Wyniosła +5 sekund w ciągu 35 dni, czyli równo 1 sekunda tygodniowo. Poniżej minuty rocznie. Nic dziwnego, że mogłem nie zauważyć różnic pomiędzy regulacjami czasu.

[1] W wielu miejscach, generalnie zbieżne, niekiedy różniące się pojedynczymi sekundami. Nie zanotowałem niestety linków.

[2] Znaczy sprawdziłem, czy lokalny pokrywa się z czasem podawanym przez serwery NTP, bo zsynchronizowany jest cały czas - to chyba już domyślne na większości systemów, z komórkami włącznie.

Ilość rowerów Nextbike na stacjach - reaktywacja

rozieblox

Dawno temu pisałem o monitoringu rowerów Nextbike na stacjach. Moja strona podająca aktualną ilość rowerów miejskich na stacjach Nextbike działała do kwietnia tego roku, po czym przestała odświeżać dane. Jest to o tyle niefajne dla mnie, że appka androidowa Nextbike i jej wyszukiwanie rowerów to jakaś kpina i zdecydowanie łatwiej i szybciej znajdowałem potrzebne dane u siebie. Albo po prostu I don't like the bugs but the bugs like me, czyli znowu mam pecha i u mnie nie działa. W ogóle o appkach na Androida, zwłaszcza polskich wypadałoby już popełnić osobny wpis...

Poczyniłem szybki debug i okazało się, że Nextbike zapytany o konkretne miasto zwraca od niedawna błędny XML, zawierający zawsze także dane dla Indii. Zgłosiłem błąd mailem, co wiązało się z zabawną sytuacją, bo po pierwsze zostałem przez centralę wzięty za pracownika (chyba raczej stażystę) firmy Nextbike i odesłany do innego pracownika, który może założyć ticket w systemie. Padło też pytanie, a skądże to ja mam namiar na ten URL (przypominam, mający official w nazwie). No cóż, URL lata w wielu miejscach w sieci...

W każdym razie błąd został zgłoszony, a dane się nie pokazywały. Próbowałem na szybko zreanimować skrypt w Perlu, ale albo zmian było więcej, albo nie do końca umiem korzystać z tej biblioteki. W każdym razie poległem, a na dłuższe grzebanie w Perlu nie miałem ochoty. Przy okazji niegdyś poukładany kod wydał mi się już nie taki fajny i w sumie można by go przepisać...

Wczoraj zrobiłem przymiarkę do napisania tego w Pythonie. Okazało się, że bez problemu jestem w stanie parsować XML. Przy okazji zrezygnowałem z pobierania danych dla każdego miasta oddzielnie - miast jest na tyle dużo, że szybciej jest pobrać plik XML raz. Skoro zapowiadało się tak fajnie, to od razu postanowiłem przerzucić konfigurację z hasha w programie do pliku YAML. A skoro szło tak fajnie, to zmieniłem "template", zaszyty w printach w skrypcie, na Jinja2, przy okazji mając pierwszy praktyczny kontakt z tym rozwiązaniem, bo wcześniej "korzystałem" z niego tylko w template'ach dla bloga opartego o Pelican. Bardzo fajne, rozbudowane bardziej, niż przypuszczałem i jednak rządzące się swoimi prawami. W każdym razie mniej oczywiste niż mi się wydawało do tej pory.

Skoro szło tak dobrze, to dorzuciłem pięć kolejnych miast (Pszczyna, Zgierz, Kędzierzyn-Koźle, Kołobrzeg i Tychy), bo tyle pojawiło się od kwietnia. Oczywiście już nie do skryptu, tylko do prostego w utrzymaniu pliku z konfiguracją. :-) Całość zapakowana w virtualenv oczywiście, dla przenośności.

Ze skryptu nie jestem w 100% zadowolony - pewnie można go jeszcze uprościć, ale... może kiedy indziej, tym bardziej, że mógłbym jeszcze uzupełnić dane o geolokalizacji i pewnie gdzieniegdzie zostało błędne kodowanie znaków. Póki co, strona z ilością rowerów znowu działa. Ciekawostka - wszystkie pliki (skrypt, konfig, dane o wymaganych modułach) mają tyle samo linii co oryginalny Perl (TBH żadne nie było specjalnie sprzątane czy optymalizowane pod kątem wielkości), a jest o niebo czytelniej i prościej.

Internet bez kabla

rozieblox

Raspberry Pi radzi sobie w połączeniu z modemem Huawei 3131 (stara wersja) zaskakująco dobrze jako router do Aero2 (wariant płatny). Przesiadka z Banana Pi nie była całkiem bezproblemowa - internet w domu co prawda działał, ale straciłem zdalny dostęp przy pomocy autossh. Diagnostyka była prosta - okazało się, że nie wystarczy skopiować skrypty i crony, warto jeszcze sprawdzić, czy autossh jest w ogóle zainstalowane...

Prawdopodobnie przez brak nawiązanego połączenia SSH zmienia się IP i przesyłanych (a w zasadzie zliczanych) jest więcej danych podczas okresowego (co 5 minut) wywoływania wget w ramach namiastki dyndns. Znaczy zamiast jednego pakietu 3GB po 5 zł sztuka miesięcznie schodzą dwa. Można kupić więcej od razu, więc żaden problem, zresztą i tak raczej się zdziwiłem, że na początku mieścili się w jednym.

Internet z GSM działa przyzwoicie. Nie zauważyłem ani specjalnych lagów, ani spowolnienia. Co prawda może to być kwestia porównywania ze starym pakietem, ale póki co skłaniam się ku teorii, że jestem w stanie przesiąść się w domu całkowicie na internet bezprzewodowy, po GSM. Przynajmniej technologicznie, bo ceny wyższych pakietów jeszcze nie zachwycają. Poza tym, LTE działa podobno jeszcze lepiej...

Pozostało dołożenie drugiego modemu z internetem od innego operatora, uruchomienie abcc do wybierania aktualnie lepszego (i działającego) łącza i... tyle. No, muszę przerobić jeszcze wywoływanie autossh, bo zrobiłem proste @reboot w cronie, co słabo się sprawdza w przypadku zerwania sesji - raz się jednak pakiet Aero2 skończył i trzeba było doładować, a jak się nie zrobi tego od razu, to się zapomina.

Oczywiście można kombinować jeszcze z wyniesieniem modemów GSM w lepsze miejsce, podpięciem anten itp. ale... po co komplikować, skoro działa? Z drugiej strony byłby pretekst do zabawy z antenami i potestowania wpływu siły sygnału GSM na prędkość działania internetu.

Rockbox 3.14

rozieblox

Nie sądziłem, że kiedykolwiek napiszę jeszcze coś w tym temacie, bo projekt Rockbox wyglądał na martwy, ale wczoraj dowiedziałem się, że blisko miesiąc temu, po ponad czterech latach od ostatniego wydania, ukazała się kolejna stabilna wersja alternatywnego oprogramowania dla odtwarzaczy mp3. Pełna lista zmian w Rockbox 3.14 dostępna jest tutaj, z ciekawszych IMO rzeczy: poprawki wydajności systemu plików i bazy danych, dostępna gra 2048 jako plugin oraz niemal podwojona(!) długość pracy na baterii dla AMS v2 devices (Sansa Clip v2, Clip+, Clip Zip, and Fuze v2).

Już zaktualizowałem urządzenia. :-)

Guetzli - lepsza kompresja JPEG

rozieblox

Przedwczoraj Google ogłosiło na blogu nowe narzędzie do kompresji JPEG o nazwie Guetzli, wydawane na wolnej licencji (Apache License). Ma dawać lepsze optycznie rezultaty przy mniejszym rozmiarze wynikowym (mowa nawet o 35% mniejszych plikach). Cena? Oczywiście czas kompresji.

Postanowiłem przetestować na szybko, co mogło by się zmienić, gdybym wykorzystał grafiki skompresowane przy pomocy Guetzli na blogu. W tym celu sięgnąłem po obrazki z backupu bloga i uruchomiłem program (domyślne opcje kompilacji, domyślne ustawienia jakości, czyli 90%) na moim laptopie (CPU: Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz). Zdziwiło mnie to, że aż przy 12 plikach nie udało się ukończyć działania - program zgłosił błąd:

Invalid input JPEG file
Guetzli processing failed

Udało się przetworzyć 66 plików, całość trwała prawie 17 minut (sic!). Czyli jest bardzo wolno. Kompresor wykorzystywał tylko jeden rdzeń CPU. Efekty są obiecujące, zarówno wizualne, jaki i objętościowe. Mimo, że algorytm jest zaprojektowany z myślą o działaniu na możliwie nieprzetworzonych obrazach wejściowych, a te na blogu raczej są już zoptymalizowane, to łączny rozmiar udało się zmniejszyć o 14% (z ok. 3,3 MB do ok. 2,8 MB).

Jeśli wezmą się za wykorzystanie i optymalizację duże firmy, a jest na to szansa po uwolnieniu programu, może to oznaczać mniej przesyłanych danych po sieci, czyli szybsze ładowanie się stron, widoczne zwłaszcza na komórkach. Chwilowo główną barierą jest czas działania, który wygląda na zależny bezpośrednio od wielkości pliku wejściowego.

Zrobiłem jeszcze jeden test - plik JPG bezpośrednio z aparatu, rozmiar 2560x1440, rozmiar wejściowy 1,2 MB. Po kompresji (trwającej kilka minut) brak zauważalnych zmian jakości, natomiast rozmiar zmniejszony aż o 50% (614 kB).

Smogly - miernik poziomu smogu

rozieblox

Dużo ostatnio mówi się w mediach o smogu i zanieczyszczeniu powietrza, widzę też, że pomału wśród znajomych popularne stają się różnego rodzaju, mniej lub bardziej DIY, mierniki poziomu zanieczyszczeń powietrza. Niezależnie od tego, co słychać w mediach, istnieją oddolne obywatelskie inicjatywy, mające na celu monitorowanie zanieczyszczenia powietrza w miastach. Przykładem jest Smogly AKA EnviroMonitor.

Czym jest Smogly?

Celem projektu jest stworzenie otwartego, zarówno sprzętowo, jak i programowo, przystępnego cenowo rozwiązania do monitoringu zanieczyszczenia powietrza, zbudowanie społeczności zainteresowanej jakością powietrza i finalnie zbieranie danych z wielu punktów pomiarowych w celu tworzenia pełnego obrazu jakości powietrza, nie tylko w Polsce, choć większość twórców - o ile nie wszyscy - pochodzi z Polski.

Istnieją co prawda podobne rozwiązania, ale brakuje im przekrojowości. Przykładowo w Poznaniu są dwa czujniki zanieczyszczeń dostępne online - jeden na obrzeżach miasta, drugi w okolicach centrum, ale zanieczyszczenia potrafią się różnić znacząco między poszczególnymi rejonami miasta, nawet między sąsiednimi dzielnicami.

Projekt Smogly składa się z kilku części. Zasadniczą jest sam miernik jakości powietrza. Potrafi on mierzyć ciśnienie, wilgotność, temperaturę oraz zanieczyszczenie pyłami PM 2.5 oraz PM 10. Czujnik przeznaczony jest do samodzielnego montażu (DIY) i wysyła dane do serwera łącząc się z internetem przy pomocy WiFi. Można skorzystać z własnego serwera lub - co jest lepszym rozwiązaniem - wysyłać dane do serwera utrzymywanego przez twórców projektu.

Koszt części (bez obudowy) szacowany jest na ok. 150-200 zł. Nie jest to dużo, biorąc pod uwagę, że - jak
zapewniają twórcy - pomiary były konfrontowane z wykonywanymi przez WIOŚ i różnice w przypadku wersji z grzałką, zapewniającą osuszenie powietrza przed pomiarem zanieczyszczeń, są na poziomie kilku procent.

Kolejne elementy układanki to wspomniany serwer, odbierający dane z sensorów, frontend, prezentujący dane w
przeglądarce oraz obudowa. Sonda badająca jakość powietrza musi być zamontowana na zewnątrz, do zasilania wystarcza zasilacz o prądzie 1A.

Czemu Smogly?

Wyróżniki Smogly na tle "konkurencji" są następujące:

  • montaż zewnętrzny, zapewniający realne dane nt. stanu powietrza w okolicy
  • grzałka, zapewniająca poprawne działanie także w warunkach zwiększonej wilgotności
  • usieciowienie, czyli zbieranie danych z różnych punktów do wspólnej bazy, możliwość odczytu wyników za pomocą np. smartfona
  • otwarty projekt, pozwalający na swobodne ulepszanie i dający nadzieję na utrzymanie i rozwój

Jak pomóc?

W tej chwili najpotrzebniejszą rzeczą są ochotnicy, którzy zbudują i zamontują czujki. Ambicją twórców projektu są 2-3 sensory w każdej dzielnicy, żeby zapewnić miarodajne wyniki. Na pewno projektowi przyda się nagłośnienie, więc jeśli macie znajomych interesujących się ochroną środowiska albo geeków interesujących się Arduino, to dajcie im znać. Podobnie dajcie znać znajomych zainteresowanych kupnem gotowego miernika - prawdopodobnie taniej mogą mieć urządzenie dokładniejsze, o większych możliwościach i bardziej użyteczne społecznie.

Przyłączyć się można za pośrednictwem GitHuba - standardowy flow pracy, czyli zgłaszanie issues,
forkowanie i pull requesty. Projekt korzysta również ze Slacka, dostępnego na zaproszenie - automat zapraszający dostępny jest tutaj.

Na koniec garść linków na temat pyłów PM10 i PM2.5:

  1. O pyłach PM2.5 i PM10 https://airnow.gov/index.cfm?action=aqibasics.particle
  2. Artykuł na Wikipedii https://en.wikipedia.org/wiki/Particulates
  3. Strona projektu Smogly https://github.com/EnviroMonitor
  4. Wpływ zanieczyszczeń na zdrowie http://smog.imgw.pl/content/health
  5. Dopuszczalne normy zanieczyszczeń powietrza http://smog.imgw.pl/content/norm
  6. Poziomy zanieczyszczeń PM2.5 i PM10 online: http://aqicn.org/

Częstochowa czyli paskudny kościół

rozieblox

Niedawno jechałem samochodem do Tych. Po skonsultowaniu z Google Maps, postanowiłem jechać przez Łódź, płatną autostradą, głównie za sprawą przewidywanego czasu przejazdu (lekko ponad 4h) i potencjalnego stanu dróg, bo harmonogram imprezy był dość napięty, a akurat przyszło ochłodzenie i możliwość oblodzenia. Odcinek pierwszy, Poznań - Łódź, znałem od strony technicznej, natomiast zaskoczyły mnie ceny. Patrząc od strony Poznania dwie bramki po 18 zł, potem jedna za 10 zł. Razem 46 zł za ~250 km. Jak na możliwość skorzystania z drogi wybudowanej za moje pieniądze, w dodatku własnym środkiem transportu - zdecydowanie za drogo, w podobnej cenie za kilometr są taksówki.

Jednak nie o tym miało być. W okolicy Częstochowy zaczęły się korki. Oddając sprawiedliwość: Google Maps ostrzegło o pracach drogowych, ale liczyłem, że skoro wakacje za nami, to nie będziemy pokonywać miejsc z robotami drogowymi w tempie 5 km/h, tylko powiedzmy jak na znakach (30-60 km/h). Myliłem się, i cała podróż trwała ponad 6h.

W każdym razie, dla pełnego obrazu sytuacji, w okolicy Częstochowy utknęliśmy w korku, aura niesprzyjająca. I nagle wyłonił się ten widok. Oczywiście nie było zieleni, po prostu bryła górująca nad miastem.

Chodzi o ten obiekt, czyli kościół św. Antoniego z Padwy:

Kościół św. Antoniego z Padwy Częstochowa

Źródło: Wikipedia

Powyższe zdjęcie w Wikipedii ukazuje ten kościół chyba od najlepszej możliwej strony, więc wygląda, że uchodzi. Piękny nie jest, ale nie widać tej totalnej szkaradności, którą widzą wjeżdżający od północy. Poniżej widok z Google Street View, nie oddający w pełni klimatu, ale można już dostrzec o co tak naprawdę chodzi.

Kościół św. Antoniego z Padwy, Częstochowa

Źródło: Google Maps

To też jeszcze nie oddaje klimatu, ale szperając po sieci znalazłem zdjęcie, które nie jest najlepszej jakości, ale trafia w sedno:

Kościół św. Antoniego z Padwy, Częstochowa

Źródło: MapOfPoland

Tak to właśnie wygląda, przy czym aby oddać pełnię wrażenia, należałoby skrzyżować szerszą perspektywę z przedostatniego zdjęcia i kolorystyką ostatniego.

Jakbym miał nazwać ten styl to chyba najlepiej pasuje kpina z gotyku. Do tego jest totalnie nieprzystający proporcją do reszty miasta. Miałem wrażenie, jakby ktoś celowo chciał oszpecić miasto stawiając takie wielkie, brzydkie monstrum. Skojarzenia z Grą o tron i obecną tam sektą panoszącą się w stolicy jak najbardziej na miejscu.

Python

rozieblox

Tak się składa, że ostatnio podstawowym językiem programowania, którego używam, jest Python. W związku z tym kilka przemyśleń na jego temat i na temat rozpoczynania zabawy z nim. Disclaimer: do Pythona podchodziłem już kiedyś, jeśli muszę coś napisać, to domyślnie korzystam z Perla (niekoniecznie pięknego, często poganiającego polecenia systemowe, ale działającego), a historycznie bawiłem się Pascalem, C i oczywiście miałem kontakt z Bashem i PHP (do ostatniego oficjalnie się nie przyznaję).

Po pierwsze, istnieją czytelne reguły, np. PEP 8, którego wszyscy używają[1] czy PEP 20. Są też narzędzia, które ułatwiają zachowanie zasad dotyczących formatowania kodu, aby był zgodny z wytycznymi. Nie sposób tu nie wspomnieć o edytorze Atom, którego kiedyś włączyłem i wydał mi się straszną kobyłą, ale w połączeniu z pluginami działa naprawdę dobrze. Na tyle na ile mogę stwierdzić przy tak małym doświadczeniu. W każdym razie ma wszystko, do czego używałem kate. I sporo więcej. Vim nigdy mi nie podszedł na tyle, bym go używał w bardziej zaawansowany sposób. Do szybkich poprawek zawsze było albo nano, albo właśnie vim, ale tryb tekstowy to nie jest to, co preferuję przy pracy nad dłuższym kodem.

Po drugie, dostępnych jest dużo materiałów do nauki Pythona. Także bezpłatnych. Samych książek/kursów jest kilkanaście (choćby oficjalny The Hitchhiker's Guide to Python), istnieją też gry, które uczą programować w Pythonie (choćby Codecombat, którym kiedyś się bawiłem, o którym miała być notka, ale które ostatecznie mnie nie wciągnęło, a pomysł na notkę jakoś się rozmył). Mi do gustu przypadł jednak interaktywny kurs Learn Python na Androida. Jednak jeśli coś piszę i są interaktywne testy, a nie tylko czytam, to zapamiętuję więcej. Oczywiście nawet jeśli zapamiętam to do poziomu "potrafię użyć w programie" jest jeszcze kawałek, ale przynajmniej rozumiem przykłady i gotowy kod.

Po trzecie, istnieje sporo gotowych modułów, które ułatwiają pisanie, ale nawet gdyby nie istniały, to kod można "pożyczać" z innych skryptów przy pomocy import. I można mieć różne wersje bibliotek za sprawą środowisk wirtualnych. Z jednej strony fajne, z drugiej tworzy bałagan. Do developerki przydatne i zgodne z modną ostatnio ideą konteneryzacji. Ogólnie nauczyłem się z tym żyć, ale odruchu, żeby wszystko robić w virutalenv jeszcze nie mam.

Skoro mowa o bałaganie, to pora na wady, a tych jest zaskakująco wiele. Po pierwsze, Python 2 nadal żyje, ma się dobrze i można go spotkać na wolności. Taka umowna wada i na razie nie bardzo przeszkadza. Niemniej, nie każdy kod napisany w Pythonie 3 daje się wykorzystać w wersji drugiej.

Inna trochę dziwna na początku rzecz, to struktury danych. Jest tablica (list, w Perlu array), jest tablica asocjacyjna (dict, w Perlu hash), ale są też tuple (niemodyfikowalne listy) i sety (nieuporządkowane zbiory unikatowych wartości). Nie żebym nie widział zalet, ale żeby aż wydzielać to? Zwł. sety (normalnie to po prostu się hasha tworzy, klucze są nieuporządkowane i unikatowe)...

To co się najbardziej rzuca w oczy: wcięcia. Są wymagane i rzutują na kod. Najprostszy przykład to:

for i in range (3):
    print ("wartosc: ")
    print (i)

Usunięcie wcięcia w ostatnim wierszu totalnie zmieni sposób działania programu. Drażni szczególnie na początku, gdy chcemy coś na szybko przetestować i np. coś wklejamy - trzeba poprawić i dokładnie sprawdzić wcięcia, inaczej mogą być kwiatki jak wyżej.

Kolejna rzecz, która irytuje, to wciskanie filozofii w stylu zen. Na siłę i niekoniecznie zgodnie z prawdą. Weźmy mój ulubiony przykład:

There should be one-- and preferably only one --obvious way to do it.

No to teraz bierzemy na tapetę set. Można go utworzyć przez

mojset = set([1, 2, 3])

Ale od wersji 2.7 można użyć do tworzenia równoważnej formy

mojset = {1, 2, 3}

Nie ma problemu? No to jak utworzyć pustego seta? Gdyby ktoś wpadł na całkiem logiczny pomysł użycia

mojset = {}

to niech wie, że nie pustego seta stworzył, a pustego dicta i za chwilę dostanie błędem po oczach. BTDT, dobry kwadrans dumania, czemu to nie działa i dopiero wezwana pomoc uratowała sytuację, bo nie wiem ile bym jeszcze nad tym dumał.

Także one way my ass, skoro Tim Toady wita nas już na samym wstępie, przy tworzeniu jednego z podstawowych typów danych.

Możliwe, że dla ludzi, którzy zaczynają programowanie od Pythona, wady nie są tak zauważalne czy irytujące.

Niemniej, oddaję sprawiedliwość - w Pythonie pisze się przyjemnie i w praktyce jest to łatwiejsze, niż wygląda na pierwszy rzut oka. Wystarczy przejrzeć jakiś tutorial. Zdarzało mi się pisać rozszerzenia do istniejących skryptów po kilku dniach styczności z językiem i nie było większych problemów. Więc faktycznie, może być czytelnie, prosto i wygodnie. Oczywiście mogło być tak, że na ładne skrypty trafiłem. ;-)

Z Perlem oczywiście nie kończę, bo do pewnych rzeczy nadaje się IMHO lepiej, trochę gratów mam w nim napisanych, ale wersji 6 raczej już nie zacznę.

[1] A przynajmniej prawie wszyscy. A przynajmniej starają się. Prawie wszyscy.

UPDATE: Wspomniany kurs Learn Python skończyłem i szczerze polecam. Świetna podstawka, traktująca szeroko o różnych zagadnieniach, przy czym, jednak, te praktyczne części są lepsze, a teoretyczne kuleją. Jest w sumie o wszystkim najważniejszym, z programowaniem obiektowym i regexpami włącznie. Zapomniałem też wspomnieć o ipython - bardzo fajny do szybkiego sprawdzenia jakichś drobiazgów.

Swoją drogą, dziwi mnie to wciskanie regexpów do nauki programowania. To jest IMHO osobna działka zupełnie i nijak się nie klei z resztą.

Przy okazji kolejny kamyczek do ogródka w Pythonie jest inaczej: tym razem chodzi o re.match, które działa totalnie nieintuicyjnie, choć przyznaję, że w sposób zgodny z dokumentacją. Otóż ww. funkcja dopasowuje wyrażenie tylko na początku stringa. Czyli ma takie niejawne, hardcodowane ^ - i albo .* na początku, albo korzystamy z re.search, żeby było normalnie. One way my ass, ponownie. Szczęśliwie wyszło to na Learn Python, nie w praktyce. Nie wiem co za piękny umysł to wymyślił i w imię czego...

Porządki

rozieblox

Od jakiegoś czasu noszę się - niezbyt intensywnie, ale jednak - z zamiarem zmiany dostawcy internetu u rodziców, czyli rezygnacji ze starego, wolnego łącza ADSL, ale taniego w wartościach bezwzględnych, będącego zaszłością na rzecz czegoś nowego, szybszego i przede wszystkim tańszego. Bo 1 Mbps ssie coraz bardziej. Klasyczne radiówki-osiedlówki odpadały zawsze w przedbiegach. Prędkość OK, ale za dobrze znam realia, więc wiem, że ze stabilnością może być... różnie, a na prędkości aż tak mi nie zależy. Do tego dochodzi jednak konieczność montażu anteny i to, plus brak istotnych różnic w cenie przeważa szalę. Żeby był sens cokolwiek zmieniać, to cena musiałaby spaść do jakichś 25 zł/m-c.

Potem pojawił się internet od operatorów GSM. Początkowo drogi, ale ceny już spadły, transfery i opóźniania są niższe, niż na obecnym rozwiązaniu. Jedynym problemem, który pozostał, są pakiety ruchu. Na routerze mam odpalonych trochę własnych gratów (backupy, wykrywanie spamu na Blox itp. itd.), do tego dochodzi ruch generowany przez komputery. Z logów pppd wynika, że wysyłane dane to 50-100 MB/dobę, a pobierane to 500-1000 MB. Gdyby któryś operator dawał 30 czy 50 GB w pakiecie za grosze, to nie byłoby problemu, ale niczego takiego nie znalazłem (TBH nie szukałem jakoś intensywnie).

Zatem do tej pory głównym blokerem było ustalenie, co generuje transfer. O ile ustalenie, czy ruch powstał lokalnie, czy pochodzi z końcówek nie jest problemem (wystarczy sprawdzić liczniki na interfejsach), o tyle totalnie odbiłem się od możliwości ustalenia, które procesy generują ruch sieciowy w Linuksie. Tzn. problemu nie ma, jeśli są to działające cały czas demony, ale jeśli mamy - jak w tym przypadku - wiele skryptów uruchamianych z crona, w dodatku korzystających z zewnętrznych poleceń to jest... ciężko. Wyszło mi, że można albo zrobić wrapper, podpiąć go pod wszystkie skrypty i zliczać ruch przy wywołaniu, albo - jeśli uruchomione procesy działają dłużej - uruchamianie z crona skryptu, który sprawdzi dane dla aktualnie uruchomionych procesów w /proc. Tak czy inaczej, trochę za dużo pracy w stosunku do potencjalnego zysku, bo ostateczne i tak nie wszystkie skrypty chcę wynieść na obcą infrastrukturę.

Dziś siadłem, rzuciłem okiem w crona i odpowiedziałem sobie na zajebiście ważne pytanie: co jest tak naprawdę niezbędne? Zbieranie danych o Blox i spamie - z tego nic się nie urodzi. Backupy blogów - przeniesienie w inne miejsce jest trywialne. Więc nie będę zliczał ruchu, tylko wyłączę rzeczy, które raczej generują spory transfer, a które były kiedyś fajne i zajmujące, ale są już nieprzydatne i działają z rozpędu. Za tydzień zaś po prostu sprawdzę, ile jest wygenerowanego ruchu i jak to się ma do pakietów danych w GSM.

I tu pytanie do czytelników. Jakie rozwiązania (operatorzy, pakiety) do transmisji danych po GSM polecacie? Warunki brzegowe: cena oraz brak abonamentu (dokładniej: lojalki). Na razie na oku mam:

  • Aero2 z pakietami 30 GB za 30 zł (to na wypasie, starczyłoby i teraz, ale jak mówiłem, bez sensu zmiana cenowo) oraz 3 GB za 5 zł (brzmi bdb i jest spora szansa, że po porządkach dwa czy trzy takie wystarczą w zupełności)
  • Virgin Mobile z pakietami 3 GB za 15 zł oraz 10 GB za 25 zł (gdybym mieścił się w odpowiednio dwóch i jednym pakiecie). Niby drożej, ale jest szansa, że opędzę wszystko na kodach USSD plus dochodzi normalny numer głosowy, co może nie być głupie.

Jesienne tło na telefon

rozieblox

Wczoraj byłem na Cytadeli na spacerze z rodziną. Taka jesienna wycieczka. Nawet ładna jesień i trochę słońca. Stwierdziłem, że zrobię sobie tapetę na telefon. Coś prostego, jesiennego. Oczywiście telefonem.  Pierwotnie myślałem o drzewie na tle nieba, ale... fota/ujęcie może ładna, ale na tapetę się zdecydowanie nie nadaje - za jasne, napisy i ikony giną.

Postanowiłem zrobić coś, co zawsze wychodzi - jednolita mozaika, w tym przypadku liście. Oryginał wyglądał tak (wyświetla się pomniejszony, rozmiar jest oryginalny):

Liście jesień tapeta

Źródło: fot. własna

Tapeta całkiem przyjemna, ale... nadal za jasno i białych napisów nie widać. Ale efekt na zablokowanym ekranie był naprawdę fajny, więc postanowiłem pobawić się chwilę w Gimpie. Balans bieli plus lekka zabawa z kolorami (nie znalazłem prostego ściemnij) plus zabawa z kompresją (zupełnie nie oszczędzałem) i ostateczny efekt wygląda tak:

Jesień tapeta wersja ostateczna

Źródło: fot. własna

Daje się używać jako tapeta na telefonie, napisy widać, ale nadal mogło by być ciut ciemniejsze. Póki co zostaje w tej wersji.

Rowery miejskie cztery lata później

rozieblox

Pozmieniało się... Po pierwsze, zmieniło mi się miejsce pracy. Oczywiście można dojeżdżać tramwajem, ale ponieważ pogoda ciągle jeszcze dopisuje, trochę się trzeba ruszać, a na Kręć Kilometry można wygrać nagrody, postanowiłem wrócić do wypożyczania rowerów. Teoretycznie mogłem korzystać z domowego roweru, ale właścicielka korzysta i ma opory, więc jednak nie.

Rowery miejskie w Poznaniu

Rowery miejskie Nextbike w Poznaniu. Źródło: fot. własna.

Po drugie, wiele się w Nextbike'u zmieniło. Jak patrzę na stare wpisy, to jest lepiej. Przede wszystkim w końcu w Poznaniu jest dość sensowna ilość stacji. Oczywiście zawsze mogłoby być więcej, ale w stosunku do początkowych kilku, jest bajka - jak widać na mapie, centrum jest pokryte nieźle, obrzeża jako tako. Wpis o rowerach miejskich w Szczecinie jest praktycznie nieaktualny, bo to też już Nextbike. Doczekaliśmy się zniżek dla posiadaczy kart PEKA[1], z tego co czytałem na FB ma też być zrobiona integracja wypożyczeń z PEKA. Jedno co się nie zmieniło, to możliwość sprawdzenia stanu rowerów miejskich każdym z miast na poszczególnych stacjach w lekkiej formie.

Trochę wyluzowałem (to tak ogólnie z wiekiem chyba...) i przywykłem do długich zwrotów i tego, że coś nie działa. Tzn. często zdarza mi się, że stacja nie działa albo wystąpi inny wyjątek w systemie, ale IVR jest przyzwoity, z dodzwonieniem się na infolinię nie ma problemu, a obsługa jest miła i pomocna. Jedyne co bywa nie do przeskoczenia, to brak prądu na stacji i rowery wpięte elektrozamkiem. Raz prawie mi się zdarzyło. Prawie, bo kilka było przypiętych tylko linką. Podobno appka na Androida też jest fajna i bardzo ułatwia, ale jeszcze jej nie testowałem.

W Poznaniu przybyło ścieżek rowerowych i... nawet da się jeździć. Co prawda ścieżki momentami są mocno nieoczywiste, kręte, momentami trudno dojść czy są jedno- czy dwukierunkowe a oznaczenia są... niekoniecznie czytelne, ale da się przywyknąć. Doszedłem do tego, że warto jeździć, rozglądać się za znakami (często ścieżka znika, a pojawia się dopuszczony ruch rowerowy na chodniku) i patrzeć, co robią inni rowerzyści. Dzięki temu można poznać trochę knyfów, gdzie warto przeskoczyć na drugą stronę ulicy, zamiast stać na światłach po "właściwej" itp. Niestety, mocno to wszystko nieoczywiste i w niektórych miejscach rowerzyści jeżdżą co prawda po ścieżce, ale pod prąd. Pakując się pod auta, które się ich tam nie spodziewają, szczególnie jeśli kierowca sam jest rowerzystą i wie, jak w tym miejscu jechać.

Zauważyłem też ciekawą manierę wśród poznańskich rowerzystów - z konsekwencją godną lepszej sprawy omijają studzienki telekomunikacyjne obecne gdzieniegdzie na ścieżkach. Nie wiem o co chodzi - studzienki są równe i stabilne. Jakieś wypadki były o których nie wiem?

Skoro o samochodach i rowerach mowa, ostatnio widziałem mem mówiący, żeby rowerzyści zwalniali przy przejazdach/skrzyżowaniach, bo kierowcy samochodów ich nie widzą. I mam mieszane uczucia. Z jednej strony jakby jechać rowerem, stać na każdych światłach (to i tak trzeba...) i jeszcze zwalniać do prędkości - jak rozumiem - pieszego przy każdym przejeździe, to cała przyjemność z jazdy i sens poruszania się rowerem ginie. I ciśnie się na klawiaturę sam sobie kierowco zwalniaj, żebyś miał czas się rozejrzeć. Z drugiej strony wiem o co chodzi, bo widuję rowerzystów mijających z pełną prędkością (tak ~30 km/h i więcej) samochody z włączonym kierunkowskazem sygnalizującym zamiar przekroczenia ścieżki. OK, nie mają pierwszeństwa, ale... to skrzyżowanie i szczególna ostrożność dotyczy wszystkich uczestników ruchu. Więc fajnie, jakby i kierowcy, i rowerzyści zwalniali tam, gdzie ich drogi się krzyżują.

Jeszcze uwaga do rowerzystów: jak jest ciemno, to was nie widać i bierzcie to proszę pod uwagę. Pomijam całkiem nieoświetlonych albo tylko z odblaskami, ale nawet zwykłe oświetlenie rowerowe wypada w porównaniu ze światłami samochodów, latarniami ulicznymi i reklamami... blado.

Na koniec krótko o Kręć Kilometry - zainteresowałem się późno, bo we wrześniu, ale wygląda, że parę wyzwań uda mi się zrealizować. Appka prosta, dokładność przyzwoita, choć jak to z GPS - nie jest idealnie. W sumie i tak starałem się rejestrować aktywność typu bieganie czy jazda na rolkach (choć innymi narzędziami), a tu jest zabawa, wyzwania, dodatkowa motywacja do dziś rower, nie tramwaj i szansa na nagrody. Więc czemu nie?

[1] Mam wrażenie, że ta informacja nie jest należycie nagłośniona. Co prawda był wpis na stronie i FB, ale nie ma jej w cenniku, a wpis jest "schowany" w archiwum.

AED

rozieblox

Inspiracje do wpisu są niestety trzy. Pierwsza jest fajna - byłem na szkoleniu BHP w pracy, było tam m.in. o pierwszej pomocy. Szkolenie prowadzone przez zapaleńca i ciekawe. Trochę się w temacie pierwszej pomocy pozmieniało odkąd się ostatnio o tym uczyłem, więc miło było sobie odświeżyć. Przy okazji było o AED, czyli automatycznym defibrylatorze zewnętrznym, czyli takiej czerwonej skrzyneczce widocznej ostatnio w coraz większej ilości miejsc. O tym dalej.

Przyczyny druga i trzecia są już niefajne. Żona była dziś świadkiem zasłabnięcia, a że również jest świeżo po szkoleniu, to pomagała. Znaczy wariant minimum - telefon na 112 i wezwanie karetki, która podobno szybko przyjechała. Tylko tyle, bo poszkodowana się ocknęła. Gapie nie pomagali, a wręcz przeszkadzali w zgłoszeniu gadając bez ładu i składu w międzyczasie. Przyczyna trzecia - dziś dowiedziałem się, że żona znajomego z netu miała wypadek. Poważny. I niby człowieka znam tylko z sieci, a się przejąłem.

Postanowiłem więc opisać AED, bo im więcej osób będzie wiedziało, co to jest i jak działa, tym lepiej - ja do niedawna nie wiedziałem.

Przykładowy AED na ulicy

Przykładowy AED na ulicy Źródło: Wikipedia

tl;dr

trzy fakty o AED

  • stosowanie AED jest bardzo proste - urządzenie jest zaprojektowane do obsługi przez osobę nieprzeszkoloną: samo wydaje instrukcje, wystarczy słuchać i postępować zgodnie z nimi
  • stosowanie AED jest bardzo skuteczne - w połączeniu z RKO zwiększa szanse przeżycia do 50-75%
  • stosowanie AED jest bezpieczne - to nie tylko defibrylator, ale przede wszystkim monitoring; defibrylacja wykonywana jest tylko w razie potrzeby

użycie AED - moje streszczenie

  • wyjąć i włączyć urządzenie
  • podłączyć elektrody zgodnie z grafiką (w razie potrzeby usunąć nadmierne owłosienie u poszkodowanego)
  • słuchać co AED mówi i stosować się do poleceń

Bardziej dociekliwym polecam lekturę dokładnego opisu AED i jego użycia na Wikipedii, z tego co widzę zgodny ze szkoleniem i całkiem dobrze wyglądający. Od razu polecam opis RKO - na mój gust trochę za długi i za skomplikowany, na szkoleniu było to prościej przedstawione.

© Pomiędzy bitami
Blox.pl najciekawsze blogi w sieci