clojure-czech 2015-09-23

Ahoj, tak jsem to předělal na app-state a mám dvě věci co mě potrápili: - circular dependency (končí to stack overflow a nějak to i googlu trvalo, než mi řekl, že to může být tím). To je prostě to, že druhý týden ještě stále nechápu všechno z clojure žaludku. - componenty s lokálním i globálním stavem. Co v kterém let a podobně.

@pepe: komponenty s lokalnim stavem jen ve vyjimecnych pripadech

co se tyka circular dependencies, tak to mas pravdu, ze by je mel compiler detekovat a hlasit nejak srozumitelne

pouzivas reagent nebo om?

reagent. Zrovna čtu #reagent a souhlasím co se tam píše reagent vs om 😉

ještě k těm lokálním stavům. Já je používám na věci, které nejsou applikaci důležité. Když si zvětšíš velikost písma pro jeden řez a tak

podle me bys mel vsechno toto drzet v globalnim app-state, myslim, ze lokani state je opravdu nevyhnutelny pro veci ktere souviseji s DOMem nebo optimalizaci na rychlost

ale ty zdrojáky jsou fakt úlet

ale to až u dalšího kola refaktoringu. Teď musím zase frontfacing věci posunout, jinak mě společník v písmolijně přestane mít rád úplně 😉

už na to, že to začnu předělávat celé koukal trochu přes prsty

no lepsi je mozna to nejprve zkusit na nejakem mensim novem projektu simple_smile

nepredelavat vec ktera nejak funguje a vydelava penize 😉

ale chapu tvoje nadseni

hele to ne já měl v middlemanu nasekanej prototyp a měl k němu začít dělat backend. A zatím jsme v betě. Kupovat se ještě nedá

zase jako nechci se nějak vytahovat ale nějaký situace tohodle typu jsem už řešil viď 😉

jen že on měl z prototypu pocit, že je to hotové

a jak se to celé zjednodušilo je neuvěřitelný

taky jedna z věcí je, že mě děsně baví psát html, css v clj

super na clojure je, ze te vede k tomu naucit se jendnu standardni knihovnu a vsechno ostatni pokud moznost stavet z kousku dat aplikovanim funkci, ktere uz znas

to je nesmirne silne, kdykoliv budes psat nejaky slozitejsi subsystem, ktery je rekurzivni, zkus se zamyslet, jestli se to neda popsat pomoci EDN, ktery ten subsystem bude konzumovat, timto instantne vytvoris bohate api k tomu subsystemu, protoze uzivatele mohou pouzit cokoliv z clojure na sestrojeni vstupu - generatory html a css jsou dobre priklady

extremnim prikladem jsou deep-walking makra jako je core.async, v clojure muzes psat subsystemy, ktere konzumuji kod jako data, protoze kod je taky EDN simple_smile

EDN jsem potkal a líbí se mi koncept projdu lépe. A používám garden, přesně

nějak jsem blbnul s tím datomic a tam je to všechno o EDN. Díky za vypíchnutí

myslel jsem s-expressions, proste clojuri “json”, edn je trochu neco vic

ono je to superset jen, jeslti jsem to dobře pochopil

další věc co mě potěšila jsou multimetods

@pepe hm, s multi-methods taky opatrne, mohou mit performance konsekvence, vetsinou chces ve svem kodu normalni staticky dispatch, multimethods se hodi, pokud predpokladas, ze tvuj kod bude nekdo cizi "overridovat"

hmm, já opsal to dispatchování z reagent cookbooku

ten cookbook jsem asi nevidel

@pepe kde to je? mrknul bych

jako v kodu, ktery je volan jen jednou nebo malo casto je to jedno, ale bal bych se to pouzivat nejak masivne ve vnitrnich smyckach

jasně, díky za upozornění

tady to dava smysl, muzes mit nekolik namespaces, kazde bude definovat svoji rodinu routes, a pak se v korenovem namsepaces rozhodnes ktere z nich requirovat

timto nemusis mit vsechny routes na jednom miste v jedne metode ktera dela staticky dispatch

to je zajímavé, mě to přišlo jako dobrý "pattern matching" nad tím app-state 😉

vyhoda multimetod je, ze jsou “otevrene”, kdokoliv muze prijit a pridat nove multimethody

a vsichni pisatele jednotlivych multimetod by s tim meli pocitat simple_smile

aha, to mě nenapadlo

já mám přes multimetody udělaný route handlery a routy definovaný v [silk](https://github.com/DomKM/silk). Každej modul si tak drží handlery u sebe a routy se zkomponují při vytváření systému

páč je to jen vektor vektorů

Silk si značím 😉 a dobrou