clojure-russia

Работа и релокейт: #jobs-rus | #clojure-russia-offtop Телеграм-чат https://t.me/clojure_ru
razum2um 2017-10-02T09:21:25.000155Z

товарищи, читая твиттер, который сравнивал hello-world питона и раста https://twitter.com/playpausenstop/status/914218443443929089, решил перепроверить и дополнить https://github.com/razum2um/hello-http-bench чет результаты сильно подозрительные (в нашу сторону). ничего специально не делал, но цифры отличаются в разы. что с ними может быть не так?

2017-10-02T09:44:37.000016Z

@razum2um в aiohttp выруби логгер и uvloop возьми - будут сильно другие цифры.

razum2um 2017-10-02T10:01:35.000221Z

@kxepal если честно, я не питонист, взял код из твиттера. можешь PR?

razum2um 2017-10-02T10:02:11.000150Z

и да, логов я не вижу нигде ни в stdout ни рядом

2017-10-02T10:06:26.000197Z

давай

2017-10-02T10:15:20.000037Z

@razum2um принимай.

razum2um 2017-10-02T10:27:40.000125Z

@kxepal улучшилось, но не намного если честно..

razum2um 2017-10-02T10:28:37.000122Z

у меня пока главное подозрение speed-step интела, т.е. 4ghz это максимальная частота и она не мгновенно прыгает в максимум. по хорошему надо тестить на воспроизводимой машинке типа инстанса амазона (причем не t* burstable)

2017-10-02T10:31:44.000250Z

угу. но ожидаемо. там скорее уже в одно ядро упирается и больше не вытащить без скейла. кстати rust/clojure тоже по ядру используют?

2017-10-02T10:31:46.000210Z

на счет воспроизводимости мысль хорошая, но уже есть https://www.techempower.com/benchmarks/ - переизобретать не вижу смысла, если только для своих железок / кейсов.

👍 1
✅ 1
razum2um 2017-10-02T10:32:38.000263Z

О! кстати спасибо, на мейл-рушном капе его поминали постоянно, забыл про него опять

anjensan 2017-10-02T10:32:51.000123Z

вообще числа выглядят вполне норм - 7к вебзапросов это ок для питона.

anjensan 2017-10-02T10:33:37.000330Z

замечу что в clojure нету роутинга совсем.. а в питоне он есть, и достаточно тяжелый https://github.com/aio-libs/aiohttp/blob/master/aiohttp/web_urldispatcher.py. про раст не знаю

anjensan 2017-10-02T10:36:57.000116Z

а с кложей... возможно jit сотворил чудеса. я бы поменял на отдачу чуть разных значений все время (ну хоть бы счетчик дописать в респонс)

razum2um 2017-10-02T10:37:58.000324Z

@anjensan да, про роутер мне уже сказали

anjensan 2017-10-02T10:38:14.000274Z

http://klen.github.io/py-frameworks-bench/

anjensan 2017-10-02T10:39:31.000109Z

tl;dr - по тесту Serialize a object to JSON and return application/json response. - aiohttp медленнее wsgi в несколько раз

2017-10-02T10:41:34.000022Z

этот бенч сильно устарел. с тех пор aiohttp получил много оптимизаций и сишный http парсер.

anjensan 2017-10-02T10:52:20.000028Z

отлично. на скольких ядрах запускается aiohttp, rust и clojure ?

anjensan 2017-10-02T10:52:41.000165Z

aiohttp наверное както хитро gil обходит?

2017-10-02T10:52:54.000014Z

aiohttp - одно. это питон все таки.

razum2um 2017-10-02T10:54:58.000071Z

@anjensan чет добавил вывод текущих секунд с ответ rust/clj - результат немного меньше, но варьируется вокруг тех же результатов

2017-10-02T10:55:40.000164Z

там гил никак не обходится, просто асинхронное io. на отдаче hello-world это скорее минус, а вот когда пойдут вебсокеты, тормозные клиенты и микросервисы, то будет профит.

anjensan 2017-10-02T10:55:43.000019Z

@razum2um так сколько у тебя ядер ?

razum2um 2017-10-02T10:55:59.000328Z

4 & HT

anjensan 2017-10-02T10:56:17.000236Z

@kxepal про что и реч - асинхронность даром не дается. в кложе юзается синхронный ring/jetty, про раст молчу 😃

anjensan 2017-10-02T10:56:22.000019Z

так что сравнивать не оч корректно

2017-10-02T10:56:52.000183Z

это правда.

anjensan 2017-10-02T10:57:16.000148Z

кстати тестирование тоже под вопросом. на 4х ядрах

anjensan 2017-10-02T10:57:18.000118Z

>> 2 threads and 10 connections

razum2um 2017-10-02T10:57:51.000285Z

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

razum2um 2017-10-02T10:58:28.000131Z

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

anjensan 2017-10-02T10:58:46.000025Z

тредпул в джетти по дефолту будет что-то около 50

razum2um 2017-10-02T10:59:22.000148Z

да, минимум 8, макс 50 https://github.com/ring-clojure/ring/blob/master/ring-jetty-adapter/src/ring/adapter/jetty.clj#L103

2017-10-02T10:59:22.000223Z

кстати о hello world, вспомнилось: https://github.com/squeaky-pl/japronto (:

2017-10-02T10:59:36.000316Z

обещают лям за секунду отдать

anjensan 2017-10-02T11:00:01.000159Z

@razum2um если клиентов будет больше чем тредпул - ничего не будет

anjensan 2017-10-02T11:00:25.000049Z

ну отвалятся некоторые клиенты иногда (далеко не все). подумаешь 😉

1
anjensan 2017-10-02T11:01:14.000109Z

@kxepal рискну предположить что брешут 😄

2017-10-02T11:03:52.000120Z

@anjensan не удивлюсь, хотя не проверял. Хотя затюниться под hello-world и выдать вау эффект не сильно большое дело. А потом долго и упорно фиксить все срезанные углы.

razum2um 2017-10-02T11:05:21.000429Z

да, во время мейлрукапа тоже самое было с напильниками было. busy-loop например

razum2um 2017-10-02T12:01:33.000124Z

@anjensan не понял как выкинуть роутер, все ридми aiohttp с ним, фиг с ним, с async, добавил руби, сделал по одному воркер-треду на сервер и 1 тред wrk. разница с растом конечно сократилась но расклад остался. я конечно понимаю что это бессмысленно по сути итд, но меня зацепил факт, что я не могу объяснить разницу перед тем как лезть на уровень ниже хотел убедиться, что не упускаю чего-то элементарного

anjensan 2017-10-02T12:21:03.000120Z

@razum2um а никак ты не выкинешь роутер. хочешь быстрее - не юзай aiohttp, юзай asyncio напрямую 😃

anjensan 2017-10-02T12:21:17.000012Z

а вообще Python - тормозное и унылое 😉

razum2um 2017-10-02T12:45:53.000057Z

@anjensan да я забил на питон, а вот на руби/кложе пишу и растом активно интересуюсь

razum2um 2017-10-02T12:46:32.000083Z

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

anjensan 2017-10-02T12:55:22.000523Z

ну руби не лучше питона 🙂 кста -- я бы еще глянул на результаты с pypy 😉

anjensan 2017-10-02T13:09:20.000311Z

@razum2um можешь ради интереса запустить на своем железе https://github.com/anjensan/hello-http-bench/commit/21ca0d10e13ca6b63eb04b64c13df67c333b4432 - "классический вариант" (синхронный на WSGI)

2017-10-02T13:09:59.000001Z

@anjensan ты бы еще на сокетах написал (;

anjensan 2017-10-02T13:10:18.000531Z

@kxepal а что не так то 😉 ?

anjensan 2017-10-02T13:10:43.000146Z

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

2017-10-02T13:12:25.000196Z

ну это уже оптимизация ради оптимизации.

andrewtropin 2017-10-02T13:12:26.000162Z

Наткнулся на либу типа клары, только кажется более кложуристую на мой взгляд: https://github.com/CoNarrative/precept

misha 2017-10-03T10:58:33.000196Z

@rustam.gilaztdinov самый классический пример сессии в движке правил - пациент с симптомами, на основании которых назначается и исключается лечение

misha 2017-10-03T10:59:51.000128Z

потому что написать универсальную ветвистую ифочку для всех комбинаций сыпи/температуры/боли/аллергий/уже принимаемых препаратов/и тд. – "проблематично"

rustam.gilaztdinov 2017-10-03T12:50:02.000458Z

Да, теперь понятно, спасибо!

anjensan 2017-10-02T13:12:28.000153Z

но простите - на clojure мы юзаем jetty (на чисто джаве). на ruby - юзаем puma, где 15% C-шного кода...

anjensan 2017-10-02T13:13:33.000328Z

и это не оптимизация - это минимальный web-helllo-world на python в стандарте WSGI. который можно зпустить в uwsgi, twisted, cherrypy, etc...

2017-10-02T13:14:09.000112Z

ну только если так.

anjensan 2017-10-02T13:16:45.000155Z

ну и если что >> Ring is a Clojure web applications library inspired by Python's WSGI and Ruby's Rack.

anjensan 2017-10-02T13:17:04.000045Z

так что имхо вполне честно сравнивать прилагу на Ring и wsgi-аппликейшен

andrewtropin 2017-10-02T13:19:32.000552Z

кажется это обёртка над кларой

anjensan 2017-10-02T13:27:51.000207Z

@razum2um если что парамтр -p - сколько змей запускать. так что можно несколько запустить и и забыть про GILы

razum2um 2017-10-02T13:32:39.000305Z

да, я понял, uwsgi поддерживаю

razum2um 2017-10-02T13:34:09.000473Z

@anjensan только почему то аномально низкий результат вышел. ты сам запускал?

razum2um 2017-10-02T13:37:26.000049Z

во первых, там в ридми байты, ты как я понимаю .encode() забыл..

razum2um 2017-10-02T13:38:32.000143Z

во вторых у меня > [uwsgi-http] unable to connect() to node “127.0.0.1:58755” (0 retries): Operation timed out при том, что я запустил 8 процессов и wrk -c 8 -t 1

anjensan 2017-10-02T13:39:40.000172Z

запускал, но не сравнивал с aiohttp (нету py 3.5)

razum2um 2017-10-02T13:44:44.000566Z

@anjensan на 2ке значит? и? у меня прям аномально низкие результаты

kuzmin_m 2017-10-02T13:47:26.000281Z

Привет! Кто как в clojure делает формы для админок? Будет ли интересно следующее? Ключевой момент. Все это для backend. Программис не пришет ни строчки фронтенда. 1. В html вставили js скрипт из cdn 2. Написали clojure.spec для данных формы, или взяли существующую 3. Поставили из jar пакет, который из спеки делает описание формы 4. Дополнили это описание названиями заголовков, указали тип виджетов и прочие настройки 5. Передали в функцию из пакета описание формы и сами данные, получили кусок html, для вставки на страницу Т.е. форма на js с виджетами селекта, селекта даты, селекта с автокомплитом, поддержка cljojure типов, вроде keyword, и т.п. Программист не пишиет сам js/cljs/css совсем. Для валидации даннные отпраляются на сервер. Возможно будет некий адаптив, что бы оно прилично вписалось в дизайн страницы. Насколько вам больно делать формы? Нужно ли это? Полезно ли подобное для других языков? puthon, erlang, node.js, ruby

anjensan 2017-10-02T13:47:40.000698Z

байты - да. нужно возвращать байты, нужен .encode

anjensan 2017-10-02T13:47:56.000551Z

попробуй еще pip install gunicorn gunicorn -w 8 hello-http-python:application

2017-10-02T13:48:26.000451Z

encode будет лишним. b'Hello world'

anjensan 2017-10-02T13:48:42.000238Z

у меня он быстрее uwsgi почти в 2 раза

anjensan 2017-10-02T13:48:54.000501Z

@kxepal там еще число дофигачивается

anjensan 2017-10-02T13:49:29.000501Z

gunicorn кстати вроде на чистом python если что 🙂

2017-10-02T13:49:32.000048Z

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

anjensan 2017-10-02T13:49:49.000480Z

@kxepal так uwsgi я тоже скейлил по ядрам

2017-10-02T13:50:43.000123Z

а раст/кложа тоже все ядра юзают?

anjensan 2017-10-02T13:50:47.000112Z

конечн

anjensan 2017-10-02T13:52:53.000615Z

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

anjensan 2017-10-02T13:53:14.000442Z

так что формально - питон юзает все ядра, мьютекс то ведь не в счет

razum2um 2017-10-02T14:01:28.000064Z

@anjensan если не сложно запости результат питончика в сравнении с любым другим по выбору. у меня что uswgi что gunicorn не больше 500 rps (пробовал уже и --enable-threads и разную конфигурацию wrk, и на том компе где остальное, и на макбуке дома.. понимаю, херня какая-то)

razum2um 2017-10-02T14:05:08.000226Z

@kuzmin_m если чесно я не понял, что за 5 пунктов? если тебе нужна библиотека компонентов, то я точно помню, кто-то спаривал бутстрап, недавно видел вот такую имхо приятную на вид вещь https://priornix.github.io/antizer/latest/examples/reagent.html

kuzmin_m 2017-10-02T14:06:34.000692Z

речь не про компоненты, но за ссылку спасибо. речь про то, что бы по спеке генерить форму

kuzmin_m 2017-10-02T14:06:46.000707Z

и не писать js и css

kuzmin_m 2017-10-02T14:07:34.000475Z

@razum2um или непонятно?

razum2um 2017-10-02T14:07:54.000289Z

ну последнее то библиотеки компонентов+css-бандлы решают. вот кстати бутстрап http://yogthos.github.io/reagent-forms-example.html

razum2um 2017-10-02T14:08:16.000162Z

автор, кстати наш, Сотников, тут сидит

razum2um 2017-10-02T14:08:41.000693Z

т.е. что осталось - это из схемы получить hiccup-style структуру?

kuzmin_m 2017-10-02T14:08:47.000675Z

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

kuzmin_m 2017-10-02T14:09:05.000554Z

давай пока не спускаться к реализации

razum2um 2017-10-02T14:09:07.000641Z

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

kuzmin_m 2017-10-02T14:09:32.000224Z

т.е. не нужен компилятор cljs

kuzmin_m 2017-10-02T14:09:37.000730Z

не нужно стили писать

kuzmin_m 2017-10-02T14:09:47.000647Z

одну js происал

kuzmin_m 2017-10-02T14:10:00.000288Z

ну как jquery_ujs

kuzmin_m 2017-10-02T14:10:11.000171Z

что бы ссылки аяксом отправлялись

razum2um 2017-10-02T14:10:15.000426Z

чет запутался. какая цель?

kuzmin_m 2017-10-02T14:10:22.000219Z

вроде js, но js писать не надо

razum2um 2017-10-02T14:10:39.000023Z

поправь если я сейчас брежу

kuzmin_m 2017-10-02T14:10:39.000465Z

делать сложные формы без js/cljs

kuzmin_m 2017-10-02T14:10:54.000389Z

без - в смысле без участия программиста

razum2um 2017-10-02T14:11:15.000888Z

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

razum2um 2017-10-02T14:11:49.000355Z

нет, кажется я тебя не понимаю

kuzmin_m 2017-10-02T14:11:50.000263Z

чет не то

anjensan 2017-10-02T14:11:57.000346Z

убрал лимит по тредам из clojure. югикор запустил с 8 воркерами (у мну 6 физ ядер). тестил при помощи ab -n 500000 -c 100, результаты gunicorn: 14135 rps clojure: 14500 rps

👍 1
kuzmin_m 2017-10-02T14:11:58.000214Z

ты делаешь админку

kuzmin_m 2017-10-02T14:12:03.000228Z

на clojure

kuzmin_m 2017-10-02T14:12:16.000114Z

вернее проект

kuzmin_m 2017-10-02T14:12:25.000150Z

а ему нужна админка

kuzmin_m 2017-10-02T14:12:34.000456Z

нужно делать формы

kuzmin_m 2017-10-02T14:12:54.000064Z

хочется не просто обычные инпуты и текстарии

kuzmin_m 2017-10-02T14:13:01.000463Z

а выбор дат

kuzmin_m 2017-10-02T14:13:08.000443Z

загрузку файлов

kuzmin_m 2017-10-02T14:13:15.000031Z

автокомплит

kuzmin_m 2017-10-02T14:13:25.000456Z

для этого нужно js писать

kuzmin_m 2017-10-02T14:13:29.000549Z

ну или cljs

kuzmin_m 2017-10-02T14:13:36.000061Z

виджеты выбирать

kuzmin_m 2017-10-02T14:13:45.000090Z

а по факту у нас все есть

kuzmin_m 2017-10-02T14:14:01.000295Z

есть spec, из которой можно высасать структуру формы

kuzmin_m 2017-10-02T14:14:03.000671Z

и типы

kuzmin_m 2017-10-02T14:14:10.000159Z

есть транзит

kuzmin_m 2017-10-02T14:14:18.000357Z

в который можно сериализовать данные формы

kuzmin_m 2017-10-02T14:14:52.000567Z

итого по спеке генерится описание это описание патчится руками ну был у тебя в спеке (s/def ::password string?)

kuzmin_m 2017-10-02T14:15:12.000121Z

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

kuzmin_m 2017-10-02T14:15:32.000042Z

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

kuzmin_m 2017-10-02T14:15:39.000018Z

и заголовок на русском указать

kuzmin_m 2017-10-02T14:15:43.000460Z

я про это

kuzmin_m 2017-10-02T14:16:15.000487Z

нет

kuzmin_m 2017-10-02T14:16:22.000503Z

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

razum2um 2017-10-02T14:16:24.000638Z

да, я понял, чтобы схемой

kuzmin_m 2017-10-02T14:16:29.000463Z

а ты про виджеты

kuzmin_m 2017-10-02T14:16:42.000762Z

какие там будут виджеты - пока не важно

kuzmin_m 2017-10-02T14:17:00.000325Z

т.е. насколько больно далать формы?

kuzmin_m 2017-10-02T14:17:13.000186Z

и будет ли востребован такой подход?

kuzmin_m 2017-10-02T14:17:20.000530Z

на мой взгляд - это интересно

kuzmin_m 2017-10-02T14:17:26.000721Z

но насколько это важно?

razum2um 2017-10-02T14:20:04.000092Z

мне лично тяжело сказать, года 2 назад у меня был чистый cljs, тогда еще схемы не было, был om+sablono, чего-то более декларативного не хотелось. html это вполне декларативно. но далеко от бизнес логики, да

razum2um 2017-10-02T14:20:24.000083Z

последнее время все clj на беке как апишка

kuzmin_m 2017-10-02T14:20:40.000638Z

давай еще объясню

kuzmin_m 2017-10-02T14:20:53.000112Z

я считаю, что делать js/cljs очень дорого

kuzmin_m 2017-10-02T14:20:56.000548Z

очень

kuzmin_m 2017-10-02T14:21:16.000635Z

дешевле рендерить на сервере

kuzmin_m 2017-10-02T14:21:20.000359Z

и писать на сервере

razum2um 2017-10-02T14:22:10.000432Z

а вон оно че к чему ujs. ты про form :remote скорее?

kuzmin_m 2017-10-02T14:22:18.000050Z

но на сервере ты не сделаешь крутые виджеты

kuzmin_m 2017-10-02T14:22:35.000387Z

ну типа, т.е. не пишется js совсем

kuzmin_m 2017-10-02T14:22:50.000573Z

ну или как cocoon сделан

kuzmin_m 2017-10-02T14:22:57.000162Z

для вложенных форм

kuzmin_m 2017-10-02T14:23:27.000639Z

ты на сервер сгенерировал html, а он его подцепил и сделал возможность добавлять/удалять вложенные формы

kuzmin_m 2017-10-02T14:23:41.000346Z

а программист js не пишет при этом

kuzmin_m 2017-10-02T14:23:59.000547Z

только подключает js из гема

razum2um 2017-10-02T14:26:53.000181Z

мм, хз. я последнее время склоняюсь к умным spa клиентам (конечно от проектов зависит, у меня так), но фронт пока это redux или мобилка RN с тем же redux, поэтому уносить что-то кроме логики на сервер не хочется, чем больше клиент может тем лучше имхо

kuzmin_m 2017-10-02T14:27:18.000404Z

мы говорим про админки

kuzmin_m 2017-10-02T14:27:31.000056Z

или подобное админкам

kuzmin_m 2017-10-02T14:27:49.000087Z

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

razum2um 2017-10-02T14:27:52.000270Z

да, кстати, что именно дорого? (js->clj)?

kuzmin_m 2017-10-02T14:28:01.000791Z

разрабатывать

kuzmin_m 2017-10-02T14:28:18.000118Z

то что ты манипулируешь данными в clj

kuzmin_m 2017-10-02T14:28:33.000261Z

и то что ты тащишь компилятор, рпел

kuzmin_m 2017-10-02T14:28:43.000034Z

и другую парадигму разработки

kuzmin_m 2017-10-02T14:29:03.000053Z

это еще тестировать как бы надо)

razum2um 2017-10-02T14:29:20.000424Z

короче, сделать, чтобы бек быстро накидывал админки, т.е. скорее опять вернулись к simple_form (если думать гибко и не рождать АА) так?

kuzmin_m 2017-10-02T14:29:48.000473Z

не к simple_form

kuzmin_m 2017-10-02T14:29:58.000499Z

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

kuzmin_m 2017-10-02T14:30:09.000355Z

а можно это описание генерировать из спеки

kuzmin_m 2017-10-02T14:30:22.000832Z

и что такое AA? 😃

razum2um 2017-10-02T14:30:50.000709Z

тогда всетаки ActiveAdmin (AA)? (если с прищуром принять схему базы за схему данных)

kuzmin_m 2017-10-02T14:31:04.000731Z

я не работал с AA

kuzmin_m 2017-10-02T14:31:08.000307Z

наверное

kuzmin_m 2017-10-02T14:31:18.000421Z

похоже

razum2um 2017-10-02T14:35:15.000304Z

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

kuzmin_m 2017-10-02T14:35:44.000165Z

как вложенные формы делать?

kuzmin_m 2017-10-02T14:35:50.000155Z

там js нужен

kuzmin_m 2017-10-02T14:36:03.000633Z

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

kuzmin_m 2017-10-02T14:36:09.000672Z

тоже js и ajax

kuzmin_m 2017-10-02T14:36:21.000627Z

простого html не хватает для форм

razum2um 2017-10-02T14:36:35.000182Z

не прошло и 94 сообщения и я понял все 😄

kuzmin_m 2017-10-02T14:36:36.000119Z

как файлы прикреплять?

kuzmin_m 2017-10-02T14:36:45.000385Z

ура! 😃

kuzmin_m 2017-10-02T14:36:55.000515Z

может я криво изначально написал?

razum2um 2017-10-02T14:41:24.000248Z

да. перепиши, плиз, чтобы цель была сверху и что “не пишиет сам js/cljs/css” это не оптимизация усилий фронта, а имено для бека, конкретные шаги можно спрятать, ибо спорно (сколько чего где делать) 🙂

razum2um 2017-10-02T14:42:03.000565Z

гет соточки! хорошие сегодня треды

kuzmin_m 2017-10-02T14:43:43.000339Z

добавил

👍 1
razum2um 2017-10-02T15:44:33.000210Z

короче засада наверное в том, что это была 1) макось с настройками не для бенча 2) премия лучшего растамана среди кложуристов не достанется никому, ибо я тестил нерелизный билд 🤦 справедливость восстановлена для раста и такого сишного-пресишного 🙂 вебсервера в рубях. всем спасибо мир вернулся на место

rustam.gilaztdinov 2017-10-02T15:45:05.000822Z

@andrewtropin а расскажи, пожалуйста, про эти самые правила? я не встречал, хочу понять юз-кейс, с ходу не очень ясно :dafuq:

dottedmag 2017-10-02T18:36:19.000005Z

@kuzmin_m Я видел такое пару раз (не на clojure) и это жило ровно до того момента, пока не требовалось каких-то специальных контролов на клиенте. А после этого либо всё целиком сносилось и переносилось на клиента (в лучшем случае), либо окружалось кучей хаков (в худшем).

2017-10-02T18:41:54.000477Z

Precept wraps Clara, a ground-up implementation of the Rete algorithm in Clojure and Clojurescript.

kuzmin_m 2017-10-02T19:04:15.000403Z

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

dottedmag 2017-10-02T19:17:59.000446Z

@kuzmin_m Навскидку нет, всё осталось в древности.

kuzmin_m 2017-10-02T19:19:04.000189Z

там изначально были какие-то виджеты на js изначально?

kuzmin_m 2017-10-02T19:19:17.000506Z

т.е. в моей идее виджеты как раз на js

kuzmin_m 2017-10-02T19:19:36.000413Z

а сервер отдает описание формы в виде данных

kuzmin_m 2017-10-02T19:19:53.000628Z

и там указывается какой виджет использовать

dottedmag 2017-10-02T19:34:00.000302Z

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

kuzmin_m 2017-10-02T19:43:06.000286Z

например так: было 2 поля start_date end_date было 2 инпута стал нужен один инпут для интервала?

dottedmag 2017-10-02T20:16:47.000130Z

Я уже не помню деталей

razum2um 2017-10-02T22:22:15.000314Z

@anjensan и напоследок я немного упоролся затачивая кложу под latency, если будет время и желание из спортивного интереса - попробуй что-нить еще сделать? yourkit tracing мне показывает, что сейчас уперлись в основном в jetty.HttpOutput.close…

anjensan 2017-10-02T22:31:04.000072Z

перезапустил дома - clojure (tutorial) 81Krps, для uwsgi/py3 - 35Krps

razum2um 2017-10-02T23:03:25.000225Z

короче undertow и все