cljs.test: barevný výstup

27.6.2015

V posledním projektu jsem se rozhodl používat cljs.test a jet TDD, tedy neustálé střídání fází red/green/refactor, hned z úvodu. Červená znamená problém, zelená naopak úspěch. Jenže cljs.test výsledky ve výchozím nastavení vypisuje jednobarevně. Snažil jsem se s tím chvíli pracovat, ale pak mi došla trpělivost a napsal jsem si reportér vlastní. Barevný a méně ukecaný.

Automatická kategorizace dokumentů

20.6.2015

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

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

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?

Funkcionálně v JavaScriptu s Ramdou

21.2.2015

Odhlédnete-li od rozdílných implementací v prohlížečích, prototypové dědičnosti a pár dalších neideálních vlastností, pak zjistíte, že samotný JavaScript, jakožto jazyk mající first-class functions, není tak hrozný, jak se o něm často s oblibou říká. Použijete-li navíc skvělou Ramdu, tak programování v JavaScriptu dodáte nový, funkcionální, sexy look!

Asynchronní operace elegantně

4.2.2015

Nedávno vyšla nová verze Apache Flex Frameworku, která konečně, mimo jiné novinky, přináší možnost, jak naložit s nevzhledným řetězem asynchronních operací elegantně. Přichází totiž s vlastní implementací Promises/A+ specifikace!

Kolize dvou rotovaných obdélníků

4.1.2015

Kolize bodu a rotovaného obdélníku

3.1.2015

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

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

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

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

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áří.