Size: a a a

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

2021 October 22

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
а когда все глобальное, это сделать невозможно
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
м?
ну я скопирую функцию, которая собирает jetty сервер
источник

IG

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

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Я очень много времени провел за пониманием всей этой истории с запуском и т.п. Серьезно.
И думал точно так же как и ты.
А потом щелкнуло, а зачем все это, если будет у тебя десяток компонентов с состоянием.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
и добавление нового компонента в систему это тривиальная задача. Прото указал зависимости и все. Движок сам подхватит порядок, запуск и остановку
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
да какие зависимости?
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
вот ты еще одну базу подключаешь, от чего она зависит? от конфига только, да и то не всегда
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
У нас есть сервисы, которые беруз данные из кассанды или HTTP API
источник

IG

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

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
а эти сервисы они в той общей библиотеке?
источник

IG

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

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
вот это уже интересно
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
например, пользователи, DNS-записи и пр. И они нужны в разных проектах
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
а состояние у них есть свое?
источник

IG

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

IG

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

ST

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

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Т.е. почается, что если хочется шарить код, то завязываться на глобальную переменную нельзя.
Вернее можно, но там все будет запутано.
источник

IG

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

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
можно трюк сделать.
в неймспейсе компонента объявить переменную и завязываться на эту переменную
а снаружи сделать (alter-var-root та-переменна, реализация)
Но это уже непонятно.
источник