Size: a a a

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

2019 July 01

A

Artem in Clojure — русскоговорящее сообщество
впрочем это тоже не Америка.
их всегда было мало
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
dima
Распределение зарплат по ответам. Максимальные значения были у респондентов имеющих большой опыт, хорошо владеющих английским языком и работающих на западный рынок, в основном удаленно.
А по язьікам?
источник

d

dima in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
А по язьікам?
в целом - скала
источник

d

dima in Clojure — русскоговорящее сообщество
но обычно когда опыта много, решает сама компания, ее продукт
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Alex Bubnov
а если эти ресурсы не определены на момент старта приложения?
ну, типа, это ресурсы, инициализирующиеся по запросу - типа, пользовательская сессия, или открытый файл, или еще что-то такое.
вот свежий пример получше. есть у меня некий допотопный сервис, в котором авторизация на сессиях поверх кук. у сессии задан некий idle time, после которого она протухает - именно idle, считается от последнего запроса. сессии, внезапно, дорогие и их хочется реиспользовать.

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

как я делаю это в эрланге - беру generic регистратор с find-or-start, под него запихиваю воркеры, которые при инициализации получают вот эту сессионную куку и хранят её в себе. каждый внешний запрос с токеном приходит в регистратор, находит процесс сессии, идет в него и с кукой из него отправляется на какой-то там другой воркер, где уже будет сделан запрос к старому сервису. в процессе сессии по итогам пришедшего запроса реинициализируется таймер, по истечению которого процесс просто сдохнет и всё, на следующий запрос с соответственным токеном кука будте получена еще раз.
получается, инициализация ресурса - атомарная и происходит один раз, доступ к ресурсу сериализован, код, реализующий лайфтайм ресурса, локализован и очень простой.

вопрос - как это же идиоматично писать на кложе.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Описание выглядит как простая мемоизация с ttl
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
мемоизация с ttl, ок. как это пишется-то, чтобы не сойти с ума от пула таймеров?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Не видел в https://github.com/clojure/core.memoize пула таймеров
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Там кроме функции инициализации ресурса ничего вроде и не нужно писать
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
ммм, потому что то, что про ttl живет в core.cache?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Насколько я понимаю эту библиотеку, там нет пула таймеров. Но утверждать не буду.
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
да, ок, там нет пула таймеров - просто потому что нет такой стратегии
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Какой стратегии нет?
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Sergey Trofimov
Какой стратегии нет?
то, что я описал
1 - не нормальный ttl, это idle time - время жизни с последнего использования.
2 - это не совсем обычный кэш. TTLCacheQ из core.cache зачищает элементы в момент cache miss, в описанной схеме они чистятся в произвольный момент.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Ну можно взять тот же guava cache, там точно есть такая стратегия. Смысл не конкретной реализации кэша, а в том, зачем всё это сложное управление жизненным циклом
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Какую-то я ещё библиотеку использовал вроде для кэширования по access time...
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
а для любителей всяких сложностей есть такие библиотеки, как https://zcaudate.github.io/hara/index.html
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
там тебе и шедулеры, и мониторы, и чего только нет
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ещё есть http://docs.paralleluniverse.co/pulsar/ для ерлангистов
источник