Fork me on GitHub
#clojure-russia
<
2016-08-18
>
maxim01:08:29

@just.sultanov: к paredit привыкнуть надо, зато потом как по маслу

dragoncube06:08:49

@a.espolov: у нас reagent + re-frame, написали свою библиотечку для форм, чтобы уж совсем для каждой формы валидация кастомная не была

andre06:08:14

что такое валидация форм?

andre06:08:52

полей? типа email ?

andre06:08:44

парни у меня вопрос по reagent + re-frame

andre06:08:40

(for [player @players]
            [:div.player
              [:div.player-name (:name player)]])

andre07:08:24

у меня тут нет разименовывания именно в hiccup, как это будет работать?

andre07:08:57

или т.к. у меня в let есть этот атом он перевыполнит всю всю функцию при изменении players и вернет новый hiccup

artemyarulin07:08:35

Скопирую сюда ибо JS (-> CLJS) rules the world! https://clojurians.slack.com/archives/cljsrn/p1471505968001339

seryh09:08:27

выложил на гитхаб проектик с примером использования selenium и phantom https://github.com/seryh/example-selenium-project

seryh09:08:31

недавно интересовался кто то

seryh11:08:46

@comerc ты статью хотел на хабр, https://goo.gl/J6wNRU вот черновик. могу доступ дать, допишешь еще чего

comerc11:08:51

@seryh: круть! давай доступ 🙂

seryh11:08:03

гуглпочта нужна

artemyarulin13:08:40

забыл как называлась либа - у меня есть мапа в CLJS с ключами типа :customer-name, я хочу экспортнуть в JS объект с ключами вида ”customerName”. clj->js первращает их в "customer-name”

niwinz13:08:56

funcool/cuerdas

comerc14:08:00

Ребята, как вам статья by @seryh для Хабра? Принимаются предложения! Я редактировал пару часов, уже замылил взгляд 🙂

andre14:08:19

Трансдьюсеры, редьюсеры, иммутабельность, ленивость и прочая муть ?

seryh14:08:59

естественно не муть, надо же понимать куда статья пойдет )

andre14:08:40

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

kronos_vano14:08:44

блин а я не читал

kronos_vano14:08:53

вы про селениум тесты?

seryh14:08:01

вообще про муть это пасхалка к одной из статей с хабра

seryh14:08:07

с таким заголовком

seryh14:08:31

по кложуре

kronos_vano14:08:16

да, я уже читаю

comerc14:08:43

тогда надо ссылочку добавить, счас сделаю!

comerc14:08:13

пасхалочки не ценят, я проверял 🙂

kronos_vano14:08:30

у меня такое ощущение что статья не дописана

kronos_vano14:08:35

типа вот прочитал введение ооооп

kronos_vano14:08:37

и все 🙂

seryh14:08:01

да, завтра хотел еще дописать

seryh14:08:12

заключение

seryh14:08:42

но по обьему уже прилично, лучше особо не распухать

comerc14:08:24

у меня тоже такое ощущение, хорошо воспринимается разбор кода. например: https://habrahabr.ru/post/247849/

seryh14:08:59

в кложе такой разбор кода будет как перевод с английского на русский )

seryh14:08:05

а тут еще просто тесты

seryh14:08:57

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

comerc14:08:46

почему бы и нет. gosuslugi_reg.clj & gosuslugi_main.clj можно целиком вставить. вот только как про стрелочки доступно рассказать - я не представляю 🙂

comerc14:08:42

там можно прятать блоки текста под якоря

seryh14:08:52

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

yashaka14:08:48

я бы таки добавил небольшой пример с кодом… прям в статью, потому что и так тут “этот ваш лисп” парят, да еще и на гитхаб лесть в коде ковырятся... лучше всего какой то классический - типа код теста на поиск в гугле: гуглим слово selenium - переходим по первой найденой линке и попадаем на сайт http://www.seleniumhq.org/ это хороший пример, потому что там и работа с вейтами и все дела... а еще лучше, таки добавить небольшой скринкаст - по работе с реплом специально сделать ошибку в коде теста с гуглом, и показать как просто в репле выполнить нужные шаги… и исправить ее...

yashaka14:08:20

насчет скобочек - хороший аргумент можно добавить - картинку с презентации Никиты Прокопова “Зачем вам нужна Clojure”… там где показано что в коде на джава на самом деле скобочек больше чем в клоуже….

andre14:08:09

я бы вообще скобочки не упоминал

andre14:08:15

т.к. на них уйдет акцент

yashaka14:08:16

ну или так...

andre14:08:39

опять пойдут комменты типа, ну это у вас пример такой, а вот такой пример там больше

seryh14:08:49

я изначально хотел гифку сделать с примером работы в repl и selenium, но с видео редакторами уже лет 10 не работал

comerc15:08:44

про скобочки упоминание, чтобы рассказать про parinfer

yashaka15:08:45

что то мне кажется что должны быть какие то онлайн ресурсы которые генерят гифку по видео, или что то такое…

yashaka15:08:00

> про скобочки упоминание, чтобы рассказать про parinfer о, там на гитхабе у паринфера прикольная гифка как раз - может можно ее скопипастить…

andre15:08:06

мне кажется должна быть утилита которая на выходе скринкаста генерит гифку

comerc15:08:28

я делал анимированные гифки, счас расскажу как https://github.com/comerc/meteor-autoform-placecomplete/raw/master/demo.gif

andfadeev15:08:16

мне кажется странно что в статье про селениум тесты, описание самих тестов занимает процентов 20 текста, а все остальное общие слова про clojure, которые обычно никто не воспринимает пока не попробует, можно хоть 100 раз сказать как удобно писать используя интерактивный репл, но это все пролетает мимо ушей

seryh15:08:52

тут все сложно, пока не распробуешь не поймешь ( даже гифки и видео не помогут особо

comerc15:08:02

ключевое слово для гугла - screencast. в Ubuntu использовал Kazam, а конвертировал на http://www.online-convert.com/ru

andfadeev15:08:11

у меня иногда такое впечатление что ничего не поможет)

seryh15:08:53

ну сейчас хоть начать проще, не нужно неделю за распальцовками емакса сидеть )

andfadeev15:08:03

либо ктото заставляет выучить, либо чудо

comerc15:08:07

вставил гифку Parinfer-а

comerc15:08:32

я бы предложил ссылку на слова "достаточно за пару вечеров изучить базовые вещи" - https://github.com/swannodette/lt-cljs-tutorial/blob/master/lt-cljs-tutorial.cljs но там про LightTable, а далее по тексту предлагается IDEA 🙂

andfadeev15:08:50

лучше обойтись без cljs

seryh15:08:40

вот норм ссылка на базовые вещи https://learnxinyminutes.com/docs/ru-ru/clojure-ru/

seryh15:08:02

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

comerc15:08:49

блин, а я уже два месяца стартую 🙂

seryh15:08:31

нужно сразу начинать в прод писать, и на месте уже разбираться =Р

just.sultanov15:08:15

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

artemyarulin16:08:51

я помню тоже начинал кложуру с кор.асинка - 2 месяца читал/смотрел Ричи про то как это круто и думал что кой-то мутный мужик - про компутеры почти не говорит, все философия 😄

artemyarulin16:08:29

а счас прям с таким удовольствием пересматриваю его выступления, прям ня rich

comerc16:08:41

мутный-мутный, datomic-то платный 🙂

just.sultanov16:08:11

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

yashaka16:08:38

как то недавно я задавал похожий вопрос - стоит ли боятся что датомик платный? Мне тогда ответили - пока твой “стартап” не выстрелит - тебе хватит бесплатного датомика с головой, а когда выстрелит - тогда уже деньги будут и на платный…

Kira Sotnikov16:08:34

yashaka: не факт что будут

Kira Sotnikov16:08:39

я могу рассказать всю боль

yashaka16:08:31

да да, конечно - было бы интересно послушать!

Kira Sotnikov17:08:08

ну во-первых, оно дорого

Kira Sotnikov17:08:14

во-вторых хрен бы с ним что оно дорого

Kira Sotnikov17:08:20

но там ты покупаешь коннекты

Kira Sotnikov17:08:37

то есть ты заплатил 16 кило грина и получаешь N коннекто

Kira Sotnikov17:08:54

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

Kira Sotnikov17:08:06

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

Kira Sotnikov17:08:22

это первый момент

Kira Sotnikov17:08:34

Второй момент, это HA

Kira Sotnikov17:08:45

У тебя два транзактора, один в стендбае

Kira Sotnikov17:08:02

и какбы эта фича из платной версии да

Kira Sotnikov17:08:31

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

Kira Sotnikov17:08:57

третий момент, лучше брать и собирать образ для транзактора самому

Kira Sotnikov17:08:11

потому что тот что дают парни из когнитеча блекбокс по сути

Kira Sotnikov17:08:23

они на этапе инита инстанса на амазоне грохают ссх

Kira Sotnikov17:08:37

когда что-то идет не так это полный пиздец

Kira Sotnikov17:08:46

логи складывают на S3

Kira Sotnikov17:08:04

а там лаг небольшой и очень часто вообще непонятно что происходит

Kira Sotnikov17:08:16

ну про сломанный файловер я молчу

Kira Sotnikov17:08:49

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

Kira Sotnikov17:08:59

второй фэйловер не произойдет без костылей

Kira Sotnikov17:08:49

честно, я бы выбрал постгрес лучше

Kira Sotnikov17:08:10

это мой опыт полтора года со стороны эксплуатации этого

Kira Sotnikov17:08:05

вот типичный пример у нас сейчас

Kira Sotnikov17:08:35

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

Kira Sotnikov17:08:14

и у нас вот веб приложение и по идее подними 10 20 30 инстансов маленьких и разгрузи нагрузку, да и файловер лучше когда много их

Kira Sotnikov17:08:18

но мы уперлись в коннекты

Kira Sotnikov17:08:36

пик нагрузки хосты ушли, юзер получает вместо аппа ошибку

Kira Sotnikov17:08:55

ну монолитную архитектуру на нем дешево получится держать

Kira Sotnikov17:08:10

микросервисы когда все работают с базой уже сложно и дорого

Kira Sotnikov17:08:48

Со стороны программирования там все лучше чем со стороны эксплуатации

just.sultanov17:08:59

то есть для мелких проектов датомик норм впишется?

Kira Sotnikov17:08:14

Его хватает даже фри

Kira Sotnikov17:08:28

У меня в памяти живет у ботика в телеграме

just.sultanov17:08:39

минусы расписал, а что скажешь про плюсы?

Kira Sotnikov17:08:59

Удобно что тебе пофиг что там на бекенде

Kira Sotnikov17:08:10

На стейджинге у меня живет в памяти например, а на проде на динамодб

Kira Sotnikov17:08:20

И нет никакой разницы

Kira Sotnikov17:08:29

удобно сделаны бекапы инкрементальные

Kira Sotnikov17:08:40

то есть бекапит сам бинарь датомика

Kira Sotnikov17:08:53

ему нужна лишь обертка чтобы передать переменные куда и что бекапить

Kira Sotnikov17:08:19

классно то что данные по дельте времени

Kira Sotnikov17:08:31

можно достать что хошь по сути, но я таким особо не занимался

Kira Sotnikov17:08:53

классно что пацаны из когнитеча в соседнем чате

Kira Sotnikov17:08:02

обычно отвечают на вопросы и помогают

kronos_vano17:08:12

Перебью малясь. Кто-нибудь сталкивался со странными ошибками что не работает refresh из tools namespace

Kira Sotnikov17:08:27

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

Kira Sotnikov17:08:39

но как я уже говорил в будущем это выстреливает

Kira Sotnikov17:08:33

@just.sultanov: у меня очень мало опыта работы с ним в качестве программирования, это все про эксплуатацию.

Kira Sotnikov17:08:46

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

Kira Sotnikov17:08:56

я им заслал cv кстати 😄

rmuslimov17:08:21

а какой был размер бд если не секрет? и что было на уровне дата слоя (postgresql, dynamo db)?

Kira Sotnikov17:08:35

dynamodb сейчас как engine

Kira Sotnikov17:08:36

на проде

Kira Sotnikov17:08:30

du -sh /var/lib/datomic/data/ 9.7G /var/lib/datomic/data/

Kira Sotnikov17:08:43

это со стейджинга, но у нас ежедневно бекап разворачивается

Kira Sotnikov17:08:17

dynamodb классная но у нее есть очень большой минус

rmuslimov17:08:24

да, немаленькая бд

Kira Sotnikov17:08:28

она не умеет реплицироваться по AZ

Kira Sotnikov17:08:44

если помните был оутгейдж

Kira Sotnikov17:08:54

когда нетфликс и еще куча сервисов легли )

Kira Sotnikov17:08:02

мы тоже лежали

Kira Sotnikov17:08:16

то есть одна dynamodb на регион

andfadeev17:08:21

@kronos_vano: убержар не собирал до этого случайно? lein clean как первый вариант

andfadeev17:08:44

а вообще конечно надо ошибку видеть

Kira Sotnikov17:08:44

rmuslimov: я полтора года работаю а датомик еще до меня начали использовать

Kira Sotnikov17:08:40

это, если чо я ищу работку если кому нужны инженеры на кложу и датомик )

rustam.gilaztdinov17:08:53

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

Kira Sotnikov17:08:12

dynamodb достаточно удобная и простоя штука

Kira Sotnikov17:08:16

особенно если с датомиком

Kira Sotnikov17:08:34

там есть капасити на read и write

Kira Sotnikov17:08:38

они за это берут бабло

Kira Sotnikov17:08:00

крутишь ручку и увеличиваешь когда не хватает, но косты растут

Kira Sotnikov17:08:14

кроме вот того фейла я проблем больше не помню

rustam.gilaztdinov17:08:23

Да, про это в курсе, показалось плюсом, на самом деле

Kira Sotnikov17:08:26

с клаудвотч достаточно хорошо интегрировано, куча метрик

Kira Sotnikov17:08:50

Это плюс когда у тебя пики нагрузки не скачут

Kira Sotnikov17:08:03

когда начинается скачка то появляется головняк как этим управлять в динамике

Kira Sotnikov17:08:14

у меня были мысли как это сделать но я уже не успею )

Kira Sotnikov17:08:11

и по хорошему надо думать как реплицировать данные в соседний регион для файловера

Kira Sotnikov17:08:24

я спрашивал в твиторе нетфликс чо они решили но они меня продинамили

Kira Sotnikov17:08:38

а некоторые ответили что не держат на динамодб критикал вещи для бизнеса

Kira Sotnikov17:08:48

что тоже наводит на мысли

Kira Sotnikov17:08:43

это основные вещи что я помню, больше проблем не было с ним, оно просто работает обычно

rustam.gilaztdinov17:08:13

Хмхм, клево, очень интересно, благодарю!

Kira Sotnikov17:08:20

ruipserra: если у тебя есть ресурсы и экспертиза на селф-хостед engine для датомика я бы выбрал его

Kira Sotnikov17:08:39

если у тебя недостаток времени и рабочих рук бери динамо

kronos_vano18:08:29

@andfadeev: помогло явное добавление [org.clojure/tools.namespace "0.3.0-alpha2"]

comerc21:08:02

а зачем использовать двойные ;; когда работают и одинарные?

bernik21:08:04

@comerc: по той же причине, почему в других языках блочный коммент начинают с /** - так принято

comerc22:08:22

а про RethinkDB в Clojure кто что может рассказать?