@kotlin_lang

Страница 815 из 982
Quantum Harmonizer
17.08.2018
14:47:52
хотя, вот если там io...

Nanodesu
17.08.2018
14:48:02
Ну мои представления об этом довольно приблизительны, я потому и консультируюсь

Alexey
17.08.2018
14:48:11
И все блокируются

Alexander
17.08.2018
14:49:35
Количество тредов должно превышать количество ядер в процессоре только в очень редком случае, когда там идут блокирующие вызоы. И даже в этом случае не надо создавать 1000 тредов, надо реющать уже созданные. В корутинах, если нет особой специфики вообще надо использовать CommonPool и не париться

Google
Alexey
17.08.2018
14:50:57
Ну это не совсем так

Alexander
17.08.2018
14:51:23
В какой части? Если в первой, то это сознательное упрощение.

Есть еще всякие диспач-треды, которые живут вечно.

Alexander
17.08.2018
14:52:26
да

Nanodesu
17.08.2018
14:52:55
Ну, а вот попробуйте запустить этот код с CommonPool и посмотрите что получится

Вот так например val rnd = Random() val initList = (0..5000).toList() val asyncIter = initList.channeledCalls() { runBlocking { delay(rnd.nextInt(10000)) } it } asyncIter.forEach { println(it) }

Quantum Harmonizer
17.08.2018
14:53:51
delay неблокирующий, он суспендящий

Alexey
17.08.2018
14:54:32
В какой части? Если в первой, то это сознательное упрощение.
Ну вообще 1-ая часть это как раз ~ 100% случаев, при взамодействии с внешним миром всегда нужно дать еще тредов, ну и чтобы разгребать таски и не увеличивать perc95 ответов, зачастую приходится сделать гораздо больше тредов чем количество ядер

Да вырастет медиана

Alexander
17.08.2018
14:55:15
Я сознательно упростил. Подразумевал рабочие треды

Alexey
17.08.2018
14:55:45
Как раз про рабочие треды это втарая часть моего месаджа

Alexander
17.08.2018
14:57:47
Ну, а вот попробуйте запустить этот код с CommonPool и посмотрите что получится
код вообще странный. Вот это: async(start = CoroutineStart.LAZY, context = corCont) { function(it) }.also { def -> def.invokeOnCompletion { runBlocking { channel.send(def.getCompleted()) } } def.start() } не понятно, что должно делать. Почему не async(start = CoroutineStart.LAZY, context = corCont) { channel.send(function(it)) }

Google
Руслан
17.08.2018
14:58:02
Alexander
17.08.2018
14:58:13
В смысле без lazy старта

``` async { channel.send(function(it)) } ```

Kirill
17.08.2018
15:23:44
Хорошая реклама. Надо брать.

Di7aK
17.08.2018
15:25:00
ор

у меня и на заглушке не лагает

Quantum Harmonizer
17.08.2018
18:49:47
блинблинблин, extension var не в силах перекрыть member val

Alexander
17.08.2018
18:54:50
удивительно

лапы прочь от мемберов и все такое

Quantum Harmonizer
17.08.2018
18:55:37
хочется внутри транзакции добавить сеттер

Alexander
17.08.2018
18:55:57
?‍♂️

Низя. Иначе груви получится, со всеми вытекающими последствиями

Можно сделать инлайн класс и добавить ему один метод.

Или заменить

Alexander
17.08.2018
19:03:39
А чего, я люблю груви, но когда его много, он становится слишком похож на питон.

Igor
18.08.2018
03:08:32
Verifier rejected class superpackage.MapFragment: void superpackage.MapFragment.render(superpackage.states$MapState) failed to verify: void superpackage.MapFragment.render(superpackage.states$MapState): [0x58] register v6 has type Reference: java.lang.Object but expected Precise Reference: superpackage.MapboxMapAdapter (declaration of 'superpackage.MapFragment' appears in /super/puper/package-1/base.apk:classes2.dex) У кoгo былo пoхoжее, в чем пpoблема? Пpям пoвальнo началoсь. UPD: кoнкpетнo в мoем случае пpoблема oказалась в тoм, чтo Android Studio и кoтлин плагин слишкoм глупые, чтoбы пoдсказать, чтo где-тo нужен явный тайпкаст Any -> T. В тo вpемя как в байткoде этo местo пpинималoсь за Any == Object и делалo мне такие гадoсти.

Google
Igor
18.08.2018
06:45:00
Стoит пеpеписать на java и все чики-бpики.

Di7aK
18.08.2018
07:07:14
супер пупер

Alexander
18.08.2018
17:07:57
Я подвис. Играюсь с Kotlin gradle DSL как обычный JavaExec настроить. Что надо в classpath писать?

Sergey
19.08.2018
13:26:50
Я подвис. Играюсь с Kotlin gradle DSL как обычный JavaExec настроить. Что надо в classpath писать?
Смотри проекты большие, которые уже перешли, spring fu, например

Alexander
19.08.2018
13:28:06
Поиском не нашел. Один пример только, да и там кастомный classpath. Подобные штуки в энтерпрайзе редко используются. Ну сейчас посмотрю спринг

Нет, JavaExec не встречается

Sergey
19.08.2018
13:28:50
Можешь ещё бил скрипты самого Котлин dsl посмотреть

Alexander
19.08.2018
13:29:17
А я по-моему смотрел

Да, смотрел. Там в потрохах где-то используется но явно не вызывается

Boris
19.08.2018
14:07:47
Боюсь ошибиться, но для этого обычно создают отдельный конфигурейшн, настраивают его как компайл какой-нибудь и потом просто резолвддепенденсиз в класспас строку склеивают

Alexander
19.08.2018
14:09:01
А зачем такой геморрой?

Alexander
19.08.2018
14:09:22
task jfreechart(type: JavaExec){ group = "example" classpath = sourceSets.main.runtimeClasspath main = 'scientifik.kplot.examples.JFreeChartFrameTestKt' }

Boris
19.08.2018
14:09:24
А как по-другому?

Alexander
19.08.2018
14:09:38
Вот этот вариант отлично работает в груви варианте.

В kotlin dsl нет sourcesets.

Boris
19.08.2018
14:11:17
А, ну да, наверное просто можно присваивать конфигурации напрямую

Alexander
19.08.2018
14:11:53
Мне нужна основная compile конфигурация, без выкрутасов

Boris
19.08.2018
14:12:11
Но не понимаю причем тут сорсетс

Google
Alexander
19.08.2018
14:12:20
Я тоже не понимаю, это магия

Boris
19.08.2018
14:12:22
Если тебе нужен класспас

Alexander
19.08.2018
14:12:41
Но хочется чтобы магия работала в kotlin тоже

Boris
19.08.2018
14:12:50
Используй конфигурацию

Admin
ERROR: S client not available

Boris
19.08.2018
14:12:55
Compile

Alexander
19.08.2018
14:13:02
Пробовал, не видит котлин класс

Boris
19.08.2018
14:13:05
Напрямую

Котлин класс?

Alexander
19.08.2018
14:13:59
Класс + Kt

Из Groovy DSL видит

Boris
19.08.2018
14:14:41
В тебе нужно ещё и скомпилированные классы?

Alexander
19.08.2018
14:15:13
Мне нужно, чтобы все было что есть, просто с несколькими разными точками входа.

Если бы была одна, то можно было бы использовать application, а мне нужно то же самое, что application, но много.

Boris
19.08.2018
14:16:15
Аа

Тогда понятно откуда сорсетс взялись ?

Alexander
19.08.2018
14:16:57
sourcesets взялись из официального примера https://docs.gradle.org/current/dsl/org.gradle.api.tasks.JavaExec.html

Boris
19.08.2018
14:17:51
Ну так ты склей аутпут компилятора и резолвддепенденсиз конфигурации

Alexander
19.08.2018
14:17:57
Вот хочу то же самое, но на kotlin DSL

Boris
19.08.2018
14:18:07
Google
Alexander
19.08.2018
14:18:50
В данном случае толк в том, что он работает. Градл очень сложный внутри, понять его полностью - мозги склеятся.

Ну так ты склей аутпут компилятора и резолвддепенденсиз конфигурации
Пример можно? Там даже в Kotlin DSL куча очень похожих полей, которые не понятно чем отличаются. Да еще и без документации

Boris
19.08.2018
14:20:11
Не, на градле можно писать только если понял что внутри, потому и котлиндсл это благо, он от части магии избавляет и делает её очевидной для понимания и использования

Alexander
19.08.2018
14:21:28
С первым утверждением радикально не согласен. Градл как раз таки много того, что понимать не нужно прячет под капот, он на то и декларативный. Проблема в том, что там есть много исторических наслоений и утилок, в которых сложно что-то разобрать.

Boris
19.08.2018
14:21:50
Но я запускал этот джаваэкзек с пол года назад, из конфигурации зависимости брал

Alexander
19.08.2018
14:22:31
Вот мавен действительно надо было понимать, по крайней мере lifecycle.

Да я потыкался, плюнул и сделал на груви. Мне пока не критично, просто демку надо было сделать.

Alexander
19.08.2018
14:23:57
В этом есть разумное зерно. Буду читать пейджер, много думать. Но пока надо чтобы просто работало.

Еще бы найти где это по человечески написано.

Boris
19.08.2018
14:25:57
Проблема в том, что как только появляется проблема, то решить её без понимания невозможно. А с тем количеством магии которая там есть, проблемы сыплются градом как только ты отходишь на два шага от готовых тасков скопипащенных из примера

Я на котлин дсл делал билд примерно в 300кб

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