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
no jasně
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 #C0620C0C8 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
hmm, tak jo
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
pouzivas garden?
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
jj jasně
ono je to superset jen, jeslti jsem to dobře pochopil
jo
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
https://github.com/reagent-project/reagent-cookbook/tree/master/recipes/add-routing
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
jasně
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