This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2015-12-21
Channels
- # aatree (5)
- # admin-announcements (3)
- # beginners (13)
- # boot (25)
- # cider (4)
- # cljs-dev (2)
- # clojure (107)
- # clojure-austria (2)
- # clojure-japan (12)
- # clojure-russia (128)
- # clojurebridge (2)
- # clojurecup (32)
- # clojurescript (68)
- # css (4)
- # cursive (3)
- # datascript (4)
- # datomic (8)
- # devcards (25)
- # hoplon (19)
- # immutant (2)
- # ldnclj (4)
- # liberator (2)
- # luminus (5)
- # off-topic (184)
- # om (78)
- # onyx (2)
- # portland-or (11)
- # re-frame (27)
- # reagent (11)
- # yada (3)
@artemyarulin: на quasar/pulsar тогда лучше посмотри, чем на акку
хотя тоже страшное прилично, конечно, оно байткод jvm инструментирует, так что при глюках будет очень тяжело
Наверное лучше модель акторов начать изучать с ерланга и его приложений, также освоить OTP.
а потом щупать что-то вроде https://github.com/puniverse/pulsar
дак а сама идея акторов как вообще? пульсар, акка как я понимаю это чисто имплементация?
ерланг ага - но как-то очень долгий путь да
аа ок, я думал там магия какая
а то опыт показывает, что (do (update-tokens data) (helpers/navigate! "/videos")))) вот это вот делается одновременно
всмысле?
update-tokens асинхронный если то да
дак update-tokens асинхронный?
кор.асинк, коллбеки
из асинхронной операции в CLJS сделать синхронную не получиться
ребята, возник вопрос. как превратить (1 2 3 4 5 6) -> ((1 2) (3 4) (5 6))?
partition
partition 4 (range 20))
;;=> ((0 1 2 3) (4 5 6 7) (8 9 10 11) (12 13 14 15) (16 17 18 19))
partition-all чтоб не потерять последний айтем если их будет не четное количество
thanks a lot
=> (def c (chan 10))
=> (go (>! c "hello"))
#object[cljs.core.async.impl.channels.ManyToManyChannel]
=> (go (<! c))
#object[cljs.core.async.impl.channels.ManyToManyChannel]
янифиганепонял. @artemyarulin помогиы, дак все понятно же:) в твоем случае
(go
(<! (update-tokens data)) ;; update-tokens должен возвращать канал. Здесь мы из него читаем - он должен вернуть значение только когда он закончил все делать
(helpers/navigate! "/videos"))))
если по быстрому то может просто на коллбеках?
(update-tokens data #((helpers/navigate! "/videos")))
добавь еще один параметр в update-tokens и дергай его когда закончил все
дак напечаталось
#object[cljs.core.async.impl.channels.ManyToManyChannel]
`
go блок возвращает канал, вот оно и вернуло. Внутри он уже прочитал из канала и благополучно его съел
тебе надо сделать (go (println (<! c))
=> (go (>! c "hello")) (go (println (<! c)))
#object[cljs.core.async.impl.channels.ManyToManyChannel]
#object[cljs.core.async.impl.channels.ManyToManyChannel]
неаэм, а может у тебя не настроен print. Попробуй для верности (go (.log js/console (<! c)))
и посмотри консоль браузера
@artemyarulin: спасибо!
велкам
тож самое
а так https://github.com/technomancy/leiningen/releases/download/2.5.3/leiningen-2.5.3-standalone.zip
тьфу, не понял что у тебя это внутри. Обновить лейн низя?
какие плюсы? чота сходу не вижу по скринам улучшений
ну и да в Редакторе то нет
ИМХО, правильно, что, скажем, стрелочка отображается как один символ, но почему её нельзя удалить как один символ...
@linuccio: я недавно как раз поставил в имакс себе вместо Source Code Pro – в целом, шрифт намного больше нравится. но на лигатуры я решил забить, использую без них – не понравилось. когда они где надо – круто, но чаще только мешают и появляются в самых неожиданных местах.
там есть сборка, где они нормально работают, emacs-for-mac, называется, но это форк => там другие косяки есть.
нормально после пары строк в конфиге, в смысле, а не того хакерского сниппета с регекспами
(when (functionp 'mac-auto-operator-composition-mode)
(setq mac-auto-operator-composition-characters "!\"#$%&'*+,-/:;<=>?@^_`|~.")
(mac-auto-operator-composition-mode))
должно быть тут #C0D2M7JEN, конечно, проститеПривет всем, Вот я агитирую своего начальника посмотреть на кложе. Он хочеть почитать НА РУССКОМ. Чего бы ему рекомендовать? P.s: он джавист
Отдал Программирование на clojure. Практика применения лисп в мире джава ДМК,2013, Правильно ли сделал?
народ, помогите с кор.асинком плз, вот начал я юзать mount вот так
(def my-chan (a/chan (a/buffer 10)))
(defn start-consumer []
(a/thread
(loop []
(when-let [task (a/<!! my-chan)]
(try
(processing-task task)
(catch RuntimeException re
(log/error re)))
(recur)))
))
(defstate consumers
:start (start-consumer)
:stop (a/close! my-chan)
)
а из других место юзаю
(defn put-task! [task]
(a/put! my-chan task))
но во время разарботки часто же приходится делать start stop компонентов и в текущем виде канал закрывается и на этом все, а как правильно сделать то?ну после старта запускается тред с лупом, который слушает канал и обрабатывает таски оттуда, пока его не закроют, стоп соотв. закрывается канал, но для разработки мне нужно чтоб старт открывал новый канал видимо
@andfadeev канал на всегда закрывается, на этом строиться семантика остановки всей системы
ну у меня получится в стейте будет канал и я смогу с ним работать, а потом закрыть, а когда я вызову старт еще раз будет уже новый канал
Shem is a new compiled-to-JS, statically typed, pure-by-default functional programming language. The semantics are based on Haskell but the language evaluates strictly in a similar way to PureScript. The syntax is S-expressions-based, allowing for a full-blown LISP-like macro system. Shem's prelude includes a full-featured, highly-polymorphic collections library backed by ImmutableJS.
я чота не понял про 0.0.1-SNAPSHOT версии: лейн будет напрямую из репо сливать либу или все равно мейтейнеру либы нужно будет релизить в кложарс апдейты?
хм, а можно как-нить заставить лейн мастер сливать сразу? Или там локально из фолдера - пишу либу, хочу протестировать в другом проекте
ага, но он работает тока когда хотяб один релиз был в кложары
а, оу - я ж могу в source-paths указать доп фолдер просто
тьфу, уже так сделано для другой либы, туплю
@a.espolov: сейчас поищу, из головы не могу уже написать, давно с ним дела не имел
слушай, а он же вроде уже всё умеет сам http://immutant.org/documentation/2.1.1/apidoc/immutant.web.html#var-run-dmc
у меня в одном проекте просто в миддлвары руками добавлен ring.middleware.reload, а во втором использовано что-то наподобие сиерровской системы и я её из репла перезапускаю
а как сделать дистрактинг по ключам мапы но с дефолт параметрами если нет? т.е. счас у меня
(defn start-repl [{:keys [app-name base-url root-ns]}]
(let [app-name’ (or app-name “defaultAppName”)
base-url’ (or base-url “localhost:3333”)]
что как-то совсем не красивоайда кложура: let [{:keys [x y] :or {x 45 y 0}} {:y 2}] [y x])
о кстати - вопрос знатокам:
Репл становиться почти бесполезен когда речь идет о go
блоках, заэвалив любой го блок все что можно получить это #object[cljs.core.async.impl.channels.ManyToManyChannel]
. И начинаются извраты с притлн и прочими.
Внимание вопрос: Можно ли написать для сидера функцию которая будет возвращать значения канала? Типа асинхронный эвал такой, с коллбеком