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

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

lowl4tency16:08:34

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

lowl4tency16:08:39

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

yashaka16:08:31

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

lowl4tency17:08:08

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

lowl4tency17:08:14

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

lowl4tency17:08:20

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

lowl4tency17:08:37

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

lowl4tency17:08:54

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

lowl4tency17:08:06

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

lowl4tency17:08:22

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

lowl4tency17:08:34

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

lowl4tency17:08:45

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

lowl4tency17:08:02

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

lowl4tency17:08:31

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

lowl4tency17:08:57

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

lowl4tency17:08:11

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

lowl4tency17:08:23

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

lowl4tency17:08:37

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

lowl4tency17:08:46

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

lowl4tency17:08:04

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

lowl4tency17:08:16

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

lowl4tency17:08:49

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

lowl4tency17:08:59

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

lowl4tency17:08:49

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

lowl4tency17:08:10

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

lowl4tency17:08:05

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

lowl4tency17:08:35

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

lowl4tency17:08:14

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

lowl4tency17:08:18

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

lowl4tency17:08:36

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

lowl4tency17:08:55

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

lowl4tency17:08:10

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

lowl4tency17:08:48

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

just.sultanov17:08:59

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

lowl4tency17:08:10

Вполне

lowl4tency17:08:14

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

lowl4tency17:08:28

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

just.sultanov17:08:39

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

lowl4tency17:08:59

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

lowl4tency17:08:10

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

lowl4tency17:08:20

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

lowl4tency17:08:29

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

lowl4tency17:08:40

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

lowl4tency17:08:53

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

lowl4tency17:08:19

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

lowl4tency17:08:31

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

lowl4tency17:08:53

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

lowl4tency17:08:02

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

kronos_vano17:08:12

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

lowl4tency17:08:27

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

lowl4tency17:08:39

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

lowl4tency17:08:33

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

lowl4tency17:08:46

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

lowl4tency17:08:56

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

rmuslimov17:08:21

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

lowl4tency17:08:35

dynamodb сейчас как engine

lowl4tency17:08:36

на проде

lowl4tency17:08:30

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

lowl4tency17:08:43

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

lowl4tency17:08:17

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

rmuslimov17:08:24

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

lowl4tency17:08:28

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

lowl4tency17:08:44

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

lowl4tency17:08:54

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

lowl4tency17:08:02

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

lowl4tency17:08:16

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

andfadeev17:08:21

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

andfadeev17:08:44

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

lowl4tency17:08:44

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

lowl4tency17:08:40

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

rustam.gilaztdinov17:08:53

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

lowl4tency17:08:12

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

lowl4tency17:08:16

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

lowl4tency17:08:34

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

lowl4tency17:08:38

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

lowl4tency17:08:00

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

lowl4tency17:08:14

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

rustam.gilaztdinov17:08:23

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

lowl4tency17:08:26

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

lowl4tency17:08:50

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

lowl4tency17:08:03

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

lowl4tency17:08:14

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

lowl4tency17:08:11

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

lowl4tency17:08:24

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

lowl4tency17:08:38

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

lowl4tency17:08:48

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

lowl4tency17:08:43

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

rustam.gilaztdinov17:08:13

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

lowl4tency17:08:20

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

lowl4tency17: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 кто что может рассказать?