Fork me on GitHub
#clojure-russia
<
2016-01-25
>
artemyarulin08:01:42

http://numergent.com/2016-01/AWS-Lambda-Clojure-and-ClojureScript.html отличная статья по поводу амазоновской лямбды

artemyarulin08:01:27

Сорри за оффтоп, но в понедельник с утра прям поднимает настроение:) https://www.linux.org.ru/news/opensource/12290752#comments >Распиареный недолисп. Хотя жрут охотно. коменты просто ах)

zavyrylin10:01:23

> коменты просто ах) как обычно, знатоки всего-и-вся с ох*ительной высоты своего опыта решили понабрасывать

turtle10:01:23

Не смог не отписаться.

turtle10:01:33

Сегодня митап планируется?

samkrew11:01:57

Всем добрый день! Начинаю осваивать clojure. Подскажите где можно почитать про паттерны принятые в clojure ? Или можно в целом смотреть в сторону lisp ?

niquola11:01:59

Joy of clojure, programming clojure - books. В Readme передовых библиотек

samkrew11:01:20

Спасибо

niquola11:01:26

Если поконкретнее тему скажешь - тебе накидают ссылок ;)

rm11:01:42

и поссорятся о том, что лучше :)

niquola11:01:51

В споре рождается ;)

rm11:01:57

есть еще программный философский доклад simple made easy

rm11:01:34

и другой -- hammock-driven development

andfadeev11:01:50

@samkrew: http://newstar.rinet.ru/~goga/sicp/sicp.pdf это если на твой второй вопрос отвечать

olegakbarov13:01:26

а какие нынче передовые библиотеки? @nicola

delaguardo13:01:42

а кто-нибудь пробовал из clojure с wsdl работать?

artemyarulin13:01:15

@delaguardo: Прям сейчас работаю, парсю хмл руками rage4

artemyarulin13:01:54

хотя неа, у меня cljs

delaguardo13:01:58

я сейчас попробовал сгенерировать java классы через axis2, но дальше что-то не пошло

artemyarulin13:01:00

а чо не пошло? интероп в жаву никак или чего?

delaguardo13:01:45

тольи сгенерилось как-то криво, то еще что, но при старте ругается на гору зависимостей и не импортит классы

artemyarulin13:01:44

напомните в кложуре была функция как такое можно красиво писать: (((resp "data") "campaigns”) “products”)

artemyarulin13:01:29

спасибо

rm13:01:37

да пожалуйста

rm14:01:42

(-> resp "data" "campaigns" "products") тоже должно сработать

rm14:01:13

или нет

rm14:01:18

ща проверю

turtle14:01:38

Нит, наверное.

rm14:01:03

user=> (def resp {:data {:camp {:prod 1}}})
#'user/resp
user=> (get-in resp [:data :camp :prod])
1
user=> (-> resp :data :camp :prod)
1

artemyarulin14:01:08

неа, еслиб ключами были а не строками то да

artemyarulin14:01:27

у меня ключи для мапы = строки

rm14:01:06

ага, со строками не работает

rm15:01:39

Как работает? Как фантом или как nokogiri?

rm15:01:38

второе

rm15:01:49

а жаль

a.espolov15:01:32

нужно js исполнять?

a.espolov15:01:56

в один поток это делаешь?

rm15:01:46

коллега делает на ноде с фантомом. Там целая история и я не могу ее рассказать, не вникал в подробностях. В двух словах, есть входная очередь, есть выходная, есть много воркеров.

potapenko15:01:33

а зачем там воркеры? как я понял что phantom - это паралельный процесс в системе? я как-то создавал скриншоты своих страниц на фантоме, там даже окошко приложения появлялось при запуске каждой страницы....

rm16:01:34

я ж говорю, мопед не мой

rm16:01:45

возможно, фантом запущен действительно один

rm16:01:45

нод с фантомом больше одной. Видимо, на одну виртуалку один фантом и одна хреновина, которая его скриптами кормит

potapenko16:01:29

ок. еще мой опыт - одна нода работала с десятком процессов фантома, в цикле создавала десять окошек и ждала ответа (выполнения js, и кэпчуринг)

a.espolov16:01:22

а я покупал сервер с 24 ядрами

a.espolov16:01:49

и на одно ядро по потоку работающему со своим фантомом

rmuslimov17:01:22

@artemyarulin: а это не будет хорошей идеей работать с xml трансформациями c enlive? или руками все же удобнее?

artemyarulin18:01:25

@rmuslimov: Да я по сути тоже самое и делаю, только на зипперах, типо так вот: https://gist.github.com/artemyarulin/31c5402a2f5fe21865fa

artemyarulin18:01:42

обернуть надо красиво тока еще, все в процессе

a.espolov18:01:51

@asolovyov: Александр, а ты уже копал тему tempids в om.next?

asolovyov18:01:15

@a.espolov: не-а, я только начал с ним ковыряться

asolovyov18:01:21

сижу сча прозреваю

asolovyov18:01:28

тяжело оно идет simple_smile

a.espolov18:01:51

я думал там все прото как грабли remote mutate

a.espolov18:01:03

а оказалось нет(

asolovyov18:01:17

там прям на каждом шагу ужас

asolovyov18:01:35

я думаю что может зря я с этим колупаюсь, надо graphql потыкать?

asolovyov18:01:00

расстраивает, Дэвид реально любитель построить что-то астрономическое

artemyarulin18:01:00

да ну бросьте - там все кристально чисто и понятно. Когда уже понял наконец simple_smile

asolovyov18:01:50

у меня сча вылазит странная ошибка...

a.espolov18:01:50

не там от graphql и falcor только идеи

asolovyov18:01:08

а нет, не очень странная

asolovyov18:01:41

а что от ома давать фигвилу для ре-рендера?

asolovyov18:01:23

я делаю раз за разом (om/add-root! reconciler root/Root (:el @target)), и у меня ом фейлится с дурацкой ошибкой

asolovyov18:01:28

на каждом ре-рендере

artemyarulin18:01:11

хм, не помню чтоб что-либо менял для фигвила, все работало

artemyarulin18:01:21

а чо за ошибка? @asolovyov

artemyarulin18:01:15

а как reconciler задефайнен у тебя?

asolovyov18:01:21

оно там сделает ((:render @state)), и я прямо хз что это

asolovyov18:01:29

(def reconciler
  (om/reconciler
    {:state data/data
     :parser (om/parser {:read data/read :mutate data/mutate})
     :remotes data/remotes
     :send data/send-query}))

artemyarulin18:01:10

data/data это атом?

asolovyov18:01:19

там @state совсем не мой стейт

asolovyov18:01:22

а шось непонятное

asolovyov18:01:28

сча покажу

artemyarulin18:01:29

хм, да вроде все ок - у меня так же

asolovyov18:01:45

{:normalized false, :queue [], :sends-queued false, :queued-sends {}, :queued true, :t 1}

asolovyov18:01:46

вот такое

asolovyov18:01:50

при чем тут еще :render...

artemyarulin18:01:40

хм, хз вообще, вроде все ок выглядит

artemyarulin18:01:45

обнови ом кста

asolovyov18:01:25

он только что вышел новый?

asolovyov19:01:00

у меня последний, я вчера написал в зависимости )

artemyarulin19:01:37

эм, тада не знаю да

asolovyov19:01:40

@artemyarulin: а ты фигвил юзаешь?

artemyarulin19:01:56

ага, всегда и везде

asolovyov19:01:19

а что у тебя в jsload-callback?

artemyarulin19:01:59

эм, ничо

artemyarulin19:01:52

а чо это такое лол?:)

asolovyov19:01:56

ща попробую так же simple_smile

artemyarulin19:01:12

я правда не трогал ом уже с месяц, но вроде ничо такого не делал

asolovyov19:01:10

holy shit, реально без него работает

asolovyov19:01:20

что-то я не могу понять, а как он решает перерендерить?

artemyarulin19:01:08

дак он весь неймспейс перезапускает

artemyarulin19:01:19

т.е. стейт тоже потеряешь

artemyarulin19:01:27

если не перенесешь в другой неймспейс

asolovyov19:01:37

не понял, как это я стейт потеряю?

artemyarulin19:01:14

ну либо defonce или чо там

artemyarulin19:01:34

дак как фигвил работает - файл поменялся, он его слил и сделал ему eval

artemyarulin19:01:57

если у тебя было (def state (atom {})) то он это выполнит еще раз и обнулит твой стейт

andre19:01:47

всем привет. никто не знает сегодня будет онлайн трансляция паролей от базы? simple_smile ну хенгаут встреча simple_smile

asolovyov19:01:47

@artemyarulin: так state у тебя всегда defonce simple_smile

artemyarulin19:01:14

@asolovyov: Ну у кого всегда, у кого нет simple_smile

asolovyov19:01:42

@artemyarulin: а ты кстати честно все ручками так и делаешь, все эти (def x (om/factory X))?

andre19:01:03

@asolovyov: а зачем ты мучаешься с омом? что там такое есть чего нет в реагенте?

andre19:01:04

вы используете датаскрипт и в омнекст появилось что-то подобное?

asolovyov19:01:17

я не юзаю реагент, если что

asolovyov19:01:22

но это не сильно важно

asolovyov19:01:31

в реагенте нет ничего, что меня интересует в оме simple_smile

asolovyov19:01:48

co-located query и вся эта штука

asolovyov19:01:15

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

asolovyov19:01:22

а тех, которых не хватает - за теми оно на сервер ходит

asolovyov19:01:39

единообразно все это работает и красота

andre19:01:57

это было всегда в оме?

asolovyov19:01:31

раньше om был cursor-based штукой

asolovyov19:01:38

а новый совсем другой

andre19:01:42

ок, спс

artemyarulin20:01:49

@asolovyov: Ну ага, вроде не так сложно simple_smile

asolovyov20:01:02

та раздражает

artemyarulin20:01:05

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

artemyarulin20:01:04

там этот factory принимает еще ([class {:keys [validator keyfn] :as opts}], все лень сесть разобраться зачем это вообще

asolovyov20:01:10

ну keyfn понятно зачем

asolovyov20:01:14

а валидатор хз

artemyarulin20:01:51

эм, а напомни зачем этот keyfn?

artemyarulin20:01:02

понимаю что ноги из реакта, но не могу вспомнить

potapenko20:01:25

когда элементы листа рендеришь

potapenko20:01:29

тогда key нужен

potapenko20:01:36

повторяющиеся элементы

potapenko20:01:04

поле key добавлять к элементу

artemyarulin20:01:26

именно элементы листа? любого элемента может, нет?

potapenko20:01:29

в reagent это ^{:key my-id}

potapenko20:01:05

можно и отдельного элемента, в общем что повторяется.

potapenko20:01:27

и нужно понять что перерендерить - какие данные обновились

potapenko20:01:29

я так понимаю

artemyarulin20:01:53

хм, надо почитать, спасибо

artemyarulin20:01:42

ага, спасибо - уже открыл

rmuslimov21:01:18

@artemyarulin: @asolovyov: а как там Om.next объясняет серверу что ему надо дополучить если этого не в браузере? Там надо на бекенд надо datomic ставить? или парсер датомик запросов для своей базы?