Cesta k chytré domácnosti

9.12.2020 smart home

Přiznám se, že do světa chytré domácnosti jsem vstupoval s velmi naivní představou, a to že vše bude tak nějak samo od sebe a hlavně dohromady fungovat.

Formuláře nad recoiljs

9.6.2020 javascript react funkcionálně async hooks recoil reaktivně

Karel Žoha měl výbornou myšlenku, zkusit postavit formulářovou abstrakci nad novou knihovnou recoiljs. A já se chytil.

Přílivové vody

3.5.2020 yachting

Vypadá to, že se letos na moře kvůli aktuální situaci možná ani nedostanu. Přesto, anebo možná právě proto, jsem si začal do detailu opakovat nezbytnou teorii.

Cesta za lepším UI

18.3.2020 javascript react hooks async

Přiznám se, že se na nadcházející verzi reactu opravdu těším. Přináší totiž řekněme nový pattern pro práci s asynchronními stavy aplikace. Troufám si říct, že je docela elegantní a vcelku jednoduchý. A navíc otevírá dosud nevídané možnosti.

Nepředvídatelnost asynchronního UI

5.3.2020 javascript react hooks async reaktivně

Velmi často opomenutou chybou v případě budování asynchronního UI pomocí hooků je neošetření možné race condition. Ta vznikne jednoduše, přesto může být poměrně obtížné ji později odhalit.

Síla dvou kontextů cypress.io

9.3.2019 javascript testování cypress nodejs

Na webu yachtingu máme netradiční tří krokovou registraci, která sice ihned v prvním kroku vytvoří uživatelský účet, ale ten není aktivní, dokud uživatel neklikne na odkaz v emailu a nevyplní další údaje, například heslo.

Impossible state impossible

8.6.2018 javascript funkcionálně

Today I’ll show you how to easily and safely fix the “function may return undefined” error. That’s right and wanted behavior, but not in case you know that you never get that undefined value. You may experience this especially when using functions like head, last or find.

Přednáška: Testing like you mean it

6.3.2018 testování talk clojure video

Testování na základě vlastností

23.6.2016 clojure testování funkcionálně

Často se setkávám s názorem, že psaní jednotkových testů je nuda neboť manuální vymýšlení a psaní fixtur je zdlouhavé a repetitivní. Dnes se pokusím ukázat a na pár příkladech vysvětlit, jak testuju svůj kód já. Technika se nazývá property based testing a psaní takových testů rozhodně nenudí.

Continuous delivery

7.5.2016 continuous delivery testování circleci selenium docker

Dobře rozjetá webová aplikace bežící pár měsíců na produkci. A žádné testy. Přesně k takovému projektu jsem se dostal a dneska popíšu, jaké změny jsem nutně potřeboval zavést, abych projekt mohl úspěšně a hlavně relativně v klidu rozvíjet.

Automatická kategorizace dokumentů

20.6.2015 clojure machine learning funkcionálně

Představte si, že máte obrovské množství obsahu, který potřebuje roztřídit. Rozhodit do kategorií nebo třeba otegovat. Něco jako dělá Google s vašimi maily, kdy se snaží co nejlépe určit, do jaké kategorie příchozí zpráva patří. Kategorie mohou být například “práce”, “sociální sítě” nebo nejklasičtější příklad “spam”. Jak to dělá? Možných způsobů je samozřejmě několik. Tomu s uživatelskou definicí pravidel se věnovat nebudeme, ale představíme si statistické řešení založené na Bayesově větě.

Purely functional data structures

4.4.2015 javascript funkcionálně

Zajímalo mě, jak lze datové struktury implementovat čistě funkcionálně, tedy při podmínce, že nemám k dispozici nic víc než funkce, closury a primitiva. Otevřel se mi nový svět…

Transducers v JavaScriptu

20.3.2015 javascript clojure funkcionálně

Clojure není jenom o na první pohled divné syntaxi plné kulatých závorek, ale také o převratných myšlenkách. Jednou takovou myšlenkou jsou transducers, “a powerful and composable way to build algorithmic transformations”. Dobře, ale… Cože?

Kolize dvou rotovaných obdélníků

4.1.2015 matematika geometrie algoritmy

Kolize bodu a rotovaného obdélníku

3.1.2015 matematika geometrie algoritmy

V jednom projektu potřebuju zjišťovat, zda bod leží v obdélníku. Můj problém ale trochu zkomplikoval fakt, že obdélník může být rotovaný. Z pohledu člověka brnkačka, z pohledu počítače už to tak jednoduché není.

Starého psa novým kouskům naučíš

11.11.2014 actionscript javascript yield

Dnešní článek je především reakcí na sérii “From AS3 to C#”, ve které Jackson Dunstan postupně srovnává ActionScript 3 se C#. Leč ActionScript nedisponuje tak bohatou zásobou klíčových slov jako udržovaný C#, ze srovnání nevychází vůbec špatně. Tedy až do 17. dílu, kdy došlo na iterátory potažmo generátory. Jackson tvrdí, že zkrátka není co srovnávat, protože více jak osm let starý ActionScript iterátory/generátory neumí…

Generátory v PHP

26.10.2014 php yield funkcionálně

Není pochyb o tom, že se PHP s každou novou verzí posouvá dopředu. Některé vlastnosti si nese z minulosti a proto se jich nemůže tak rychle zbavit. Avšak tam, kde to hlasování a zpětná kompatibilita dovolí, tam se snaží držet krok s vyspělejší konkurencí. Minulý rok vydaná verze 5.5 přinesla mimo jiné jednu důležitou novinku: generátory. Obejdete se bez nich, ale o hodně se připravujete.

node.js: native extension

18.10.2014 javascript c nodejs

Zajímalo mě, co obnáší napsání vlastního addonu (nativního rozšíření) do node.js a jak velký nárůst výkonu to ve výsledku přinese. A protože mám implementovaný stejný sudoku solver jak v JavaScriptu, tak v C, rozhodl jsem se to zjistit.

node.js: zpracování úloh náročných na čas

12.10.2014 javascript nodejs async

Jakkoliv se node.js tváří asynchronně a umožňuje jednoduše psát asynchronní kód, je nutné si uvědomit, že se tak ve většině případů skutečně jenom tváří.