@kotlin_lang

Страница 942 из 982
Alexander
10.10.2018
19:42:19
GO-рутины ? (смотрел?)
Го вон. В смысле го идёт нафиг.

Quantum Harmonizer
10.10.2018
19:43:15
Alexander
10.10.2018
19:43:59
Думали. Но это было до котлины. Теперь нам и тут хорошо

Igor
10.10.2018
19:44:15
Похожу что ты все уже давно выбрал

Google
Alexander
10.10.2018
19:44:49
Точно Котлин. Вопрос в конкретной реализации.

С корутины и моднево, но не факт, что лучший вариант

dimiii
10.10.2018
19:50:36
Корутины вроде для IO bounded задач, треды - для CPU bounded. Где - то есть серая зона. Но вообще - openmp/open-mpi/intel phi ?

Quantum Harmonizer
10.10.2018
19:51:38
Корутины вроде для IO bounded задач, треды - для CPU bounded. Где - то есть серая зона. Но вообще - openmp/open-mpi/intel phi ?
Корутины отлично себу чувствуют, когда одни задачи сменяются другими. Собственно, они — для максимальной эффективности в решении этих задач.

Nameless
10.10.2018
19:51:53
Корутины вроде для IO bounded задач, треды - для CPU bounded. Где - то есть серая зона. Но вообще - openmp/open-mpi/intel phi ?
а как корутины помогают с IO bounded задачами? есть уже где то найс апишки для IO на корутинах?

Quantum Harmonizer
10.10.2018
19:52:21
Nameless
10.10.2018
19:52:36
ktorio?
посмотрю спасибо

я вот жду когда https://vertx.io/docs/vertx-lang-kotlin-coroutines/kotlin/ подтянут до 1.3

Quantum Harmonizer
10.10.2018
20:01:51
а как это они не блокируют?
помогуют уносить IO на другой пул, подальше от вычислений (а вообще, используйне NIO2 или epoll)

Nameless
10.10.2018
20:03:14
помогуют уносить IO на другой пул, подальше от вычислений (а вообще, используйне NIO2 или epoll)
ну это да понятно, просто блокирующий IO никуда не девается, а живет на другом треде

Google
⛧Isoq
10.10.2018
20:46:41
здраствуйте все что использовать бекенд для мессенджера просто смски пошли

Alexandr
11.10.2018
04:13:27
хахаха

здраствуйте все что использовать бекенд для мессенджера просто смски пошли
взять дрель для покосившийся стол еж прокотился мимо

eshch
11.10.2018
06:49:08
взять дрель для покосившийся стол еж прокотился мимо
ну человек банально русский знает плохо

Alexandr
11.10.2018
06:49:42
верю, но вопрос все равно не сформирован по-моему

eshch
11.10.2018
06:50:21
сформирован но не ясен

Axrorxo'ja
11.10.2018
06:54:26
Добрый день ,Этого через делегатион можна както красивые написать ато если на А классе будет очень многа методы наду каждый написать так

Nameless
11.10.2018
06:54:27
здраствуйте все что использовать бекенд для мессенджера просто смски пошли
Что использовать для бекенда что бы просто слать смски - что угодно

Axrorxo'ja
11.10.2018
06:54:28






Алексей
11.10.2018
06:55:42
class B_Kotlin(a: A): A by a

Axrorxo'ja
11.10.2018
06:56:51
class B_Kotlin(a: A): A by a
пишет only interface can delegated to

Алексей
11.10.2018
06:57:08
пишет only interface can delegated to
Ну можно сделать вывод

то есть, нельзя

либо переделайте class A в интерфейс с методами getAa, getBb

Axrorxo'ja
11.10.2018
06:58:44
Google
Алексей
11.10.2018
06:59:31
?

Alexey
11.10.2018
08:26:00
посоны, а когда 1.3 котлина релизнется никто не в курсе?

вроде обещали до конца года, но может есть у кого инсайды по более точным датам)

Alexander
11.10.2018
09:04:57
Как только баги отловят. Пока их там ещё есть.

Nikita
11.10.2018
09:13:45
Коллеги, как закинуть значение в лист? MutableMap<Int, MutableList<Int>>

Kirill
11.10.2018
09:16:06
Кто-то использует постгресовский Jsonb вместе с гибернейтом?

Георгий
11.10.2018
09:16:08
Как-то так: fun main(args: Array<String>) { val map: MutableMap<Int, MutableList<Int>> = mutableMapOf(); map[0] = mutableListOf(1, 2, 3) map[0]!!.add(4) print(map[0]!!.joinToString(",")) }

Kirill
11.10.2018
09:16:24
Посоветуйте как лучше с ним работать

Alexandr
11.10.2018
09:38:25
Только с null-safety надо определиться
думаю это просто пример. оператор get возвращает nullable value

это не переопределить

Георгий
11.10.2018
09:39:26
Ммм, ну да, это просто пример. Который я и написал по-быстрому)))

Victor
11.10.2018
09:42:36
Георгий
11.10.2018
09:46:15
map[0]!!.add(4) -> map.getValue(0).add(4)
Тогда надо ловить NoSuchElementException :-) Почти NPE))

Alexandr
11.10.2018
09:47:34
Тогда надо ловить NoSuchElementException :-) Почти NPE))
ну при таком подходе надо быть уверенным что значение по ключу есть

Victor
11.10.2018
09:52:00
Тогда надо ловить NoSuchElementException :-) Почти NPE))
зачем же - можно определить default-value для тех, что не находятся. Как-то так: val map = mutableMapOf<Int, MutableList<String>>() map.withDefault { mutableListOf()} map.getValue(1).add("string")

упс

Георгий
11.10.2018
09:55:29
О... Прикольно!

Bogdan
11.10.2018
09:55:54
здраствуйте все что использовать бекенд для мессенджера просто смски пошли
Что использовать для бекенда мессенджера, что бы посылать простые сообщения (текстовые) ?

Google
Victor
11.10.2018
09:56:06
Admin
ERROR: S client not available

Bogdan
11.10.2018
09:59:33
Сокеты:)
Я пробывал расшифровать вопрос

Алексей
11.10.2018
10:00:08
аааа

Quantum Harmonizer
11.10.2018
10:01:01
Сокеты:)
оригинал вопроса — про SMS :)

Victor
11.10.2018
10:01:06
А будет ли оно по ключу вставляться?
в этом и косяк - не будет ? только получаться. пример корректнее так: val map = mutableMapOf<Int, MutableList<String>>() map.getOrPut(1) { mutableListOf() }.add("string") map.keys

Алексей
11.10.2018
10:02:38
в этом и косяк - не будет ? только получаться. пример корректнее так: val map = mutableMapOf<Int, MutableList<String>>() map.getOrPut(1) { mutableListOf() }.add("string") map.keys
Возможно, тогда проще ?: ArrayList<…>().also { map[key] = it }, если заполнение в одном месте происходит

Victor
11.10.2018
10:03:58
длинее писать и результат тот же будет

dimiii
11.10.2018
11:31:56
Идея: compile "group-id:{artifact1,artifact2,artifactN}:version"

такая себе идея, у артефактов версии могут отличаться

Vladimir
11.10.2018
11:37:38
Вообще такая картина весьма частая - какая-нибудь либа с модулями. Отличаться у них будет тольк artifactId.

Alexandr
11.10.2018
11:38:25
Andrew
11.10.2018
11:38:57
Идея: compile "group-id:{artifact1,artifact2,artifactN}:version"
Как минимум есть на выбор https://www.twilio.com/ https://www.plivo.com/ Кроме этих двух гуглится ещё тысяча и одна альтернатива. Но это совершенно не по теме чата.

Руслан
11.10.2018
11:39:56
Идея: compile "group-id:{artifact1,artifact2,artifactN}:version"
https://github.com/spring-gradle-plugins/dependency-management-plugin

Alexandr
11.10.2018
11:40:21
Vladimir
11.10.2018
11:40:33
https://github.com/spring-gradle-plugins/dependency-management-plugin
А там разве можно указать версию для всех артефактов с заданным groupId?

Google
Руслан
11.10.2018
11:41:18
Нет, но можно явно прописать один раз и использовать в группе проектов

Vladimir
11.10.2018
11:42:23
Нет, но можно явно прописать один раз и использовать в группе проектов
Так это будет не один раз, а dependencyManagement { dependency "group:artifact1:version" dependency "group:artifact2:version" dependency "group:artifact3:version" ... }

Руслан
11.10.2018
11:42:58
Это пишется один раз, публикуется в maven и потом используется через importBom

Собственно пример bom'а: http://central.maven.org/maven2/io/bootique/bom/bootique-bom/0.25/bootique-bom-0.25.pom

Vladimir
11.10.2018
11:45:53
Собственно пример bom'а: http://central.maven.org/maven2/io/bootique/bom/bootique-bom/0.25/bootique-bom-0.25.pom
Это всё о том, чтобы не дублировать версии в разных проектах. А если я не хочу дублировать версию разных зависимостей в одном проекте, начинаются пляски с ${foobar-version}.

Руслан
11.10.2018
11:46:35
Не стоит сильно скриптовать билд, новички в проекте скажут спасибо

Vladimir
11.10.2018
11:47:23
Не стоит сильно скриптовать билд, новички в проекте скажут спасибо
Так вот плагин бы готовый, чтобы сказать "вот для такого groupId бери такую версию" и всё

Alexey
11.10.2018
14:08:32
Andrew
11.10.2018
14:20:03
Я сам так делаю, но многовато писать
По идее можно попробовать сплясать вокруг resolutionStrategy.dependencySubstitution, устанавливая в этом блоке версию для каждой приходящей зависимости. В остальном коде тогда их можно будет опускать / писать какую-то левую, которая будет подменена.

Глеб
11.10.2018
14:28:45
Господа, а насколько "страшно" использовать корутины просто как потоки? К примеру, есть у меня операция записи в... да без разницы, просто долгая синхронная IO операция. И есть два пути: первый - просто сделать scope.launch { doIOOperation() }, второй - сделать doIOOperation suspend-функцией и внутри обернуть всё IO в withContext(/*какой-то контекст специально под IO*/){} и также вызвать в scope.launch { doIOOperation }. В целом мне понятны основные недостатки первого подхода - весь скоуп будет заблочен на время выполнения записи, но логика получается, как мне кажется, более линейной. Можете подкинуть дровишек для размышления? Вообще не понимаю, почему этот вопрос у меня возник, но явно не спроста.

*весь скоуп будет заблочен только если он на одном потоке крутится

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