Fork me on GitHub
#clojure-russia
<
2016-01-28
>
andrewboltachev10:01:28

Всем привет. Сделал некое подобие роутинга через set-query! для Om Next https://github.com/andrewboltachev/omnext-routing-one

andrewboltachev10:01:28

Может ли кто-то подсказать, для Clojure в целом, чем хороши defprotocol и подобные конструкции? Почему не просто структуры данных (и функции) для решения этих же задач?

rm10:01:14

мультиметоды тормозные потому что

andrewboltachev10:01:15

а. мультиметоды я имел ввиду тоже

andrewboltachev10:01:23

значит, вопрос производительности

andrewboltachev10:01:53

я им. ввиду когда мы создаём некоторое def<something> это недвижимость

rm10:01:21

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

andrewboltachev10:01:06

мультиметод это хэшмап

andrewboltachev10:01:28

{:key1 (fn [] ) :key2 (fn [] ) ...}

artemyarulin13:01:54

никто не дергал кложуру из жавы?

artemyarulin13:01:00

подводные камни, рекомендации?

turtle13:01:17

Я дёргал. Всё работоало.

turtle13:01:30

Надо только соблюдать дебильные именования.

artemyarulin14:01:25

ок, почитаю. Вопрос - если мы наберем по команде жавистов, кложуристов, скалистов и одного хипстера с фреге, в итоге же мы все будем jar генерить в конце и сможем отличненько взаимодейстовать вместе? Или не взлетит?

vadim-tt14:01:33

jar-ки и байткод - это хорошо, но если нужен интероп всего этого совместного добра на уровне кода, то будет куча проблем

artemyarulin14:01:56

каких например?

artemyarulin14:01:14

я использую интероп в жаву и вроде ничо

artemyarulin14:01:23

жавистом будет тяжело сделать тоже самое в скалу?

vadim-tt14:01:37

например в каждом случае реализация функции будет своя для java, scala, frege, clojure - как следствие надо будет это все туда-обратно постоянно конвертировать

artemyarulin14:01:38

а хм, коллбек т.е. не прокинишь просто так?

vadim-tt14:01:07

неа, на уровне байткода - это будут разные классы, грубо говоря

artemyarulin14:01:19

ну да, на простых типах тип строк и интов еще может пойдет, на сложных штуках уже не ах

vadim-tt14:01:20

и у них будут разные типы

vadim-tt14:01:39

плюс проблемы будут там где планируется переход из clojure -> scala

vadim-tt14:01:56

ввиду строгой типизации и вообще акценте scala на типах

vadim-tt14:01:10

то же касается frege

vadim-tt14:01:43

они претендуют на хардкорный typesafe, а clojure все это будет ломать

vadim-tt14:01:05

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

vadim-tt14:01:22

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

artemyarulin14:01:22

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

vadim-tt14:01:08

да - это вполне неплохой вариант) и постепенно джавистов переводить на clojure)

artemyarulin14:01:13

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

kronos_vano14:01:42

А кто жалуется на чем пишет?

vadim-tt14:01:29

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

artemyarulin14:01:34

а хз, но у нас в почете гоу и нода (ужасно правда?:))

artemyarulin14:01:23

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

kronos_vano14:01:36

Гоу много где в почете. Deal with it

artemyarulin14:01:18

с этим го-говнищем я ничего общего иметь не хочу. Хотя в почете ага

andfadeev14:01:41

а в чем именно суть жалобы?)

vadim-tt14:01:10

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

vadim-tt14:01:21

суть жалобы проста: " я хочу нанять 5 джавистов, их на рынке много, как они смогут приносить мне прибыль, если они не знают clojure"?

artemyarulin14:01:06

угу, емко описал

andfadeev14:01:49

а как ты вообще изначально пробил писать на кложуре?

artemyarulin14:01:50

мол что будет если я завтра умру/улечу в космос/вернусь на делфи, кто будет писать и поддерживать кложуру

artemyarulin14:01:01

хотя у нас уже 3 человека так то кто ее знает simple_smile

artemyarulin14:01:27

вобщем мож кто хочет в финку? У нас почти кложура в проде simple_smile

samkrew14:01:39

Это проблема для всех нишевых языков. Огромный плюс кложуры - что в ней легко разобраться. Это не С++

artemyarulin14:01:39

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

kronos_vano14:01:39

Мне кложа показалась сложнее того же Гоу. Но уж точно не плюсы. И не раст

artemyarulin14:01:13

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

samkrew14:01:51

Раст как-то совсем стремно в продакш пускать

vadim-tt14:01:33

с растом однозначно сложнее) потому как это уже смесь хаскеля с плюсами да и другая платформа

vadim-tt14:01:52

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

andfadeev14:01:12

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

artemyarulin14:01:13

у нас в конторе жвм нету пока, так что так же сложно будет на самом деле simple_smile

andfadeev14:01:38

я вообще думал что ты только фронт пилишь

artemyarulin14:01:51

фулл-стек дев все дела

vadim-tt14:01:07

однако весь арсенал, который существует для jvm поможет и в случае с clojure

samkrew14:01:16

@vadim-tt: Не знаю. Я из node и c++ пришел. Вот осваиваю потихоньку clojure и clojurescript.

samkrew14:01:50

Скажите, а вообще по производительности как оно ? Большой оверхид идет на кложуру ?

andfadeev14:01:51

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

vadim-tt14:01:19

по производительности все упирается в то, какого рода у тебя задача cpu-bound/io-bound

vadim-tt14:01:37

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

vadim-tt14:01:14

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

vadim-tt14:01:50

есть опыт написания http сервиса на netty чисто на java и java + clojure

artemyarulin14:01:07

оо, расскажи чо как?

artemyarulin14:01:14

я счас тоже самое делаю

artemyarulin14:01:29

и думаю потом переписать на чистую жаву чтоб побыстрей

vadim-tt14:01:48

там оверхед был порядка: чистая джава 100к/сек, джава+кложура 70к/сек, в синтетическом примере с отдачей строчки и простеньким роутингом

artemyarulin14:01:48

ты юзал обертки над netty? Типа aleph?

vadim-tt14:01:53

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

vadim-tt14:01:21

хинты типов, рекорды вместо мап и всякие прочие тонкости

artemyarulin14:01:23

много времени заняло? Мне алеф не нравится, свои у него асинхронные абстракции

vadim-tt14:01:17

ну простенькую обертку можно достаточно быстро написать под свои нужды

vadim-tt14:01:58

если пытаться сделать универсальный инструмент под что угодно, то наблюдается такая картина, что простенькая фича отъедает за раз по 10k qps

vadim-tt14:01:46

и времени уже кучу отнимает) в итоге получается своя поделка с уровнем перфоманса +/- аналогичных универсальных решений

artemyarulin14:01:32

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

vadim-tt14:01:35

нам требовался сервак под конкретную highload задачу и netty показала себя шикарно

artemyarulin14:01:51

дада, нетти крут

vadim-tt14:01:02

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

artemyarulin14:01:59

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

ponimas14:01:09

> вобщем мож кто хочет в финку? это серьёзное предложение?

vadim-tt14:01:44

я враппер подзабросил) коллега мой пишет сейчас, но последнее время тоже не очень активно https://github.com/ipogudin/meerkat

artemyarulin15:01:32

@ponimas: О да, нам жутко нужны девелоперы http://unity3d.com/jobs

artemyarulin15:01:38

релокейт - ок

Kira Sotnikov15:01:15

Запощю в твитор?

artemyarulin15:01:23

@vadim-tt: Воо, спасибо за враппер

Kira Sotnikov15:01:54

или у вас там нет кложи?

artemyarulin15:01:12

@lowl4tency: Дак буду тока рад, тока вот кложуры в проде у нас пока нет, на стейджнинг вот тока сегодня залил)

Kira Sotnikov15:01:29

напишу что кложа в перспективе )

artemyarulin15:01:45

но если к нам придет кложура дев - я почти уверен на 100% ко мне в команду simple_smile

vadim-tt15:01:47

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

vadim-tt15:01:10

случайно нашли) девопс-индус наваял и прицепил по крону

Kira Sotnikov15:01:11

а про финку еще кто писал?

Kira Sotnikov15:01:30

vadim-tt: это не я

Kira Sotnikov15:01:26

artemyarulin: ну я так понимаю у вас ремоута нет

Kira Sotnikov15:01:44

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

ponimas15:01:34

@artemyarulin: чота там го во все поля

artemyarulin15:01:54

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

artemyarulin15:01:30

@ponimas: Угу, в проде счас 60/40 нода и гоу

artemyarulin15:01:50

если все ок - залью завтра кложуру в прод, будет хоть процентик ей simple_smile

ponimas15:01:22

ну не го/нода - нет смысла даже пытаться апплаиться, нет ни опыта, ни желания )

Kira Sotnikov15:01:46

artemyarulin: мне честно некогда смотреть, страна какая?)

artemyarulin15:01:25

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

artemyarulin15:01:43

@lowl4tency: дак финка, хотя офисов полно у нас

Kira Sotnikov15:01:04

я вот на ваши налоги насмотрелся

Kira Sotnikov15:01:14

и чото мне уже не хочется мигррировать

andfadeev15:01:29

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

artemyarulin15:01:05

дак давай к нам тоже!:) Мне бы пяток девов с кложурой, мы бы тут горы свернули!:)

artemyarulin15:01:49

биг скейл, все дела

Kira Sotnikov15:01:44

artemyarulin: свисни когда понадобится все это деплоить )

artemyarulin15:01:31

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

kronos_vano15:01:05

а у вас aws?

artemyarulin15:01:58

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

Kira Sotnikov15:01:14

artemyarulin: я уже почти год деплою кложу на прод в авс

Kira Sotnikov15:01:32

100к евро в год и я готов ехать в финку )

andfadeev15:01:34

100к после вычетов?)

Kira Sotnikov15:01:38

там после налогов дай бог 60 останется

Kira Sotnikov15:01:49

andfadeev: мне нравится твой оптимизм

dottedmag15:01:08

@andfadeev: За пределами xUSSR "нетто"-зарплат почти не бывает.

andfadeev15:01:37

ну у нас чат то russia

dottedmag15:01:48

Давайте переименуемся в -russian.

artemyarulin15:01:23

за 100к евро в год я тоже буду готов ехать ы simple_smile

kronos_vano15:01:39

@artemyarulin: С aws я рекомендую ecs + empire. Докер шмокер терраформ

Kira Sotnikov15:01:53

я рекомендую CodeDeploy

Kira Sotnikov15:01:02

Докер рано как по мне

artemyarulin15:01:13

у нас есть команда девопсов, моя задача сделать докер контейнер, остальное не колышет simple_smile

dottedmag15:01:31

@kronos_vano: Какая штука вкусная, судя по описанию. Спасибо.

Kira Sotnikov15:01:37

если у вас так, то у вас не девопс

dottedmag15:01:18

Потому что тогда не девопс, а админопс

Kira Sotnikov15:01:02

ну девопс это не люди

Kira Sotnikov15:01:05

во-первых

Kira Sotnikov15:01:16

девопс инженер это типа аджайл программиста )

Kira Sotnikov15:01:47

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

kronos_vano15:01:59

Я всегда думал что девопс это легко деплоить, скейлить и когда ничо не разваливается. А каким способом это достигается дело десятое

kronos_vano15:01:07

@dottedmag: сам в шоке

Kira Sotnikov15:01:34

рекомендую посмотреть инжиниринг кальча от спотифая

artemyarulin15:01:45

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

Kira Sotnikov15:01:53

вот я тперь зато знаю с какой темой выступать на митапе

Kira Sotnikov15:01:05

artemyarulin: да я не говорю что плохо

dottedmag15:01:18

@artemyarulin: Плохо не контейнеры, а наличие выделенных запускателей.

Kira Sotnikov15:01:40

Как точно софрмулировал

artemyarulin15:01:03

всмысле запускателей?

Kira Sotnikov15:01:14

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

artemyarulin15:01:50

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

kronos_vano15:01:51

а если я не хочу чтобы коммит в мастер ушел на сервер? не коммитить?)

artemyarulin15:01:03

а ты пиши сразу без ошибок

kronos_vano15:01:12

Как я сам не догадался!

artemyarulin15:01:20

рад помочь simple_smile

artemyarulin15:01:28

feature flags обычно

Kira Sotnikov15:01:44

kronos_vano: в мастер вливается ветка devel

Kira Sotnikov15:01:59

от девела все бранчуются и создают фиче-бранчи

Kira Sotnikov15:01:07

девел деплоится автоматом на дев енв

Kira Sotnikov15:01:27

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

kronos_vano15:01:45

ну это чем то напоминает git-flow

kronos_vano15:01:08

разве что у вас нет релизов

kronos_vano15:01:40

Но я предпочитаю явно деплоить и сейчас это происходит когда я делаю git push prod master

Kira Sotnikov15:01:10

ну у нас тоже явно )

Kira Sotnikov15:01:19

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

Kira Sotnikov15:01:26

плюс во флоудок летят нотификашки

Kira Sotnikov15:01:32

и прикручены метрики в датадог

Kira Sotnikov15:01:43

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

Kira Sotnikov15:01:53

ни одного факапа не было с деплоймент частью

Kira Sotnikov15:01:58

а я не отвлекаюсь от инфраструктуры

rm18:01:33

неплохо. Довольно много используют на работе, это же отлично

andre19:01:29

я извиняюсь , что такое error messages , которые всех разочаровывают?

andre20:01:51

и еще у меня вопросик, какой принцип работы cljs repl ?

rm20:01:36

сообщения об ошибках aka трейсы на два экрана с непонятной фигней

rm20:01:49

в 1.7 немножко исправили, но еще есть, куда стремиться

andre20:01:58

так и подумал, спс

potapenko20:01:15

по поводу принципа работы - нужно глядеть исходники, js-eval точно в конце simple_smile

andre20:01:00

ну в общих словах

andre20:01:08

если сравнивать с repl для java

potapenko20:01:31

меня впечатлило что я могу по figwheel звать какую функцию в react-native. или node.js

potapenko20:01:58

я не знаю, нужно звать экспертов. я просто пользуюсь simple_smile

andre20:01:10

а работа фигвила основана на использовании репла?

potapenko20:01:26

полагаю да

andre20:01:38

ну кому как не тебе быть экспертом в этом simple_smile

andre20:01:56

вот чуть чуть вы не туда пошли, ведь курсив с фигвилом, это почти ваше было simple_smile

potapenko20:01:01

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

potapenko20:01:36

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

potapenko20:01:54

одни и те же идеи в воздухе витают

andre20:01:10

у меня кстати так и не получилось фигвил завести в курсиве 😞

andre20:01:51

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

andre20:01:06

но потом сыпались какие-то ошибки реакта, нет какого-то метода

potapenko20:01:30

я с консоли запускаю, все хорошо

andre20:01:33

забросил в итоге запускал через консоль

andre20:01:58

просто для jvm красота и удобство в идее запускать, а вот с js не прокатило 😞

potapenko20:01:42

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

andre20:01:59

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

andre20:01:03

как в консоли это делать непонятно

andre20:01:20

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

potapenko20:01:21

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

andre20:01:35

девкардс вообще штука крутая

potapenko20:01:03

да, офигенная вещь.

andre20:01:10

моя мечта simple_smile всегда во флеше хотел что-то такое чтобы можно было писать код и смотреть результат кусочков UI

potapenko20:01:23

ага, вот и сбылось simple_smile

potapenko20:01:41

народ прикольно пишет документацию на devcards

andre20:01:44

вообще я рад что увидел твой твит про кложу, моя жизнь поменялась, и я готов покинуть флеш simple_smile на cljs реально можно писать в удовольствие веб апс

andre20:01:18

кстати странно что фигвил файл целиком перегружает

andre20:01:30

я думал все-таки он методы перегружает. или это технически невозможно?

potapenko20:01:50

да, он неймспейс перегражает, не как у нас функцию

potapenko20:01:10

ну в принципе жить можно.

potapenko20:01:27

эвалютить нужно

potapenko20:01:32

через repl

potapenko20:01:34

я не использовал

andre20:01:20

ну как -то неудобно получается, не сохранять типа файл?

turtle23:01:24

motor4ik: у фигвила настройки есть на эту тему.