@kotlin_lang

Страница 952 из 982
Badya
16.10.2018
08:33:14
путь доширака скорее всего. крупное приложение потом дорого поддерживать станет
Есть пример из жизни где все было замечательно и без DI (сервер MMORPG)

Alexandr
16.10.2018
08:33:37
Как можно избавиться от проксей, через которые выполняются (почти) все вызовы методов между бинами?
нагенерить и просто инстанцировать) об этом была речь. но это дичь еще та

Vladimir
16.10.2018
08:34:06
нагенерить и просто инстанцировать) об этом была речь. но это дичь еще та
Эм, а как может жить объект выгруженного класса? Это бред какой-то.

Alexandr
16.10.2018
08:34:24
Как можно избавиться от проксей, через которые выполняются (почти) все вызовы методов между бинами?
на самом деле прокси есть только та где завязан аоп, транзакции и вызовы между бинами из разных скоупов

Google
Vladislav
16.10.2018
08:35:42
Vladimir
16.10.2018
08:36:03
А DI я руками делаю, просто в конструкторе передаю зависимости
Не самый плохой путь на котлине, но вот например даже просто вызвать у всех объектов close нельзя. А контейнер это умеет.

Alexander
16.10.2018
08:36:29
Кому-нибудь удалось запустить jmh с multiplatform сборкой? Вроде там все есть, но чего-то сил нет в исходниках ковыряться.

Vladislav
16.10.2018
08:36:34
в main всех создаешь, в finally блоке всем делаешь close

Vladimir
16.10.2018
08:37:44
в main всех создаешь, в finally блоке всем делаешь close
Ручками? Ну это полная жесть. Тогда надо каждый отдельно объявлять и не забыть закрыть.

Vladislav
16.10.2018
08:38:22
ну можно положить в список и сделать forEach { it.close() }

Badya
16.10.2018
08:38:29
Это был маркетинговый ход. На самом деле можно, но так себе.
Полтора года пишу - бед не знаю, экстеншенов хватает

Vladimir
16.10.2018
08:39:01
ну не все выгружать
А что там ещё, кроме тонны проксей? Сгенерированный код, поднимающий контекст, можно было бы выгружать, но его же куда меньше.

Alexander
16.10.2018
08:40:57
Не понял

Google
Alexander
16.10.2018
08:41:43
Он не работает, потому что по умолчанию зависит от кода в main, а этого самого main нет. Как прописать ему зависимость от другого сорус сета?

Alexandr
16.10.2018
08:42:02
А что там ещё, кроме тонны проксей? Сгенерированный код, поднимающий контекст, можно было бы выгружать, но его же куда меньше.
так об этом и речь. короче говоря это утопия, в spring работают не глупые люди и если бы от этого был бы профит - уже давно бы запилили

Vladimir
16.10.2018
08:43:28
kofu? там руками все писать
Spring Boot некоторые метаданные собирает при сборке, чтобы по classpath не бегать. Кто-то там из pivotal сделал micronaut, в котором всё генерится при сборке.

Alexander
16.10.2018
08:43:31
в jvm модуле подняться должен
Что должно куда поняться?

Alexandr
16.10.2018
08:44:03
Что должно куда поняться?
в common jmh пахать не будет, только в jvm

вот в jvm модуле его и надо описать и запускать

Alexander
16.10.2018
08:44:21
Это и ежу понятно. Надо прицепить именно к jvm

Alexandr
16.10.2018
08:44:33
а в чем проблема?

Alexander
16.10.2018
08:44:56
В новых мультилплатформенных проектах все вместе, а jvm код сидит не в стандартном main соурссете

Alexandr
16.10.2018
08:45:13
jmh gradle plugin, он добавляет в src еще одну папочку, которая становится еще одним соурсетом

Alexander
16.10.2018
08:45:16
В jvmMain

Это понятно, но он при этом не видит основного соурссета

По-умолчанию, он зависит от main.

Alexandr
16.10.2018
08:46:14
В новых мультилплатформенных проектах все вместе, а jvm код сидит не в стандартном main соурссете
надо покурить доку плагина, скорее всго ему можно сказать какой соурсет использовать

Alexander
16.10.2018
08:46:37
Смотрел. Нету. Может есть недокументированная крутилка

Alexandr
16.10.2018
08:47:28
тогда нужен feature request

а плагин 2 соурсета сгенерит? java и kotlin?

Google
Alexander
16.10.2018
08:47:50
Нашел, гвоздями оно прибито: https://github.com/melix/jmh-gradle-plugin/blob/8df7e61449666a45dbe93d19cdbc87813416f5f5/src/main/groovy/me/champeau/gradle/JMHPlugin.groovy#L166

Alexandr
16.10.2018
08:47:53
в jmh

хах

Alexandr
16.10.2018
08:48:13
тикет в гитхаб

Alexander
16.10.2018
08:48:24
Фиг его знает. С чистым котлиновским проектом работал

dimiii
16.10.2018
08:48:53
lovehate?
Нужно больше интерактивности. Совмещенный стриминг, например.

Alexandr
16.10.2018
08:49:00
а в новой модели нельзя по разным подпроектам платформенные модули держать?

как по мне это приоритетнее

Alexander
16.10.2018
08:49:18
Можно, но она сделана чтобы этого не делать.

как по мне это приоритетнее
Я тоже так думал, но там возникает сильная проблема с дистрибуцией отдельно common библиотек

Если бы был IR, то можно было бы это делать.

Alexandr
16.10.2018
08:51:23
Если бы был IR, то можно было бы это делать.
в 1.3 так и не завезли? печаль

Alexander
16.10.2018
08:51:42
Нет пока. Эту штуку торопить нельзя.

Alexandr
16.10.2018
08:51:54
эх

Alexey
16.10.2018
09:00:06
Ручками? Ну это полная жесть. Тогда надо каждый отдельно объявлять и не забыть закрыть.
Pure spring child Написание пары строчек на компонент меркнет по сравнению с бизнесс логикой

Alexander
16.10.2018
09:01:38
тикет в гитхаб
https://github.com/melix/jmh-gradle-plugin/issues/140

Alexey
16.10.2018
09:01:41
путь доширака скорее всего. крупное приложение потом дорого поддерживать станет
Слушайте, если у вас какие то проблемы с инстанцированием объектов через конструктор, не надо экстраполировать это на всех. У нас проекту 8 лет и там всё создаётся через конструктор, разбито по модулям и нет никакого спагети, всегда можно без проблем найти что и где создаётся

Alexey
16.10.2018
09:03:24
А зачем вызвать у классов close?
Ну если есть логика для graceful shutdown

Google
Igor
16.10.2018
09:05:03
Чето сходу не понятно, когда такое нужно

Alexander
16.10.2018
09:05:47
Чето сходу не понятно, когда такое нужно
Когда класс файл захватывает и читает что-то у него ленивым образом, или подключение

Igor
16.10.2018
09:06:42
Хм, и это обязательно решать через DI?

Alexander
16.10.2018
09:06:47
Нет

Более того, наверное лучше не надо. Но для того, чтобы решать это не через DI надо исходно архитектуру лучше продумывать. Все проблемы от лени

Это кстати и не DI, это контроль жизненного цикла. Кто виноват, что эти две вещи всегда в одну кучу мешают?

Vladimir
16.10.2018
09:35:11
Pure spring child Написание пары строчек на компонент меркнет по сравнению с бизнесс логикой
Нет, я и сам так делал, но меня немного беспокоит, что если просто накидать создание объектов через конструктор одним махом, то непонятно, как управлять жизненным циклом созданных объектов.

Alexander
16.10.2018
09:36:30
Держать реестр этех объектов, которые надо зачищать. Собственно ваш спринг или что-то там так и делает

Admin
ERROR: S client not available

Alexander
16.10.2018
09:37:06
В действительности объектов, которые надо зачищать довольно мало. Часто AutoCloseable достаточно

Vladimir
16.10.2018
09:37:57
Держать реестр этех объектов, которые надо зачищать. Собственно ваш спринг или что-то там так и делает
Ну да, всё так. Лишняя логика по инициализации, которую придётся писать. Не то, чтобы это прям плохо, но так уж получается, что со спрингом можно об этом не думать.

Alexander
16.10.2018
09:38:34
Это всегдашний спор готовить еду дома или есть в ресторане

AutoCloseable сам себя зачищает при выгрузке класса. Другое дело, что момент выгрузки не контролируется

Vladimir
16.10.2018
09:39:58
AutoCloseable сам себя зачищает при выгрузке класса. Другое дело, что момент выгрузки не контролируется
Первый раз слышу о таком, ну и да, привязывать любой жизненный цикл к GC - путь в никуда.

Руслан
16.10.2018
09:39:59
Нет, я и сам так делал, но меня немного беспокоит, что если просто накидать создание объектов через конструктор одним махом, то непонятно, как управлять жизненным циклом созданных объектов.
Посмотри вот тут пример, правда тут только graceful shutdown https://github.com/Heapy/tgto/blob/master/src/main/kotlin/app/hea/tgto/Application.kt#L81 https://github.com/Heapy/tgto/blob/master/src/main/kotlin/app/hea/tgto/server/FeedServer.kt#L48

Alexander
16.10.2018
09:40:40
там не совсем GC, скорее когда объект уходит из употребления

Vladimir
16.10.2018
09:42:51
Посмотри вот тут пример, правда тут только graceful shutdown https://github.com/Heapy/tgto/blob/master/src/main/kotlin/app/hea/tgto/Application.kt#L81 https://github.com/Heapy/tgto/blob/master/src/main/kotlin/app/hea/tgto/server/FeedServer.kt#L48
У меня была мысль что-то подобное навелосипедить. А там уже созданные объекты закрываются, если во время инициализации произошла ошибка?

Руслан
16.10.2018
09:43:36
Там на shutdown хук висит. Произошла ошибка -> пошел shutdown -> вызвалось закрытие всего что наинициализировал

Google
Andrey
16.10.2018
09:44:22
не ?

Alexander
16.10.2018
09:44:51
В том числе

В случае try() просто момент закрытия контролируется

Andrey
16.10.2018
09:45:25
сомневаюсь что кто то его в файналайз пихает

Vladimir
16.10.2018
09:45:30
автоклозабл же для использования с трайвизресурс
try-with-resources - это простейший сценарий использования ресурса, который надо освобождать явно. Иногда его не хватает

Andrew
16.10.2018
10:06:55
Это и ежу понятно. Надо прицепить именно к jvm
Пока не дочитал до конца этого адского трёпа сегодняшнего, но: пресет jvmWithJava вместо jvm уже советовали?

Alexander
16.10.2018
10:07:29
Треп я пропустил. Спринг меня вот вообще не волнует

Andrew
16.10.2018
10:09:15
Это как?
kotlin { targets { fromPreset(presets.jvmWithJava, 'targetName') // вместо presets.jvm } }

Alexander
16.10.2018
10:09:46
О, я такое в первый раз вижу. А что оно делает?

Andrew
16.10.2018
10:09:50
Как минимум application-плагину с ним становится сильно легче, ибо он прибит гвоздями к java, ЕМНИП.

О, я такое в первый раз вижу. А что оно делает?
Он пляшет от java-плагина в довесок к остальному.

Alexander
16.10.2018
10:10:12
щас попробую

Andrew
16.10.2018
10:10:31
(Ну и позволяет мешать котлин и джава-код, но это, как выяснилось, не главное его преимущество :D)

https://youtrack.jetbrains.com/issue/KT-27272 https://youtrack.jetbrains.com/issue/KT-27273 А вообще jvmWithJava временное решение и есть вероятность, что его выпилят, когда обычный jvm подружат с джавой. Как — ещё неизвестно.

Alexander
16.10.2018
10:34:58
У меня только вылетели commonTest-ы

А, стоп, они похоже не из-за этого вылетели

Страница 952 из 982