Menu

Pomiędzy bitami

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

Inne

Niezgoda na brak zgody

rozieblox

Ostatnio w okolicach ruchów pro- i antyszczepionkowych na Facebooku głośno o sprawie rodziców z Białogardu. Dla nieznających krótkie przypomnienie: przyjechali do szpitala rodzić; nie wyrazili zgodę na żadne czynności medyczne w tym podgrzewanie, szczepienie itp. Lekarz zareagował podaniem sprawy do sądu, który w trybie przyspieszonym, już po paru godzinach ograniczył prawa rodzicielskie w zakresie opieki zdrowotnej nad dzieckiem i lekarze mogli dokonać procedur. Rodzice zareagowali "kradzieżą" (zabraniem) dziecka ze szpitala i są poszukiwani.

Przyznaję, że kupy mi się to nie trzyma. I zupełnie nie będę tu dyskutował nt. "jak to jest w innych krajach" ani "czy szczepić". Sensu nie trzyma mi się to z innego powodu: jeśli się o coś kogoś pyta lub pozwala mu się nie wyrazić na coś zgody, to należy tę decyzję uszanować. Reakcja rodziców nie dziwi mnie w żaden sposób. I w sumie nie bardzo widzę podstawy do poszukiwania, nawet przy ograniczonym prawie do opieki zdrowotnej (co też uważam za bzdurę). Dziecko jest zdrowe, więc opieki medycznej nie wymaga.

Absurdalna jest też sytuacja, że czekano parę godzin na wyrok sądu, zapewne naruszając przy okazji prawo do obrony (sorry, ale nie widzę jakoś matki parę godzin po porodzie na sali). Ogrzewać dziecko można na kilka sposobów, skoro wytrzymało kilka godzin, to nie było bezpośredniego zagrożenia zdrowia lub życia. A rodzice będą się opiekowali dzieckiem przez resztę życia. I nie przypuszczam, by chcieli dla dziecka źle.

Z pewnością utracono możliwość jakiejkolwiek kontroli zdrowia dziecka w szpitalu, niepotrzebnie stresowano rodziców i naraża się dziecko w tej chwili (skoro się ukrywają, to zapewne się przemieszczają, a to korzystne dla tak małego dziecka nie jest), a postawa siły gwarantuje, że druga strona pozostanie trwale nieprzekonana.

Zastanawiam się, gdzie rodzice zdecydują się rodzić kolejne dzieci. Przypuszczam, że nie w szpitalu, który, nawiasem, zdaniem niektórych jest średnio przyjazny w standardowych okolicznościach - to jednak obce środowisko. Chociaż oczywiście posiada odpowiednie wyposażenie na okoliczność komplikacji.

W każdym razie prezentowane podejście, zamiast łagodnego przekonywania i dialogu powoduje IMO tylko pogłębienie niechęci do służby zdrowia, wymiaru sprawiedliwości i szczepień.

UPDATE: Po namyśle doszły dwie sprawy:
Jakie są konsekwencje dla matek palących czy pijących w ciąży i co jest bardziej szkodliwe dla dziecka, picie i palenie, czy brak zabiegów higienicznych? O niezdrowym odżywianiu nie wspominam.
Jak można mówić o prawie kobiet do przerywania ciąży, skoro zabrania im się decydowania nawet o sposobie opieki nad dzieckiem?

ENEA i papierowe druki przelewu

rozieblox

Mój dostawca energii, ENEA, przysyła mi co pewien czas pocztą rachunek. Składa się on z trzech kartek A4. Na pierwszej jest zestawienie zużycia energii, na drugiej faktura, na trzeciej druk przelewu, taki do opłacenia na poczcie. Dotychczas nie zwracałem na to specjalnej uwagi, ale ostatnio się zastanowiłem, że dla tej ostatniej kartki mam jedno zastosowanie: niezadrukowana połowa (A5) służy mi do szybkich podręcznych notatek, a drugą część wyrzucam, bo przelewu za prąd inaczej niż elektronicznie nie zdarzyło mi się płacić.

Ponieważ i tak mam notesy, stwierdziłem, że zapytam się czy i jak można zrezygnować ze zbędnego mi druku przelewu, czyli bezsensownego generowania śmieci. Napisałem maila i szybko dostałem odpowiedź: nie da się, przynajmniej nie w tej formie, w której chcę. Można albo przejść na faktury elektroniczne, albo dostawać komplet.

Trochę dziwi mnie brak parcia na faktury elektroniczne. Wydaje mi się, że nie było na ten temat nawet żadnej informacji w przesyłanych materiałach, o zachęcie finansowej nie wspomnę. Za to wymagane jest założenie konta w eBOK (w siedmiu prostych krokach) i złożenie wniosku o fakturę elektroniczną (w czterech prostych krokach). W zamian stracę możliwość opłacania faktur i kontrolowania rachunków przez dowolną osobę z gospodarstwa domowego, bo zapewne adres mailowy do wysyłki faktury można podać tylko jeden...

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.

UPDATE 28.09.2017 sprawdziłem ponownie. +15 sekund różnicy w 99 dni. Daje sekundę w 6,6 dnia, czyli odchylenie bez zmian.

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.

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