Menu

Pomiędzy bitami

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

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.

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.

Żegnaj Twitterfeed, witaj dlvr.it!

rozieblox

Serwis Twitterfeed.com (nie linkuję, bo pewnie zaraz dead link będzie) ogłosił, że z końcem bieżącego roku kończy działalność. Zamknięcie wzorowe - jest dużo wcześniej, jest komunikacja mailowa i informacja na stronie. W mailu są wskazane alternatywy (buffer.com i dlvr.it).

Rzuciłem okiem na strony polecanych serwisów i stwierdziłem, że przenoszę się na ten drugi serwis. Strona wyglądała zachęcająco - wszystko przejrzyste, logicznie poukładane i dobrze opisane, więc się zarejestrowałem.

Pierwszy zgrzyt - wystarczy podać maila i hasło, by założyć konto w serwisie. Żadnego potwierdzania rejestracji mailem, klikania w URL. Z jednej strony fajnie, bo szybciej i łatwiej - klik, klik i już możemy dodawać feed. Z drugiej nawet hasła nie trzeba podawać dwa razy - ciekawe ile drugich logowań zaczyna się od przypomnienia hasła.

Drugi zgrzyt - podanie URLa do feedu, rozpoznanie i... wykryty tytuł to Pomiędzy bitami Hell, yeah, XXI w. Na szczęście tytuł można edytować (co nie jest standardem). Zobaczymy co będzie z treścią... Oczywiście to poniekąd wina Blox, który nadal nie korzysta z UTF-8, ale charset jest poprawnie zadeklarowany...

Trzeci zgrzyt - skracanie URLi nie jest już tak fajne jak kiedyś. IIRC Twitterfeed.com pozwalał na dodanie bit.ly tak po prostu. w dlvr.it nie ma tak dobrze. Bit.ly można dodać, ale tylko po zalogowaniu, a nie przypominam sobie, bym kiedykolwiek zakładał tam konto. Ani rejestrować się tam nie chcę. Więc chwilowo wszystkie jajka blogowo-twitterowe lądują w jednym koszyku z napisem dlvr.it. Dobrze, że nie potrzebuję tego jakoś poważniej...

W każdym razie pora na test. Ten wpis powinien pojawić się na Twitterze dwa razy - po staremu i po nowemu. I zobaczmy jak to wygląda w praktyce...

Goodbye lighttpd

rozieblox

Do niedawna korzystałem na prywatnych gratach z lighttpd jako serwera WWW. Lekki, fajny, składnia pliku konfiguracyjnego powiedzmy perlowa, działał. Niby wszystko OK, ale... raczej nie jest wykorzystywany w różnych nowych projektach, jeśli ktoś daje narzędzia czy instrukcje, to raczej można się nie spodziewać znalezienia wersji dla lighttpd.

W międzyczasie troche bliżej miałem okazję zetknąć się z nginx i zrobił na mnie bardzo dobre wrażenie - dla kilku vhostów bardziej przejrzysty konfig, nieźle wspierany w dokumentacji różnych projektów (apache to to nie jest, ale jest dobrze). Gwoździem do trumny dla lighttpd okazał się brak wsparcia dla HTTP/2, a nawet brak planów w tym zakresie. I łatwość włączenia obsługi HTTP/2 na nginx - wystarczy jedna dyrektywa w pliku konfiguracyjnym (przy odpowiednio nowej wersji nginx - jest w backportach debianowych). Trochę na zasadzie "wykorzystać, nie wykorzystać, możliwość mieć można".

Nic dziwnego, że pojawił się pomysł przesiadki na prywatnych gratach z lighttpd na nginx. Brakowało motywacji, bo po pierwsze istniejąca wersja działała, po drugie konfiguracja była lekko zakręcona, po trzecie brak czasu. Ostatecznie któregoś razu zebrałem się, wymyśliłem, że uruchomię oba serwery WWW równolegle, na różnych portach i zrobię szybki benchmark lighttpd vs nginx. Który to benchmark oczywiście wykaże, że nginx jest szybszy i potwierdzi słuszność przesiadki[1]. ;-)

Jak już się zebrałem, to okazało się, że w sumie nie ma aż tak wielu rzeczy skonfigurowanych, a z wielu można/wypadałoby zrezygnować. Głównym wyzwaniem okazało się skonfigurowanie nginx tak, żeby HTTP słuchało na niestandardowym porcie i jednocześnie przekierowywało na HTTPS, również na niestandardowym porcie. Znalazłem rozwiązanie, ale machnąłem ręką - dziwne, nieprzystające do normalnego konfiga, a przydatne tylko na moment, przy benchmarku. Za to przydać się może ładny gotowiec do przekierowań z wersji z www na bez www i odwrotnie.

Przy okazji instalacji SSL dowiedziałem się, że w końcu istnieje oficjalna paczka z klientem Certbot dla certyfikatów SSL od Let's Encrypt w Jessie (trzeba skorzystać z backportów). Plus, strona daje gotowe instrukcje instalacji dla popularnego oprogramowania (znowu: nginx jest, lighttpd nie ma). Czyli w certyfikatach też został zrobiony porządek. Dla pamięci: znalazłem stronkę z gotowcem, jak uzyskać A+ na popularnym teście SSL. Nieco przestarzała, ale nadal przydatna.

W zasadzie poszło zaskakująco dobrze, najwięcej niespodzianek wyszło na rzeczach najprostszych - a to serwer nie kompresował treści (tu jest o włączaniu kompresji), a to był problem z przetwarzaniem skryptów PHP. W końcu jest sensowna obsługa haseł na dostęp do stron (ew. miałem to wcześniej zrobione słabo).

Z rzeczy, które powinny działać, a nie działają - HTTP/2. Nie wiem, czy bardziej kwestia konfiguracji, wersji nginx, czy Firefoksa, ale wg testu HTTP/2 działało, a w Firefoksie (i na niektórych testach, zapewne korzystają z Firefoksa) strona się nie otwierała. Na innych przeglądarkach działało OK, ale do czasu rozwiązania problemu wyłączam HTTP/2.

Ponieważ wygląda, że publiczne motywatory działają: następna w kolejce jest przesiadka z chronicle na pelican na Wattmeter. Robi dobre wrażenie i jest w Pythonie. ;-)


[1] Na przykładzie strony nextbike.tk i prostego testu przy pomocy ab -n 2000 -c 20 okazało się jednak, że różnicy większej niż błąd pomiaru nie ma. Być może kwestia wielkości małej wielkości pliku i narzutu na transmisję, być może kwestia obciążenia serwera, konfigi serwerów też nie były ani identyczne, ani optymalizowane. W każdym razie dla mnie szybciej nie będzie.

Debian over Tor

rozieblox

Z lekkim opóźnieniem, ale nadal news godny uwagi: Debian jest dostępny po sieci Tor. Najwidoczniej pozazdrościli Facebookowi, o którym wspominałem opisując uruchomienie strony w sieci Tor. ;-) Uzasadnienie uruchomienia jest następujące (i ładne):

The freedom to use open source software may be compromised when access to that software is monitored, logged, limited, prevented, or prohibited. As a community, we acknowledge that users should not feel that their every action is trackable or observable by others.

Dodatkowo, Tor zapewnia niezależne od zewnętrznych źródeł, "wbudowane" uwierzytelnianie i szyfrowanie treści - powiedzmy, że taki wbudowany HTTPS. Pełen katalog serwisów Debiana dostępnych via Tor dostępny jest tutaj, ale najważniejsze są chyba repozytoria pakietów.

Tor logoŹródło: https://media.torproject.org/image/official-images/2011-tor-logo-flat.svg

Przy okazji dowiedziałem się o load balancerze dla serwisów Tor.

Wpis jest pokłosiem dodania do czytnika RSS nowego serwisu Debiana, czyli micronews, który swoją drogą też wygląda ciekawie i być może pod względem technicznym będzie cegiełką do uruchomienia kolejnego projekciku...

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.

Drobne zmiany na planecie

rozieblox

Tak jest zawsze. Wszystko może działać od wieków stabilnie, ale jeśli tylko zrobię restart maszynki, mając mało czasu, to wychodzą kwiatki. Tak było i wczoraj z routerem (o tym kiedyś...), tak było i dziś z planetą Joggera. Restart dedyka przed wyjściem do pracy (o dziwo wstał bez problemu), bo już trochę długo działał i kernel stary, a ciągle zapominałem, odpalam stronę w tramwaju w drodze do pracy i... już gdzieś to widziałem.

Okazało się, że skrypt zaciągnął stare wpisy z jednego z feedów[1]. Początkowo podejrzewałem czyszczenie cache planety, który leżał w /tmp albo cache lighttpd (w ramach motywacji: wkrótce przejście na nginx), ale szybko wykluczyłem tę drugą możliwość. Cache planety był w /tmp i z tym nic nie zrobię, bo /tmp jest czyszczony przy restarcie, więc pomyślałem, że trudno i wkrótce się wyrówna.

Ale po powrocie do domu siadłem jednak do debugu. Na oko dziwna struktura feedu, który lądował na początku, ale validatory mówią, że tak może być i generalnie feed poprawny. Jedyne co się rzuca w oczy to lastBuildDate równe z datą pobrania pliku. Nie wiem, czy błąd, czy home made SEO, w każdym razie w połączeniu z brakiem informacji o dacie publikacji poszczególnych postów skutecznie chwilowo popsuło planetę[2].

W ramach mitygacji (nie kalkując z angielskiego: łagodzenia) zrobiłem dwie rzeczy. Po pierwsze, liczba postów na planecie z danego feedu jest ograniczona do trzech. Po drugie (i tego w repo nie będzie), cache wylądował poza /tmp. Czy się sprawdzi? Pożyjemy, zobaczymy. Gdyby ktoś zauważył jakieś problemy z ilością wpisów z feedu - proszę o kontakt.

[1] Dokładnie http://karbownicki.com/rss.xml

[2] Jeśli to możliwe, proszę o poprawienie tej daty.

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.

BlogDay 2016

rozieblox

W tym roku, podobnie jak w latach poprzednich, pięć blogów, które polecam. Co ciekawe, sporo z nich to "nabytki" mojego czytnika RSS z ostatniego roku.

W ramach bonusu, podrzucę też czytelnikom linka do agregatora blogów, jakim jest Planeta Joggera, zrzeszająca blogi, których autorzy zaczynali na Jogger.pl. Więcej o genezie planety w tym wpisie. Pierwotnie w polecanych miały się znaleźć właśnie blogi z planety, ale tych spoza niej zebrało się na tyle dużo, że wolę w ten sposób.

Urlop II i III

rozieblox

Uważni czytelnicy zapewne dostrzegli pewną lukę, bo był urlop I, był urlop IV, a zabrakło dwóch części pomiędzy. Otóż był to urlop, który nie był urlopem. Po prostu młodzież została sprzedana - po raz pierwszy na dłuższy czas, czyli pełen tydzień - dziadkom. Oznaczało to, że nagle - mimo chodzenia do pracy - jest dużo czasu wolnego. Udało się ogarnąć parę spraw, odpocząć. Generalnie dużo mniej krzątania, a więcej czasu dla siebie, stąd określenie urlop. Ponadrabiane zaległości filmowe, trochę wypadów na miasto.

Wszystkim trzem stronom podobało się to na tyle, że zostało za jakiś czas powtórzone, bo czemu młodzież ma się nudzić w domu w mieście, kiedy może korzystać z wakacji co prawda też w mieście, ale z działką i w ogóle.

Do wpisu musowo komentarz muzyczny, taki stary, ale oddaje klimat. Chociaż z racji braku urlopu tak dobrze to nie było. ;-) No i tym wpisem można w zasadzie zakończyć wakacje.

Urlop IV

rozieblox

Ostatni urlop w te wakacje to wypad pod namioty pełną gębą do Przemęckiego Parku Krajobrazowego. Podobno ładnie - jeziora i krajobraz polodowcowy, plus dobra infrastruktura, nie bez znaczenia była też odległość, bo zwierzaki zostały same i trzeba było wyskoczyć w połowie nakarmić... Wyjechaliśmy w długi weekend, a po przyjeździe na miejsce okazało się, że jest to jakiś koszmar. Ilość ludzi w wybranej miejscowości, łażących wszędzie, łącznie z jezdnią, budy z błyskotkami i żarciem, jakieś pojazdy czterokołowe z dzieciakami w środku a'la rower (wspomniałem, że na jezdni?)... Jednym słowem tłumy i klimat takie, jak w miejscowościach nadmorskich. A miały być namioty i cisza. Zrezygnowaliśmy z noclegu na wybranym polu namiotowym, nieopodal kąpieliska i zaczęliśmy szukać jakiejś alternatywy.

Tu po raz pierwszy dał o sobie znać słaby zasięg sieci Virgin Mobile. Nie wiem, czy po prostu taka słaba infrastruktura GSM w rejonie, czy przypadłość VM[1]. W każdym razie przez cały wypad zero lub jedna kreska zasięgu były standardem, zdarzało się tylko połączenia alarmowe, w takich warunkach internet działa bardzo słabo. Skoro przez sieć ciężko było coś znaleźć, podjęliśmy szukanie organoleptyczne. I niestety, wszędzie tłumy. Ostatecznie zdecydowaliśmy się na prywatne pole, na jedną noc i poszukanie w spokoju.

Na polu dużo ludzi, dużo przyczep i grillowanie, ale miejsce okazało się świetne - dobra infrastruktura, czyste łazienki, blisko do pięknych okoliczności przyrody. I mimo tłumów na polu spokój, więc ostatecznie cały wyjazd spędziliśmy tam. Zresztą oblężenie było tylko w długi weekend - poza nim ilości ludzi i na "naszym" polu namiotowym, i w całej okolicy raczej mizerne. Za to ostatnie dwa dni dane nam było obserwować fenomen typu wyjazd samochodami pod namioty, grille, sprzęt grający, tym sporych rozmiarów kolumna i łupanka disco polo przez cały czas przebywania przy namiocie. Daleko od nas, niespecjalnie głośno i nie do późna, natomiast sam repertuar lasujący mózg - Ona tańczy dla mnie[2] było tam całkiem znośne; z utworów, które poznałem i utrwaliłem był Dziadek[3]. Mam nadzieję, że to się spierze...

Lokalne atrakcje pozaprzyrodnicze szału nie czynią, ale jest ptactwo do dokarmiana, są wędkarze, jest dużo jezior i dostępny sprzęt pływający. W zasadzie bez dostępu do sprzętu nie widzę sensu się tam wybierać... Jeziora są połączone malowniczymi kanałami, które są na tyle szerokie i drożne, że można zaryzykować wycieczkę rowerem wodnym między jeziorami (polecam).


Kanał między jeziorami

Kanał między jeziorami. Źródło: fot. własna

Co poza tym? Niewesoła refleksja na temat stanu dostępności stron WWW na mobilkach i ciekawa dyskusja pod tym postem[4]. Polecam lekturę podlinkowanych stron. Efekt bardziej bezpośredni, to ucywilizowanie i lepsze dostosowanie do urządzeń mobilnych kolejnych stron: stanu rowerów miejskich Nextbike oraz - przede wszystkim - Planety Joggera, którą teraz powinno dać się czytać w miarę wygodnie nawet na małych ekranach.

[1] Jak teraz sprawdziłem, to wyszukiwarka BTSów wskazuje jednak na słabą infrastrukturę.

[2] Gorąco polecam wersję z lektorem. Zresztą Piosenki z Lektorem fajne są i dzień mi kiedyś zrobiły.

[3] Komentarz To jest prawdziwe czy parodie disco polo robia? dobrze oddaje moje uczucia. Niestety, to jest prawdziwe.

[4] Hmm, skoro blipnięcie na Blipie, blabnięcie na Blablerze, twitnięcie na Twitterze, to chyba na Diasporze są diaspy?

Porządki z telefonem

rozieblox

Nie przepadam za smartfonami do dzwonienia. Zdecydowanie lepiej w tej roli sprawdza się wg mnie dumbphone typu Nokia 3110c (z dostępem do netu od biedy, zresztą). No ale koniec końców trzeba było po parunastu latach zmigrować - tu operatorzy powinni się zastanowić nad tworzeniem grafów powiązań userów i co oznacza naprawdę przeniesienie danego numeru do innej sieci. W każdym razie wylądowałem w Virgin Mobile. Przy tej okazji ściągawka wybranych krótkich kodów w Virgin Mobile. Z fajnych rzeczy - mają pakiety Freemium, które nieźle nadają się do nawigacji samochodowej (300MB internetu) i pozwalają bez stresu sprawdzić w praktyce zasięg, jakość rozmów itp. Znaczy przynajmniej kiedyś, nie wiem jak to wygląda teraz, jak jest obowiązek rejestracji kart SIM...

W każdym razie największym wyzwaniem okazała się synchronizacja kontaktów. Coś miałem w starej Nokii na telefonie, większość na karcie SIM, poza tym nowy telefon też zdążył dorobić się osobnej bazy kontaktów. Wpadłem na pomysł sczytania wszystkiego na komputer (od razu backup by się zrobił...), przejrzenia, posortowania i wczytania na telefon. Na szczęście nie bawiłem się w sczytywanie z Nokii 3110c, choć kiedyś to opisywałem, tylko stwierdziłem, że zrobię eksport do pliku, następnie przełożę kartę SIM i zrobię kolejny eksport. Trochę z dmuchaniem na zimne, bo jeszcze musiałem skopiować kontakty z telefonu na kartę, a pewności nie miałem, czy telefon realizuje to przez złączenie, czy nadpisanie.

Przy okazji - nie wiem kto projektował eksport kontaktów na kartę w Androidzie, ale... skopał. Znacznie prościej wysłać mailem, niż zapisywać na kartę, bo eksport następuje - jak informuje telefon - do uroczo intuicyjnej lokalizacji /mnt/sdcard/System/PIM/PIM00001.vcf. Nielinuksiarzy pewnie wystraszy już pewnie /mnt, a po przełożeniu karty do komputera można się lekko naszukać. No bo po co zrobić ten eksport w głównym katalogu karty SD... U mnie skończyło się kolejnym eksportem, żeby doczytać komunikat o lokalizacji.

Okazało się, że kontakty zarówno na Nokii, jak i Androidzie są łączone, ale... powtarzające się kontakty tworzą duplikaty. Nawet jeśli są identyczne. Bardzo user friendly. W każdym razie zerknąłem na strukturę pliku z eksportem z Androida (vCard) i stwierdziłem, że szybciej będzie mi zrobić skrypt, który usunie duplikaty, niż szukać czegoś, co się tym zajmie. I tak powstał vCardUniq.

Skrypt robi tylko jedną rzecz - czyta ze STDIN vcardy, eliminuje identyczne (muszą być obecne i zgadzać się wszystkie dane, by były identyczne) i wypluwa na STDOUT wynik, który można wczytać do telefonu. Może się komuś przyda...

Gotowanie żaby

rozieblox

Dziś będzie o gotowaniu żaby, czyli jak my, obywatele, oddajemy bezczynnie coraz więcej swojej wolności państwu. Po małym kawałeczku. Wpis jest zainspirowany dyskusją na kanale IRC o tym, jak to my, społeczeństwo bez protestu przyjmujemy to, co wymyśla rząd AKA miłościwie nam panujący.

Poszło o rządową cenzurę stron przy pomocy DNS. O sprawie pisał DI, pisała też Fundacja Panoptykon. Oczywiście, sprawa nikogo nie dotyczy - mało kogo interesuje hazard przez Internet, poza tym, co to za zabezpieczenie przez blokadę w DNS, skoro można zmienić DNS? No i mamy Tora i VPNy, łatwo można obejść ustawę za parę euro miesięcznie, jak pisałem. Zresztą na innych portalach branżowych również są instrukcje dotyczące czy to zmiany serwerów DNS, czy zdobycia łatwego VPNa. Niby nie ma sprawy.

Tyle, że powstało pozwolenie na pewną czynność i pewien mechanizm. Czynność to blokowanie dostępu do stron WWW czyli informacji na rozkaz państwa. Przy pomocy centralnego rejestru. Oczywiście na razie to tylko hazard i tylko nieskuteczna blokada DNS, ale... jaki problem rozszerzyć za jakiś czas indeks stron zakazanych o strony porno? Porno złe! I nikt nie będzie protestował. Albo krytykujące miłościwie nam panującego prezydenta. Albo równie miłościwie nam panujący rząd? Krytyka zła! I nikt nie będzie protestował.

Na razie mechanizm blokady jest nieskuteczny i prosty do obejścia, więc się godzimy na niego. Ale jaki problem za jakiś czas poprawić go? Omijają kontrolowane przez rząd DNSy? Wymuśmy, by ISP - nieodpłatnie rzecz jasna - przekierowywał każdy ruch DNS na nie. Używają Tora? Wiadomo do czego! Zablokujmy Tora! Nikt nie zaprotestuje. Używają dnscrypt i VPNów? Wiadomo do czego! Zablokujmy! Nie da się w DNSach? To nic, doda się obowiązek utrzymywania blokowania po IP. Nawet prostszy w implementacji... Nikt nie zaprotestuje.

Zwrócono w dyskusji uwagę, że przy ACTA były protesty na ulicach i że ten język rządzący rozumieją. Bo czy ten wpis, czy linkowane wyżej artykuły Panoptykonu czy DI, czy opinie Ministerstwa Cyfryzacji spływają po miłościwie nam panujących jak po kaczce. Teraz nie ma żadnych działań.

Nie chodzi o tę jedną ustawę, oczywiście. Przypominam, że powstaje (albo już powstał) ogólnopolski projekt monitorowania ruchu internetowego. Oczywiście znowu w imię walki z przestępczością i terroryzmem. Potem wystarczy dorzucić, że próby obejścia rządowej blokady są przestępstwem, wytypować korzystających z Tora, VPNów itp. i... z głowy. A wiadomo, że służby muszą mieć sukcesy. I że jak się ma młotek, to wszystko wygląda jak gwóźdź...

Inne, podobne: pamiętacie obowiązek rejestracji kart SIM, wprowadzony w imię walki z terroryzmem? Niektórzy zastanawiali się, co z niezarejestrowanymi. Niektórzy nie wierzyli jak pisałem, że po prostu za jakiś czas każą operatorom zablokować wszystkie niezarejestrowane karty. Że prawo nie może działać wstecz, że umowa, że operator się nie zgodzi. Otóż Plus już zmienił regulaminy:

Klienci zawierający umowę o świadczenie usług telekomunikacyjnych od dnia 25 lipca 2016 r. będą zobowiązani do dokonania rejestracji powyższych danych oraz umożliwienia ich weryfikacji z dokumentem potwierdzającym tożsamość przed zawarciem umowy i rozpoczęciem korzystania z usług.

Abonenci Na Kartę, którzy zawarli umowę o świadczenie usług telekomunikacyjnych przed dniem 25 lipca 2016 r. obowiązani są podać powyższe dane i umożliwić ich weryfikację najpóźniej do dnia 1 lutego 2017 r. Zgodnie z ustawą o działaniach antyterrorystycznych niedokonanie rejestracji powyższych danych będzie skutkowało całkowitym zaprzestaniem świadczenia usług z dniem 2 lutego 2017 r.

Nikt nie protestuje, nikogo to nie dotyczy, jaki problem zarejestrować kartę?

Temperatura wody rośnie, żaba nie reaguje...

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