Planeta.OpenAlt.org

Pozvánka na 145. pražský sraz

říjen
19
Openalt.org

Za několik dnů vypukne největší svátek: Konference OpenAlt 2017. Pojďme si ještě jednou na přelomu časů nyní a poté společně posedět a promluvit o tom, co nás zajímá a co čeká. Čas je naplánovaný, posezení rezerované, poslední pražský sraz OpenAltu se odehraje v karlínském Pivovarském klubu. Najdete jej kousek od metra Florenc na adrese Křižíkova 17°, Praha 8. Začínáme ve čtvrtek 26. října v 18 hodin a jste všichni srdečně zváni.

Pozvánka na 145. brněnský sraz

říjen
18
Openalt.org

Poslední předkonferenční sraz OpenAlt se bude konat 20.října od 18 hodin v restauraci Timeout - Novoměstská 2 v Řečkovicích. Všichni jsou srdečně zváni.

Zkušenosti se Sony Xperia XZ1

Interval výměny mobilních telefonů mám dva roky. Mobily hodně používám, je to pro mě spotřební zboží, takže se k nim i podobných způsobem chovám a po dvou letech je automaticky nahrazuji novým modelem. Tentokrát jsem poprvé nesáhl po kompaktní verzi, ale pořídil „lopatu“ o 5,2″ Xperia XZ1. Jaké s ní mám zatím zkušenosti?

sony-xz1

Minule jsem zvolil telefon od Sony (Xperia Z5 Compact) kvůli tomu, že jako jedna z mála firem dělá high-end mobily v kompatním těle. Telefony od Sony jsem si na základě zkušenosti s tímto mobilem oblíbil. O důvodem jsem se taky před časem rozepsal.

Tentokrát jsem sáhl po standardní Xperii XZ1 s úhlopříčkou 5,2″, což už rozhodně kompaktní verze není a patří spíš k nadprůměru, co se týče velikosti. Hodně lidí mi říkalo, že si na větší mobil velmi rychle zvyklo a už by neměnilo, tak jsem si chtěl vyzkoušet, jestli to bude platit i u mě. Musím říct, že platí. Prvních několik dní bylo těžkých. Větší telefon už se neovládal jednou rukou tak snadno jako Compact. Chvíli jsem měl pocit, že si nezvyknu. Uběhly dva týdny a už mi to ani nepřijde.

A jak si XZ1 jinak vede?

Spotřeba – tu umí Sony z výrobců telefonů s Androidem snad nejlépe. Z5 Compact měla skvělou výdrž. XZ1 je na tom ještě líp. Hodně lidí hledí jenom na kapacitu baterky. Tu nemá oslnivou – 2700 mAh, ale Sony z toho dokáže vykouzlit hodně nadprůměrnou výdrž. Při průměrném používání končím někde na 50 % baterky na konci dni. I při tom intenzivním většinou celý den dá. A to mám k mobilu přes Bluetooth nonstop připojené hodinky.

XZ1 by si měla tyto parametry udržet až o rok déle, protože Sony má šetřící režim nabíjení. Několik dní sleduje, kdy mobil nabíjíte, a poté dokáže odhadnout, kdy jej potřebujete mít nabitý. Pokud jej nabíjíte přes noc, tak jej nenabije za 1-2 hodiny a pak jej nedrží na 100 % baterky, což jí moc nesvědčí, ale nabije jej na 80-90 % a do 100 % je dobije až v poslední hodině před předpokládaným probuzením.

Výkon – Z5 Compact mi nepřišel pomalý ani po dvou letech používání, ale je fakt, že výrazně lepší odezvu u XZ1 lze pozorovat. Snapdraggon 835 už se dneska prostě nezadýchá víceméně u ničeho. Na rozdíl od 810, která je v Z5 Compact, nemá ani problémy s přehříváním. 4 GB RAM je dnes taky adekvátních.

Disk – XZ1 má interní disk o velikosti 64 GB, což je na dnešní dobu dostačující. Méně bych u nového telefonu nechtěl. Z5 Compact měla 32 GB a i když jsem ukládal fotky a videa na SD kartu, i tak už mě ke konci velikost interního disku omezovala. K 64 GB jsem dokoupil ještě SD kartu o velikosti 128 GB a nejvyšší rychlostní třídě, takže mám ve výsledku 192 GB, což mi by mělo stačit až na půdu.

Obrazovka – předchozí telefon měl jemnost 320 PPI, což je víceméně hodnota Retina Displaye, o kterém Apple donedávna prohlašoval, že musí stačit všem a že víc lidské oko stejně nerozpozná. No a pak uvedli Super Retina Display 🙂 Je fakt, že 320 PPI lze ještě poznat, pokud má člověk trochu dobrý zrak. XZ1 má jemnost 424 PPI a to už mi přijde jako hodnota, kde to už je vážně jedno. Nižší rozlišení byl taky důvod, proč jsem si nekoupil XZ Premium, ale počkal si na XZ1. Mezi 424 a 806 PPI prakticky nepoznatelný rozdíl a vyšší rozlišení má dopad na výkon a spotřebu.

Obrazovka XZ1 také podporuje HDR a musím říct, že rozdíl je u videí a fotografií, které mají HDR, je opravdu znatelný.

Foťák – nemám přímé srovnání s ostatními špičkovými mobily. Podle DXOMark za úplnou špičkou o něco zaostává. Ale oproti Z5 Compact je rozdíl doslova propastný. Mobilem jsem nahradil kompaktní foťák a teprve nyní mám pocit, že mě jinak neomezuje. Rozdíl je daný také tím, že Z5 Compact mi z nějakého důvodu začal fotit ke konci méně ostře, což mohlo být poškrábaným sklíčkem nebo nějakým vychýlením čoček při jednom z mnoha pádů.

Sony má u foťáku také několik specialit: jako jediné zvládá videa o frekvenci až 960 fps, což je mnohonásobné zpomalení. Je to díky paměťovému chipu přímo na snímači. Videa, která s tím natočíte, vypadají fakt skvěle, ale je to spíše hračka. Stejně jako vytváření 3D skenů pomocí snímání kamery, které jsem zatím u žádného jiného výrobce neviděl. Zachovaná byla hardwarová spoušť, která je fakt návyková, protože má dvě polohy a chová se stejně jako ta na fotoaparátech.

ROM – Sony sice používá svoji nadstavbu, ale ta je docela minimalistická, takže se dost blíží vanilla Androidu. Bohužel stejně jako ROM jiných výrobců přichází s nějakým balastem navíc, který člověk musí odinstalovat nebo zakázat. Sony také patří k výrobcům, kteří se v aktualizacích systému docela snaží. Z5 Compact byla aktualizovaná celé dva roky, většinou tak 1-3 měsíce za upstreamem, což není ideál, ale stále hodně nadprůměr. U nových telefonů se snaží přinášet aktualizace rychleji (většinou do 10-14 dní po upstreamu). XZ1 už má říjnovou bezpečnostní aktualizaci. A mimochodem to byl taky první mobil, který se prodával s předinstalovaným Androidem 8.

Tělo – XZ1 je na rozdíl od Compactu téměř kovová. A jak u Sony bývá zvykem, zpracování působí bytelně a solidně. Jen horní a dolní hrany jsou plastové, což kvituju, protože na ty bude mobil dopadat nejčastěji a plast si s pády poradí lépe než kov. Už mi jednou spadl z metru na dlažbu a skončilo to jen téměř neznatelnou oděrkou.

Sony ještě nenaskočilo na vlnu bezrámečkových displejů a musím říct, že to spíše kvituju. Bezrámečkovým mobilům se nebráním, ale chci aby výsledkem byl mobil s displejem o 5,2″ v kompaktním těle. Současné bezrámečkové mobily jdou ale přesně opačnou cestou. Do stejně velkého těla se snaží nacpat co největší displej. A navíc jej roztahují jen do délky. Nudli o >5,5″ nechci už kvůli ovládání jednou rukou, které je u 5,2″ na hraně.

Z5 Compact měla taky první čtečku otisků prstů od Sony, která ještě nebyla 100% odladěná a občas se stávalo, že prostě na první pokus nepřečetla. S XZ1 jsem za prvních 14 dní neměl ještě ani jeden neúspěšný pokus.

Zvuk – XZ1 i nadále nabízí stereo reproduktory. Sony taky i nadále nabízí technologii, která dokáže rekonstruovat zvuk v komprimovaných formátech, a výsledkem je lepší kvalita. Funguje to ale jenom u lokálních souborů a já už téměř výhradně poslouchám jen Spotify. Pro Bluetooth je podporovaný LDAC, ale tím nedávno Sony přispělo přímo do Androidu, takže to bude brzo standard ve všech mobilech.

LDAC se mi hodí, protože Sony pro ty, kteří si mobil předobjednali, opět připravilo dárek. Tentokráte bluetooth headset Sony h.ear on 2, který normálně stojí 6 tisíc, což je pěkný dárek u mobilu na 17 tisíc.

Ještě bych doplnil, že XZ1 má velmi výkonný LTE modul, který údajně zvládne rychlost až 1 Gbps. Nemám to ale nijak ověřené, protože při takové rychlosti bych vyčerpal měsíční datový limit asi za půl minuty 🙂

Při přechodu na nový mobil mi hodně pomohl Xperia Transfer Mobile, což je nástroj na migraci dat. Migrovat data včetně aplikací lze i na přímo, aniž by je člověk musel zálohovat do cloudu Googlu, což je hodí, protože to nedělám.

Z5 Compact mezitím míří k dalšímu rodinnému příslušníkovi. Do důchodu má daleko, protože i navzdory mému bezohlednému používání je pořád v hodně solidním stavu. Mnohem lepším, než byl po dvou letech předchozí mobil – Samsung Galaxy S4.


Přednáška o novinkách u Espressif Systems na LinuxDays 2017

říjen
17
Petr Stehlík
Na letošních LinuxDays jsem měl i přednášku věnovanou výrobci známých a nesmírně populárních WiFi čipů ESP8266 a ESP32 (a jejich dalších variant). Přednášky věnované ESP8266 a ESP32 jsem měl už dříve (jak na LinuxDays a InstallFestu v Praze, tak i na OpenAltu v Brně), takže tentokrát jsem se mohl zaměřit jen na některé konkrétní věci, a samozřejmě zmínit všechno nové, co se u ESP událo od poslední přednášky.

Seznam mých přednášek s prezentacemi v PDF a videi na Youtube najdete zde: pstehlik.cz/prezent


Pozor, ironický sarkasmus!

Po mé minulé naprosto nadšené přednášce o ESP32, kde jsem nešetřil superlativy při popisu všech těch fantastických novinek a hardwarových vychytávek, které Espressif Systems dokázali nacpat do jádra ESP32, jsem dostal krom řady pozitivních i jednu negativní reakci. Spočívala v tom, že když jen takto nekriticky chválím, tak působím nedůvěryhodně, protože skutečný odborník by prý zmínil i negativa. Vzal jsem si to k srdci a rozhodl se tuto přednášku, nebo alespoň její větší část, vést sarkasticky v rádoby velmi kritickém duchu, abych uklidnil skutečné odborníky a spravil si u nich svou "pošramocenou pověst" :-)

Cítil jsem, že je to poměrně riskantní krok, protože mě málokdo zná dost dobře na to, aby věděl, kdy si dělám legraci. Proto jsem rovnou na první slajd celé přednášky v PDF napsal 

Nemilosrdná kritika skutečného odborníka

a jelikož jsem si pořád ještě nebyl jist, jestli to diváci pochopí jako nadsázku, tak jsem ještě výslovně v přednášce vysvětloval, že tento text měl být v uvozovkách - nejdřív ten skutečný odborník, protože jím zdaleka nejsem, no a pak i ta nemilosrdná kritika, neboť to bylo celé míněno velmi ironicky.

Dlužno dodat, že i když jsem se snažil rádoby drsně kritizovat, tak všechno, co jsem říkal, byla neustále fakticky pravda - tj. v ESP32 jsou skutečně hardwarové chyby, v nové revizi se podařilo opravit jen část z nich, jedna chyba se dokonce objevila při opravě předchozí chyby a navíc je tam ten nelineární a poněkud nepřesný ADC převodník, takže měřit analogové veličiny není s ESP32 moc dobrý nápad. 

Při tom jsem se mimochodem spletl - ESP32 má přepínatelnou přesnost ADC, takže není jen 10bitová (jak jsem uváděl), ale i 9, 11 a 12bitová. Navíc umí přepínat "zesílení", takže jakoby mění referenční napětí. A z této komplexnosti asi plyne i nějaká ta chybička v hardware, kterou se inženýři v Espressif Systems snaží prozatím obejít softwarově.

Zároveň je ale i pravda, a to jsem na přednášce také zdůrazňoval, že v reálu se s většinou těchto chyb nepotkáte. Velkou většinu z nich se podařilo obejít v SDK (v knihovnách, které použijete při programování ESP32) a pokud nepřipojíte externí SRAM a nebo nebudete v assembleru šachovat ve vícevláknovém procesu na určitých specifických adresách v paměti, nemělo by vás při programování nic trápit.

A to nepřesné ADC? To by bylo nejjednodušší vyřešit připojením externího ADC komunikujícího přes I2C. Takových broučků za pár korun budou na trhu mraky.

Brno je zlatá loď, za děvčaty z Brna choď...

Na přednášce jsem též s chutí zmínil novinky, kterých je u Espressif Systems hodně. Nejzajímavější je otevření prvního zahraničního vývojářského centra, pro které si Číňani nějakým zázrakem vybrali z celého světa právě Brno. Je neuvěřitelné, že naši čeští (a slovenští) inženýři můžou být přímo u zdroje ESP čipů a svou každodenní pečlivou prací vylepšovat softwarovou podporu pro tento celosvětově úspěšný čínský čip. Přiznejme si, že i když na ESP-IDF (SDK pro ESP32) odvedli v Číně obrovský kus práce, tak pořád je nejméně stejný díl před nimi. Bude naprosto super, jestli k tomu přispějí i kluci a holky v Brně.

ESP32-PICO-D4

Díky Johnu Lee z Espressif Systems jsem i letos mohl přímo na přednášce něco unboxovat, tedy rozbalit a v přímém přenosu předvést celému sálu a světu. Bohužel jsme to technicky nezvládli - i když jsem si původně plánoval připravit pětikorunu jako měřítko, tak jsem zapomněl položit na tu promítací zvětšovací věc, tím pádem jsem neměl vychytané zaostření na tak maličký čip, jakým je ESP32-PICO-D4, a na tom to celé selhalo. Omlouvám se a doufám, že to alespoň pobavilo. Zde je zaostřená fotka, která ukazuje, jak miniaturní ESP32-PICO-D4 doopravdy je:



Je zřejmé, že ESP32-PICO-D4 je opravdu fantasticky integrovaný systém. Stačí fakt jen anténa a zdroj a máme funkční WiFi počítač s několika procesory, na 240 MHz, s velkou pamětí a se spoustou vnitřních senzorů. Jsem tím doslova uchvácen a je mi fuk, že to nekritizuju, takže odborníci z toho budou zase mimo. Doufám, že budu mít chvíli času k tomuto doslova mikročipu připojit miniaturní anténu a pak ho zprovoznit třeba jen na CR2032 :-)

Programovací jazyky a typy

říjen
16
Milan Lempera
Článek je volným přepisem mé přednášky na jOpenSpace 2017, vychází z mých zkušeností ze školení JavaScriptu a Angularu a z níže uvedených zdrojů.

Zdá se mi, že programátoři mají často sklon vnímat některé aspekty programovacích jazyků černobíle. Jedním z typických příkladů jsou typové systémy programovacích jazyků.

Často je to dáno předchozí zkušeností, stručně jde o to, že:


„Mnoho programátorů používalo velmi špatné staticky typované jazyky.“

„Mnoho programátorů používalo dynamicky typované jazyky velmi špatně.“


Pojďme se na problematicku podívat více věcně a ukázat si pár vlastností, podle kterých můžeme typovost jazyků snadno kategorizovat.

Je v kódu více než jeden typ?

První pohled, který se nabízí je, jestli je jazyk typovaný, či nikoli. Jinými slovy, jestli hodnoty jazyka jsou různých typů. Většina dnešních jazyků typy rozlišuje, poznají čísla, řetězce... S netypovým jazykem se setkáte jen když posunete až na úroveň assembleru.

Kdo nese typ?

Už víme, že náš jazyk je typovaný, důležité ale je, kdo je nositelem typu. Podlé této metriky rozlišujeme jazyky statické a dynamické. 

Dynamický jazyk poznáte tak, že typ nese hodnota. Reference (proměnná, konstanta) typ nenese. Důsledkem toho je, že do jedné proměnné můžete přiřadit hodnoty různých typů, nicméně to, že to jde ještě neznamená, že to chcete dělat. 

U staticky typovaných jazyků nese typ jak hodnota, tak reference a jazyk vám nedovolí přiřadit referenci hodnotu, která neodpovídá jejímu typu.

Co když typy nesedí?

Další důležitou otázkou je, co se stane, když použijete hodnotu určitého typu tam, kde je očekáván typ jiný. Poradí si s tím jazyk sám, nebo bude vyžadovat, aby situaci vyřešil programátor?

Podle toho rozlišujeme slabě a silně typované jazyky. 
Silně typovaný jazyk vám nedovolí např. násobit číslo se stringem, i kdyby hodnota ve stringu odpovídala číslu. 

Naproti tomu slabě typovaný jazyk zkusí hodnotu převést na správný typ a operaci provést.


Jde o název, nebo o strukturu?

Jak vlastně jazyk pozná, zda něco odpovídá určitému typu? Představme si třeba interface a metodu:
Jak vytvořit objekt, který můžeme předat uvedené funkci? To záleží, jestli má váš jazyk nominální, nebo strukturální typy.

Většina obecně známých jazyků vyžaduje jmenovité uvedení typu, který splňujete - např. jaký implementujete intefrace - jde o nominální typový systém (name-based type system).

S příchodem typů do světa JavaScriptu (TypeScript, FlowJS) se do popředí dostává opačný přístup, který staví na struktuře dat. Kontroluje jestli má objekt všechny vlastnosti které daný typ vyžaduje a jestli jsou datové typy těchto vlastností stejné. Označuje se jako strukturální typový systém, často se můžete setkat také s pojmem duck-typing.

A musím psát typy všude?

Když definujeme typy funkcím a metodám, když víme jaká instance vznikne voláním konstruktoru, může nás napadnout, že některé typy si může compiler odvodit sám, protože v kódu už typová informace je.
Záleží na jazyku, jestli si dokáže typ odvodit (podporuje type inference), nebo bude požadovat explicitní uvedení typu.


A co když někdy typy nechci řešit?

Některé jazyky vám dávají na výběr, jestli chcete psát typy, nebo ne. Jde o vlastnosti, kterou oceníte hlavně ve chvíli, kdy ve vašem ekosystému není statické typování zvykem - proto asi nepřekvapí, že volitelné typování nabízí TypeScript. 

Není to černobílé

Když se na typový systém programovacího jazyka podíváte z pohledu popsaných vlastností, uvidíte, že věci nejsou černobílé. Je třeba vědět víc, než jen jestli je jazyk staticky nebo dynamicky typovaný.
Potom vás nepřekvapí že i když TypeScript přináší typy do světa JavaScriptu, nebude se chovat tak, jak jste zvyklý třeba s Javy. 




Závěr

Ať už píšete v jakémkoli jazyku, je dobré znát jeho možnosti. A k tomu znát možnosti a přístupy ostatních jazyků. Pomůže vám to zamyslet se nad problémem z jiné perspektivy. Mě experimenty s novým jazykem rozšiřují obzory a vedou mě k přístupům, které můžu aplikovat všude, ale dříve by mě nenapadly.



„The structures of your language shape the way you think and perceive the world.“

[Sapir-Whorf hypothesis]

Zdroje:




Z letenky na Facebooku až k unesenému účtu

říjen
16
Michal Spacek

Aktualizace článku

  • 16.10. Článek odstraněn
  • 25.8. Přidána poznámka o dalším kroku při resetu hesla United Airlines

Článek tu již nenajdete, omlouvám se.

Přednáška o Orange Pi na LinuxDays 2017

říjen
16
Petr Stehlík

Installfest a LinuxDays

Přednášku věnovanou jen Orange Pi jsem měl na jaře na Installfestu. Tudíž na LinuxDays jsem se chtěl zaměřit především na novinky, abych se moc neopakoval. Bohužel na přednášku jsem měl v programu jen 25 minut, takže jsem už předem věděl, že toho moc říct nestihnu. Téma Orange Pi a vůbec těch malých jednodeskových počítačů v čele s Raspberry Pi je nesmírně obsáhlé a dalo by se o něm hovořit a hlavně předvádět různé věci celé hodiny.

Prezentaci z přednášky v PDF najdete tady: https://www.pstehlik.cz/prezent/

Zbytek tohoto článku shrnuje, doplňuje a opravuje informace, které zazní ve videu z letošních LinuxDays:




Raspberry Pi

Kromě Raspberry Pi s jeho novým desktopem Pixel (dostupným i pro Mac a PC) je zajímavé, že máme oficiálního českého distributora, díky čemuž už ceny Raspberry Pi Zero nedosahují takových výšin. Původně Zero nebylo dlouhodobě dostupné, případně se prodávalo v balíčku s tolika nesmyslnými kabely a redukcemi, že to vyšlo dráž, než si ho poslat přímo z UK. Nyní je to za 157 korun myslím velmi dostupný gigahertzový stroj.

ODROID a další

Dále jsem chtěl využít toho, že mám osobní zkušenosti s platformou ODROID a jejich nejvýkonnějším modelem XU4. Přivezl jsem jeden kousek a nechal ho kolovat, aby si návštěvníci LinuxDays mohli osobně zblízka osahat jihokorejskou kvalitu. XU4 má už několik let USB3 port, gigabitový ethernet a hodiny zálohovaného času, takže je velmi vhodný na všechna ta serverová nasazení s externími disky, kde lidé pořád nesmyslně trápí Raspberry Pi. Osobně jsem na ODROID XU4 vyvinul rozpoznávání obrazu v reálném čase, kdy všech 8 jader jede naplno a paralelně rozpoznávají následující snímky z kamery. Na Raspberry Pi by něco podobného bylo 4x pomalejší, tedy mimo reálný čas.

ODROID XU4

Stručně jsem prolétl i ostatní konkurenty na poli SBC, ale nezacházel jsem do detailů, neboť je neznám. Publikovat údaje z marketingových letáků jsem nechtěl, protože se často hodně rozcházejí s realitou v praxi.

Vlastní Orange Pi

Konečně jsem se dostal k Orange Pi, kde jsem stručně prošel všechny čtyři kusy, se kterými mám osobní zkušenost: Orange Pi Plus, Orange Pi One, Orange Pi Zero a Orange Pi PC Plus - ten poslední jsem si koupil speciálně kvůli letošním LinuxDays, neboť jsem doufal v živou ukázku. Měl jsem nainstalovaný systém z www.h3droid.com, který je velmi zajímavý tím, že na začátku nainstaluje něco jako "grub" - jednoduchý, ale mocný systém pro instalaci a konfiguraci dalších věcí, a to nejen Androidu, ale i Armbianu.

Orange Pi Zero

Ve výsledku mám nyní na SD kartě dual boot, tedy při startu možnost vybrat jeden ze dvou různých operačních systémů - Android nebo Debian. Je to velmi pohodlné a mocné - člověk tak rychle porovná například stav hardwarové akcelerace grafického výstupu nebo HDMI CEC, které prý u tohoto konkrétního typu opravdu funguje.

Orange Pi PC Plus

Tři důležité novinky u Orange Pi

Dále jsem chtěl zdůraznit tři velmi důležité novinky z Orange Pi "kuchyně". Za prvé - firma Shenzen Xunlong Software je nesmírně rychlá, neustále rostoucí a má skutečně velké ambice. Brzy bude produkovat takové množství hardware, že snad doroste i Raspberry Pi. To pro uživatele znamená, že se zřejmě nemusejí obávat, že by Orange Pi jakoby "zmizelo z trhu".

Druhá důležitá novinka je, že se firma vyrábějící hardware snaží o lepší softwarovou podporu - ať už partnerstvím s Ubuntu, anebo finanční podporou Armbianu, který je defacto jediným fungujícím operačním systémem pro Orange Pi.

Třetí novinkou, především pro české uživatele, je nově vzniklá skupina na Facebooku, kde se česky/slovensky domlouvají mezi sebou uživatelé (nejen) Raspberry Pi. Běžně se lidé trochu bojí koupit si něco jiného než Raspberry Pi, protože cítí, že by mohli s exotickým čínským hardwarem zůstat osamoceni jako kůl v plotě. U Orange Pi už to myslím nehrozí - kromě obří mezinárodní anglicky hovořící skupiny na Facebooku (8000+ členů) je tu nyní nejméně 200 československých lidí připravených sdílet své zkušenosti. A to je pro rozšiřování Orange Pi zásadní věc.

H5? H5!

Velmi zajímavé je, že jsem chtěl přednášku využít též jako varování uživatelům, kteří by si chtěli koupit některé z novějších Orange Pi s 64bitovým Allwinner H5 procesorem. Podle informací z Armbian fóra i facebookové skupiny jsem věděl, že procesory H5 nemají dobrou SW podporu - nová linuxová jádra na nich neběžela vůbec, takže uživatel byl odsouzen k používání starého děravého jádra od výrobce. Před tímto jsem na přednášce v sobotu 7. října varoval a měl jsem dobrý pocit, že jsem možná někoho uchránil před zklamáním.

Ovšem už o pouhé tři dny později, v úterý 10. října, se všechno změnilo! Igor slavnostně oznámil, že po mnoha měsících tvrdé práce pár dobrovolníků nyní Allwinner H5 běží i s nejnovějším jádrem Linuxu! A aby toho nebylo málo, už následující den oznámil tuším NetBSD taky plnou podporu pro Orange Pi s Allwinner H5! Takže celé měsíce nic, a naráz si člověk může vybrat hned ze dvou kvalitních operačních systémů. To je skvělé!

Závěrem

Jednou bych si chtěl najít 3 hodiny času a udělat přehlednou srovnávací tabulku všech typů Orange Pi, které Xunlong aktuálně chrlí - ovšem už za další měsíc by ta tabulka byla neaktuální, protože tak rychle na trh uvádějí nové modely. Je jich skutečná záplava a je kumšt si vybrat správně. Snad jsem svou přednáškou aspoň trošku pomohl ukázat jak levné modely (Zero, One), tak i "střední" třídu (Plus, PC Plus). Nejvýkonnější 64bitové novinky či specialitky typu GSM IoT nebo dvousíťové routery jsem ještě v ruce neměl, tak jsem o nich zatím mluvit konkrétně nechtěl. Ale jak se znám, u čtyřech pomerančů neskončím a časem nakoupím další, tak třeba za rok budu mít nové zkušenosti či zprávy, o které se budu chtít někde podělit :-)

Poslední veřejná školení Úvod do PHP a Třídy a objekty v PHP

říjen
10
Michal Spacek

Od doby, kdy mi Jakub Vrána předal ono symbolické žezlo, jsem jen na tyto dva kurzy vypsal dohromady 40 termínů, kterými prošlo celkem přes 200 účastníků a všem za to moc děkuji. Kdybyste někdo chtěl ve školení pokračovat, dejte prosím vědět. Pro úplnost: celkem jsem doposud pořádal něco málo přes 120 školení pro zhruba 800 účastníků.

Proč ta změna? Chtěl bych se víc věnovat bezpečnosti na všech frontách, zlepšovat současný stav, učit webové vývojáře stavět bezpečnější aplikace a uživatele přesvědčit, že jejich data jsou pro někoho zcela jistě „zajímavá“. Práce v oboru je dostatek a díky všem, kteří ji nepřidělávají, he he, he.

Školení bezpečnosti webových aplikací (13. 12. 2017 Praha) bude pokračovat, nově jsem pro veřejnost otevřel školení HTTPS (prosinec 2017 Praha) a chystám kurz s pracovním názvem „pokročilá bezpečnost“. Zároveň jsem ve firmách začal přednášet o bezpečnosti na sociálních sítích i o heslech, všechno tohle pojede dál. Některá školení otevřu i v angličtině, aby se naši (a vaši) zahraniční kolegové mohli také leccos přiučit.

Ale poněvadž mě vývoj pořád baví (můžu stavět co často rozbíjím), tak jsem začal pracovat na projektu, který možná už používáte, se super lidmi, které možná už znáte. Však uvidíte, již brzy.

ePrivacy: film se špatným koncem

ePrivacy: film se špatným koncem tereza.tumova@… Po, 10/09/2017 - 13:11

EDAA a další hráči digitálního průmyslu včetně IAB Europe připravili videa, která ilustrují hrozící dopady navrhovaného nařízení ePrivacy na digitální průmysl. Z pohledu uživatelů internetu to může skončit jako špatný film! Sledujte níže!

ePrivacy neboli nařízení o soukromí a elektronických komunikacích je jako špatný film [#LikeABadMovie]. Ale ještě stále můžeme změnit jeho konec...

Více zde. Videa najdete níže, připojen je i alternativní odkaz.

Soumrak aplikací - App-ocalypse (alternativní odkaz https://vimeo.com/236635324)

Technické startupy, které stojí za některými světově nejúspěšnějšími aplikacemi, často závisí na příjmech z online cílené reklamy založené na datech. Jedině tak mohou své aplikace nabízet zdarma a zajistí si růst. Bez těchto příjmů se jejich obchodní model v podstatě zhroutí. Nižší příjmy budou znamenat méně startupů, a tím pádem méně obsahu a aplikací pro uživatele...

Dobré ráno, peněženko! [Wake up. Pay up] (alternativní odkaz: https://vimeo.com/236631509​)

Evropané volí v drtivé většině přístup k obsahu a službám na internetu zdarma. Ovšem bez příjmů z cílené online reklamy založené na datech bude bezplatný přístup zakrátko omezen nebo de facto znemožněn. Ze dne na den může evropské uživatele čekat nepříjemné probuzení, kdy se budou muset rozhodnout, zda sáhnout do peněženky, nebo zůstat bez informací...

Pravda nebo lež? [True or False?] (alternativní odkaz: https://vimeo.com/236632053)

Díky příjmům z online reklamy založené na datech mohou vydavatelé provozovat kvalitní žurnalistiku. Pokud tento zdroj zmizí, zmizí s ním i možnost financovat široký výběr mediálního obsahu. Mnoho nezávislých vydavatelů bude muset snižovat náklady a někteří dokonce pro neudržitelnost situace skončí. Pro uživatele to bude znamenat mnohem méně nezávislých zdrojů informací a menší rozmanitost názorů na internetu...

Pan Šťastný [Mr Happy] (alternativní odkaz: https://vimeo.com/236899460​)

Evropská komise usiluje o to, aby evropští uživatelé mohli lépe spravovat své soukromí v online světě. Navrhovaná opatření ePrivacy však vyžadují, aby spotřebitelé nastavovali úroveň ochrany osobních údajů zvlášť pro každou internetovou stránku, v každém prohlížeči a na každém zařízení, které používají. Uživatelé budou bombardováni žádostmi o souhlas tak dlouho, až budou vyčerpaní, zmatení a nejistí, co "udělení souhlasu" ve skutečnosti znamená...

Může to ale dopadnout i jinak... [Alternative Ending] (alternativní odkaz: https://vimeo.com/236629936)

Při revizi ePrivacy se Evropská komise rozhodla posílit důvěru a bezpečnost na jednotném digitálním trhu. Bohužel změny, které navrhuje Evropský parlament, vůbec nezohledňují komentáře a stanoviska digitálního průmyslu. Pokud budou změny ePrivacy přijaty, bude to mít pro evropské uživatele hrozivé důsledky. Do konce roku je ještě možnost zmírnit hrozící škody, pokud se rozšíří seznam právních základů pro zpracování údajů (např. oprávněný zájem), pokud budou uživatelé lépe informováni a pokud dojde k souladu textu ePrivacy s GDPR neboli Obecným nařízením o ochraně osobních údajů. Čas je ale jen do konce roku...

Ferona, a.s. stále hledá uchazeče na pozici Administrator BI/DWH

říjen
03
Jan Papež
Ferona, a.s., zabývající se prodejem hutního materiálu, pro ústředí akciové společnosti hledá nového kolegu do týmu pro projektování a vývoj aplikací IS na pracovní pozici: PROJEKTANT IS / DATA WAREHOUSE ADMINISTRATOR Popis pracovní pozice: odpovědnost za provoz a rozvoj řešení BI na platformě Microsoft podpora firemního reportingu jednání s dodavateli BI příprava a tvorba dokumentace

OpenAlt 2017 bude pecka!

září
29
Jozef Mlich
Jako od organizátora konference asi ode mne nečeká nikdo nic jiného, ale letos to tak prostě bude. Myslím si, že se nám do letošního ročníku podařilo několik velmi zajímavých věcí. A třeba se nám jich ještě pár podaří. V tuto chvíli máme výběr z programu. Je to pár zajímavých přednášek z každého tracku. Před tím … Continue reading "OpenAlt 2017 bude pecka!"

O HiDPI v Linuxu

Už několik měsíců mám Dell XPS 13, který má tzv. HiDPI displej. Ten má vskutku impozantní jemnost: 3200×1800 pixelů na 13,3″, což je hustota 276 pixelů na palec. Takové DPI je srovnatelné s mobilními telefony (Retina displej u iPhonu má 325 DPI). Jak si s takovými displeji poradí linuxový desktop?

tux

Na začátek je potřeba říct, že podpora HiDPI není binární věc, ale má několik rovin. Tou nejprimitivnější metodou, jak se poprat s vysokou hustotou pixelů, je škálování písma. To zvládne prakticky každé desktopové prostředí a grafický framework. Velikost mnoha elementů v uživatelském rozhraní se nastavuje podle písma a zvětšení písma, tak může do určité míry pomoci. Má ale daleko k ideálu. Velikost některých prvků (např. ikony) se podle písma nenastavuje a taky velikost písma se nastavuje globálně, což má hodně tragické výsledky, když vedle HiDPI monitoru používáte ještě klasický (to je i můj případ).

Abyste mohli plnohodnotně škálovat, potřebujete moderní grafický framework, což jsou v případě Linuxu GTK+ 3 a Qt 5. Ty už dokážou škálovat plnohodnotně celé uživatelské rozhraní a to už několik let. I u nich ale vyvstává problém a to s monitory, které nejsou tak úplně HiDPI.

Za HiDPI monitor se považuje takový, který má více než dvojnásobné DPI než standardní monitor. U GTK+ 3 je tato hranice stanovená na 192 DPI. Na monitorech s vyšším DPI začne GTK+ 3 automaticky škálovat na 200 % a všechno je velikostně podobné jako na monitorech se standardním DPI. Problém je v tom, že dneska se prodává řada monitorů, které jsou někde mezi. Jsou to téměř všechny 4K monitory, které se typicky prodávají ve velikosti 27-28″. Jejich DPI je někde kolem 165, což je příliš mnoho na škálování 100 % a příliš malé na škálování 200 %.

Qt a GTK+ tento problém řeší rozdílnými způsoby. Qt má podporu pro neceločíselné škálování (tedy např. 150 %, neboli 1,5x) zabudovanou přímo v sobě. Naše zkušenosti s tímto řešením jsou zatím dost rozpačité. Vývojáři GNOME a GTK+ došli k závěru, že podporovat neceločíselné škálování v grafickém frameworku je komplikované, a rozhodli se, že GTK+ bude i nadále škálovat po celých číslech a doškálovávání na ideální velikost bude provádět kompositor Mutter. Ten by totiž měl mít nejlepší přehled o jednotlivých monitorech, jejich velikosti, rozlišení a nastavení.

Pokud tedy máte 28 palcový 4K monitor, který má 165 DPI a ideální škálování by pro něj bylo 150 %, GTK+ škáluje rozhraní aplikací na 200 % a Mutter potom vezme obsah okna a zmenší jej o čtvrtinu na 150 %. Funguje to pěkně u moderního frameworku, který umí škálovat. Problém je u aplikací, které škálování nepodporují. Pro Mutter je obsah okna bitmapa. Aplikace, které neškálují, tak roztáhne o polovinu na 150 %, případně u opravdových HiDPI monitorů i na 200 % a výsledkem je rozmazaný obsah okna, což je pravý opak toho, čeho chtěli uživatelé nákupem HiDPI monitoru dosáhnout.

Podpora neceločíselného škálování se jako experimentální nachází v GNOME 3.26 a najdete ji ve Fedora Workstation 27. Pracovaly na ní společně Red Hat a Canonical. Musíte ji však zapnout v dconfu pod /org/gnome/mutter/experimental-features a musíte také používat GNOME na Waylandu. Bohužel dle mého názoru přináší pro majitele opravdových HiDPI monitorů docela výraznou regresi. Jak popisuji v předchozím odstavci, pokud aplikace škálování nepodporuje, Mutter škáluje bitmapu jejího okna, což má za následek rozmazané rozhraní. Bohužel za neschopné škálování se považují všechny aplikace, které nepoužívají moderní framework a nebeží nativně na Waylandu. A v tom je právě ta regrese.

Některé aplikace totiž mají implementované vlastní škálování. Příkladem takových aplikací jsou Firefox, Chromium/Chrome, Telegram. Ty sice neběží nativně na Waylandu a nepoužívají ke škálování Qt nebo GTK, ale pokud detekují, že běží na monitoru s dostatečně velkým DPI, samy upraví své rozhraní. Na HiDPI monitorech tak fungují bez problémů. Problém mají jen s automatickým přeškálováváním, když jejich okno přetahujete z HiDPI monitoru na standardní a naopak. To je totiž další úroveň podpory HiDPI. Váš desktop a aplikace by si měly poradit s různými monitory o různé hustotě pixelů a automaticky přeškálovávat, pokud mezi nimi okna přetahujete.

To dnes pěkně funguje s GTK+ 3 a GNOME na Waylandu. Na X11 různé škálování na různých monitorech nefunguje a asi ani nikdy nebude. Podle vývojářů by to bylo sice o cosi složitější než na Waylandu, ale realizovatelné. Bylo by to ale hodně práce navíc, což si nemůžou dovolit. A vzhledem k tomu, že Wayland je budoucnost, přirozeně padla volba na něj.

Po vyzkoušení experimentální podpory neceločíselného škálování v GNOME, jsem jej zase vypnul a vrátil se k předchozímu řešení, které umí škálovat pouze na 200 %. Pro DPI přes 200 je to ale ideální hodnota a škálují mi také Firefox, Chrome a Telegram, které se nesnaží Mutter přeškálovat sám, ale nechává jim volné pole působnosti využít jejich vlastní škálování. Ano, tyto aplikace se mi nepřeškálují automaticky při přesunutí na druhý monitor, ale mám je vždy puštěné na primárním monitoru, takže mi to ani tak nevadí. Docela použitelné jsou i aplikace postavené na GTK+ 2. Neumí sice škálovat, ale alespoň se jim škáluje písmo, takže většina UI má odpovídající velikost. Zcela neškálují pouze aplikace, které nemají vlastní škálování a vše si bundlují, v mém případě to je jenom Spotify.

Bohužel v GNOME 3.26 se momentálně nachází chyba v GNOME Shellu. Ten totiž neškáluje podle primárního monitoru, což je v mém případě ten externí se standardním DPI, ale podle zabudovaného HiDPI monitoru, takže na primárním, kde se nachází veškeré UI Shellu, je vše příliš velké. Ještě nevyšla ani beta Fedory 27, takže jsem ochotný takové chyby akceptovat, ale doufám, že se to do finální verze opraví, protože momentálně mě to donutilo se vzdát používání dvou monitorů.

Pokud máte monitor, který má DPI někde mezi 125 a 192, doporučuji neceločíselné škálování vyzkoušet. Celočíselné škálování vám asi nefungovalo příliš dobře a mohlo by to pomoct. Navíc Mutter nemusí okna neškálujících aplikací roztahovat tak moc, jako na velmi jemných monitorech, takže by ani nemusela být tak rozmazaná.

Do budoucna je na aplikacích, aby se přizpůsobily. Firefox už GTK+ 3 používá a experimentálně běží i na Waylandu. Chrome na GTK+ 3 pomalu přechází a v plánu je i podpora Waylandu. Potom budou vyřešené dvě nejdůležitější desktopové aplikace. Ostatně podobné problémy řeší i Windows. Systém a moderní frameworky můžou HiDPI monitory podporovat dobře, ale vždycky se najdou aplikace, které na to nejsou připravené. Proto i na Windows narazíte na aplikace, které jsou rozmazané. Jejich okna jsou totiž také roztažená.

Musím ale říct, že HiDPI monitor za to opravdu stojí. Na vyšší rozlišení se velmi rychle zvyká a vše je perfektně ostré. Věci jako subpixelové vykreslování to posílá do propadliště dějin.


Odesílání dat z WiFi Teploměru na jiné servery

září
25
Petr Stehlík
Ve svém představení webového digitálního WiFi Teploměru jsem zdůrazňoval, jak je super úžasné a bezpečné, že teplotní měření zůstávají jen v lokální síti a jsou tam kdykoliv přístupná přes všechny webové prohlížeče připojené do stejné sítě. Už tehdy jsem ale upozornil, že nakonec stejně asi trošku vyměknu a přidám možnost odesílání dat někam ven, pro lidi, kteří nemají chuť programovat si vlastní řešení.



Od 29. května umí WiFi Teploměr volitelně odesílat data na můj server Teploty.info, který je tam ukládá a kreslí z nich grafy a hlídá mezní hodnoty atd. Samozřejmě se to dá ve webové konfiguraci Teploměru jednoduše vypnout/zapnout. Je přednastaven pevný interval 60 sekund, tedy každou minutu.


To je všechno v pohodě, ale včera v noci mi to nedalo a jal jsem se tvořit konfiguraci pro tu odesílací část. Výsledek vidíte na přiložené fotce obrazovky:


Takto nastavený Teploměr odesílá naměřená data ke konkurenci na tmep.cz :-) Samozřejmě je teď možné nastavit odesílání kamkoliv - třeba na ThingSpeak či milion dalších podobných služeb, pokud jim věříte. Svoboda volby je tu!

WiFi Teploměry - novinky letošního léta

září
25
Petr Stehlík
Od března jsem o WiFi Teploměrech nic nového nenapsal, tak dnes, v den podzimní rovnodennosti, se hodí malé ohlédnutí a nějaké novinky k tomu. Možná bude někoho zajímat, že používám už dvanáctou verzi plošného spoje (tedy že už proběhlo dvanáct cyklů zlepšení návrhu a zapojení), a zrovna v těchto dnech chystám verzi třináctou. Stejně tak verze firmware je nyní na hodnotě 11.0 a s přicházejícím podzimním počasím chystám další zajímavé změny a zlepšení.

Teď už ale pár slov o větších hardwarových změnách u WiFi Teploměrů za poslední půlrok:

Přepětí

Letní bouřky ukázaly, že venkovní vedení k teplotním čidlům funguje jako skvělá anténa na indukované přepětí, které poté chce zabít jak čidla, tak i samotný WiFi Teploměr. Proto všechny WiFi Teploměry, co vyjíždějí z mé "manufaktury", už od června obsahují ochranu proti přepětí na vstupu, kam se připojují čidla (teplotní a další).

Tato přepěťová ochrana by měla zachránit WiFi Teploměr i čidla k němu připojená při bouřce - blízký úder blesku by to sice nejspíš neustálo ani tak, ale na indukovaná přepětí v řádu tisíců voltů by to mělo pomoci výrazně. Samozřejmě ještě lepší je vést vedení k čidlům pod zemí nebo v kovových trubkách, které slouží jako Faradayova klec a stíní kabeláž před indukovaným přepětím...

Bezpotenciálový kontakt

DC verze WiFi Teploměru původně měla na termostatickém výstupu napětí zdroje, tedy nejčastěji 9 V. Bylo to kvůli prapůvodnímu PWM. Čas ale ukázal, že mnohem praktičtější je mít bezpotenciálový kontakt, tedy jen spínač, který se dá připojit třeba na místo tlačítka, co zapíná kotel či jakékoliv jiné zařízení s vlastním napájením. Proto DC verze WiFi Teploměru už někdy od jara obsahuje vestavěné maličké relé, jehož spínací kontakty jsou vyvedeny ven (v případě, že je vestavěn termostatický výstup).



Tímto relé a celým WiFi Teploměrem jsem také zachránil ledničku před jistou smrtí. Obecně je díky tomuto relé a jeho bezpotenciálovým kontaktům DC verze WiFi Teploměru správnou náhradou za typický termostat, ať už je v ledničce, nebo třeba v obývacím pokoji, odkud řídí vytápění celého bytu/domu.

Zatím je toto relé opravdu maličké - zvládne spínat jen 0,5 A, ale chystám se vyvinout další verzi plošného spoje, kde ještě víc přeskládám vnitřnosti a tak se mi tam snad vejde i o něco větší, a hlavně výkonnější relé.

16 A = 3500 W

AC verze WiFi Teploměru dostala většího bratříčka, který dokáže při sepnutí termostatického relé přes sebe propustit až 16A proud nebo 3500 W výkonu.


Kromě silnějšího relé je tu ještě jedna zásadní výhoda: svorky terminálu už umožňují připojit nejen fázi (L) a nulák (N), ale i ochranný vodič (E), takže je možné jednoduše připojit kompletní trojlinku od zástrčky, a pak na výstup směrem k zásuvce či přímo spotřebiči.



Ostatní vlastnosti jsou stejné jako u 10A AC verze WiFi Teploměru - tedy stejný 3,5mm konektor pro teplotní čidla, stejná ochrana proti přepětí, stejný firmware. Tato verze ještě není zmíněná na webu www.teploty.info, ale snad brzy bude.

Co s WiFi Teploměrem/termostatem?

Baví mě, s jakými nápady lidé v e-mailech na info@teploty.info přicházejí - co všechno se dá měřit a řídit. Kromě obligátního vytápění vzdálených místností (nejčastěji na chatách a chalupách), a samozřejmě řízení topení v domech (často extrémně komplexních - s akumulačními nádržemi, soláry, kotli na pevná paliva řízenými dle teplot spalin v komíně!), se na jaře vyskytly udírny, přes léto vinné sklípky a bazény a teď na podzim vířivky a sauny. Po loňských tenisových kurtech (teplota povrchu) a rozvážkových chladírenských vozech jsou to myslím pěkné příklady použití. Málem jsem zapomněl na terária a teď nejnověji pak dokonce nápad měřit teplotu regenerace DPF (filtru pevných částic ve výfuku) za jízdy autem :-)

Huawei P10 Lite - zkušenosti

září
22
Petr Stehlík
Rád bych navázal na blogpost o kupování telefonu a popsal zkušenosti s Huawei P10 Lite po téměř pěti měsících střídmého používání..

První a nejdůležitější věc - bezpečnost systému: jeden z dvou hlavních důvodů pro koupi nového telefonu byl, že na můj předchozí telefon, skvěle fungující Nexus 5, výrobce přestal poskytovat bezpečnostní záplaty. Proto jsem koupil co možná nejnovější telefon (v podstatě v prvních týdnech distribuce v Česku), abych měl po co nejdelší dobu plnou podporu od výrobce. Od syna s Huawei P8 Lite jsem věděl, že Huawei se o Lite telefony celkem stará a záplaty pravidelně posílá.

U P10 Lite tomu tak však není a mám-li být upřímný, tak na tento model výrobce doslova sere (promiňte expresivní, leč naprosto přesný termín). Ještě začátkem července jsem měl "úroveň záplat 5. února", tedy pětiměsíční skluz! Pak se Huawei "pochlapil" a poslal první update systému, který posunul "úroveň záplat" o pouhé dva měsíce, tedy na začátek dubna. Je 21. září a já mám v telefonu pořád 5. duben!! Přes pět měsíců už je telefon děravý jak řešeto - aktuální útok přes Bluetooth mi dokáže hacknout přístroj do 10 sekund. Za tohle jsem platil 9 tisíc korun? Dopr!!

Nejhorší je, že jsem se nějak po fórech dopídil k tomu, že Huawei ve skutečnosti potichu nějaké updaty systému ubastlil, dokonce nejnovější má snad datum 24. srpna, ale jaksi je zapomíná pouštět mezi lidi přes OTA update. Navíc začátkem září nepochopitelně zrušil stránky, ze kterých si lidé mohli stahovat firmware a aplikovat nové verze svépomocí. Nyní jsou všichni odkázaní na OTA update, které, jak jsem výše uvedl, má nejméně 3-5 měsíční zpoždění, což je u této "vlajkové lodi nižší střední třídy" trestuhodná nedbalost!

Další věc - rychlost: telefon má sice neuvěřitelných 8 jader (4x víc než můj stolní počítač!), ale občas se očividně zamyslí, než dokreslí nějakou pitomou animaci třeba při spouštění či zavírání aplikace. Musím najít, kde se všechny vypínají. Když mi jednou docházela baterka, tak se mi systém sám nabídl, že animace dočasně vypne, a jak to byl potom svižný telefon!

Periferie: foťák celkem fotí, video natáčí (ale ne ve více FPS, pokud se člověk nespokojí se sedmkrát horším rozlišením nahrávky), displej je rozumný, čtečka otisků prstů spolehlivá a rychlá - celkem to jde.

Senzory: ty jsou docela peklo. Kdo by byl býval čekal nepřesnou GPS v roce 2017? Přitom tato čínská sleduje satelity americké, ruské a navíc i čínské. A stejně dokáže určit pozici s NEpřesností +- 13 metrů, zatímco Nexus 5 na stejném místě pracuje s +- 3 metry. Dost zlé! Asi jsem se měl držet Snapdragonu za každou cenu..

Dále elektronický kompas - ukazuje mírně šejdrem a ještě se u toho celou dobu třese jak ratlík. Kompas u Nexu je mnohem klidnější.

Baterie: to je snad jediný klad na celém přístroji. Při mém mírném používání vydrží telefon běžně 4 dny v provozu bez dobití. Pokud za 4-5 dní poklesne pod 20 % kapacity baterie, nabídne se automatické vypnutí animací a podobných nesmyslů, čímž se zbývající životnost protáhne z necelého dne na další třeba tři dny. A to ještě není ta nejagresivnější optimalizace, kterou systém nabízí - to by pak běžel ještě mnohem déle. Nevím, jestli tu tleskat Androidu 7, anebo Huawei/EMUI. Nevím, kdo z nich k tomuto přispěl více.

Navíc pokud už baterie potřebuje dobít, tak se s originální nabíječkou dobije z nuly na 100 % za necelou hodinu (protože nabíječka valí 9 V a 2 A). To je tak dobré, že jsem mu skoro odpustil chybějící indukční dobíjení.

Jinak mě velmi mrzí, že tento čínský telefon nemá probuzení poklepem na obrazovku. To, co má každý drek z Číny i za blbých 1000 korun, tento telefon postrádá. Nejhorší na tom je, že je to zase jen nějaká "vlastnost" konkrétního modelu dováženého do Česka. Modely pro jiné země tuto vlastnost mají dostupnou (sice někde "v tajném menu", ale mají). Přitom má kreslení gesty na obrazovku pro spuštění aplikací, ale probuzení poklepem či zvednutím ze stolu nejde. Ach jo.

To je tak asi vše, co si aktuálně vybavuju, že mě pálí. Podruhé bych si tento telefon nekoupil ani za 4000 Kč, větší cenu opravdu nemá (pro někoho, komu záleží na výše uvedených věcech). Sáhl bych nejspíš po Xiaomi či nějakém jiném Číňanovi (Lenovo / Motorola).

EDIT: zapomněl jsem na nové Nokie, taky výborné čínské telefony s čistým Androidem. A samozřejmě pak další telefony v edici Android One...

Oblíbené pořady na YouTube, díl VI

Po nějaké době je tu opět sbírka mých ublíbených pořadů na YT. Tentokrát trochu více ze světa technické hudby a suchého humoru.

Techmoan

Stará hifi technika, kamery do auta, různé technické kravinky, skvělý humor.

BigCliveDotCom

Kupuje nejlevnější shit, aby vy byste nemuseli. Sem tam něco shoří, vybuchne, někoho to zabije. Skvělý humor.

8-Bit Guy

Staré 8-bit počítače, opravy, vylepšení, review.

8-bit key

Sesterský kanál od stejného borce, staré levné klávesy, herní hudba.

Markus Fuller

Opravy, úpravy a nějaká hudba ze syntezátorů. Tentokrát z přesně opačné cenové kategorie jako v předchozím případě.

Phishing na klienty mBank

Poslední dny se šíří nová phishingová kampaň, která nabádá uživatele k tomu, aby si přes formulář změnili přihlašovací údaje do mBank.

Příspěvek Phishing na klienty mBank pochází z Spajk.cz

Školení WordPressu nejen pro učitele 28. listopadu 2017 v Praze

září
18
Vlastimil Ott
Pořád školím méně, než bych chtěl, ale tradicí se stává pražské jarní a podzimní školení pod křídly organizace VISK. Takže i tento podzim budu školit WordPress. Primárně je školení určeno učitelům, ale protože zájem o školení bývá v těchto kruzích bohužel omezený, tak jsme nikdy netrpěli přecpanou učebnou. Pokud bych školil klasicky komerčně, cena by...

Bitcoiny – založení peněženky

Bitcoin – založení peněženky Tímto článkem začínám miniseriál věnující se bitcoinu. Postupně si projdeme celým procesem, od teorie, přes založení

Příspěvek Bitcoiny – založení peněženky pochází z Spajk.cz

Avast šíří CCleaner s trojským koněm

Vtipná věc se podařila hackerům, kteří se nabourali do britské firmy Piriform. To je tvůrce populárního softwaru pro čistění a

Příspěvek Avast šíří CCleaner s trojským koněm pochází z Spajk.cz

Letí to

září
17
Vlastimil Ott
Znáte takový ten pocit… …když někde náhodou uvidíte své první auto, se kterým jste strouhali silnice, najeli první stovku (no dobře, celkově první nebyla, ale první na jednom autě), jezdili po celé republice, všichni říkali, „jé, ty máš ale hezké auto“ a někteří vám ho záviděli, zažili jste s ním první pořádnou nehodu a odtah...

Nešťastné důsledky omezování cílené reklamy pro online trh

Nešťastné důsledky omezování cílené reklamy pro online trh tereza.tumova@… Pá, 09/15/2017 - 09:34
Na základě tiskové zprávy IAB Europe

Studie ze září 2017 realizované GfK a IHS Markit o možných dopadech stávající podoby ePrivacy nařízení na trh s online reklamou, spolufinancované European Interactive Digital Advertising Alliance (EDAA) a Interactive Advertising Bureau Europe (IAB Europe)

 

Nemožnost shromažďovat a využívat údaje v online reklamě v sobě skrývá nezamýšlené důsledky, které ohrozí hospodářství EU, nezávislé sdělovací prostředky i dostupnost internetu jako takového. Tato a další zjištění přináší výzkum, který se zabýval pravděpodobnými dopady návrhu Nařízení o soukromí a elektronických komunikacích navrženého v loňském roce Evropskou komisí jako další pokračování nechvalně známého zákona o cookies (směrnice 2002/58 / ES).

Ekonomický přínos digitální reklamy zmizí

Analýza nezávislé finanční výzkumné společnosti IHS Markit ukazuje, že digitální reklama přispívá k ročnímu HDP EU jak přímo, tak díky růstu, který umožňuje evropským podnikům [1]. Nicméně až polovina trhu s digitální reklamou by mohla zmizet, kdyby vstoupila v platnost navrhovaná omezení využívání dat pro cílenou reklamu.

Studie IHS Markit odhaluje, že 66 % ze současných výdajů na digitální reklamu je závislých na behaviorálních datech. Užívání těchto dat pro cílenou reklamu zajišťuje 90 % ročního růstu trhu s digitální reklamou. Cílená online inzerce je o více než 500 % účinnější než reklama necílená a pro inzerenty je klíčová. Nebudou-li moci inzerenti využívat cílenou reklamu, omezí své investice do tohoto segmentu reklamy.

Postupné chudnutí mediálního trhu

Snížení výdajů na digitální reklamu by mělo vážné důsledky pro hospodářství EU stejně jako pro evropská média. Cílená digitální reklama zvyšuje hodnotu reklamních formátů na internetu o 300 %, což je zvlášť významné pro menší vydavatele, kteří by se jinak k příjmům z digitální reklamy nedostali[2]. Z ekonometrické analýzy IHS Markit vyplývá, že dopad omezování cílené reklamy by byl 5x větší pro menší nezávislé vydavatele.

Studie GfK zkoumala postoje k digitální reklamě, sdílení dat a k možnosti platit za obsah mezi 11000 uživateli internetu v 11 zemích EU[3]. Z výzkumu plyne, že pokud by byly zpravodajské weby a aplikace placené, 70 % respondentů by nebylo ochotno zaplatit. Kdyby existovaly zároveň s placenými zpravodajskými weby i neplacené služby, pak by bylo ochotno zaplatit jen 8 % dotázaných. Průměrná částka, kterou jsou Evropané ochotni zaplatit (3 € měsíčně), je mnohem nižší než částka, kterou potřebují zpravodajské stránky pro financování tvorby obsahu a případné náhrady ušlých zisků z reklamy. Přidá-li se k poklesu příjmů  z digitální reklamy neochota uživatelů platit za přístup k obsahu, nejsou vyhlídky vydavatelů optimistické. Shromažďování údajů je zásadní pro příjmy z cílené reklamy, která financuje online žurnalistiku. Omezení této možnosti způsobí, že média nebudou schopna nabídnout kvalitní obsah a služby, což bude mít nezamýšlený dopad na sociální a politické prostředí v Evropě.

Internetové služby, které již nebudou přístupné všem

Studie GfK rovněž odhalila pravděpodobný dopad poklesu výnosů z digitální reklamy na přístupnost k online světu jako takovému. Více než dvě třetiny Evropanů (68 %) nikdy nezaplatily za žádný online obsah nebo služby, které používají. Na otázku, jak by se jejich užívání internetu změnilo, pokud by museli za všechno na internetu platit, 88 % uvedlo, že by výrazně omezili čas, který tráví online. Naproti tomu 69 % respondentů uvedlo, že souhlasí s užitím údajů o prohlížení  (browsing data) pro reklamní účely, pokud si tím zajistí přístup k bezplatnému obsahu. Celkově 83 % uvedlo, že dávají přednost obsahu zdarma s reklamou před placeným obsahem.

Nečekané důsledky omezení cílené reklamy

„Tato zjištění by měla dát poslancům Evropského parlamentu velmi vážné důvody k obavám, až budou projednávat navrhované nařízení o soukromí a elektronických komunikacích,“ řekla Townsend Feehan, generální ředitelka asociace IAB Europe. „Alternativou cílené reklamy založené na datech není jen méně cílená reklama - je to digitální reklamní průmysl poloviční velikosti, než jakou má dnes. To má obrovské důsledky na zkušenost Evropanů s internetem, na hospodářství EU i existenci svobodných a vyvážených médií. Nejnovější výzkumy ukazují, že chuť platit za online obsah jednoduše není mezi občany EU životaschopná. Ignorování této skutečnosti je receptem na hospodářskou, společenskou a politickou katastrofu.“

Klíčové údaje studie s názvem Evropa online: zkušenost založená na reklamě (Europe online: An experience driven by advertising)

  • Dvě třetiny evropských uživatelů internetu nikdy za služby či obsah neplatily.
  • Uživatelé preferují bezplatné služby a obsah (s reklamou či bez ní) před placenými (63 % vs. 40 %).
  • 9 z 10 uživatelů by přestalo využívat bezplatné zpravodajské weby či aplikace bez ohledu na to, zda jsou na nich reklamy nebo nikoliv, pokud by za tyto služby či obsah museli platit.
  • Uživatelé si sice cení svého soukromí v online prostředí, ale ještě důležitější je pro ně hodnota online služeb, které mají k dispozici zdarma.
  • Evropští uživatelé jsou ochotni poskytnout svá data pro účely cílené reklamy, aby dostali přístup k bezplatnému obsahu financovanému z reklamy. Dvě třetiny by byly ochotny poskytnout svá data za tímto účelem, 8 z 10 by preferovalo bezplatné stránky s reklamou před tím, než aby za obsah platili.
  • Uživatelé dávají přednost snadnému přístupu k informacím o tom, co se s jejich údaji děje, před nutností při každé návštěvě stránky dávat souhlas s použitím cookies. Uživatelé zároveň vnímají pozitivněji možnost mít přístup informacím a rozhodovat se případ od případu, než mít standardní výchozí nastavení, které brání sdílení dat (67 % vs. 8 %), přičemž tento postoj je ještě markantnější u uživatelů z Východní Evropy (v ČR 75 %).

 


[1] The Economic Contribution of Digital Advertising in Europe – IHS Markit Study – vydáno 2017.

[2] The Economic Value of Behavioural Targeting in Digital Advertising – IHS Markit Study – vydáno 2017.

[3] Europe Online: An Experience Driven by Advertising – GfK Study – vydáno 2017.

Fotogalerie

Wallpapery z iOS 11

iOS 11 wallpapery iOS 11 vyjde 19. září, ale malou ochutnávku z něj můžete mít již teď. Wallpapery, které budou použité v nové

Příspěvek Wallpapery z iOS 11 pochází z Spajk.cz

Pozvánka na 144. sraz OpenAlt – Praha

září
13
Openalt.org

Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).

Lamy na 144. brněnském srazu

září
12
Openalt.org

Další sraz zpříznivců svobodného přístupu nejen v oblasti SW probhěne jako součást celosvětového Software Freedom Day (počet zapojených států nebude náhoda). Zahájíme stylovou exkurzí mezi lamy, poté se přesuneme k povídání o open tématech a občerstvení na nedalekou Kamenou horku. Zahájení jako obvykle v 18:00 třetí pátek v měsíci tj. 2017-09-15 (lamy již od 17:00 viz. dále)

SPIR připravil online průvodce GDPR: přehledný a srozumitelný popis kroků a změn, kterými firmy musí projít

SPIR připravil online průvodce GDPR: přehledný a srozumitelný popis kroků a změn, kterými firmy musí projít tereza.tumova@… Út, 09/12/2017 - 07:09
Tisková zpráva

Praha 12. září 2017 ­–  Sdružení pro internetový rozvoj (SPIR) připravilo online průvodce problematikou Obecného nařízení o ochraně osobních údajů (GDPR). Reaguje tak na opakované žádosti trhu o poskytnutí srozumitelného a jasného návodu, jak postupovat. S přibližující se účinností GDPR v květnu 2018 řada zvláště menších společností hledá informace, které jim pomohou se zorientovat v tom, co je nezbytné provést. Osobní údaje, interní audit, analýza rizik nebo informace, zda firmy potřebují pověřence pro ochranu osobních údajů, to jsou některá z témat, kterým se online průvodce věnuje.

V posledním půl roce dostáváme od našich členů, ale i od řady dalších společností digitální branže žádosti o informace a konkrétní návod, jak postupovat, aby firmy byly v souladu s GDPR. Protože se této problematice věnujeme několik let, rozhodli jsme se vytvořit online průvodce, který pokrývá nejčastější oblasti nakládání s osobními údaji pokud možno jednoduše a srozumitelně. Jedná se o první verzi, kterou budeme průběžně upravovat, podle toho, jak bude EU, potažmo národní regulátor, vydávat vodítka a komentáře k jednotlivým tématům,” popisuje vznik projektu Kateřina Hrubešová, výkonná ředitelka Sdružení pro internetový rozvoj.

SPIR se tématu ochrany osobních údajů kontinuálně věnuje již více než čtyři roky. GDPR pravidelně zařazuje na program každoroční Internet Advertising Conference (IAC), v květnu letošního roku publikoval infografiku, partnersky se účastnil konference GDPR minus 365 dní, účastní se pracovních setkání s Úřadem pro ochranu osobních údajů, pracovní skupiny k legislativě v oblasti ochrany osobních údajů a v srpnu připravil video, které shrnuje tři základní kroky, které by měla firma učinit, aby se na Nařízení připravila. Ve své činnosti týkající se GDPR bude SPIR nadále pokračovat jak formou aktivní participace na pracovních skupinách a workshopech, tak aktualizací online průvodce a přípravou dalších materiálů

Online průvodce naleznete na adrese http://gdpr.spir.cz.

vpsAdmin v2.9 přináší jednoduchý monitoring VPS

září
11
vpsFree.cz

Vydali jsme nový vpsAdmin, který přináší hlavně možnost jednoduchého monitoringu vašeho VPS.

Nový vpsAdmin v2.9 přináší zejména jednoduchý monitoring VPS. Není to monitorovací systém, který byste mohli využívat pro sledování stavu vlastních služeb, pracuje jen nad údaji, které vpsAdmin sbírá z VPS a nodů. Aktuálně monitoring kontroluje volné místo v datasetech, využívání CPU podle pravidel a počet přenesených dat. Monitoring jen upozorňuje, sám žádnou akci nevykoná.

Nejdůležitější je funkce sledování volného místa ve VPS, neboť už se mnohokrát stalo, že místo nečekaně došlo a na VPS se pak nedalo ani přihlásit. Takto budete o zaplněném disku včas informováni.

V každém e-mailu z monitoringu máte odkaz na tzv. acknowledge, tj. potvrzení události. Pokud událost potvrdíte, berete ji tím na vědomí a vpsAdmin o ní až do vyřešení dále nebude informovat. Lze nastavit i kompletní ignorování události, tzn. efektivně vypnutí monitoringu. Sledované události najdete ve vpsAdminu v menu Status → Monitoring.

Jestli k tomu máte nějaké připomínky, nebo to nefunguje dle očekávání, dejte prosím vědět. Další změny jsou spíše na pozadí, viz changelog.

Jak skrýt fotky v aplikaci Fotky Google

Pokud používáte zálohování fotografií z telefonu na Google účet, určitě na něm občas někomu nějakou fotografii ukážete. Přátelům fotky z večírku, rodině

Příspěvek Jak skrýt fotky v aplikaci Fotky Google pochází z Spajk.cz

Renovace reprobeden

září
07
Josef Jebavý
Po mnoha letech bezproblémového užívaní jsem musel přistoupit k renovaci reprobeden, protože při testování opraveného zesilovače a historické elektrické kytary odešel basový reproduktor ........

Změna hashování existujících hesel

září
05
Michal Spacek

Z internetové nákupní galerie Mall.cz unikla uživatelská data včetně zahashovaných hesel. Někdo zatím neznámým způsobem získal přes 750 tisíc účtů, nahrál je na Ulož.to a odkaz v 27. července zveřejnil na Pastebinu. O incidentu informovala firma prostřednictvím poměrně skvělého příspěvku na blogu a e-mailu zákazníkům, ve kterém jim oznamuje, že Mall hesla resetoval a pokud se chtějí znovu přihlásit, tak si musí nastavit heslo nové. Data na Ulož.to již nejsou dostupná, ale Lupa soubor získala a prozkoumala a zjistila, že obsahuje 750 tisíc e-mailových adres a hesel v čitelné podobě. U části zákazníků byla uvedena i telefonní čísla.

Zatím není známé, jakým způsobem útočník získal čitelná hesla, Mall totiž údajně hesla hashoval:

Od listopadu 2012 jsme bezpečnost hesel zajišťovali hashovací metodou SHA1 + unikátní solí a od října 2016 chráníme přístupové údaje jednou z nejsilnějších hashovacích metod bcrypt. Do roku 2012 byly údaje hashovány metodou MD5, která dnes již není považována za bezpečnou. Většina prolomených hesel pochází právě z doby, kdy byla používána tato metoda. U starších účtů jsme proto změnili heslo a automaticky je převedli na zmiňovanou nejnovější hashovací metodu bcrypt, kterou aktuálně chráníme přístupové údaje všech účtů.

Pomineme-li, že bcrypt je z roku 1999 a že Mall.cz dříve MD5 zatajil, tak z toho nelze vyčíst, jestli hesla hashovaná pomocí MD5 nějak převáděli na bezpečnější bcrypt. V komentářích pod příspěvkem na blogu pak dodávají, že heslo „přehashovali“ po úspěšném přihlášení uživatele.

Jak to lze udělat lépe, aby ani při případném úniku nebyla ohrožena stará slabě hashovaná hesla uživatelů, kteří se dlouho nepřihlásili? Před několika lety jsme to udělali na Slevomatu a kdyby na to dělala návod IKEA, tak by vypadal asi nějak takhle:

SHA-1 → bcrypt nebo Argon2i

Změna hashování

Nejdřív bych měl připomenout, co to vlastně takový na ukládání hesel nevhodný algoritmus je. Jsou to všechny ty MD5, SHA-1, SHA-2, SHA-3 a to v jakékoliv variantě. Se saltem („solí“), nebo bez, „zesílené“ pomocí několika stovek tisíc iterací, nebo jen jedno volání, je to jedno. Na ukládání hesel by se měla použít některá z těchto funkcí: Argon2i, bcrypt, scrypt, nebo PBKDF2. Jsou relativně pomalé, takže pro lamače je časově i finančně náročně hesla cracknout.

Také bych měl zmínit, že tento článek není o reakci na bezpečnostní incident. Pokud už vám jakkoliv uložená hesla unikla (a vy jste si toho všimli), tak je všem uživatelům vyresetujte. Nová hesla pak rovnou ukládejte pomocí „nového“ hashe.

Jestli používáte PHP, tak na uložení použijte funkci password_hash(..., PASSWORD_DEFAULT) a na ověření password_verify(). „Algoritmus“ PASSWORD_DEFAULT aktuálně zajistí použití bcryptu, do budoucna to může být např. Argon2i, nicméně hashe uložené dnes půjdou ověřit i po změně defaultního algoritmu. Ten se totiž určuje jen při vytváření hashů, pro ověření se použije nastavení zapsané do samotného hashe, resp. nastavení je součástí výstupu z password_hash().

Pokud chcete vylepšit hashování hesel již zaregistrovaných uživatelů, tak máte tyto možnosti:

  1. Vymazat hesla všem uživatelům a tím je donutit zadat nové heslo hashované novým způsobem. To není moc dobrý nápad, uživatelé nebudou nadšení, bude je to otravovat a budou se vcelku oprávněně zlobit, proč jste jejich hesla nezabezpečili mnohem dříve. Reset hesel se dá provést v aplikacích pro pár stovek zaměstnanců, ale rozhodně ne v aplikacích, do kterých se může registrovat kdokoliv.
  2. Můžete heslo uživatele „přeuložit“ po úspěšném ověření při přihlašování, v tu chvíli totiž v aplikaci máte heslo k dispozici v čitelné podobě, takže ho můžete pěkně zahashovat bezpečnějším hashem. Z pohledu uživatele je tento způsob mnohem lepší, nicméně databáze bude stále obsahovat slabé hashe hesel uživatelů, kteří se od změny hashování nepřihlásili. A těch může být docela dost, protože například zvolili „permanentní přihlášení“ apod. Podle všeho Mall zvolil právě tento způsob.
  3. Všechny staré hashe najednou „přehashujete“ novým silnějším hashem a při ověřování pak vezmete uživatelské heslo z přihlašovacího formuláře, zahashujete starým hashem a pošlete na ověření novým hashem. Když se ověření povede, tak to trochu vyčistíte: heslo zahashujete pouze novým hashem a uložíte. První krok tohoto způsobu nevyžaduje žádnou akci na straně uživatele, takže ochrání i hesla uživatelů, kteří se dlouho nepřihlásili.
  4. Můžete zkusit cracknout všechna hesla a ta cracknutá pak uložit pomocí nového algoritmu. Kdepak, nedělejte to. S největší pravděpodobností nedokážete obhájit útočení na uživatelská hesla, mohla by se z toho celkem jednoduše stát PR pohroma. Navíc byste potřebovali přesunout hashe z vaší databáze někam mimo a nějakou dobu někde uchovávat cracknutá hesla v čitelné podobě, z čehož se může rychle vyklubat i bezpečnostní problém. Vaší prací je chránit hesla, ne na ně útočit nebo je nechat uniknout. Tohle prostě nedělejte.

Pojďme ten třetí způsob trochu rozebrat na atomy. V příkladech se objeví pár PHP funkcí, ale na principu to nic nemění, ten se dá využít i v jiných jazycích nebo prostředích (třeba takhle se to dělá v Djangu). Kód zde uvedený je spíš ukázkou, jak takovou věc udělat, rozhodně ho nekopírujte, tohle není Stack Overflow.

Úprava databáze

Ujistěte se, že do sloupečku password se vejde nový hash, doporučuje se nastavit VARCHAR(255) nebo podobný typ, který pojme alespoň těch 255 znaků, bude se to hodit i pro případné rozšiřování do budoucna.

Budete potřebovat nový sloupeček, ve kterém bude uložen způsob hashování hesla pro toho konkrétního uživatele. Skript na přehashování (viz dále) může běžet klidně i několik dní, takže v databázi budou staré i nové hashe zároveň a přihlašování s tím musí počítat. Ten nový sloupec pojmenujeme např. type. Nenastavujte NOT NULL, hodnota NULL bude určovat starý hash.

Pokud váš starý hash používá unikátní salt pro každého uživatele (statický salt, stejný pro všechny uživatele, není salt), tak budete ještě potřebovat sloupeček, do kterého tento „starý“ salt uložíte, můžeme mu říkat třeba old_salt.

Tabulku s přihlašovacími údaji není třeba upravovat, typ a případný starý salt si můžete ukládat do jednoho sloupečku společně s hashem a oddělit je třeba dvojtečkou nebo dolarem a při zpracování si je zase „odseknout“. Pro jednoduchost budu používat samostatné sloupečky.

Skript na přehashování

Vlastní přehashování zajistí skript, který spustíte a on najednou „upgraduje“ všechna hesla. Skript vezme třeba tisíc řádků s type IS NULL a pro každý provede tuhle operaci:

  1. Vypočítá nový hash „přehashováním“ starého:
    $newHash = password_hash($row->password, PASSWORD_DEFAULT)
  2. Pokud starý hash používá salt, tak ho uloží do proměnné např. $oldSalt
  3. Provede UPDATE v databázi a uloží $newHash do sloupce password (a případně $oldSalt do sloupce old_salt), type nastaví na 1, ale vše pouze v případě, že typ je NULL, abychom nepřepsali heslo změněné uživatelem v době od vytažení dat z databáze do přehashování

Kód by mohl vypadat nějak takto:

$rows = $db->query('SELECT ... FROM ... WHERE type IS NULL LIMIT 1000');

foreach ($rows as $row) {
    $newHash = password_hash($row->password, PASSWORD_DEFAULT);
    $oldSalt = ...;
    $db->query('UPDATE ... SET password = ?, old_salt = ?, type = 1
        WHERE username = ? AND type IS NULL',
        $newHash,
        $oldSalt,
        $row->username
    );
}

Doporučoval bych takový skript spustit z příkazové řádky. Může totiž běžet docela dlouho, v případě velkých databází klidně i několik dní. Taky může z nějakého důvodu spadnout a vy ho budete muset spustit znovu. To nebude vadit, s tím se počítá, již přehashovaným heslům se skript vyhne.

Před spuštěním skriptu je potřeba upravit přihlašování, aby počítalo i s novým hashem.

Přihlašování

V databázi budeme mít uložen (nový) hash z původního (starého) hashe, takže do funkce na ověření hesel nebudeme posílat heslo zadané uživatelem do formuláře, ale nejdříve musíme znovu spočítat původní (starý) hash a teprve až ten pošleme na ověření. Ověřování ale musí počítat i se zatím nepřevedenými hesly, jinak by se část uživatelů nemohla přihlásit, dokud se jim heslo nepřehashuje.

K rozhodnutí jak uživatele ověřit využijeme obsah sloupce type. Neprovádějte ověření hesla nejdřív pomocí „nového hashe přes starý“ a pak, v případě selhání, pomocí starého. To je zbytečně pomalé, využijte raději ten sloupeček. Vůbec nevadí, když je způsob hashování známý, stejně musíte předpokládat, že nepřítel systém zná.

Podstatná část kódu:

$row = $db->query('SELECT ... FROM ... WHERE username = ?', $_POST['username']);

switch ($row->type) {
    case null:  // starý hash
        $verified = hash_equals($row->password, sha1($row->old_salt . $_POST['password']));
        break;
    case 1:  // nový hash přes starý
        $verified = password_verify(sha1($row->old_salt . $_POST['password']), $row->password);
        break;
    default:
        $verified = false;
        break;
}

Pokud starý hash nepotřebuje salt, tak $row->old_salt samozřejmě vynechejte. Funkce pro bezpečné porovnávání hashů hash_equals() je dostupná od PHP 5.6, pokud máte starší, tak upgradujte. V nejhorším případě ji můžete nahradit za obyčejné porovnání $row->password === sha1(...), to platí i pro ostatní jazyky.

Takovéhle „skládání“ různých hashovacích funkcí není z kryptografického hlediska úplně čisté, běžně se nedoporučuje a není to moc prozkoumáno, ale v tomto případě je mnohem lepší, než používat slabé hashe pro hesla uživatelů, kteří se dlouho nepřihlásí.

Uložení čistého nového hashe

Po úspěšném přihlášení má aplikace k dispozici heslo v čitelné podobě, takže ho můžeme zahashovat „čistým“ novým hashem a této kryptografické nedokonalosti se zbavit. Využijeme opět sloupeček type, aby ověřování hesla vědělo, že tentokrát nemá před voláním password_verify() dělat žádný cviky. V tomto případě určitě nepoužívejte ověřování stylem nejdřív zkusím čistý nový hash, pak nový přes starý a pak starý, šlo by se totiž přihlásit jen hashem nalezeným v nějaké zveřejněné databázi, jak správně podotkl David Grudl.

Připravíme si funkci pro uložení nového hashe, nastavení nového typu (2 pro „čistý“ hash) a případné vynulování starého saltu, už ho nebudeme potřebovat:

function saveNewHash($username, $password)
{
    $db->query('UPDATE ... SET password = ? , old_salt = NULL, type = 2 WHERE username = ?',
        password_hash($password, PASSWORD_DEFAULT),
        $username
    );
}

A po ověření hesla pomocí nového + starého hashe ji zavoláme. Můžeme ji volat také po ověření jen pomocí starého hashe, ničemu to vadit nebude a aspoň nepatrně ulehčíme skriptu na převod všech hashů. Dále přidáme větev case 2 pro ověření pouze pomocí nového hashe:

$row = $db->query('SELECT ... FROM ... WHERE username = ?', $_POST['username']);

switch ($row->type) {
    case null:  // starý hash
        $verified = hash_equals($row->password, sha1($row->old_salt . $_POST['password']));
        if ($verified) {
            saveNewHash($_POST['username'], $_POST['password']);
        }
        break;
    case 1:  // nový hash přes starý
        $verified = password_verify(sha1($row->old_salt . $_POST['password']), $row->password);
        if ($verified) {
            saveNewHash($_POST['username'], $_POST['password']);
        }
        break;
    case 2:  // pouze nový hash
        $verified = password_verify($_POST['password'], $row->password);
        break;
    default:
        $verified = false;
        break;
}

Spuštění skriptu

Náš úžasný skript na přehashování můžeme konečně spustit. Doporučuji ho předtím velmi dobře otestovat a případně si udělat zálohu té správné tabulky, kdyby se něco náhodou nepovedlo. Po doběhnutí skriptu můžete odstranit větev case null z přihlašování, staré hashe by již v databázi neměly být. Dá se to ověřit pomocí SELECT COUNT(*) ... WHERE type IS NULL, výsledkem by měla být nula.

Pokud jste si udělali zálohu, tak ji nezapomeňte bezpečně smazat. To se týká i všech ostatních pravidelných záloh databáze, ty také zlikvidujte nebo z nich staré hashe odstraňte. Zálohy se velmi často ztrácejí a mohou být zdrojem úniku starých slabých hashů.

Co dál

Nezapomeňte při registraci a změně hesla (i zapomenutého) ukládat pouze nový hash a nastavit typ na „pouze nový“ (v našich příkladech to je type = 2). Tedy v podstatě to, co dělá námi vytvořená funkce saveNewHash($username, $password).

Použití silného (a relativně pomalého) hashe samotnému lámání hesel nezabrání, jen útočníkovi bude trvat příliš dlouho, takže ho to snad přestane bavit. Slabá hesla typu password i přesto získá vcelku rychle (protože budou to první, co vyzkouší), takže by bylo fajn mu v crackování nějak zabránit. Občas se doporučuje přimíchat do hesla tzv. pepper („pepř“, jakože sůl a pepř, chápete), tedy další statickou „sůl“ stejnou pro všechny uživatele. Pravděpodobnost, že by útočník získal databázi i pepper z konfigurace, a mohl tak začít crackovat hesla, je o dost menší než že získá jen databázi.

Na pepper zapomeňte, hashovací funkce na jeho použití nejsou navržené a na jeho použití neexistuje žádný rozumný výzkum. Stejného efektu se dá dosáhnout zašifrováním hashů (ne hesel), to je navíc kryptograficky čistá operace. Ale o tom zas někdy příště.

V některém dalším článku si také ukážeme jak transparentně měnit parametry hashovacích funkcí, příp. jak změnit algoritmus z bcryptu na Argon2i. V současnosti je použití bcryptu stále v pořádku, hesla ochrání dostatečně i když použijete defaultní cost (měl by být aspoň 10) a na Argon2i se dá přejít třeba až bude v PHP jako PASSWORD_DEFAULT. Pak to bude stačit udělat způsobem 2), tedy přeuložením po přihlášení, ale nebudeme předbíhat.

Prosím, chraňte hesla svých uživatelů.