This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2015-12-07
Channels
- # admin-announcements (54)
- # announcements (1)
- # beginners (145)
- # boot (122)
- # cider (10)
- # cljs-dev (25)
- # cljsrn (20)
- # clojure (173)
- # clojure-art (4)
- # clojure-austria (1)
- # clojure-berlin (3)
- # clojure-germany (1)
- # clojure-nl (2)
- # clojure-russia (117)
- # clojure-switzerland (1)
- # clojure-uk (3)
- # clojurebridge (6)
- # clojurecup (36)
- # clojurescript (218)
- # clojurex (1)
- # core-typed (17)
- # cursive (23)
- # data-science (1)
- # datavis (2)
- # datomic (28)
- # emacs (3)
- # flambo (1)
- # hoplon (28)
- # ldnclj (19)
- # lein-figwheel (2)
- # leiningen (1)
- # luminus (1)
- # off-topic (1)
- # om (158)
- # portland-or (1)
- # re-frame (72)
- # reagent (48)
- # remote-jobs (1)
- # slack-help (7)
With rum you can do the same thing that reagent, without ratom hack and more poweness.
Никита молодец, но я компоненты и миксыны не люблю - привкус ООП - функции наше все ;)
It dependes on how them are done, the rum mixins are not OOP, in fact are fully functional, them are just function compositions..
Снова я с вопросом - не могу понять как добавить к своему проекту ссылку на библиотеку с гитхаба, которой нет в clojars
@wwall: https://github.com/technomancy/leiningen/blob/stable/doc/TUTORIAL.md#checkout-dependencies
Про срач на ом:
I, and probably many here, do not have the fancy problem of data normalization and such.
дальше не читалладно, я прочитал. В общем стандартный срач тех кто не понял и кричит что сложно и тех кто разобрался и оценил идеи. Единственный уместный аргумент про ом-некст это learning curve. Но процитирую оттуда: The problem is NEVER about how to get started quickly.
Там местами справедливо про минусы реагента и рефрейма (комент unknown4242), но в общем имхо пуризм - при должной дисциплине это все не проблема
всем привет, казалось бы простая задача, но что-то я бился бился, в итоге не самое красивое решение придумал
(map #(if (= (:id %) 1) (assoc % :voteStatus 1) %) [{:id 0} {:id 1} {:id 2}])
=> ({:id 0} {:id 1, :voteStatus 1} {:id 2})
есть что-то для поиска в массиве мапов по условию и апдейта? все update-in и assoc-in работают по индексу
ты не с ом-некст играешься? У меня та же проблема просто с тем-же решением
думал вчера сюда написать, спросить тот же самый вопрос
вот тут есть несколько примеров используя reduce например http://grokbase.com/t/gg/clojure/137ysxb6j5/changing-a-value-in-a-vector-of-maps
Может кто знает, есть какая функция стандартная которая делает вот это? А то часто приходиться такое делать:
(if (pred m)
(f m)
m)
еще вариант в мою тему
(assoc-in [{:id 0} {:id 1} {:id 2}]
[(first (first (filter #(= 1 (:id (second %))) (map-indexed vector [{:id 0} {:id 1} {:id 2}])))) :voteStatus]
1)
не знаю даже , есть подозрение что он еще и хуже 
эм, чутка похуже
@artemyarulin: Так сделай функцию apply-if
, которая будет принимать предикат, аппликатор и значение.
дак сделать то не проблема, мож думал есть стандартная какая
поживу пока с ифом наверно
мне кажется, у каждого лиспера должна быть своя либа типа my-name.utils с такими функциями. И сводить с ума других лисперов этим ^_^
тебе не кажется
@rm: @prepor кстати, да тенденция есть и меня избалованного active_support это беспокоит. просто есть куча всего, что пишут все, но в стандарт не попадает - перепрокидывать исключения в каналах - что характерно, имена ф-й из разных либ бывают близки семантично, типа ?? но все равно смотришь например код ptaoussanis приходится заглядывать в его encore, что мне кажется как то сбивает фокус, не?
любопытно, можно ли вычислить общее кратное среди всего этого https://github.com/search?l=Clojure&q=utils&type=Repositories&utf8=%E2%9C%93
razum2um: "избалованного active_support"? бгг. в общем я тоже считаю что вокруг core.async должна появиться хорошо спроектированная библиотека более высокого уровня, core.async это только примитив. но пока нет, так что приходится выживать
приходилось писать хоть что нить типа utils там? обнаруживал, что истинно утиную типизацию для #blank? #present? #try #presence обеспечивает оно и без AS грустно?
вроде монстр, не тянешь например в свой гем, берешь пару файлов, потом больше, потом плюешь и делаешь зависимость
да я чего только не писал для руби ) стд либа там нет считай. никакий канкаренси примитивов, никакого нормального способа структурировать код, определять в нем интерфейсы или что-то подобное, все самому писать
@prepor: ну давайте не отбиваться от темы, я просто думаю, что это может и неправильно и все на патчах std, но удобно же. просто не видел, чтобы в экосистеме гемы делали свой -utils вместо AS
да чего угодно там нет. нормальной библиотеки для фикстур в тестах нет, ваще ничего. язык для написания пагинаторов
razum2um: я не вижу ничего плохого в том что бы делать свой утилс. в том числе во многом копипастой из других утилс
другое дело — сложная задача правильно задизайнить работу с каналами и их продьюсерами, косьюмера. но это уже совсем не уровня utils задача
когда ознакамливаешься например с либой на гитхабе, приходится открывать все -utils и держать в голове больше контекста.
> AS почти каждый, кто юзает рельсу, знает, а твой noname-utils ты будешь знать один ну давайте проверим. rm, razum2um вы знаете ЧТО именно делает AS::Dependencies
и да, prepor рельса с внимательно подобранными гемами запускается в тредовом вебсервере и работает в продакшене довольно давно
> автолоад рубишный не threadsafe, пришлось можно подумать AS до фига тредсейфный (был во всяком случае, не думаю, что что-то особо поменяло. AS::Dependencies нужен ровно для одного — сделать reloadable код, киллерфичу рельсы. для чего потребовалось похачить всю систему загрузки кода в руби. криво, работюще не всегда, но хоть как-то, это такой основной принцип AS вместе со всеми его коллбэками и AS::Concern
именно поэтому AS помрет вместе с рельсой через несколько лет, а экосистема кложи будет развиваться, решая инженерные задачи
ну Матц вроде активно хочет не загнуться. Готов аж акторы в руби притащить (или что угодно еще, лишь бы не писать многопоточность на мьютексах). Наверное, и релоад сделает, когда припечет
> и да, prepor рельса с внимательно подобранными гемами запускается в тредовом вебсервере и работает в продакшене довольно давно как "в продакшене" работает мультитродовая рельса можно вывести из вот этой части вики sidekiq "https://github.com/mperham/sidekiq/wiki/Problems-and-Troubleshooting#no-leak-issues-please"
>в общем я тоже считаю что вокруг core.async должна появиться хорошо спроектированная библиотека более высокого уровня ну вот реактивное программирование и всякие RxJava, Rx.JS это как раз более высокий уровень
ну поэтому я и написал про “подбор” да, экосистема хромая в этом смысле, но еще раз, я тут целиком разделяю твое мнение про concurency, я сейчас о другом
а ну и коли мы тут про руби - язык гавно, что за исчадие ада в котором есть alias|alias_method
> ну вот реактивное программирование и всякие RxJava, Rx.JS это как раз более высокий уровень я скорее про что-то вроде https://github.com/janestreet/async_kernel/blob/master/src/monitor.mli и все что рядом
сходу не понял в чем преимущество
точнее так - сходу не понял
возможность соединять юниты управления и навешивать хандлеры обработки ошибок, которые пробрасываются от чайлда к паренту, например
там и аналог канала имеет ряд полезный фундаментальных хелперов https://github.com/janestreet/async_kernel/blob/master/src/pipe.mli
ну и вообще не плохо бы иметь one time канал как примитив тоже, но это вроде уже есть в мастере core.async
дада, добавили в последнем релизе
как кстати окамл? стоит его посмотреть или это просто хаскел с видом сбоку?
razum2um: https://github.com/prepor/condo/, робит в проде. нет нормального хттп клиента/сервера (!!!), плохо обстоят дела с рендерингом документации / сорцов (при этом сама документация часто на хорошем уровне), нет нормального дебагера, профилятора, нет нормального средства изоляции зависимостей, нет нормального подходящего для всего средства управления проектом, наличие GIL для некоторых проектов (не для меня) может оказаться проблемой.
>нет нормального хттп клиента/сервера ну это чота прям вааще уже, как так
а заюзать из другого языка там никак? интеропы всякие в другие либы там есть?
ну у них там ситуация сложная. сообщество разделено на две части (кстати вот еще забыл написать), одни пишут на async, други на lwt + batteries например. https://github.com/mirage/ocaml-cohttp имеет интерфейсы и туда и туда. но основная их тема это unikernel
т.е. может в их unikernel оно и норм работает. но из-за всего этого там какие-то тупые абстракции получились и хрен даже допилишь нормально если надо
>одни пишут на async, други на lwt + batteries бегло позырил, получается одна просто асинхронщина по типу горутин, а вторя читые треды?
> ну это чота прям вааще уже, как так ну вообще это часто так ) в расте вон тоже нет нормального клиента, что б не блокировался и все такое
раст тоже боль, жду и надеюсь
> бегло позырил, получается одна просто асинхронщина по типу горутин, а вторя читые треды? нет, это про одно и тоже. отложенные вычисления с монадическим интерфейсом
странно конечно, что тут, что в расте. Хттп блин везде же нужен, хоть раст трижды системный язык но хттп емае ведь
грусть-печаль, нет в жизни счастья, пойду дальше пилить ом
> ну в расте вообще про конкаренси ничего нет треды + mio; удивлён, что чуваки из серво не запилили лучше, им же тоже надо, но их видимо прёт в асинстиле handle_a handle_b писать :( http клиент в расте неплохой, но да, блокирующий хттп в окамле есть, наверное не идеальное просто. но вот в го, например, нельзя 422 отправить нормально, и ничо, едят