@kotlin_lang

Страница 806 из 982
Dmitry
13.08.2018
11:18:31
там просто запускаются несколько идентичных процессов и все. даже без шейред памяти, и это можно на нескольких хостах пускать..
Это до тех пор, пока ты не хочешь одну задачу параллельно обсчитать и затем, собрав результаты в одном месте с этим что-то делать.

Roman
13.08.2018
11:19:02
В idea создаю artifact javafx , он с помощью чего собирает ? с помощью javapackager ?

Dmitry
13.08.2018
11:19:11
Можно конечно гонять сетевые запросы между программами на одном хосте... Но это видимо тру джаваскрипт путь -)

Google
Sergey
13.08.2018
11:19:24
зато скейлится хорошо)

Quantum Harmonizer
13.08.2018
11:20:20
И рано, с самого начала! Когда достаточно одного сервера, оно уже масштабируется на десять, что несомненный плюс!

Sergey
13.08.2018
11:21:00
ну а вообще процессинговую молотилку делать на скриптовых языках это вообще надо быть извращенцем, и тут даже дело не в потоках

I
13.08.2018
11:46:48
ребята есть ли в котлин более лаконичная запись такой конструкции и зачем вообще добавлять два восклицательных знака, ведь проверка уже есть? if (context != null) { App.get(context!!).applicationComponent().inject(this) }

I
13.08.2018
11:49:51
context?.let { ... }
спасибо, сейчас гляну что такое let. А как будет выглядеть весь код?

Alexander
13.08.2018
11:50:53
context?.let { App.get(it).applicationComponent().inject(this) }

I
13.08.2018
11:51:07
context?.let { App.get(it).applicationComponent().inject(this) }
Да уже прочитал, классная штука, спасибо!!

I
13.08.2018
12:04:56
Context это var ? тогда все котлин перестраховывается вдруг кто-то в другом потоке поменяет
https://discuss.kotlinlang.org/t/let-vs-if-not-null/3542 тут на эту тему холивар единого мнения нет как лучше и про потокобезопасность тоже говорят

Google
Mikhail
13.08.2018
12:15:50
Roman
13.08.2018
12:27:35
Есть задача ограничить потребление озу программой. Помимо -Xmx есть еще какие-нибудь полезные флаги ?

Например заставить gc работать почаще

Quantum Harmonizer
13.08.2018
12:28:20
ну и использовать Java 9..10, конечно

Mikhail
13.08.2018
12:32:36
а есть делегат, чтобы был как lazy, но сбрасываемый?

Vladimir
13.08.2018
12:33:27
Например заставить gc работать почаще
Это не поможет. Надо смириться с тем, что приложение будет кушать как минимум -Xmx + -Xss на каждый поток.

Gregory
13.08.2018
12:58:51
плюс VM, что может быть гораздо больше, чем -Xmx
Тогда уж и PermGen / MetaSpace добавлять надо (в зависимости от версии Java).

Quantum Harmonizer
13.08.2018
13:00:02
Gregory
13.08.2018
13:00:38
Добавлять к списку потребителей памяти в JVM. :)

Alexander
13.08.2018
13:01:29
а есть делегат, чтобы был как lazy, но сбрасываемый?
Нету, я надумыаю его предложить. На данный момент это делается блоком из двух пропертей, одно нулябельное и внутреннее, другое нет. Плюс в том, что работает без рекфлектов

Beholder
13.08.2018
13:02:03
https://github.com/soywiz/ktor-cio-clients/blob/master/ktor-client-cio-mysql/src/io/ktor/experimental/client/mysql/Mysql.kt
кстати, увидел в коде конкатенацию строки в цикле, стало плохо (строка 63). и после этого говорить про медленный jdbc?

Quantum Harmonizer
13.08.2018
13:03:05
кстати, увидел в коде конкатенацию строки в цикле, стало плохо (строка 63). и после этого говорить про медленный jdbc?
чёт я думаю, что это грубый прототип (но да, на потенциальном кодревью я бы такое не пропустил)

Konstantine
13.08.2018
13:06:33
В андроиде можно из коробки использовать корутины?

Или надо что-то прикручивать и танцевать еще?

Dmitry
13.08.2018
13:06:54
Можно. Но не нужно.

Anatoly
13.08.2018
13:07:01
Konstantine
13.08.2018
13:07:11
Dmitry
13.08.2018
13:07:32
Попробуй не на продакшне большую логику с корутинами. И тестами.

Google
Dmitry
13.08.2018
13:07:47
Можно псевдо-логику.

Oleg
13.08.2018
13:07:51
в котлине из коробки корутины
Там же отдельная зависимость под корутины

Quantum Harmonizer
13.08.2018
13:08:24
В андроиде можно из коробки использовать корутины?
да, только одна строчка для прогарда

Попробуй не на продакшне большую логику с корутинами. И тестами.
И что не так? Какие альтернативы? Откуда в приложении большая логика?

Alexey
13.08.2018
13:15:33
Попробуй не на продакшне большую логику с корутинами. И тестами.
Есть какие то реальные проблемы и трудности?

Dmitry
13.08.2018
13:18:41
Если писать саспенд самому? Весь код становится в саспендах, очень легко получить гонку, потому что код в одном классе и зачастую в одной функции работает в разных потоках. Мне кажется это отличный инструмент для написания библиотек, которые будут простыми, но в бизнес логике лучше для многопоточности использовать монады. - рх, фьючи и т.п. Либо каналы и акторы, но я не пробовал строить на них мобильное приложение.

Ivan
13.08.2018
13:19:56
зачем suspend, когда launch, async/await и т. д.

Alexey
13.08.2018
13:22:12
По канкаренси код на корутинах и футурках, точно отличаться не будет

А футурку люди тестируют без особой попоболи, так что и рутины тестировать ничуть не сложнее

Dmitry
13.08.2018
13:25:23
зачем suspend, когда launch, async/await и т. д.
Когда часть кода из простыни лаунч выносишь в приватную функцию - без саспенд не компилируется.

По канкаренси код на корутинах и футурках, точно отличаться не будет
Если на корутинах писать такой же код - наверное. Я же видимо не так что-то писал. Если чисто фьючевый код писать - я его на фьючах и напишу.

Quantum Harmonizer
13.08.2018
13:29:52
Quantum Harmonizer
13.08.2018
13:31:02
waat?
Уточню: Future != CompletableFuture

Dmitry
13.08.2018
13:33:16
Ну это же аналог эвейта. Задача может начаться сразу, а синхронно заблокируемся, когда результат нужен. Все от реализации зависит. Вообщем я пока в поисках правильного пути, но вот так на эвейтах когда начал писать - ничего нормального у меня не получилось.

Mikhail
13.08.2018
13:33:23
Alexey
13.08.2018
13:33:32
Уточню: Future != CompletableFuture
Даже так, только get будет блокирующим, но никак не синхронным

Quantum Harmonizer
13.08.2018
13:34:10
Google
Alexey
13.08.2018
13:34:18
Никто коненчо не обязывает Future как таковой быть асихронным

Окей, блокирующим. Проблема та же.
А кто в здравом уме будет на этих фьючах что то делать, есть куча реализаций в разных языках, которые ок композятся

Quantum Harmonizer
13.08.2018
13:35:35
Alexey
13.08.2018
13:36:09
Quantum Harmonizer
13.08.2018
13:36:44
Ну если тред пулы резиновые - то да
вопрос был про андроид, а там нет смысла запускать горы асинхронщины одновременно

Dmitry
13.08.2018
13:38:07
Alexey
13.08.2018
13:38:37
Там и ресурсов мало. Десяток фоновых задач - легко.
Скажи это note 9, что у него ресурсов мало

Admin
ERROR: S client not available

Quantum Harmonizer
13.08.2018
13:39:28
Скажи это note 9, что у него ресурсов мало
если учитывать количесиво запущенных в нём виртуальных машин...

самсунги вообще любюят насовать побольше ресурсов ради маркетинга и наговнять в прошивке

Dmitry
13.08.2018
13:40:31
Мы опять вернулись к мысли о том, что хорошо бы синхронные вызовы саспендить, а не блокировать тред. Хочу монады на корутинах. Но писать саспенд код прямо среди логики - как-то не оч. Как писать руками синхронайз-валотайл в своей логике на джаве.

Андроид приложения не только на новых самсунгах должны работать -(

Dmitry
13.08.2018
13:42:09
Пример чего?

Quantum Harmonizer
13.08.2018
13:42:28
Пример чего?
монад на корутинах

Alexey
13.08.2018
13:42:37
?

Dmitry
13.08.2018
13:43:56
Не знаю, надо думать -) Постараюсь вечером. Я на самом деле когда про монады думаю, у меня в голове рх всплывает.

Alexey
13.08.2018
13:45:31
Ну написать монаду то я думаю не проблема, надо то предоставить две функции

Dmitry
13.08.2018
13:47:05
Вопрос оч хороший, я вечером прикину псевдокод того, что нужно.

Alexey
13.08.2018
13:59:29
Вопрос оч хороший, я вечером прикину псевдокод того, что нужно.
Если в котлин уже довезли suspend лямбды то как то так можно !!! PSEVDO KOD ALARM !!! class CorutineIO<A>(public val run: suspend () -> A) { fun <B> map(f: (A) -> B): CorutineIO<B> = CorutineIO(suspend () -> f(run())) fun <B> flatMap(suspend f: (A) -> CorutineIO<B>): CorutineIO<B> = CorutineIO(suspend () -> { f(run()).run() }) companion object { fun <A> pure(a: A): CorutineIO<A>(suspend () -> a) } }

Google
Alexey
13.08.2018
14:00:07
Функция сама по себе монада, так чтооооо

Alexey
13.08.2018
14:01:12
монад на корутинах
держи братишка, я покушать принёс

а если еще написать какой нибудь inline + value class, то всё вообще развернётся даже в оптимальный код

Sergey
13.08.2018
14:13:46
привет! подскажите, плз, как в котлине можно рефлексивно получить доступ к методам, которые хранятся не в классе, а просто в котлин файле? не ищется это совсем что то

Sergey
13.08.2018
14:14:54
Вопрос зачем ?
интересно же

Sergey
13.08.2018
14:15:57
ну вот в kts файле я могу сделать:

val v = this::class.java v.methods.forEach { println(it.name) }

а в просто kt не хочет так почему то

Bogdan
13.08.2018
14:16:37
Sergey
13.08.2018
14:17:58
идея предлагает ссылки на методы, не то, что нужно

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