
Alexander
01.06.2018
13:55:56
ну если MSA, то ничто не мешает писать маленький микросервисы на го, а когда нужна сложная БЛ, то кидаем сообщение в очередь, откуда ее читает bpm на явке и кладет ответ туда же.

Vyacheslav
01.06.2018
15:30:26
@fundamentalparticle Опять что-то в ЕАПе поменяли. 3 дня ноут не перезагружал. Перезагрузил - внезапно шрифты на пол экрана 24' моника. В редакторе я ещё их назад вернул, а вот как это сделать в project view ваще без понятия
Может ты в курсе как это сделать?

Vyacheslav
01.06.2018
15:42:30
Там ещё завезли врапинг окошек. Если открыть консоль и любую из боковых менюшек(project view/etc), то боковая менюшка будет от верха экрана до низа. А консолька будет от конца правого экрана до боковой менюшки
Хорошо сделали

Oleg
01.06.2018
19:14:58
scala, meh
на скале же есть Кафка-апи, значит это нормальный язык!
val clicksPerRegion: KTableS[String, Long] =
userClicksStream
// Join the stream against the table.
.leftJoin(userRegionsTable, (clicks: Long, region: String) => (if (region == null) "UNKNOWN" else region, clicks))
// Change the stream from <user> -> <region, clicks> to <region> -> <clicks>
.map((_, regionWithClicks) => regionWithClicks)
// Compute the total per region by summing the individual click counts per region.
.groupByKey
.reduce(_ + _)
// Write the (continuously updating) results to the output topic.
clicksPerRegion.toStream.to(outputTopic)

Yan?
02.06.2018
05:38:00
Почему java community негативно относится к скале?
Такое ощущение что скала отбирает хлеб у некоторой части и мешает им жить :)

Grigory
02.06.2018
06:20:20
шипилев недавно кстати делал реф на одерского в опенждк кодбазу
@avkomarov остановись, опомнись.

Vladimir
02.06.2018
10:45:03
Есть SE проект - плагин для одного приложения. В нем есть много классов-менеджеров: CommandManager, EntityManager, RestoreManager и так далее. Все эти менеджеры отвечают за разные вещи и могут использоваться в различных частях программы - как в других менеджерах, так и в остальных классах, которые от них зависимы. Вообще, в системе должно существовать по одному инстансу такого менеджера.
Большинство менеджеров зависят друг от друга, также многие из них зависят от инстанса плагина - PluginInstance. От остальных классов системы они не зависят.
Вопрос в том, как грамотно организовать доступ к объектам-менеджерам . Мои варианты:
1. Самое первое, что приходит в голову - синглтоны. Для каждого менеждера делаем статический геттер и обращаемся к нему откуда угодно. Правда, ленивая инициализация подойдет
не для всех менеджеров - некоторые нужно явно загрузить при старте и запустить выполнение некоторых задач, но это уже не так страшно. В общем, если полностью перевести систему
на синглтоны: сделать ими и менеджер, и сам плагин, то проблема в итоге разрешается. Вопрос в том, насколько это грамотное решение, когда весь проект будет пестрить getInstance-ми.
2. Dependency Injection. Передавать классам через конструкторы менеджеров, которые им нужны. Здесь проблема в том, что некоторые классы порождаются не там, где создаются инстансы менеджеров,
поэтому в отдельных случаях объекты менеджеров придется "тащить" через 2-3 класса, и такая структура будет очень громоздкой. Как вариант - инжектить поля рефлексивно, но в интернете пишут о том,
что это ужасная практика (хотя, насколько я понимаю, в том же спринге она вполне себе применяется).
3. Создать класс, который просто будет держать ссылки на все существующие в системе менеджеры. Назвать как-нибудь вроде Core, System. В нем будут методы getCommandManager(), getEntityManager(), getRestoreManager() и т.д.
Теперь вместо N объектов менеджеров нам достаточно протащить во все классы ссылку на System или вовсе сделать System синглтоном. Впрочем, здесь
уже неважно, поскольку у нас в итоге получается одна ссылка вместо 10, и организовать к ней доступ уже явно не проблема.
Итак, как будет правильней организовать такую систему зависимостей? Возможно, есть еще варианты?