Fork me on GitHub
#clojure-russia
<
2016-10-27
>
Maxim06:10:41

А это нормально что lein test рабоает как надо и компилирует clojurescript, в то время как lein trampoline test валится с Could not locate cljsbuild/compiler__init.class or cljsbuild/compiler.clj on classpath? Как вы тесты запускаете на CI? Раньше не встречал таких проблем.

Maxim06:10:32

> Лучше бы спросил "есть ли смысл писать кучу рельсовых приложений вместо кложаскрипта?" ) будет clojurescript 🙂

artemyarulin07:10:24

trampoline вроде же аутдейтед нет? я собираю через lein cljsbuild once [target]

artemyarulin07:10:21

тестирую через https://github.com/bensu/doo lein doo [chrome, firefox, ie, safari, opera, slimer, phantom, node, rhino, or nashorn] [target] once

Maxim07:10:11

Ну heroku и circleci по дефолту trampoline используют

artemyarulin07:10:19

оу, не знал

Maxim07:10:37

@artemyarulin а что для React ипользуешь?

artemyarulin07:10:07

в смысла враппер какой? Дак конечно свой пишу 😄

artemyarulin07:10:18

ранее ом-некст, но чота неосилил, rum очень няшный, простой как тапок. Такой простой что вот решил что тоже так могу 🙂

Maxim07:10:38

смотрю на rum и reagent

artemyarulin07:10:27

меня в rum подкупило что сорсов там на 500 строк и мега супер фича - серверного рендеринга

artemyarulin11:10:32

Кста, вот как понимаю это вполне такая оптимизация же не? Во втором случае не создается доп коллекция

(->> (range 10000) (map inc) (map dec))
vs
(->> (range 10000) (map (comp dec inc)))

artemyarulin11:10:50

ну т.е. это вопрос был вообще 🙂 Попробовал с time замерить одна фигня

edbond11:10:12

а в энтерпрайз масштабе разница будет в миллисекундах!

rkosenko11:10:44

> не создается доп коллекция Какая коллекция? map возвращает же lazy seq, т.о. примерно одна фигня и будет, может быть на один-два вызова функций больше в стеке, чем в варианте с comp, но это детали имплементации, которые могут измениться.

artemyarulin11:10:49

ну первый меп создаст первую коллекцию, второй создаст вторую. Ну да, миллисекунды, а если в процентах то 20% прирост по времени! 🙂

artemyarulin11:10:00

всем спасибо)

savelichalex11:10:44

справедливости ради, во втором варианте еще одна функция каждый раз создается)

nicola11:10:03

Попробуй на трансдьюсерах

edbond11:10:29

это же и есть трансдюсеры

edbond11:10:08

ф-я одна, комп создаст функцию

artemyarulin11:10:50

comp создаст функцию конечно только один раз, не зависимо от кол-во элементов

rkosenko11:10:32

внутри функции, созданной comp, тоже коллекция (список функций), если функций больше 2-х (но это детали реализации), по которой каждый раз проходиться надо...

artemyarulin11:10:34

но кста это не трансдюсер. Я уже так давно их не трогал что забыл чо там как

artemyarulin11:10:05

;; просто threading macro
(->> (range 10) (map (comp dec inc)))
;; трансдюсер уже
(into [] (map (comp dec inc)) (range 10))

savelichalex11:10:17

и чем отличается? (->> (range 10) (map (comp dec inc)) (into []))

artemyarulin11:10:43

неа, у map|filter и других есть 2 разных арити Если 2 параметра то выполняется функция, если только один параметр то возвращается трансдюсер. Если развернуть threading macro то получается (into [] (map (range 10) (comp dec inc)))

edbond11:10:51

@artemyarulin почему не трансдюсер? The following functions produce a transducer when the input collection is omitted: map cat mapcat filter http://clojure.org/reference/transducers

artemyarulin12:10:08

дак (->> в начале)

savelichalex12:10:36

@artemyarulin ну да, ты прав)

edbond12:10:50

точно, :face_with_rolling_eyes:

artemyarulin12:10:55

Чтоб совсем все запутать ((partial map collection) inc) != ((map collection) inc)) 🙂

artemyarulin12:10:29

второе даже не валидно кста, там функцию надо на первое место) ну не суть

artemyarulin12:10:42

а кто кста тут трансдюсеры использует? Я по началу пихал их везде, с кор.асинк они хорошо интегрируются, а счас уже и не помню когда юзал последний раз

savelichalex12:10:33

ну блин сначала просто пишешь так, а потом когда нужно оптимизировать узкие места в другом оказываются))

edbond12:10:15

использовать везде трансдюсеры - это хороший вариант

edbond12:10:31

долой промежуточные коллекции!

savelichalex12:10:24

а кто нибудь придумает кейс когда трансдьюсеры не подойдут?

artemyarulin12:10:53

когда лень писать и юзать лишние сущности и лишние миллисекунды не важны 🙂

savelichalex12:10:51

а, ну такой кейс у меня постоянно😂 думал что нибудь более другое

artemyarulin12:10:17

я не уверен конечно, но мне кажется трансдюсеры копейки будут экономить, хотя хз я мало их юзал, поэтому и спросил тут - мож кто их юзает серьездно

misha12:10:41

мне еще не пригодились