
Руслан
17.09.2018
14:28:26

Alexander
17.09.2018
14:28:49
Но в двух словах, я переписал библиотеку более приличным образом, в резульатате в коде само собой наследование заменилось на композицию

Руслан
17.09.2018
14:30:36

Quantum Harmonizer
17.09.2018
14:32:28
JSON хорош, пока он не покидает свою родную JS-экосистему.

Google

Руслан
17.09.2018
14:33:59
Да что угодно что прилетает в jvm с наружи будет обладать примерно такими свойствами.

Quantum Harmonizer
17.09.2018
14:35:14
Protobuf, Cap'n'p, FlatBuffers? Нет.

Igor
17.09.2018
14:35:40

Руслан
17.09.2018
14:35:45

Quantum Harmonizer
17.09.2018
14:36:25

Руслан
17.09.2018
14:37:16
обычно генеренный код ты не очень хочешь читать, особенно того что будет там работать с байтиками разбирая bytebuffer
тестировать код который как-то рефлексивно работает тоже никто не мешает
дебажить проще, это да. и компайл тайм
но с таким же успехом можно написать компайл-тайм парсер для json, нет?

Quantum Harmonizer
17.09.2018
14:39:10
да, LoganSquare, ig-parser

Alexander
17.09.2018
16:01:26
О, интересно. Можно пример?
Фух, ели победил градл.
Вот было: https://github.com/altavir/kplot/blob/82cea018f9cc444fd3700196e89af0f2020532b4/kplot-common/src/main/kotlin/scientifik/kplot/specifications/XYPlotSpecification.kt
Вот стало: https://github.com/altavir/kplot/blob/master/kplot-common/src/main/kotlin/scientifik/kplot/specifications/XYPlotSpecification.kt
Выглядит почти одинаково, но упрощение довольно существенное. Смысл в том, что есть неспециализированная конфигурационная структура, которую надо специализировать in place. Это делается навешиванием на нее декоратора, который занимается считыванием и изменением. В первом случае этот декоратор расширял класс конфигурации и просто делегировал все нужное передаваемому объекту. Во втором случае делается обертка, которая уже сама умеет делать нужные делегаты для своего содержимого.

Mikhail
17.09.2018
16:48:15


Nameless
17.09.2018
16:48:33
как победить котлин и gson + exclude Modifier.PRIVATE ? в котлине поле паблик, а все равно не попадает в json

Google

Nameless
17.09.2018
16:48:42
в гугле не гуглится, надежд мало осталось перед погружением в сорцы

Alexander
17.09.2018
16:49:28

Mikhail
17.09.2018
16:52:50

Alexander
17.09.2018
16:54:08
Довольно большая. Configuration - это сама конфигурация. Specification - это маркерный интерфейс для объекта, который содержит конфигурацию как компонент

Mikhail
17.09.2018
16:54:51
Ты мог убрать делегат в первом случае, разве нет?

Nameless
17.09.2018
16:55:38

Alexander
17.09.2018
16:56:11
Тут никакой. Просто красивые. Делегаты убрать не мог потому что надо было бы всю реализацию писать. Этот интерфейс был

Mikhail
17.09.2018
16:56:47
Поле != Проперти, добавь JVMField аннотацию

Nameless
17.09.2018
16:57:13

Mikhail
17.09.2018
16:57:53
Надо придумать какой-нибудь dsl-трюк

Alexander
17.09.2018
17:02:30
Собственно я его и придумал. Теперь можно конфигурировать типо-безопасные объекты, используя спецификации: https://github.com/altavir/kplot/blob/master/kplot-examples/src/main/kotlin/scientifik/kplot/examples/JFreeChartFrameTest.kt. Единственная проблема, что хочется иметь две версии спецификации - мутабельную и немутабельную. Ноэто без кодогенерации видимо никак.

Andrew
17.09.2018
17:28:59
https://twitter.com/kotlinconf/status/1041683355937501185
Мне вот прям понравилась шутка из слака:
"Kotlin is now an official language on iOS?"

Руслан
17.09.2018
17:29:57
Kotlin by default in Gradle!
(мечты)

Quantum Harmonizer
17.09.2018
17:48:08
Кто-нибудь может объяснить, зачем здесь <T>?
public inline fun <T> Collection<T>.isNotEmpty() = !isEmpty()

Google

Bogdan
17.09.2018
17:53:41

Quantum Harmonizer
17.09.2018
17:53:52
Collection<*>

Bogdan
17.09.2018
17:55:06
Collection<*>
тут может уже просто "чистота" кода, изначальный вариант мне больше симпатичен чем *

Quantum Harmonizer
17.09.2018
17:58:24
ну да, так аккуратнее как-то

Bogdan
17.09.2018
18:15:54
я думаю кому-то будет полезно https://www.youtube.com/watch?v=q_UM1EY2S5g

Di7aK
17.09.2018
20:53:14
куантиум успокойся

Quantum Harmonizer
17.09.2018
20:53:32

Di7aK
17.09.2018
20:53:44
я гуглил раз 75

Quantum Harmonizer
17.09.2018
20:53:58
тогда дебажить

Di7aK
17.09.2018
20:54:03
мне надо на человеческом языке

Quantum Harmonizer
17.09.2018
20:54:20
тогда придётся проявить немного уважения к окружающим

Di7aK
17.09.2018
20:54:36
я вроде никого не занижал

Di7aK
17.09.2018
20:57:07
мне просто нужно чтобы фрагменты не пытались как то восстановить свое состояние, а повторяли весь цикл что при первом создании
ну или хотябы методику по грамотному восстановлению

Bogdan
17.09.2018
21:24:56

Alexandr
18.09.2018
02:16:39

Евгений
18.09.2018
02:46:21
воистину бред

Andrew
18.09.2018
07:44:26
Kotlin by default in Gradle!
> eriwen [01:11]
> Heyo folks. You’ll be pleased to know that the vast majority of Groovy samples on in the Gradle user manual now have Kotlin samples too in the Gradle 5.0 nightly docs (https://docs.gradle.org/nightly/userguide/userguide.html) — please give them a look for your Kotlin DSL scripts and provide feedback via GitHub or hit us up on Slack!
:D

Руслан
18.09.2018
07:45:25
Это да, но светлое будущее когда там груви задеприкейтят

Google

Руслан
18.09.2018
07:46:41
Тут все gradle пользуют, так что можно пойти, посмотреть, оставить фидбек

Алексей
18.09.2018
07:50:09
А может кто-нибудь с градлом помочь?
У меня все проекты на мавене, когда-то пытался перекочевать на градл, но не вышло
я мог бы скинуть свой конфиг мавеновский для конверта

eugene
18.09.2018
07:51:50

Алексей
18.09.2018
07:52:34
Думаю, смотрел, у меня там просто публикация + подписка gpg используются

Admin
ERROR: S client not available

Алексей
18.09.2018
07:52:56
+ укладывание всего этого счастья с зависимостями в один jar
Как следствие, я просто не понял, как аналогичный gradle конфиг сделать (хотя просто джарники билдились)

Boris
18.09.2018
08:22:23
Так ты конкретные вопросы задавай, что не получается? Никто твои конфиги ковырять не будет

Алексей
18.09.2018
08:23:04

Boris
18.09.2018
08:23:29
Ну вот как начнёшь миграцию снова, приходи ?

Алексей
18.09.2018
08:25:15

Andrey
18.09.2018
09:53:23

Alexandr
18.09.2018
09:58:58
+ за самую обоснованную позицию
я просто не люблю срачи в интернете и объяснять человеку с такой аргументацией ничего не стану, ибо человек просто не умеет это готовить и смешивает теплое с мягким

Alexey
18.09.2018
10:00:43

Alexandr
18.09.2018
10:01:36

Руслан
18.09.2018
10:01:36
оххххх печево DI рабов
Правильные ребята так и не научили жить без DI, пример большого проекта на Kotlin так никто не привел. Поэтому пока битва теоретиков с практиками)

Alexandr
18.09.2018
10:02:12

Google

Alexey
18.09.2018
10:02:42
Правильные ребята создают через конструкторы уже 3 десятка лет
а у них всё нет большого проекта

Руслан
18.09.2018
10:02:57
Но вообще что @lex_it @eld0727 давайте более конструктивно вести беседу. Без печева и бреда

Alexandr
18.09.2018
10:03:48
просто пост доставил)

Alexey
18.09.2018
10:04:43

Quantum Harmonizer
18.09.2018
10:05:04
Вот есть код, он работает. Бери и разбирайся.

Alexandr
18.09.2018
10:05:34
потом это все поддерживать
править

Quantum Harmonizer
18.09.2018
10:06:03
то есть с отладкой всё же проблем нет.

Alexandr
18.09.2018
10:06:29
а что если нужен один и тот же инстанс в разных ветках? давайте будем прокидывать от общего родителя! класс)

Andrey
18.09.2018
10:06:32

Alexandr
18.09.2018
10:06:46

Mikhail
18.09.2018
10:06:51

Alexey
18.09.2018
10:07:46