clojure-czech

pepe 2015-09-23T10:52:39.000030Z

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

2015-09-23T11:04:53.000031Z

@pepe: komponenty s lokalnim stavem jen ve vyjimecnych pripadech

pepe 2015-09-23T11:05:09.000032Z

no jasně

2015-09-23T11:06:08.000033Z

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

2015-09-23T11:06:40.000034Z

pouzivas reagent nebo om?

pepe 2015-09-23T11:07:47.000035Z

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

pepe 2015-09-23T11:08:39.000036Z

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

2015-09-23T11:11:13.000037Z

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

pepe 2015-09-23T11:11:14.000038Z

ale ty zdrojáky jsou fakt úlet

pepe 2015-09-23T11:11:47.000039Z

hmm, tak jo

pepe 2015-09-23T11:12:36.000040Z

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

pepe 2015-09-23T11:13:03.000041Z

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

2015-09-23T11:13:26.000042Z

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

2015-09-23T11:13:41.000043Z

nepredelavat vec ktera nejak funguje a vydelava penize 😉

2015-09-23T11:13:45.000044Z

ale chapu tvoje nadseni

pepe 2015-09-23T11:16:41.000046Z

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á

pepe 2015-09-23T11:17:05.000047Z

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

pepe 2015-09-23T11:17:25.000048Z

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

pepe 2015-09-23T11:17:42.000049Z

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

pepe 2015-09-23T11:18:23.000050Z

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

2015-09-23T11:18:33.000051Z

pouzivas garden?

2015-09-23T11:19:40.000052Z

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

2015-09-23T11:23:26.000053Z

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

2015-09-23T11:26:07.000055Z

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:

pepe 2015-09-23T11:34:01.000056Z

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

pepe 2015-09-23T11:34:32.000057Z

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

2015-09-23T11:35:12.000058Z

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

pepe 2015-09-23T11:35:19.000059Z

jj jasně

pepe 2015-09-23T11:35:36.000060Z

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

2015-09-23T11:35:44.000061Z

jo

pepe 2015-09-23T12:02:35.000062Z

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

2015-09-23T12:23:14.000063Z

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

pepe 2015-09-23T12:53:43.000064Z

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

2015-09-23T12:57:01.000065Z

ten cookbook jsem asi nevidel

2015-09-23T12:57:58.000066Z

@pepe kde to je? mrknul bych

2015-09-23T12:58:49.000067Z

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

pepe 2015-09-23T12:59:06.000070Z

jasně, díky za upozornění

2015-09-23T13:00:02.000071Z

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

2015-09-23T13:00:23.000072Z

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

pepe 2015-09-23T13:00:24.000073Z

jasně

pepe 2015-09-23T13:00:52.000074Z

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

2015-09-23T13:01:29.000075Z

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

2015-09-23T13:02:01.000076Z

a vsichni pisatele jednotlivych multimetod by s tim meli pocitat :simple_smile:

pepe 2015-09-23T13:06:00.000077Z

aha, to mě nenapadlo

rarous 2015-09-23T16:03:00.000078Z

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

rarous 2015-09-23T16:03:13.000079Z

páč je to jen vektor vektorů

pepe 2015-09-23T22:06:24.000084Z

Silk si značím 😉 a dobrou