V Clojure symboly a kolekce podporují tzv. metadata. Slouží k anotování dat a důležité je, že nejsou součástí hodnoty daného objektu. Občas by se mi to hodilo i ve světě javascriptu.
Nepředvídatelnost asynchronního UI
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.
Cesta za lepším UI
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.
Přílivové vody
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.
Formuláře nad recoiljs
Karel Žoha měl výbornou myšlenku, zkusit postavit formulářovou abstrakci nad novou knihovnou recoiljs. A já se chytil.
Cesta k chytré domácnosti
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.
Síla dvou kontextů cypress.io
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.
Přednáška: Testing like you mean it
Záznam mojí přednášky z 6. Blueberry MeetUpu nesoucího se v duchu funkcionálna. Mimo mě na něm vystoupil Tonda Hackenberg s Kouzlíme s Elixírem aneb úvod do funcionálních čar a Pavel Kepka se Začínáme s Reason.
Impossible state impossible
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
,
Continuous delivery
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.
Testování na základě vlastností
Č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í.
Kolize bodu a rotovaného obdélníku
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í.
Kolize dvou rotovaných obdélníků
V [předchozím článku jsem se věnoval vyšetřování kolize bodu a rotovaného obdélníku]({% post_url 2015-01-03-kolize-bodu-a-rotovaneho-obdelniku %}). Nyní popíšu způsob, jak testovat kolizi dvou rotovaných obdélníků, respektive dvou jakýchkoliv konvexních polygonů. Hodit se to může při programování her nebo třeba pro multiselekci objektů na ploše.
Transducers v JavaScriptu
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?
Purely functional data structures
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...
Automatická kategorizace dokumentů
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ě.
node.js: zpracování úloh náročných na čas
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áří.
node.js: native extension
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.
Generátory v PHP
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.
Starého psa novým kouskům naučíš
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í...