SEO przy zmianie domeny bloga

To ostatni wpis nawiązujący do Blox, przynajmniej techniczny, bo być może pojawi się jeszcze jeden o tym, jak Agora ma w głębokim poważaniu wolność słowa (określając to górnolotnie) i że ważniejsze jest parę złotych.

Po przeniesieniu bloga, o którym nieco pisałem, przyszedł czas na przeniesienie pozycjonowania w Google w nowe miejsce, czyli zabawę z SEO, aby ludzie wchodząc z wyszukiwarki trafiali w nowe miejsce. Przyznaję, że motywację miałem nikłą – nie zarabiam na wejściach, bo ani nie służy on do sprzedaży produktu, ani nawet nie ma podpiętych innych, pośrednich form zarobku.

Po przeniesieniu treści postanowiłem poczekać. Zwyczajnie i po prostu, nie robiąc nic, poza daniem informacji Google, że blog jest i jak interpretować zawarte na nim dane. Zresztą akurat miałem co innego na głowie. Znaczy ograniczyłem się do wypełnienia Data HighliterWebmaster Tools. Stan taki trwał jakiś miesiąc albo dwa.

Z braku kontroli nad nagłówkami pomysł przekierowania w nowe miejsce przy pomocy kodu odpowiedzi 301 odpadł w przedbiegach, choć to najprostsza, automatyczna i zalecana – także z punktu widzenia SEO – forma przekierowania ruchu w nowe miejsce.

Trochę czasu minęło, ilość wejść na nową lokalizację była szczątkowa, choć miałem nadzieję, że Google zacznie ogarniać sytuację samodzielnie. Niestety tak się nie stało, więc postanowiłem zacząć działać, choć miałem świadomość, że to praca, która się nie automatyzuje. Pierwsze co przyszło mi do głowy, to ustawienie link canonical dla wybranych, najczęściej odwiedzanych wpisów z nową lokalizacją jako celem. I tu okazało się, że Blox przewidział sytuację i… stosowne elementy HTML znikają po dodaniu ich w edycji źródła[1].

Z braku lepszych pomysłów dodałem w najpopularniejszych wpisach namiar na nowe miejsce, poprawiłem też linki do bloga w większości miejsc, gdzie były one umieszczone i… postanowiłem jeszcze poczekać. Poczekałem kwartał, ale nie wydarzyło się nic specjalnego. Statystyki wg Webmaster Tools wyglądały na koniec kwartału następująco:

ostanie 28 dni: impr: 2250, CTR 0,84%, avg pos 33,7. 130 wizyt

Delikatnie mówiąc szału nie ma.

Postanowiłem więc podziałać inaczej. Skoro nie mogę przekierować wyszukiwarki Google, to postanowiłem przekierować przynajmniej żywych ludzi, licząc, że Google w jakiś sposób to zauważy i odpowiednio zinterpretuje. Skoro nic nie działa, to co zadziała na pewno i czego nie można zablokować? Oczywiście JavaScript. Malware korzystający z niego ma się dobrze dzięki obfuskacji, zablokować całkowicie wykorzystania JS na stornie nie bardzo można, bo masa funkcjonalności z niego korzysta. Użyłem następującej wersji przekierowania z jednej lokalizacji na drugą (dla najpopularniejszych wpisów):

<script>
window.location.replace('https://zakr.es/blog/2017/09/goodbye-yanosik/');
</script>

Oczywiście powyższy JS był tylko w odpowiadającym wpisie na starym blogu, a URL w skrypcie to URL na nowym blogu.

Zadziałało nadspodziewanie dobrze. Nadspodziewanie, bo przy wejściu na URL kategorii zawierającej wyświetlany wpis z przekierowaniem, także przekierowywało. Co gorsza przekierowywało przy wejściu na stronę główną, bo także znalazł się tam wpis z przekierowaniem. Może i więcej ruchu przez to, ale niezupełnie o to chodziło i mało to precyzyjne… Dla wpisów z głównej dokonałem więc stosownej korekty w stylu:

<script>
var stringPathName = window.location.pathname;
if (stringPathName == "/2018/02/Waze-jako-nawigacja.html") {
  window.location.replace('https://zakr.es/blog/2018/02/waze-jako-nawigacja/');
}
</script>

Poczekałem miesiąc, wyniki w statystykach były zauważalne, zacząłem więc dodawać tego typu przekierowania dla kolejnych, popularnych linków. Po dwóch miesiącach od dodania przekierowań w JS, wyniki wyglądały następująco:

28 dni: impr: 10450, CTR 4,46%, avg pos 18.8, 490 wizyt

Jak widać wzrost wszędzie. Uznałem, że jest sukces, zacząłem – dla pewności – usuwać większość treści wpisów na starym blogu. Nie było negatywnego wpływu, nastąpił nawet dalszy, równie znaczący wzrost wskaźników, choć zakładam, że wynika on po prostu z upływu czasu.

Największym zaskoczeniem jest dla mnie, że Google przy pozycjonowaniu uwzględnia JS do tego stopnia. Wiedziałem, że radzi sobie z treścią w JS i umie odczytać URLe, ale w tym przypadku wygląda, że poprawnie interpretowany jest fakt przekierowania.

Co można było zrobić lepiej lub inaczej? Całość działań można było zamknąć w mniej niż dwa miesiące, gdybym od razu wiedział co robić i działał zdecydowanie. Oczywiście lepsze efekty byłyby, gdyby zmiany dotyczyły wszystkich wpisów, ale jest to żmudna, ręczna praca, której poświęcałem kilka minut dziennie przy porannej kawie. Powyższy sposób przekierowania nie jest jedynym dostępnym w JS, miałem w planach sprawdzenie różnych, ale ten sprawdziłem jako pierwszy i zadziałał powyżej oczekiwań, więc nie testowałem innych.

Na koniec jeszcze garść cyferek. Ingerowałem ręcznie w ww. sposób w 40 wpisów. Wg Matomo nowy blog ma obecnie ok. 4-5 razy większą ilość wizyt, niż stary. Czyli ładny podział zgodnie z zasadą Pareto.

Co dalej? Dodawanie przekierowań w kolejnych wpisach i usuwanie z nich treści. Ostatecznie pewnie usuwanie przekierowanych wpisów, ale póki co nie mam na to ciśnienia.

[1] Tu zniknęła moja wątpliwość w celowość działań Blox w celu przywiązania użytkowników do swojej platformy. Przypominam: technicznie mają kontrolę nad nagłówkami i domeną – to jakby naturalne i cena za korzystanie ze współdzielonej platformy. Do tego wyłączyli parę lat temu – rzekomo tymczasowo – API. Ale jak widać dodatkowo jeszcze celowo ingerują w treść HTML.

Trzy lata, sześć miesięcy i dwa tygodnie

Rzadko coś mnie zadziwia do tego stopnia i wielowymiarowo, jak to, o czym dowiedziałem się dziś. Chodzi oczywiście o błąd w Google+. No dobrze, nie sam błąd mnie zadziwił, bo ten był raczej mizerny. Poszło o to, że jeśli użytkownik Google+ udostępnił jakiejś aplikacji dostęp do danych publicznych swojego konta Google+, to aplikacja miała też dostęp do danych prywatnych. Z bardziej krytycznych – w świetle choćby RODO – do adresu email, imienia, nazwiska.

Chodzi o 500 tys. użytkowników, dane nie są super wrażliwe, udostępnione tylko aplikacjom. Oczywiście błąd pozostaje błędem, ale ten w dodatku został wykryty samodzielnie, nie na skutek wycieku. Ogólnie niezły potencjał na opowieść, którą nawet jeśli nie można się pochwalić, to nie ma się co wstydzić.

I tu pojawiają się tytułowe trzy lata, sześć miesięcy i dwa tygodnie, które jeżą włos na głowie. No dobrze, nie wszystkie. Trzy lata, to czas, kiedy podatność była dostępna. Tak naprawdę, powinny być dwa i pół, ale lepiej pasowało do clikcbaitowego tytułu. W dodatku zupełnie nie ma znaczenia ile czasu podatność była obecna – prawdopodobieństwo wykrycia nie rośnie z każdym dniem.

Ciekawe są dwie kolejne wartości. Sześć miesięcy to czas, przez który Google zataiło informację o podatności, bojąc się reakcji opinii publicznej. Wykryto ją w marcu 2018, ogłoszono wczoraj. W dodatku twierdzą, że w sumie nie wiedzą, czy podatność została wykorzystana, bo logi API mają z tytułowych dwóch tygodni, a nie trzymają ich dłużej, bo szanują prywatność użytkowników. Poważnie tak uzasadnili, w informacji o wycieku, która jest niejako przy okazji. Bardzo ładne zagranie PR-owe, ale jedyny komentarz, który przychodzi mi do głowy to:

Źródło: https://imgflip.com/i/2jpigy

Prędzej uwierzyłbym, że nie mają tych logów, bo im się na dyskach nie mieściły. 😉

Nie wiem, czy tak właśnie wygląda the right thing w świecie security, ale po graczu wielkości Google spodziewałem się jednak większej transparentności.

Kolejne zaskoczenie to reakcja rynku. Czy też może właśnie brak tej reakcji. Akcje Alphabet symbolicznie spadły, szybko odrobiły. Nie stało się nic… Przynajmniej na razie, zobaczymy jeszcze jak zareagują urzędy regulujące różnej maści, ale póki co wszystko wskazuje na to, że ani prywatność, ani transparentność nie są dzisiaj w cenie.

UPDATE: Po dokładniejszym zbadaniu, 10 grudnia, Google oznajmiło, że chodzi o 52 mln użytkowników więcej. Tzn. tylu więcej podobno dotyczył bug. O logach ani słowa. 😉

Google CTF begginers quest – wrażenia

O Google CTF dowiedziałem się zupełnym przypadkiem, prawdopodobnie info mignęło mi na Twitterze. Do głównego nie podchodziłem i z braku czasu, i umiejętności, ale stwierdziłem w sobotę, że pobawię się chociaż zadaniami dla początkujących przy kawie, czyli begginers quest. Pierwsze wrażenie jak najbardziej pozytywne, jest fabuła, jest estetyczna strona.

Google CTF screenshot
Google CTF screenshot – poza ostatnim dolnym te zadania albo umiałem rozwiązać, albo bardzo niewiele zabrakło

Zadanie pierwsze (letter) trywialne, zadanie drugie (floppy) też poszło szybko i… się wciągnąłęm. Zadanie trzecie (JS safe) już nie takie proste, tzn. niby widzę o co chodzi, ale JS to nie moja działka, więc próbuję innej ścieżki. Na warsztat poszło zadanie z dolnej ścieżki (moar) i… wpadłem w mailny, niepotrzebnie walcząc z socat zamiast przejść do sedna. TBH zmyliło mnie zepsute wyświetlanie i liczyłem, że flaga będzie po prostu gdzieś w manualu, jak tylko naprawię wyświetlanie, tj. połączę się przy pomocy socat zamiast nc. Żeby było śmieszniej o prawidłowym rozwiązaniu też pomyślałem, ale… zafiksowałem się na tym, że najpierw wymagany jest socat i nie drążyłem tematu.

Postanowiłem zajrzeć w górną ścieżkę i… bingo, pierwsze zadanie (OCR is cool) wygląda na proste. Najwięcej czasu zeszło mi na OCR (da się znaleźć sensowne online, niemniej jak potem testowałem to najlepiej od kopa działał lios). Kolejne zadania idą dość szybko, choć nie zawsze do końca ortodoksyjnie. Utknąłem dopiero na Media DB. Oczywiście prawidłowo rozpoznałem i typ, i miejsce, gdzie jest luka ale… zabrakło skilla, a w przykładach w sieci dominuje PHP, MySQL i… nieco inne payloady, niż wymagany. Jak się później okazało, chciałem to zrobić w sposób mocno przekombinowany. Chwilę powalczyłem, ale nie wiedząc, czy specyfika Pythona, czy SQLite, odpuściłem, robiąc finalnie sześć zadań.

Przyznaję, że CTF bardzo mi się podobał, niestety trochę słabo z czasem stałem, poza tym, to jedna z pierwszych tego typu zabaw, chociaż z tego co pamiętam w jakieś podobne zagadki kiedyś się okazjonalnie bawiłem, choć może nie do końca się to CTF nazywało i bardziej związane ze steganografią były. Klimat nieco podobny jak przy konkursach związanych z programowaniem, choć tu się bardziej psuje/debuguje, niż tworzy. 😉

Tak czy inaczej polecam zabawę, jeśli ktoś ma chwilę. Przez jakiś czas serwis powinien jeszcze działać, choć nie jest już supportowany, można się pobawić (dlatego bez spoilerów). Bardzo staranne przygotowanie, choć zadania trochę trudne, jak dla początkujących i bardzo przekrojowe.

Jeśli komuś się znudzi, albo po prostu utknie, to Gynvael pokazywał na YouTube rozwiązanie wszystkich zadań z Google CTF dla początkujących na żywo. Jest podział na zadania, można przeskoczyć do wybranego, co się przydaje, bo materiału trwa prawie cztery godziny.

Co do samego streamu mam mieszane uczucia – z jednej strony bardzo fajnie i live, z drugiej trochę chaosu i momentami dłużyzn. Ale takie są uroki rozwiązywania na żywo. Za to jest klimat i wytłumaczenie okolic i przyległości, a jakby coś było za szybko lub niezrozumiałe, to materiały powinny już być na GitHubie, więc ostatecznie polecam, tym bardziej, że nie kojarzę innego miejsca z kompletem rozwiązań.

Okazało się, że brakuje mi porządnego deassemblera. Moje hexedytory też nie do końca spełniają oczekiwania (lub nie umiem ich sprawnie używać). Ale przede wszystkim muszę dojść do porozumienia z terminalem, bo w zadaniu Fridge TODO list zamiast bannera widzę krzaki. I szczerze mówiąc myślałem, że pozbycie się ich to część zadania, dopiero ww. stream pokazał, że zupełnie nie o to chodzi… 😉

Feedburner wymaga IPv6

Od jakiegoś czasu w zadaniach do zrobienia miałem następujące zadanie związane z migracją bloga w nowe miejsce: poprawić RSS Feedburner. Teoretycznie to są trzy kliknięcia, ale przy próbie zmiany źródła feeda dostawałem niewiele mówiący komunikat:

An error occurred connecting to the URL: unknown error

W logach serwera brak jakiejkolwiek informacji połączenia, komunikat enigmatyczny, myślałem, że coś po stronie Google, jakiś cache, DNS, coś takiego. Chciałem nawet napisać do supportu, ale Feedburner nie posiada takowego – jak widać Google niezbyt dba o ten serwis. Są nawet głosy, żeby przenieść się z Feedburnera – może niebawem, póki co zostaje jak jest.

Sprawa była niezbyt pilna – tam gdzie mi zależało najbardziej, podałem bezpośredni URL do feedu RSS. Część ludzi ma jednak podany stary feed, tak też kieruje stary blog i zapowiadałem, że będzie on aktualny, więc wypadało naprawić.

Dziś zrobiłem test SSL i w oczy rzuciło mi się, że serwer słucha tylko na IPv4. Zamierzona zaszłość. Teoretycznie przy braku łączności po IPv6 w większości popularnych implementacji powinno nastąpić połączenie po IPv4 (mechanizm Happy Eyeballs), ale jak widać Feedburner tego nie robi i wymaga serwera słuchającego na adresie IPv6, jeśli tylko domena bloga posiada rekord AAAA.

Błędu nie zgłoszę, skoro Google nie chce. Poprawiłem konfigurację serwera, by słuchał na IPv6 i feed działa. W sumie mój błąd, że nie odpaliłem sniffera od razu przy diagnostyce, ale odrobinę lepszy komunikat błędu, np. connection to ADRES_IP failed wyjaśniał by wszystko.

Waze jako nawigacja

Jakiś czas temu wyrzuciłem Yanosika z telefonu, z powodu fatalnej nawigacji. Zgodnie z zapowiedziami szansę dostało Waze.

Podobnie jak Google Maps, nawigacja Waze należy do Google, jednak jest rozwijana odrębnie i ma zupełnie inną filozofię. O ile Google Maps to sucha, dość sprawna nawigacja, o tyle Waze bardziej przypomina ficzerami Yanosika – personalizacja i gamifikacja jak najbardziej obecne. Jest możliwość zgłaszania przez użytkowników utrudnień na drodze, czy to patroli policyjnych, czy radarów, czy zamkniętych ulic, czy zwykłych prac drogowych. Jest też zbieranie punktów za aktywność.

Logo WazeŹródło: https://www.waze.com/about/press_resources

Pierwszą recenzję Yanosika pisałem po przejechaniu raptem 300 km, czyli – jak patrzę z perspektywy – o wiele za wcześnie. W przypadku Waze testowałem nieco dłużej – przejechałem ok. 1000 km na zalogowanym koncie, głównie w mieście. Nadal mało jak na pełny test, ale od czegoś trzeba zacząć. Tak naprawdę z Waze przejechałem ze dwa albo trzy razy tyle – dość długo korzystałem bez założonego konta i logowania. Można i tak, bez specjalnego uszczerbku dla funkcjonalności. Oczywiście gamifikacja leży wtedy, nie działa też zapamiętywanie ustawień, przynajmniej między upgrade/reinstalacją. W każdym razie z kontem jest lepiej i na tej wersji się skupię.

Pierwsza rzecz, która rzuca się w oczy po uruchomieniu Waze, to ekspozycja funkcji związanych z nawigacją i ukrycie całej reszty. Zaleta jest taka, że nawigacja jest na wierzchu, wada zaś taka, że dobrnięcie do jakichś bardziej zaawansowanych ustawień chwilę mi zajęło. Części rzeczy w ogóle w aplikacji nie ma (albo nie umiem ich znaleźć), przykładem może być ilość przejechanych kilometrów, którą sprawdzam przez WWW. Trudno mi jednoznacznie orzec, czy to zaleta, czy wada. Ustawienia domyślne są bardzo dobre.

Aplikacja potrzebuje dłuższego czasu od włączenia do gotowości do działania. Nie wiem, czy jest to kwestia słabszego telefonu, czy tak jest ogólnie ale… tak jest i jest to wada. Dodam, że podobnie ma Strava. Za to po włączeniu jest już bardzo przyjemnie. Nawigacja jest pewna (sorry, Yanosik), komunikaty przekazywane z sensownym wyprzedzeniem (sorry, Yanosik), adaptacja do zmian trasy szybka (sorry, Yanosik, „zawróć. zawróć. zawróć.”). Bardzo ładnie mówi po polsku (jest wybór lektora) i posiada rewelacyjną IMO funkcjonalność podawania nazw ulic, w które należy skręcić – podaje nie tylko kierunek skrętu, ale też nazwę.

Trasy wybiera sensownie (sorry Yanosik), orientacyjne czasy dojazdu bardzo zbliżone do rzeczywistych. Potrafi też pokazywać informacje o natężeniu ruchu na sąsiednich ulicach czy zaproponować alternatywne trasy do właśnie wybranej. Taki powiew Google Maps. Akurat średnio korzystam, ale ktoś ze znajomych szukał nawigacji pokazującej natężenie ruchu.

Największą wadą nawigacji, którą zauważyłem, jest dość częste gubienie się na skrzyżowaniach po zatrzymaniu. Potrafi stwierdzić, że jesteśmy na ulicy prostopadłej i kazać skręcać. Chwilę po ruszeniu i chwilę przed dojazdem do skrzyżowania jest OK. Nie wiem, czy kwestia aplikacji, czy telefonu i… nie jest to tak upierdliwe na jakie wygląda z opisu – informacja o skręcie jest podawana za późno, by wykonać manewr.

Zgłaszanie zdarzeń na drogach jest znacznie bardziej szczegółowe niż w Yanosiku, ale przez to bardziej skomplikowane. Nie jest to jedno kliknięcie, tylko kolejne wybory (polecam lekturę opisu w FAQ). Być może kwestia przyzwyczajenia, na pewno większa bariera wejścia i trudniejsze, wymagające więcej uwagi zgłaszanie zdarzeń. Liczę jako wadę, pewnie dobrą sprawą byłby wybór wersji pełnej i uproszczonej.

Kolejny ficzer Waze to wyszukiwanie stacji benzynowych i porównywanie cen. W przeciwieństwie do Yanosika, Waze nie współpracuje z jednym koncernem, więc jest wybór. I jakiś pożytek dla tych, którzy raczej omijają rządowe stacje. Samo porównywanie jest oparte o aktualizacje cen przez użytkowników, więc traktować należy raczej orientacyjnie, bo stacje dość często zmieniają ceny. Na szczęście przy wyszukiwaniu jest podawany czas ostatniej aktualizacji.

Inny miły ficzer to proponowanie miejsc docelowych. Czyli uruchamiamy nawigację i dostajemy – na podstawie czasu (i miejsca?) – propozycję, żeby ustawić jako miejsce docelowe pracę, bez konieczności wyboru ręcznie. Dość przyjemne, działa nieźle. Oczywiście gdyby ktoś czuł się śledzony, to można tę opcję wyłączyć. Raczej ku poprawie samopoczucia, bo śledzi nas każda nawigacja. 😉 Wyłączyć można też widoczność naszego pojazdu na mapach.

Jeszcze inne usprawnienia to zapamiętywanie miejsca pozostawienia pojazdu (można też zrobić zdjęcie, przydatne, jeśli z auta korzysta kilka osób) czy przesłanie orientacyjnego czasu dojazdu.

Pominąłem inne ficzery Waze, niezwiązane z samą aplikacją, typu live map czy carpooling. Raz, ze wykraczają poza badane zagadnienie, dwa, że nie używam. Podsumowując, uważam, że aplikacja jest zdecydowanie godna uwagi i warto dać jej szansę. W mieście jako nawigacja sprawdza się bardzo dobrze, kiedyś pewnie uzupełnię wpis o wrażenia z trasy.

UPDATE Przejechałem 2300 km, parę razy poza miastem (choć na znanej drodze) – nadal OK, stacjonarne radary zgłasza, na nic innego nie było okazji. Nadal nie mam powodu do narzekania.

Goodbye Yanosik!

Nie napisałem nic o tegorocznym urlopie. W zasadzie urlopach. W ramach nadrobienia zaległości spojrzenie na urlopy przez pryzmat appek androidowych. Zmiany są dwie: zacząłem korzystać ze Strava – ot, kolejna appka do mierzenia biegania czy pedałowania. W sumie poznałem ją, gdy oficjalna appka Kręć Kilometry przestała mi poprawnie i stabilnie działać, zwł. zapisywać trasę. Zalety: dość dokładna, fajne automagiczne porównywanie czasów na odcinkach, liczenie rekordów. Wady: dość długo „się zbiera” do wykonania operacji, czyli czasami trzeba poczekać. Ale potem działa już pewnie, więc lubię.

Zmiana druga wymaga wstępu. Na jednym z wakacyjnych wyjazdów, przed podróżą powrotną do Poznania, zaczęło się kończyć paliwo. Poszukałem stacji, zjechałem parę kilometrów w nieznany teren, zatankowałem. I wracam, wg nawigacji, tak samo zresztą jak przyjechałem. O dziwo inna trasa, niż przyjechałem, ale nie wnikam – na oko kierunek się zgadza.

Więc jadę sobie drogami między wioskami. Pasażerowie przysypiają. I nagle widzę rozjazd. Asfalt lekkim łukiem w lewo, na wprost nawierzchnia szutrowa. Nawigacja zdecydowanie pokazuje jazdę na wprost, po szutrowej. Azymut się zgadza, wiec trochę zwalniam i wjeżdżam w tę szutrową. Chwilę później ostre hamowanie, bo okrutna dziura, idealna, by urwać koło. Dobrze, że zwolniłem wjeżdżając na tę szutrową. Jadę dłuższy kawałek, dziur wcale nie ubywa. Potem było jeszcze lepiej – gruntówka w lesie, ogromne kałuże na całą szerokość. Jakoś uniknąłem zakopania czy utopienia auta i przejechałem, ale było to ładne parę kilometrów. Dodam, że w poprzednią stronę przyjechałem całą drogę zupełnie znośnym asfaltem.

Nawigacja, która mnie tak poprowadziła to oczywiście Yanosik. Stwierdziłem, że enough is enough, tym bardziej, że to nie pierwszy tego typu wyczyn, choć w tym przypadku skala porażki zadziwiła. Dodatkowo Yanosik grabił sobie u mnie już wcześniej zbieraniem dużej ilości danych („styl jazdy”) i próbą monetyzacji tej wiedzy w formie sprzedaży ubezpieczenia. Nie mam złudzeń, w tej grze kierowca traci – algorytmy i big data dają przewagę ubezpieczycielowi. O ile w przypadku cech ogólnych liczy się statystyka, to dane o stylu jazdy pozwalają na wnioskowanie poza granicą ludzkiej percepcji. Czyli software ubezpieczyciela zna lepiej zachowania kierowcy niż on sam. I jeśli stwierdzi, że jeździsz o niebezpiecznych porach, to nie tylko nie dostaniesz zniżki, ale jeszcze dopłacisz, nawet jeśli jeździsz bezpiecznie. Na dodatek nie informują, co dokładnie jest mierzone. Oczywiście nie wyraziłem zgody, ale sam fakt możliwości zbierania takich danych jest niepokojący. Pytanie o zgodę było ponawiane – liczą na to, że użytkownik się pomyli i kliknie, że się zgadza?

W każdym razie po tej akcji z nawigacją Yanosik wyleciał w trybie ekspresowym, po przejechanych z nim jakichś 20 tys. Oczywiście potrzebuję dość często nawigacji, więc użyłem tego, co miałem pod ręką – Google Maps. Korzystałem kiedyś dawno temu przez chwilę i albo nie doceniałem, albo spory postęp zrobili.

Pierwsze wrażenie: Yanosik dawał instrukcje trochę za późno czasami (do tego stopnia, że zdarzało mi się nie skręcić we właściwą ulicę), Google Maps radzi sobie o wiele lepiej, informując z sensownym wyprzedzeniem. Do tego ma przyjemny ficzer w postaci zmiany skali w zależności od aktualnej prędkości. Nie ukrywam, że przestawienie się i przyzwyczajenie do dobrego zajęło mi chwilę. Różnica jest kolosalna – Google Maps potrafi pokazywać pasy, dawać drobne wskazówki gdzie odbić, co jest bardzo przydatne na węzłach na autostradach. Za to przyznaję, że na rondach Yanosik radził sobie lepiej, choć też nie idealnie.

Brakuje oczywiście głównej funkcji Yanosika, czyli „antyradaru”, nie ma całej grywalizacji i statystyk ale… w sumie w Yanosiku grywalizacja była niedorobiona, a statystyki niespecjalnie coś wnosiły. Chociaż lubię popatrzeć. Google Maps dobrze nawiguje i… tyle. W każdym jeśli chodzi o nawigację to niebo a ziemia – totalna przepaść w jakości oprogramowania.

Rozważam jeszcze wypróbowanie głównego polskiego konkurenta Yanosika, czyli Ryśka, ale boję się, że nawigacja będzie słabsza od Google Maps, a dane dot. sytuacji na drodze gorsze, niż w Yanosiku.

UPDATE: Rysiek może kiedyś będzie testowany, ale najpierw szansę dostanie Waze – wiele osób poleca i w komentarzach na blogu (nie tylko pod tym wpisem), i poza blogiem. Podobno wykupione przez Google, jest nawigacja i antyradar, może być fajne. Recenzja za jakiś czas.

UPDATE: Pewnie nie wszyscy zauważyli, ale Yanosik zaliczył poważną wtopę – wykorzystywał urządzenia użytkowników bez ich wiedzy i zgody do realizowania innej usługi swojej firmy. Szczegóły opisała ZaufanaTrzecia strona, a pokrótce wykorzystywane były: włączenie bluetooth, co za tym idzie zwiększone zużycie baterii, transmisja dodatkowych danych – zużycie transferu. IMO takie nadużycie i pokrętne próby tłumaczenia są dyskwalifikujące, więc zamierzam trzymać się z daleka od wszelkich rozwiązań tej firmy.

Dlaczego wyłączyłem reklamy AdSense?

Z niewiadomych dla mnie powodów sporą popularność zyskał ten artykuł nt. wyłączenia reklam AdSense. Sprawdziłem fakty i niemal dwa lata temu pisałem o odchudzaniu bloga, w tym o wyłączeniu reklam Google. Przeczytałem jeszcze raz, skonfrontowałem z ww. artykułem i stwierdziłem, że warto dodać parę słów.

We wpisie poruszyłem tylko jeden aspekt – niskie zarobki (tak niskie, że trudno tu mówić o zarobkach – tu polecam artykuł, bo ja zupełnie niekomercyjnie i amatorsko podchodziłem do tematu), ale powodów było tak naprawdę więcej i uważam Google AdSense za bardzo słaby produkt. Po pierwsze, notoryczne problemy z pojawianiem się reklam w językach innych, niż polski i ew. angielski. Jeśli nawet nie robią detekcji języka, to deklaracja języka jest jasna czy to w samym HTML, czy w Google webmaster tools. O ile „międzynarodowy” angielski jeszcze bym od czasu do czasu zrozumiał, to notorycznie pojawiały się języki takie jak niemiecki, turecki czy jakieś skandynawskie. Nie pomagało ani blokowanie reklam, ani dostawców. Czyli z mojego widzenia wyświetlane były śmieci.

Druga sprawa, to niedostosowane tematycznie reklamy połączone z brakiem jakiegokolwiek uczenia się, których kategorii nie chcę widzieć na blogu. Oczywiście można wybrać kategorie wrażliwe, ale nawet przy wyłączeniu wszystkich notorycznie pojawiały się na blogu preparaty na łysienie itp. paramedyczne atrakcje. Jawnie zablokować tego nie sposób, przy blokowaniu pojedynczych żadna korelacja nie jest stosowana. Czyli znowu śmieci.

Kolejna sprawa to reklamy wprowadzające w błąd. Przede wszystkim chodzi o reklamy krzyczące na urządzeniach mobilnych o tym, że na urządzeniu są wirusy. Raczej nie widziałem tego u siebie, ale widać to zwykle na urządzeniach mobilnych, a tak raczej nie zdarzało mi się oglądać bloga, natomiast temat znam zarówno z innych stron, jak i aplikacji ze sklepu Play. Zupełnie nie wiem, czemu nie jest to blokowane na wejściu globalnie. Żeby było weselej, chyba korzystał z tego któryś bardziej znany producent antywirusa. Albo po prostu domena była podobna… Problem jest taki, że ktoś to w końcu kliknie (mi się zdarzyło) i zainstaluje jakiś syf na telefonie. Czy to świadomie, czy nieświadomie…

Z punktu widzenia Google, na krótką metę, nie ma znaczenia, czy reklamy wyświetlają z sensem, czy bez sensu. Bardziej opłaca im się wyświetlić reklamę zupełnie niedopasowaną, niż nic nie wyświetlić. Jeśli nikt nie kliknie, to nie płacą, jeśli ktoś kliknie, nawet przez pomyłkę to zarabiają. A że Internet wygląda coraz bardziej jak zawalone bez ładu i składu reklamami polskie miasta? Nie ich problem…

Guetzli – lepsza kompresja JPEG

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 fileGuetzli 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 2560×1440, 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).

Jak zenbox.pl z domen klientów korzystał

Niedawno na blogu sprawnymarketing.pl pojawił się wpis o tym, jak rzekomo Zenbox stosował black hat SEO. Sprawa okazała się znacznie głębsza, szersza i ciekawa, niż na pierwszy rzut oka wyglądał. W różnych wymiarach, od technicznych, po prawne.

Przede wszystkim, niezaprzeczalnym faktem jest, że niektóre strony (raczej: większość) hostowane na zenbox.pl, pokazywały co innego przy wejściu przez HTTP, a co innego przez HTTPS. Jak pokazują zamieszczone w ww. wpisie zrzuty ekranu, narzędzia do badania SEO zauważały te linki. Raczej słusznie, bo wbrew temu, co twierdzi zenbox.pl, strony te nie zostały zignorowane przez Google, lecz normalnie zaindeksowane, co pokazuje poniższy zrzut ekranu:

Zenbox.pl SEO HTTPS

Szybko okazało się, że zenbox.pl nie jest jedynym hostingiem, który działa w ten sposób, a winny jest prawdopodobnie panel DirectAdmin, którego domyślna konfiguracja powoduje pokazywanie „zaślepki” przy braku podpiętego certyfikatu SSL. Potem było już tylko weselej, bo w dyskusji na Wykopie niektórzy sugerowali, że w zaślepkach powinien być w linkach atrybut nofollow. Uważam, że akurat brak nofollow świadczy w tym przypadku na korzyść zenbox.pl i braku celowego działania – gdyby ktoś zawracał sobie głowę atrybutami czy anchor text (a są i tacy), to znaczy, że pomyślał o pozycjonowaniu.

Jeszcze bardziej dziwi mnie skupienie się na SEO i ominięcie sedna sprawy: nie chodzi o – celowe lub nie – wprowadzenie w błąd Google. Przede wszystkim mamy do czynienia z podmianą treści na stronie zamieszczonej w określonej domenie. Wątpię, by właściciele domen mieli wiedzę, że taka podmiana miała miejsce. Jeszcze bardziej wątpię w ich zgodę na takie działanie.

HTTPS zamiast HTTP niewiele tu zmienia – oczywiście jest możliwość serwowania różnych treści w zależności od protokołu, podobnie jak strona z przedrostkiem www (de facto subdomena) z technicznego punktu widzenia może kierować zupełnie gdzie indziej, niż domena bez takiego przedrostka, ale przyjęte jest, że kierują w to samo miejsca. W przypadku HTTPS jest to IMO wręcz oczywiste.

Pamiętajmy też, że strony WWW, zwłaszcza popularniejsze blogi, potrafią po prostu sprzedawać miejsce na reklamę na stronie. Wydaje mi się, że w przypadku takich blogów wykazanie szkody w sądzie byłoby trywialne. Dlatego podejście zenbox.pl do sprawy mnie dziwi. Jak widać w komentarzach na blogu, mamy kolejno:

  1. straszenie „na takie działania godzić się nie można i zrobimy wszystko aby takie akcje miały konsekwencje”
  2. negacja, najpierw problemu w ogóle (screenshot w ww. wpisie), potem wpływu „działania nie mają wpływu na pozycję stron klientów ani wpływu na pozycję witryny zenbox.pl”
  3. przyznanie istnienia problemu „wspomnianego problemu nie doświadczyli” i w końcu podjęcie działań (zmiana konfiguracji, mailingi)

Wydaje mi się, że znacznie bardziej na miejscu byłaby analiza sytuacji, podziękowanie za zwrócenie uwagi, naprawienie problemu (poprawa konfiguracji) i przeproszenie klientów.

Cała sprawa ma jeszcze jeden ciekawy aspekt. Wydaje mi się, że największy błąd popełniło… Google, które podmienioną treść na stronie jak widać łyka jak pelikan. Mimo ewidentnych błędów HTTPS (certyfikat nie pasuje do domeny), które m.in. przed taką podmianą miały chronić. W czasach, gdy każda domena może mieć rozpoznawany przez przeglądarki certyfikat SSL za darmo (oczywiście chodzi o projekt Let’s Encrypt) strony za niepasującymi, wygasłymi i self signed certyfikatami powinny po prostu być ignorowane.

Prawidłowa konfiguracja to IMHO ta sama treść dostępna po HTTP i HTTPS. Czy to za sprawą odpowiedniego przekierowania (to sensownie uda się tylko z HTTP na HTTPS…), czy też – zwł. na shared hostingu – pod certyfikatem hostingodawcy, jeśli domena nie ma własnego.

Jak przenieść aplikację na kartę SD w systemie Android? HOWTO

Na jednym starym urządzeniu z Androidem mam śmieszną ilość wbudowanego dysku w urządzeniu – poniżej 512 MB. Do tego wydawało mi się, że aplikacje ze sklepu Google Play mogą być instalowane tylko na wbudowanym flash w urządzenie. Dziś dowiedziałem się, jak zmusić Androida (przynajmniej poniżej wersji 5) do instalacji oprogramowania bezpośrednio na karcie SD. Operacja jest umiarkowanie prosta, więc jeśli ktoś ma problem z brakiem miejsca na telefonie, to polecam. Co zdziwiło mnie najbardziej to fakt, że nie jest konieczne rootowanie telefonu.

Wymagania

Aby odblokować możliwość przenoszenia praktycznie dowolnego oprogramowania na kartę SD, potrzebne będą:

  • kabel USB do połączenia telefonu i komputera,
  • Android w wersji niższej niż 5,
  • włączenie USB debugging na urządzeniu na czas zmiany ustawień,
  • oprogramowanie Android Debug Bridge (ADB) zainstalowane na komputerze (w przypadku Linuksa powinno być w repozytoriach).

Odblokowanie przenoszenia programów na kartę SD

  • upewniamy się, że tryb USB debugging jest włączony lub włączamy go,
  • podłączamy urządzenie do komputera,
  • sprawdzamy, czy jest widoczne (polecenie adb devices),
  • jeśli jest widoczne, wydajemy polecenie adb shell,
  • w powstałej konsoli wydajemy polecenie pm get-install-location – zapewne zobaczymy 0 lub 1, co oznacza odpowiednio wybór automatyczny lub wewnętrzną pamięć flash,
  • zmieniamy wartość na 2: pm set-install-location 2,
  • zamykamy konsolę adb, odpinamy telefon od komputera, wyłączamy USB debugging.

Przenoszenie programów na kartę SD

  • na telefonie wybieramy Ustawienia -> Aplikacje -> Na karcie SD,
  • „ptaszek” przy nazwie programu oznacza, że jest on na karcie SD,
  • wybieramy kolejno aplikacje i w ich ustawieniach wybieramy przenieś na kartę SD.

Po chwili powinniśmy zauważyć przyrost wolnego miejsca na wbudowanym w urządzenie nośniku.

Wady

Poza oczywistą zaletą, czyli możliwością instalacji większej ilości programów, co często oznacza być albo nie być dla urządzenia, są też wady:

  • wbudowana pamięć flash jest zwykle szybsza, niż karta, ale w praktyce nie odczuwam tego, na typowej lowendowej karcie,
  • niektóre aplikacje, zwł. systemowe lub Google nadal nie dają się przenieść,
  • przenoszone aplikacje zajmują nadal trochę miejsca na wewnętrznej pamięci.

Na zakończenie polecam lekturę pełniejszego opisu, z obrazkami (ang.) – widziałem kilka opisów, ale ten wydaje mi się najlepszy i najbardziej przystępny.

UPDATE

Debugowanie USB w Androidzie 4.2 i nowszych

W przypadku Androida w wersji 4.2 i nowszych, nie można tak zwyczajnie włączyć debugowania USB. Należy najpierw odblokować ukryte menu, a żeby to zrobić należy zostać programistą.
Wybieramy Ustawienia -> System -> Informacje o urządzeniu -> O telefonie i naciskamy 7 razy (nie, to nie jest żart). Po tym otrzymujemy informację, że zostaliśmy programistą. Następnie standardowo w Opcje programisty wybieramy Debugowanie USB.

Kraizm

Mapa świata

Źródło: https://commons.wikimedia.org/wiki/File:BlankMap-World6.svg

Wyobraźmy sobie, że ktoś w cywilizowanym świecie otwiera sklep/oferuje usługę i zabrania korzystania z niego ludziom o określonym kolorze skóry. Na przykład salon fryzjerski albo kino, z napisem Murzynów nie obsługujemy. Albo wyznającym określoną religię. Ewentualnie określonej narodowości. Albo w drugą stronę – sklep/usługa tylko dla białych. Albo Nur für Deutsche… Myślicie, że by przeszło? Ja myślę, że zdecydowanie nie.

To może coś mniej oczywistego. Sklep internetowy (albo usługa…) o podobnych ograniczeniach korzystania. Co prawda trochę trudniej weryfikować, ale zawsze można próbować posiłkować się danymi z social media, czyli wymagać logowania przez Facebooka, a jeśli płeć albo kolor skóry właściciela na zdjęciach się nie spodoba, to odmawiamy dostępu do usług. Ewentualnie można wymagać zdjęcia dowodu tożsamości i próbować określić na tej podstawie. Technicznie wykonalne, z rozsądną pewnością. Myślicie, że to by przeszło? Nie jestem już taki pewny, jak w poprzednim przypadku, ale nadal mam wrażenie, że nie.

Natomiast w sieci każdego dnia spotykamy się z dokładnie taką segregacją ludzi na podstawie domniemania kraju, w którym aktualnie przebywają. Chodzi oczywiście o ograniczanie dostępu do kultury/rozrywki (muzyka, film) przy pomocy DRM, czy to za sprawą regionów DVD, czy innych, podobnych technik. Wystarczy wejść na YouTube – część utworów jest w danym kraju niedostępna (Google, don’t be evil…).

Generalnie o ile nie uznajemy segregowania na podstawie płci, rasy, koloru skóry, religii czy narodowości za właściwe, to już segregacja na podstawie (domniemania) kraju przebywania jest raczej akceptowana. Przynajmniej w sieci. Nawet, jeśli nie wynika ona wprost z przepisów obowiązujących w danym kraju. Swoją drogą, prawa sankcjonujące dyskryminację ze względu na religię/narodowość/kolor skóry/płeć też istniały, więc to żaden argument.

Zastanawiałem się, czy już ktoś użył tego określenia, ale szukając po countrism znajduję tylko countrist, o zbliżonym znaczeniu, ale jednak w trochę innym kontekście. Do rozważań na ten temat bezpośrednio skłoniła mnie sytuacja z Netflix, który co prawda otworzył się na różne rynki, ale jednocześnie dołączył do firm wykorzystujących DRM i zapowiedział blokadę proxy/VPN w celu uzyskania dostępu do treści, ale problem jest oczywiście szerszy.

Gra Ingress – wrażenia

W Ingress grałem od początku października 2014 do początku stycznia 2015, czyli bity kwartał. Intensywność różna, choć najwyżej umiarkowana. Żadnych wielkich zrywów, maratonów itp. Ostatecznie osiągnąłem poziom 7 (i pół) z 16 aktualnie dostępnych w grze. Kiedyś było 8 poziomów. Wydaje mi się, że tyle wystarczy, by wyrobić sobie zdanie o produkcie.

Logo Ingress

Źródło: https://pl.wikipedia.org/wiki/Plik:Ingress_Logo_vector.svg

Czym jest Ingress?

Ingress – gra z gatunku MMO w systemie rzeczywistości rozszerzonej – tako rzecze Wikipedia w artykule nt. Ingress. I zasadniczo ma rację, bo nic dodać, nic ująć, ale własnymi słowami: gracze dzielą się na dwie drużyny (frakcje; Resistance i Enlightened) i działają za pośrednictwem urządzeń wyposażonych w GPS i dostęp do internetu (czytaj: smartfon) w wirtualnym świecie nałożonym na rzeczywisty. Działania graczy sprowadzają się do interakcji przy użyciu wirtualnego sprzętu z wirtualnymi portalami, umieszczonymi na interesujących bądź przynajmniej charakterystycznych elementach rzeczywistych (tablica, pomnik, most, grafitti, rzeźba itp.).

Gra jest tak skonstruowana, że nie ma konkretnego celu ani zakończenia. Ogólnie chodzi o to, żeby nasza frakcja zdobywała (w danym okresie/etapie) więcej punktów, niż frakcja przeciwna. Gracz poruszając się w świecie (rzeczywistym) zdobywa punkty akcji, które może wykorzystać do rozbudowy portali, linków (połączenia portali) lub pól (obszary ograniczone linkami) swojej frakcji lub niszczenia portali (linków, pól) frakcji przeciwnej. Jak widać, by móc działać wystarczy połazić po mieście, a przy odpowiednim balansie gra może trwać w nieskończoność. Sprytne.

Dodatkowo dochodzi element gamifikacji – poziomy, odznaki, osiągnięcia, statystyki, w tym także dotyczących działań w świecie realnym (np. ilość przebytych km w danym okresie czasu). Trzeba przyznać, że całość gry jest dobrze przemyślana i wciąga.

Jak grać w Ingress?

Kilka szybkich i ważnych porad dla początkujących, których nie znałem, gdy zaczynałem grać:

  • odległość od portalu w momencie stawiania rezonatora ma znaczenie – im dalej, tym lepiej, bo trudniej zniszczyć taki portal,
  • długość tworzonych linków nie ma znaczenia dla punktacji,
  • wielkość tworzonych nie ma znaczenia dla punktacji.

Więcej porad znajdziesz na stronie Ingress Resistance Poznań.

Jak można to wykorzystać?

Poza najbardziej oczywistą rzeczą, czyli poligonem dla autorów aplikacji opartych na GPS (poprawa algorytmów, zarówno lokalizacji, jak i działania programu typu oszczędzanie baterii, poprawa map), czy badaniem poruszania się/zagęszczenia ludzi w danym rejonie, widzę dla Ingress parę innych zastosowań.

Przede wszystkim, skłonienie użytkownika do podawania dokładnej lokalizacji otwiera drogę do serwowania reklam. Dokładnych reklam, dotyczących sklepów/usług w zasięgu wzroku. Jeśli połączyć to z wiedzą, czego szukał użytkownik ostatnio w sieci (apteka, szewc, zegarmistrz, karta SD, fryzjer), to robi się interesująco. A teraz dodajmy do tego wiedzę, ile czasu i w jaki sposób poruszał się użytkownik oraz np. stan baterii i można zaproponować np. jedzenie albo picie w miejscu oferującym możliwość doładowania telefonu (OTOH dziwię się, że tak się fast foody itp. nie reklamują…). Przypuszczam, że tego typu reklamy miałyby szanse być bardzo skuteczne.

Kolejna możliwość, to dobrze znane z różnych gier promocje czy kupne bonusy i power-upy. Ale nie w formie płacenia prawdziwymi pieniędzmi za czysto wirtualne przedmioty, tylko skrzyżowania z reklamą. Co prawda chyba jeszcze nie jesteśmy systemowo przygotowani na coś takiego, ale wyobrażam to sobie w sposób podobny do powyższego – kupujesz pizzę w określonym lokalu, wklepujesz kod z paragonu (ew. korzystasz z wbudowanych płatności…) i dostajesz przedmioty w grze.

Czemu przestałem grać w Ingress?

Nie ukrywajmy, choć niby można grać „przy okazji”, to zabawa w Ingress zajmuje trochę czasu. Nawet, jeśli gra się wyłącznie przy okazji, w drodze, to jednak tu i tam się przystanie, tu zwolni, parę minut z życiorysu znika. Kolejna sprawa to czas pracy urządzenia na baterii. Gra po prostu wysysa energię z akumulatorów i oznaczała u mnie dodatkowe ładowanie w ciągu dnia. Transfer też znika dość szybko – mi na umiarkowane granie przy okazji schodziło ok. 1 GB danych miesięcznie.

Gwoździem do trumny było jednak coś, co pojawiło się przy którejś aktualizacji: wymuszona zgoda na otrzymywanie powiadomień (zamieszczona poniżej). Czyżby przymiarka do opisanego wyżej sposobu wykorzystania? Nie wiem. Stwierdziłem, że enough is enough, przemyślałem za i przeciw i po prostu odinstalowałem grę.

Ingress licencja

Źródło: screenshot z aplikacji Ingress.

PS Wpis przeleżał blisko pół roku w szkicach, nie wszystkie informacje muszą być więc aktualne. Zdaję sobie sprawę, że grałem dość nietypowo, bo zupełnie bez aspektu socjalnego. Podobno ludzie spotykają się IRL w celu grania. Trochę zazdroszczę ilości wolnego czasu, ale fakt, Ingress może być fajnym pretekstem do wycieczek, spacerów, pozwala zwrócić uwagę na pewne aspekty rzeczywistości, które normalnie umykają itp. Z drugiej strony, jest to trochę chodzenie z nosem wlepionym w wyświetlacz, zamiast rozglądać się wokół.

HTTP czy HTTPS?

Wszystko zaczęło się od tego, że Wampiryczny blog zmienił sposób dostępu, wymuszając HTTPS. Skomentowałem pół żartem, pół serio. Dostałem odpowiedź w komentarzu, przeczytałem i trochę mi się włos zjeżył na głowie. Bo zdecydowanie o zużyciu energii ktoś nie pomyślał. Jak jestem zwolennikiem udostępniania treści po HTTPS i bardzo sobie ostrzę zęby na projekt letsencrypt.org, tak uważam, że wybór powinien być po stronie odbiorcy, a jedynie miejsca, gdzie są przesyłane wrażliwe dane (np. hasła) powinny mieć wymuszony HTTPS.

Postanowiłem zrobić mały test, czyli pobrać stronę po HTTP i zobaczyć, ile zostało pobranych bajtów (i w jakim czasie), a następnie to samo dla HTTPS. Jako system został użyty base system Debiana, uruchomiony w wirtualce (KVM), uruchomionej na laptopie. Jako stronę serwującą dokładnie to samo po HTTP i HTTPS dobrzy ludzie podrzucili stronę OVH. Google.com na ten przykład serwowało wgetowi nieidentyczną zawartość.

HTTP

$ ifconfig eth0 | grep "RX bytes" ; time for NUM in {1..20}; do wget --no-check-certificate -qO - http://ovh.pl/ >> out_http.txt; done ; ifconfig eth0 | grep "RX bytes"RX bytes:11251203 (10.7 MiB)  TX bytes:495042 (483.4 KiB)real    0m9.471suser    0m0.000ssys     0m0.772sRX bytes:14173253 (13.5 MiB)  TX bytes:583042 (569.3 KiB)

Jak widać wysłano 88000 bajtów, odebrano 2922050.

HTTPS

$ ifconfig eth0 | grep "RX bytes" ; time for NUM in {1..20}; do wget --no-check-certificate -qO - https://ovh.pl/ >> out_https.txt; done ; ifconfig eth0 | grep "RX bytes"RX bytes:14173313 (13.5 MiB)  TX bytes:583102 (569.4 KiB)real    0m13.938suser    0m0.000ssys     0m0.904sRX bytes:17387531 (16.5 MiB)  TX bytes:739702 (722.3 KiB)

Z kolei tutaj wysłano 156600 bajtów, a odebrano 3214218.

Podsumowując: HTTPS w tym teście był wolniejszy o 46%, przy korzystaniu z niego wysłane zostało o 78% więcej danych, a odebrano o blisko 10% więcej danych. Efekt, czyli pobrana zawartość jest dokładnie taka sama. Oczywiście ww. narzut procentowy będzie się różnił w zależności od rozmiaru pliku wynikowego, ale jak widać narzuty są spore.

Do prędkości bym się zbytnio nie przywiązywał, bo o ile za brak ruchu na wirtualce ręczę, to na lapku różne rzeczy się dzieją, choć generalnie idluje, a sam lapek zapięty po wifi. Niemniej, pomiarów było kilka, także dla mojej strony ze stanem rowerów na stacjach Nextbike. Wyniki podobne – wolniej i więcej przesłanych danych po HTTPS.

Dlatego przerażają mnie zmiany planowane zmiany w Chromium powodujące, że strony po odwiedzane po HTTP będą oznaczone jako niezaufane. Podobnie robi Mozilla. Rozumiem, że jeśli wysyłamy dane, zwł. z kamery czy mikrofonu, ba, jeśli cokolwiek wprowadzamy na stronie czy wysyłamy pliki. Ale sam odbiór? Trochę przesada. Tym bardziej, że istnieją narzędzia, do wymuszania HTTPS, jeśli ktoś ma taką potrzebę – choćby HTTPS Everywhere.

Zupełnie nie rozumiem podejścia Google do wykorzystania HTTPS jako sygnału rankingowego. Zdobycie certyfikatu nie jest problemem, a jak ruszy Let’s Encrypt, to już w ogóle. Znaczy rozumiem ideę, ale do sprawdzenia autentyczności, wystarczyłoby np. pobierać po HTTPS sitemap.xml. Czy tam robots.txt. Czy stronę główną.

Trochę zastanawiam się, po co ta nagonka. I mam wrażenie, że nie tyle o bezpieczeństwo chodzi (dobry pretekst, fakt), a o pieniądze. O ile certyfikaty tanieją i będą za darmo (ale czy wszystkie?), o tyle pewnie jest to pretekst do kolejnego wzrostu narzutu na ruch, nowych usług (terminowanie SSL na proxy czy CDN), wymiany pudełek itp. Nawiasem, jest nawet strona zachwalająca, jaki to TSL jest szybki, na współczesnych procesorach i nowym oprogramowaniu. Tyle, że nie. Ale nie omieszkam sprawdzić (na najnowszym Debianie), jak tylko Let’s Encrypt ruszy…

Zachęcam do polemiki. Polecenia podałem wyżej, można samemu sprawdzić, podać kontrprzykłady, pochwalić się konfiguracją z minimalnym narzutem na wersję szyfrowaną.

UPDATE: Poprawione polecenia (było dwa razy HTTP, zamiast raz HTTP i raz HTTPS). Bug przy przeklejaniu, wyniki są i były prawidłowe. W sumie jestem rozczarowany, że tak długo nikt tego nie zauważył.

Chromium pobiera zamknięty, potencjalnie naruszający prywatność kod

Do niedawna Chromium w Debianie pobierało niewolny, zamknięty, binarny fragment kodu po instalacji. Jest to oczywiście zachowanie sprzeczne z Umową społeczną Debiana. Co więcej charakter modułu i sposób jego działania (Chrome Hotword Shared Module – obsługa mikrofonu, rozpoznawanie mowy) nie wykluczają, że mogło dojść do naruszenia prywatności użytkowników tej dystrybucji, tym bardziej, że jest on pokrewny „podsłuchowi przez Google”, który opisywano na początku roku.

Jeszcze ciekawszy jest fakt, na który zwrócono uwagę, że nawet wyłączenie w opcjach przeglądarki tej funkcjonalności nie zapobiega ładowaniu czy uruchomieniu niewolnego modułu. Pojawiły się też pytania o to, w jaki sposób oprogramowanie wykorzystujące takie metody dystrybucji pojawiło się w Debianie oraz o to, czy Google powinno w ogóle być upstreamem. Pojawiły się też głosy, że zjawisko tego typu pojawia się coraz częściej.

W Debianie problem został poprawiony w najnowszej wersji pakietu.

Sam fakt pobierania binarnego dodatku nie jest ograniczony do Debiania, wywodzi się to z upstreamu Chromium w wersji 43, więc dotyczy wszystkich dystrybucji Linuksa z tą wersją. Zostało to zgłoszone do upstream Google.

Źródła:

  1. http://www.theregister.co.uk/2015/06/17/debian_chromium_hubbub/
  2. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=786909
  3. https://code.google.com/p/chromium/issues/detail?id=491435