Size: a a a

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

2019 July 02

EG

Emmanuel Goldstein in Clojure — русскоговорящее сообщество
Спасибо.
источник

EG

Emmanuel Goldstein in Clojure — русскоговорящее сообщество
Ещё пара вопросов
1. REPL (что встроенный, что lein REPL) прогревается очень долго. Еcть ли способ заставить его делать это побыстрее? Или его нужно каким-то образом оставить в фоне и подключаться по необходимости?
2. Какой вообще лучший REPL для Clojure (аналог IPython для Python)? Стандартный выглядит не очень вдохновляюще. В идеале хотелось бы подсветку синтаксиса на вводе, но хотя бы автоидентация тоже было бы круто.
источник

ИФ

Иван Федоров in Clojure — русскоговорящее сообщество
Ivan Grishaev
у меня датомик в пет-проектах. напрягает, что на сложных запросах приходится выбирать данные и шить их вручную; еще что нет сортировки, ну и еще что-то по мелочи
спасибо. а что значит шить данные? я видел как JUXT пользуются pull-паттернами, для формования данных, но я мог что-то не так понять.
источник

ИФ

Иван Федоров in Clojure — русскоговорящее сообщество
Ivan Grishaev
у меня датомик в пет-проектах. напрягает, что на сложных запросах приходится выбирать данные и шить их вручную; еще что нет сортировки, ну и еще что-то по мелочи
ну и, как Вы, в целом, видите “шитьё данных из коробки”?
источник

ИФ

Иван Федоров in Clojure — русскоговорящее сообщество
Artem
+ нет лимита и оффсета
ок. лимиты в Crux уже есть точно)
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Emmanuel Goldstein
Ещё пара вопросов
1. REPL (что встроенный, что lein REPL) прогревается очень долго. Еcть ли способ заставить его делать это побыстрее? Или его нужно каким-то образом оставить в фоне и подключаться по необходимости?
2. Какой вообще лучший REPL для Clojure (аналог IPython для Python)? Стандартный выглядит не очень вдохновляюще. В идеале хотелось бы подсветку синтаксиса на вводе, но хотя бы автоидентация тоже было бы круто.
Да лучше в фоне оставлять и подключаться из редактора
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Emmanuel Goldstein
Ещё пара вопросов
1. REPL (что встроенный, что lein REPL) прогревается очень долго. Еcть ли способ заставить его делать это побыстрее? Или его нужно каким-то образом оставить в фоне и подключаться по необходимости?
2. Какой вообще лучший REPL для Clojure (аналог IPython для Python)? Стандартный выглядит не очень вдохновляюще. В идеале хотелось бы подсветку синтаксиса на вводе, но хотя бы автоидентация тоже было бы круто.
https://github.com/bhauman/rebel-readline
Вот на этот стоит посмотреть если нет желания подключаться из редактора
источник

KC

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

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

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

вопрос - как это же идиоматично писать на кложе.
https://github.com/ben-manes/caffeine/wiki/Eviction#time-based
Caffeine c expireAfterAccess выглядит как то что требуется. Никаких таймеров и ручного менеджмента не нужно
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Я бы на это особо не надеялся
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
За пределами figwheel оно особо не работает
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
отчего же
{
...
:aliases {:rebel {:extra-deps {com.bhauman/rebel-readline {:mvn/version "0.1.4"}}
                  :main-opts  ["-m" "rebel-readline.main"]}}
}
;; => clojure -A:rebel
источник

ИФ

Иван Федоров in Clojure — русскоговорящее сообщество
+
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
https://github.com/darkleaf/repl-tools-deps

Обертка над rebel. Умеет код перезагружать и тесты запускать.
источник

AG

Anton Garansky in Clojure — русскоговорящее сообщество
Hei
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Kirill Chernyshov
отчего же
{
...
:aliases {:rebel {:extra-deps {com.bhauman/rebel-readline {:mvn/version "0.1.4"}}
                  :main-opts  ["-m" "rebel-readline.main"]}}
}
;; => clojure -A:rebel
я имел в виду в проекте стандартный репл на rebel заменить будет сложно
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
хотя может что-то поменялось
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
не совсем понимаю, речь же не идет о замене (не уверен что это в принципе возможно) а о дополняхах которые вместе с реплом идут, например самый базовый java -jar clojure.jar не даст даже добавить что-то в середину формы
rebel в этом случае всего лишь врапер над стандартным реплом который дает подсветку синтаксиса в консоли и возможность редактировать то что написал
плюс он (как и стандартный репл) оттопыривает порт по которому до него можно из редактора достучаться (через cider-connect например)
для редактора, правда, ничего не измениться скорее всего
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Иван Федоров
спасибо. а что значит шить данные? я видел как JUXT пользуются pull-паттернами, для формования данных, но я мог что-то не так понять.
я имел в виду, что некоторые структуры, которые sql выдает одним выражением, нужно собирать руками в датомике. Это ни хорошо и ни плохо, а просто факт. Например, во втором конкурсе Highload cup было задание на знакомства. Я пытался сделать на датомике, но это был ад
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
например, одно из условий это поиск партнера по интересам. Я не ожидал, что споткнусь на условии ВСЕ ИЗ перечисленных
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
из коробки работает ОДИН из, а чтобы сделать все, надо было шаманить
источник