Fork me on GitHub
#clojure-czech
<
2015-09-23
>
pepe10:09:39

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ě.

darwin11:09:53

@pepe: komponenty s lokalnim stavem jen ve vyjimecnych pripadech

pepe11:09:09

no jasně

darwin11:09:08

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

darwin11:09:40

pouzivas reagent nebo om?

pepe11:09:47

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

pepe11:09:39

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

darwin11:09:13

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

pepe11:09:14

ale ty zdrojáky jsou fakt úlet

pepe11:09:47

hmm, tak jo

pepe11:09:36

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ě 😉

pepe11:09:03

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

darwin11:09:26

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

darwin11:09:41

nepredelavat vec ktera nejak funguje a vydelava penize 😉

darwin11:09:45

ale chapu tvoje nadseni

pepe11:09:41

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á

pepe11:09:05

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

pepe11:09:25

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

pepe11:09:42

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

pepe11:09:23

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

darwin11:09:33

pouzivas garden?

darwin11:09:40

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

darwin11:09:26

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

darwin11:09:07

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

pepe11:09:01

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

pepe11:09:32

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

darwin11:09:12

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

pepe11:09:19

jj jasně

pepe11:09:36

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

pepe12:09:35

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

darwin12:09:14

@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"

pepe12:09:43

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

darwin12:09:01

ten cookbook jsem asi nevidel

darwin12:09:58

@pepe kde to je? mrknul bych

darwin12:09:49

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

pepe12:09:06

jasně, díky za upozornění

darwin13:09:02

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

darwin13:09:23

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

pepe13:09:52

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

darwin13:09:29

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

darwin13:09:01

a vsichni pisatele jednotlivych multimetod by s tim meli pocitat simple_smile

pepe13:09:00

aha, to mě nenapadlo

rarous16:09:00

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

rarous16:09:13

páč je to jen vektor vektorů

pepe22:09:24

Silk si značím 😉 a dobrou