
Vladimir
12.03.2018
12:09:45

Даниил
12.03.2018
12:10:10

Alexey
12.03.2018
12:10:25

Igor
12.03.2018
12:11:11
я с деревни, чё это?
Это значит написать unit-test (или интегрейшен, если хочешь без моков), который вызовет dryRun() и проверит форсированно весь граф

Google

Даниил
12.03.2018
12:12:50
собсно к "явное vs неявное" и "компайлтайм vs рантайм" добавлю ещё кое-что
DI контейнер — это обычно ещё и, как правильно Егор пишет, глобальное мутабельное состояние
что тоже "не очень" мягко говоря

Alexey
12.03.2018
12:13:30

Igor
12.03.2018
12:13:31
Это Koin, вангую что в кодеине так же можно сделать

Даниил
12.03.2018
12:14:02
ммм вангую что в кодеине такое невозможно
там нет графа как такового, это вообще сложно на самом деле DI контейнером назвать
он ничего не знает о зависимостях классов
по сути это просто такой словарь KClass -> инстанс/провайдер/фактори/что-то там ещё

Igor
12.03.2018
12:17:08
Хм, koin вроде тоже самое

Даниил
12.03.2018
12:17:12
поэтому с одной стороны там меньше магии чем в более навороченных DI-контейнерах, с другой — собсно, непонятно зачем его использовать, если можно руками в конструктор заинжектить
то есть получается то же самое (надо руками зависимости прописывать), только без кодеина будет типобезопасно, а с кодеином — нет

Mikhail
12.03.2018
12:19:35

Google

Alexey
12.03.2018
12:20:08

Даниил
12.03.2018
12:20:53

Mikhail
12.03.2018
12:21:16

Даниил
12.03.2018
12:21:23

Alexey
12.03.2018
12:21:27
Фремйворк из одного фабричного метода

Даниил
12.03.2018
12:21:43
да
только без кодогенерации и NPE

Alexey
12.03.2018
12:22:55
я к тому что надо бы чекнуть значение слова фреймворк

Даниил
12.03.2018
12:23:05
да ясно что это не будет DI-фреймворком)
даже близко

Mikhail
12.03.2018
12:24:26
а потом ты бы сделал фабрику фабрик

Alexey
12.03.2018
12:24:27
В java мире вообще всё любят обзывать фреймворками
Фреймворк для сдвига строчки вправа

Mikhail
12.03.2018
12:24:50
и получился бы...

Даниил
12.03.2018
12:25:06

Руслан
12.03.2018
12:25:22

Igor
12.03.2018
12:25:25

Quantum Harmonizer
12.03.2018
12:26:16

Даниил
12.03.2018
12:26:27

Google

Alexey
12.03.2018
12:26:56
?
Вам надо стикеры разрешить, беседы веселее пойдут

Quantum Harmonizer
12.03.2018
12:27:14

Alexey
12.03.2018
12:27:34

Mikhail
12.03.2018
12:28:03

Даниил
12.03.2018
12:28:41
как будто что-то плохое

Руслан
12.03.2018
12:29:02

Alexey
12.03.2018
12:29:11
Щас бы функции высшего порядка обзывать фабриками фабрик ?

Даниил
12.03.2018
12:29:26

Mikhail
12.03.2018
12:29:30

Даниил
12.03.2018
12:30:46
надо короче просто на хаскеле писать, тогда не будет никаких "фабрик фабрик", "фабрик 5 порядка", будут просто каррированные функции :3

Mikhail
12.03.2018
12:31:53

Igor
12.03.2018
12:32:12

Даниил
12.03.2018
12:32:27

Mikhail
12.03.2018
12:33:24
Эт какие такие? F#?

Igor
12.03.2018
12:35:02
??

Даниил
12.03.2018
12:35:20
F# мне не зашёл
всё из-за [file] order matters

Igor
12.03.2018
12:35:59
Тут я точно спорить не буду, го в оффтоп-чат (хотя мы это уже обсуждали)

Mikhail
12.03.2018
12:36:05

Google

Даниил
12.03.2018
12:36:32

Mikhail
12.03.2018
12:37:46
всё из-за [file] order matters
на бумаге концепция смотрится неплохо, не факт, что так сильно надо заставлять разрабов делить все на слои и избавляться от циклических зависимостей

Даниил
12.03.2018
12:39:03
да собственно как и вообще указывать файлы исходников в манифесте проекта, но это уже камень в сторону дотнета вообще а не фшарпа конкретно

Alexey
12.03.2018
12:51:34

Vladislav
12.03.2018
13:50:12
Вернусь к вопросу про SAM в котлине

Admin
ERROR: S client not available

Vladislav
12.03.2018
13:50:23
Оказывается он есть =O

Quantum Harmonizer
12.03.2018
13:50:32
для Java-интерфейсов

Vladislav
12.03.2018
13:50:47
Ога, мне как раз для них надо было
Не понятно вот это:
Also note that this feature works only for Java interop; since Kotlin has proper function types, automatic conversion of functions into implementations of Kotlin interfaces is unnecessary and therefore unsupported.
Почему нет необходимости для котлин интерфейсов и что взамен?

Pavlo
12.03.2018
13:53:10
лямбда

Vladislav
12.03.2018
13:54:57
typealias... наконец до меня дошло

Quantum Harmonizer
12.03.2018
13:56:55

Maxim
12.03.2018
16:56:18

Sergey
12.03.2018
19:49:08
In pure Kotlin projects, the recommended directory structure is to follow the package structure with the common root package omitted (e.g. if all the code in the project is in the "org.example.kotlin" package and its subpackages, files with the "org.example.kotlin" package should be placed directly under the source root, and files in "org.example.kotlin.foo.bar" should be in the "foo/bar" subdirectory of the source root).
я так понимаю до сих пор нельзя так делать, чтобы идея такое поддерживала?

Andrew
12.03.2018
19:53:32

Sergey
12.03.2018
20:17:33
печально

Жабра
12.03.2018
20:43:44
Я так и не особо понял, чем здесь bg так уж отличается от async?

Google

Жабра
12.03.2018
20:43:45

Sergey
12.03.2018
20:50:03
тем что контекст сразу задан
вдруг ты что-то блокирующее там пустишь
inline fun <T> bg(crossinline block: () -> T): Deferred<T> = async(POOL) {
block()
}
internal var POOL = newFixedThreadPoolContext(2 * Runtime.getRuntime().availableProcessors(), "bg")

Жабра
12.03.2018
20:57:23
Он ведь так же проработает и дождется, нет?

Sergey
12.03.2018
21:11:10
у async дефолтный контекст будет DefaultDispatcher

Жабра
12.03.2018
21:11:15
Да

Sergey
12.03.2018
21:11:58
но я не знаю какой DefaultDispatcher на андроиде
на jvm возьмет ForkJoinPool

Mikhail
12.03.2018
22:40:07
а у котлин-комьюнити есть свой модный json-парсер?

Sergey
12.03.2018
23:05:33
jackson, gson :)
https://github.com/Kotlin/kotlinx.serialization но модный вот

Mikhail
12.03.2018
23:09:32
я тут бенчмаркаю json-парсеры жавовские, вот думаю, что-нибудь модное из котлина добавить
https://github.com/wizzardo/json-benchmarks

Sergey
12.03.2018
23:11:27
о, тогда будем рады бенчмарку kotlinx.serialization :)

Alexey
13.03.2018
06:11:02