This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-01-06
Channels
- # admin-announcements (266)
- # alda (20)
- # announcements (1)
- # aws (16)
- # beginners (16)
- # boot (288)
- # brevis (7)
- # cljs-dev (40)
- # cljsjs (32)
- # cljsrn (5)
- # clojars (23)
- # clojure (169)
- # clojure-art (2)
- # clojure-czech (3)
- # clojure-finland (1)
- # clojure-italy (3)
- # clojure-norway (1)
- # clojure-russia (88)
- # clojure-sg (3)
- # clojurescript (300)
- # clojurewerkz (8)
- # community-development (14)
- # component (4)
- # core-matrix (1)
- # cursive (9)
- # datavis (26)
- # datomic (44)
- # devcards (3)
- # funcool (1)
- # hoplon (7)
- # jobs (4)
- # ldnclj (11)
- # lein-figwheel (1)
- # nyc (2)
- # off-topic (4)
- # om (149)
- # onyx (1)
- # overtone (1)
- # parinfer (15)
- # proton (3)
- # re-frame (9)
- # reagent (45)
- # yada (2)
У меня сегодня немного странный вопрос, напрямую никак не относящийся к кложуру. Кто в чём делает слайды?
есть такой - https://github.com/tybenz/vimdeck
Спасибо, impress выглядит очень прикольно
с недавних пор я променял vim на spacemacs : (
таже фигня, но старый конфиг никуда не делся)
я обычно https://bitbucket.org/rivanvx/beamer/wiki/Home пользовался, но давно подумываю перебраться в браузер. Мне ещё интересно, чем пользуется @nicola, он вроде весьма часто выступают на всяких конф-ах.
в голом латехе или какие пакетики юзает?
@andrewtropin: Keynote.app
thanks a lot
давайте проголосуем за cljs, поднажмем http://www.slant.co/topics/558/compare/~elm_vs_clojurescript_vs_purescript
привет всем! кто-нибудь знает идиоматический способ state propagation в ClojureScript/Reagent ? То есть когда есть @a и зависящие от его стейта другие атомы @b и @c и при изменении @a, состояние атомов @b и @c апдейтилось автоматом. пока нашел https://github.com/lynaghk/reflex
@mike1452: в Reagent есть reaction
, можно в https://github.com/Day8/re-frame посмотреть, как этим пользоваться
есть другие альтернативы для решения этой задачи, но если пользоваться реагентом, то в нём уже есть своё
подсказали ответ на соседнем канале
(:require [reagent.core :as r] [reagent.ratom :as rr])
(:require-macros [reagent.ratom :refer [reaction]])
(def value1 (r/atom 0)) (def value2 (reaction (+ 3 @value1)))
теперь каждый раз при изменении value1, автоматом будет выполняться и update значения value2
по формуле (+ 3 @value1)
а еще можно сделать автоматический вызов функции вместо апдейта
это делается через некий make-reaction
но он что-то пока не заработал у меня
(rr/make-reaction (fn [] (js/alert "value1 is changed." @value1)) :auto-run true)
кейс несколько абстрактный. пока изучаю инфраструктуру clojurescript/reagent, прежде чем ваять веб-интерфейс своего сервиса. у меня бэкэнд готов и я пытаюсь понять как мне автоматически апдейтить видимые элементы UI в зависимости от событий на бэкэнде. А на самом UI есть зависимые элементы. На эту тему у Соловьева Александра видел прикольную лекцию, где он про "ячейки экселя" рассказывал. Вот хотел найти идиоматический способ в регенте, чтобы javelin не тащить.
@asolovyov: Опять тебя склоняют. Давай, отдувайся :-P
я позавчера выпилил javelin из фронтенда у себя, потому что он тормозит в файрфоксе, и адово тормозит на андроиде
@mike1452: идиоматического способа не знаю, я реагент не юзаю, а для своего стаффа построил руками обëртку типа derived-atom
я думаю, что у тебя должен быть (def value2 (reaction (+ 3 value1)))
, потому что иначе ты туда передаëшь значение value1 - как оно за ним следить начнëт?
@asolovyov: Александр, приветствую. проверил только что. Правильно (def value2 (reaction (+ 3 @value1)))
если убрать @ то пишет вместо значения слово Object и ничего не меняет
@asolovyov: вот лови https://github.com/Day8/re-frame#how-flow-happens-in-reagent
да, он и работает. я его как раз и нашел
у меня всë совсем с другой стороны, плюс я так реагент ни разу и не заюзал, плюс я невнимательно читаю иногда :))
а еще, если не надо апдейтить другой стейт, а нужно просто повесить вызов функции, то можно сделать так
@(rr/make-reaction (fn [] @value1 (.log js/console "change detected.")) :auto-run true)
каждый раз при изменении @value1 будет вызываться функция печати на консоль
я тут кстати уже выступал на эту тему, но @prepor со мной ацки не согласен, что re-frame убивает те минимальные гарантии и ворнинги, что компилятор cljs даëт, и вот недавно пробегало нечто более похожее на то, что я хочу: https://github.com/krisajenkins/petrol
@mike1452 делать с одним атомом (single source of truth, этакий “db"), в reagent’овских функциях возвращать функцию, перед этим сделав “курсор” в нужное место этого атома c помощью reaction, и в возвращаемой функции уже deref’ать его. И не надо никакого re-frame’а. Хендлеры же описывать в отдельном месте, чтобы не загромождать вьюшки, можно всегда с сигнатурой reducing функции, тогда вся логика - это будет по сути свертка по потоку всех событий в системе.
я это называю reduce-архитектура (вместо re-frame архитектуры), но это почти что re-frame без re-frame’a, почти
@ilshad я так и делаю. re-frame не использую. только reagent. вот думаю, вместо эфемерного "эдакий db" может ли сгодиться datascript?
просто атом с мэпом и тд - это работает хорошо. Как делать с datascript - не знаю. Мне кажется, с ним reaction не нужен будет, а значит и reagent не нужен
атом с мапой - это глобальный стейт приложения?
так-то это как бы костыль тоже - приходится делать “курсор” с помощью reaction только потому, что ре-рендеринг срабатывает в контексте deref, а он (deref) - делается на весь атом, а не на часть дерева. Ну, т.е. сам reagent в этом смысле тоже костыль, но удобный достаточно.
они имеют тенденцию разрастаться, и очень быстро приходишь к необходимости их как-то синкать
сегодня слушал доклады Никиты, про его datascript. Зародилась мысля, что датаскрипт по сути та же мапа, с глобальным стейтом, только сильно удобнее. вот подумал попробовать с датаскриптом сделать глобальный стейт. если не получиться, то воспользуюсь твоим советом - использовать глобальную мапу. напишу тут что в итоге получилось.
я согласен если это используется где-нибудь для админки, но если речь идет о важном, продащем фронтенде, то предпочитаю держать один атом.
мне как раз нужно запилить функционал админки
спасибо за пример view'шки. у меня пока опыта в ui ноль, вот сижу разбираюсь.
этот пример - пример того, как вьющка перерендеривается только тогда, когда изменился [:foo :bar], а не весь атом