Size: a a a

Clojure — русскоговорящее сообщество

2021 September 28

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
на правах анекдота:
прикольно будет скрестить some-> и (if ... (recur))
максимально не идиоматично.
источник

ap

andei papkov in Clojure — русскоговорящее сообщество
мне больше нравится when (when-let)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
when-not ?
when-let c some-> не вяжется
источник

ap

andei papkov in Clojure — русскоговорящее сообщество
(when-let [a  (func1) ]
  (func2 a))

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

ВП

Владислав Петров... in Clojure — русскоговорящее сообщество
Господа, спортивного интересу ради. А как на кложе сделать игровой сервер? По типу танков. Когда внутри боя идет пересчет различных метрик  в конкурентном режиме. За каждое событие отвечает отдельный канал, так что ли?
источник

VP

Vladimir Potapev in Clojure — русскоговорящее сообщество
Навскидку я бы взял N агентов + пул для M потоков, каждый из которых работает с N/M агентами.
источник

ВП

Владислав Петров... in Clojure — русскоговорящее сообщество
а как будет выглядеть шина событий? Кафка?
источник

VP

Vladimir Potapev in Clojure — русскоговорящее сообщество
без конкретного ТЗ сложно что-то сказать) но если есть возможность не брать кафку, то лучше её не брать. :)
пабсаб можно на чём угодно сделать. на том же агенте + один поток. у агента есть watch-функции, которые можно через add-watch добавлять.
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
чем это отличается от обычного экспорта метрик?
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
типа, предагрегируешь в собственно расчетной ноде, ну и дальше push или pull сливаешь наружу.
источник

VP

Vladimir Potapev in Clojure — русскоговорящее сообщество
а, агенты и так с потоками из пула работают) тогда всё ещё проще)
источник

ВП

Владислав Петров... in Clojure — русскоговорящее сообщество
окей
источник

AC

Alexey Cheremisin in Clojure — русскоговорящее сообщество
ух, оказывается в for и doseq  можно еще и условия и переменные задавать через  :let :when  и :while!  афигенски, извиняюсь!
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
У нас такое любят, кроме меня :)
источник

AC

Alexey Cheremisin in Clojure — русскоговорящее сообщество
А мне зашло, кучу кода можно убрать...
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
в игровом сервере не используют кафку, это слишком долго. Все во внутренней памяти. Кафка разве что для отложенных задач, например запросы от сторонних систем
источник

ВП

Владислав Петров... in Clojure — русскоговорящее сообщество
С этим ясно, а как бытьс событиями на время? Типа бой длится ж ограниченное время. Как в кложе это делать?
источник

DL

Dmytro Lispyvnyi '(🌲... in Clojure — русскоговорящее сообщество
бнопня: надо скачать robots.txt для достаточно большого списка разных сайтов за разумное время, распараллеленные claypoole clj-http и http-kit пробовал тюнить - не очень справляются (порядка часа на 10000 штук это оч много), может у кого-то был опыт сравнения разных http клиентов на подобной задаче?
источник

a

alex in Clojure — русскоговорящее сообщество
кажется что реализация зависит от требуемой конкурентности. Различные игры, понятно, независимы, но стейт одной игры надо рассчитывать последовательно. Наверно надо только следить за частотой прилетающих событий и циклом сервера.
Ну и помнится читал как Кармак реализовывал поддержку многопоточности Doom 3 BFG - расчитывал начиная с какого размера задач перекидывание на другое ядро через кольцевые буферы перевесит накладные расходы на синхронизации
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
завести таймер и навешивать на него события
источник