Fork me on GitHub
#clojure-czech
<
2016-04-18
>
skardan15:04:25

dival jsem se na zacatek ale dlouho jsem nevydrzel; Stuart miva dlouhe prednasky o malych knihovnach

skardan15:04:35

mluvi tam o necem jinem nez component pripadne tools.namespace?

rarous15:04:56

o jejich kombinaci simple_smile

rarous15:04:15

jak je používat dohromady, aby byla lepší dev experience

darwin16:04:35

component knihovna je fajn, dava to smysl, bohuzel prepsat existujici kod do tohoto modelu je dost pruda, clovek musi propagovat kontext parametr i do tech nejmensich funkci, pokud si chteji sahnout na ten stav

darwin16:04:58

a kdyz ma clovek knihovny, ktere ho nerespektuji, tak je to taky tezky

darwin16:04:32

kdykoliv nekdo udela (def my-state) tak je to game over

rarous16:04:03

což by slušný knihovny dělat neměly

rarous16:04:15

pak je to framework simple_smile

darwin16:04:55

no, je to tezky, protoze (def state) je defaultni vec, ktera kazdeho napadne

darwin16:04:11

bylo by fajn mit moznost “instancovat” cele namespaces na urovni jazyka, takze clovek takto napsany kod porad muze "rozinstancovat"

darwin16:04:00

ja na to narazil v re-frame, bohuzel autori re-frame tomu neprikladaji moc velkou prioritu

rarous16:04:22

to jen potvrzuje to, co si o re-frame myslím simple_smile

darwin16:04:28

ale neni v mych silach ten fork dlouhodobe udrzovat

skardan16:04:16

a clovek by rekl, ze om, datomic & spol uz vsechny nalezite poucil a stav komponent se do promennych proste neuklada

skardan16:04:43

je pravda, ze namapovani namespacu na mutabilni java(scriptove) objekty je dost nestastne

rarous16:04:45

oni mají vlastní představu jak to dělat líp...

skardan16:04:40

podobny problem jsem uz 2x resil; component je pekny, ale nevyhoda je, ze na komponentach pouziva protokoly

skardan16:04:04

a nevyhoda protokolu je, ze nejdou komponovat a jsou vlastne take globalni stav

skardan16:04:38

protokol je definovany tride, ktera je soucasti stavu namespace

skardan16:04:10

(podobny problem je pouziti multimetod v om/nextu)

darwin16:04:07

@skardan: takze jak bys to resil? jako obycejne mapy, ktere maji domluvene klice?

skardan17:04:32

@darwin mapa, ktera nesla jak stav tak middleware, ktery nad ni operoval

skardan17:04:08

ma to velke vyhody (napr pro ladeni, testovani atd)

skardan17:04:18

tak nevyhody (domluvene klice)

pepe17:04:05

@darwin: ten game over jsi myslel pro cokoli co má (def state) nebo pro použití componemt?

darwin17:04:26

pro pouziti component

skardan17:04:55

@darwin vlastne tou mapou, klicemi a funkcemi jsme nahradili namespacy a multimetody/protokoly (udelali je spravne - tj immutable a composable)

darwin17:04:36

@pepe ve vlastni aplikaci to klidne delat muzes (protoze vis, ze ta vec bude singleton), ale jako autor knihovny omezis pouziti v pripadech kdy ta vec singleton neni

darwin17:04:03

napriklad v re-frame by se hodilo mit vice re-frame instanci v jednom javscript contextu

skardan17:04:00

@darwin zkousel jsem to napr na om/next a tam tenhle pristup zapadnul jako ruka do rukavu (lepsi nez multimetody, ktere pouziva v prikladech david nolen)

darwin17:04:16

@skardan: chapu, ze mapama muzes celou vec nahradit - problem pak ale muze byt reloadovatelnost kodu pro interaktvni development, protoze vsechny funkce pak zapeces do map, ktere se stanou stavem tve aplikace

skardan17:04:31

@darwin: pro vyvoj / neprodukcni prostredi tam muzes davat #'var

pepe17:04:57

@darwin: já si to právě pamatuji, jak si to řešil ma GH a i když chápu (zvláště pak v kontextu věci jak je plastic) to nutkání, nějak mi stále nedochází jaké výhody by to pro mě jako tvůrce malých až středních (jednotky KLoc) app mělo.

pepe17:04:11

Na které podle mě reframe míří 😉. A nechci to nijak bagatelizovat, tvůj názor má u mne respekt. Jen víš jak: není zkušenosti bez zkušenosti.

darwin19:04:26

@pepe: jeden relevantni usecase je testovani, treba devcards, kde chces vytvorit spoustu instanci svoji aplikace v ruznych stavech a videt je vsechny naraz

pepe19:04:07

@darwin to je úplná pravda, o tom se ostatně sem tam v #C073DKH9P mluví.

darwin19:04:12

muzes to obejit vytvarenim iframu, ale to neni to prave orechove

pepe19:04:54

jj, díky zase mám o čem přemýšlet 😉

darwin20:04:17

kdyz budes psat knihovnu, tak nech uzivatele vytvaret a predavat jeji stav (kontext), a pak nad timto api, muzes udelat old-school zjednodusene rozhrani, ktere vytvori jeden globalni stav a preda ho do vsech techto funkci

darwin20:04:54

99% lidi puzijou zjednodusene api, a to 1% si muze pouzit to slozitejsi primo, nebo si ho zabalit do component, nebo do cehokoliv jineho

darwin20:04:37

rozhodne nenutit lidi pouzivat component, rika to i Sierra v jedne z jeho prednasek (to by bylo zase zbytecne omezeni)

jbrestan21:04:05

@darwin: To 99/1% mi pripomnelo tenhle clanek (byt z F# sveta): http://tomasp.net/blog/2015/library-layers/index.html