@kotlin_lang

Страница 721 из 982
Kirill
25.06.2018
09:38:25
List<List<Any>> -> List<Any>

Artyom
25.06.2018
09:38:48
опоздал )

Google
Kirill
25.06.2018
09:38:57
точно

пасиб)

Evgeny
25.06.2018
09:39:42
1.2.60 активно в разработке, и вот недавно 1.2.70 дев версия релизнулась
да, я уже глянул, 10 минут назад dev релиз вышел.. но еще с 1.2.50 не так много времени прошло, и если 1.2.60-eap в ближайшее время не появится то может они его пропустят

Vladimir
25.06.2018
09:40:47
Roman
25.06.2018
09:43:02
You can find sample here: https://www.sitepoint.com/self-types-with-javas-generics/
I'm intrigued. Can you, please, point which particular sample from that article does not work for you? I've tried a few and they all convert nicely from Java to Kotlin via build-in converter tool.

Павел
25.06.2018
09:45:19
I'm intrigued. Can you, please, point which particular sample from that article does not work for you? I've tried a few and they all convert nicely from Java to Kotlin via build-in converter tool.
Hmm, My last try was on kotlin 1.1, maybe it's fixed… Did you try abstract class NodeScaffold<THIS extends NodeScaffold<THIS>> { private final List<THIS> children; public Stream<THIS> children() { return children.stream(); } public Stream<THIS> grandChildren() { return children.stream() .flatMap(child -> child.children()); } } abstract class SpecialNodeScaffold<THIS extends SpecialNodeScaffold<THIS>> extends NodeScaffold<THIS> { // special methods } abstract class VerySpecialNodeScaffold<THIS extends VerySpecialNodeScaffold<THIS>> extends SpecialNodeScaffold<THIS> { // more special methods } public class Node extends NodeScaffold<Node> { } public class SpecialNode extends SpecialNodeScaffold<SpecialNode> { } public class VerySpecialNode extends VerySpecialNodeScaffold<VerySpecialNode> { }

Quantum Harmonizer
25.06.2018
09:46:43
You can find sample here: https://www.sitepoint.com/self-types-with-javas-generics/
There's no self-type in Java. This article demonstrates emulation of it. Same in Kotlin.

Павел
25.06.2018
09:47:05
Roman
25.06.2018
09:48:49
Does it even compile in kotlin?
Why it would not compile? I don't see any compilation problems here: https://gist.github.com/elizarov/30ca944eb5390caac3362590c8472b89

Павел
25.06.2018
09:50:55


Also I can't initialize children to any sane value… even Delegates.notNull()

@relizarov why are we speaking in english?

Quantum Harmonizer
25.06.2018
09:56:31
Error message explains itself

Google
Павел
25.06.2018
09:57:54
Well, now I see that it's fault of java to kotlin converter

Andrew
25.06.2018
10:03:21
Well, now I see that it's fault of java to kotlin converter
Ты точно уверен, что именно j2k тебе выставил internal-видимость? Я сомневаюсь, что инструмент, транслирующий Java в Kotlin, будет выставлять самовольно область видимости, которой не существует в джаве.

Andrew
25.06.2018
10:07:43
Для классов, которые в Java помечены как public? Интересно, на основании чего он решает, где поставить public, а где internal.

Павел
25.06.2018
10:09:09
@Harmonizr do you agree that those reported bug is incompatibility?

Quantum Harmonizer
25.06.2018
10:11:16
@Harmonizr do you agree that those reported bug is incompatibility?
Yep, it is an incompatibility in a corner case.

Roman
25.06.2018
10:18:56
Note, that the corresponding Java code does not really compile either (produces warnings)

Павел
25.06.2018
10:22:45
Thing is it works somehow on java and doesn't in kotlin

Quantum Harmonizer
25.06.2018
10:23:50
But compiles and produces working bytecods, isn't it?
For example, you can invoke methods on `@Nullable`s in Java but can't in Kotlin. Is it an incompatibility?

Павел
25.06.2018
10:26:08
For example, you can invoke methods on `@Nullable`s in Java but can't in Kotlin. Is it an incompatibility?
No, because nullability is kotlin's concept, java doesn't know anything about it. But 100%-compatible language should provide everything java allows in java field. And generics are java field

For example, you can invoke methods on `@Nullable`s in Java but can't in Kotlin. Is it an incompatibility?
Actually they can both call methods on nullable and potentially get same result - NPE. They just do it with different syntax and name of exception is a bit different

Also while you think that this is corner case - it leads me to bad-quality production code (in tests)

dimiii
25.06.2018
10:33:59
Кто-то заморачивался подобным для Идеи? https://www.ibm.com/developerworks/java/library/j-class-sharing-openj9/index.html?ca=drs-

Vladimir
25.06.2018
10:37:55
Кто-то заморачивался подобным для Идеи? https://www.ibm.com/developerworks/java/library/j-class-sharing-openj9/index.html?ca=drs-
А зачем, если она обычно запущена в единственном экземпляре?

dimiii
25.06.2018
10:42:39
А зачем, если она обычно запущена в единственном экземпляре?
Допустим, тесты гонять. Иногда бывает открыт проект в другом окне (сказывается отсутствие эклипсовской концепции workspace)

Google
Yehor
25.06.2018
11:01:15
Подскажите где почитать как хранить в Котлине / Джаве конфиги для сервисов? Хотелось все поместить в одну папку и дать администратору возможность настроить ./someapp/app.conf в джаве есть ресурсы но при сборке артифатка fat jar все оно помещается в этот архив. где можно почитать best practices? или подсмотреть в проекты какие? буду очень признателен.

1337
25.06.2018
11:03:36
application.yml

или спринг конфигуратор сервис, не помню точно как

Roman
25.06.2018
11:31:36
@relizarov I've found reported bug. I was close: https://youtrack.jetbrains.com/issue/KT-17186
So, what's the problem with the workaround that is mentioned in the issue (instantiate with <Nothing>)? I don't see any further discussion on it. Does workaround help or is there some other problem with it?

Павел
25.06.2018
11:35:11
So, what's the problem with the workaround that is mentioned in the issue (instantiate with <Nothing>)? I don't see any further discussion on it. Does workaround help or is there some other problem with it?
Well, for me workaround is not solution because code is not the same and it's impossible to understand what will be inferred by compiler while reading code.

Roman
25.06.2018
11:38:40
It was never a goal to write the same code in Kotlin as in Java. Kotlin is neither subset nor a superset of Java. Compatibility (being able to use Java classes from Kotlin and vice versa) is a goal, though. So, if you explicitly specify type parameter as <Nothing> the compiler infers exactly what you write. No need to guess. It would not even show "type hint", since the "inferred type" would be exactly the same as the type you write on the right-hand side.

1337
25.06.2018
11:40:54
kotlin is superior

Yehor
25.06.2018
11:46:07
Такое вполне может делать typesafe config
благодарю. это больше похоже на то что надо, сейчас посмотрим как они это реализовали.

Konstantine
25.06.2018
12:03:10
Если я в when передаю выражение - оно высчитывается каждый раз или как?

1337
25.06.2018
12:06:15
1 раз

Sergey
25.06.2018
13:02:44
неплохо так ktor доку обновили

Kirill
25.06.2018
13:05:49


С картинками прямо.

Sergey
25.06.2018
13:07:37
я уже подумываю выбросить к херам spring и на ktor поменять

Kirill
25.06.2018
13:13:17
От размера проекта зависит. Всякие штуки из коробки типа Spring Security или Spring Cloud из коробки это приятно.

Наиль
25.06.2018
13:16:01
Эта картинка там уже месяц

Google
Sergey
25.06.2018
13:17:01
особенно если это kubernetes, где свой сервис дискавери и управление конфигами

Kirill
25.06.2018
13:27:12
Это правда.

Sergey
25.06.2018
13:35:38
но к примеру на ktor с корутинками у тебя сервер на 90мб памяти сможет держать сотню конкуретных запросов, а на спринге 450мб+ выйдет

Kirill
25.06.2018
13:37:52
Я совершенно согласен, что спринг это гигантская энтерпрайз система, которая, как правило, не стоит того чтобы с ней возиться.

Sergey
25.06.2018
13:40:21
я б поспорил)

Bogdan
25.06.2018
13:41:45
вы это бизнесу скажите, на спринг гораздо проще найти разработчиков
Ну анноташки вешать хорошо, но до того момента как выйдешь за их функциональность, а там уже ад где понимают люди намного меньше

Mikhail
25.06.2018
13:42:26
я не спорю, что спринг - треш и угар, но разработчики везде есть

Kirill
25.06.2018
13:42:48
вы это бизнесу скажите, на спринг гораздо проще найти разработчиков
Сам работаю в проекте со спрингом и я прекрасно понимаю о чём вы. Я думаю, что это инерция рынка труда. Скоро его доля начнёт снижаться. Молодёжь любит новое. Новое - это Котлин. Через пару лет это будет зрелая экосистема которая будет лишена многих проблем сегодняшнего дня.

Mikhail
25.06.2018
13:43:09
я вот бекенд для стартапа на нем пишу только потому, что в будушем разработчиков проще найти будет

Sergey
25.06.2018
13:43:33
вы это бизнесу скажите, на спринг гораздо проще найти разработчиков
если разработчик ограничен только спрингом, то он скорее всего еще пишет на 7й джаве и горы хмл для бинов, потому что по-другому не умеет

Mikhail
25.06.2018
13:43:34
хотя спринга у меня мало, надо выпилить к черту

Sergey
25.06.2018
13:44:17
спринг реактор сложная штука, я не много людей видел которые умеют его готовить

Mikhail
25.06.2018
13:44:39
а нафиг он нужен?

Sergey
25.06.2018
13:44:56
асинхронность и все такое

Dmitry
25.06.2018
13:45:04
Народ, а есть ли в котлине пропосал каким-либо образом помешать создавать лямбды, которые захватывают родителя? Регулярно вижу, что в кликлисенера пихают обращение к полю предка и от этого много проблем возникает. Например, если класс с лямбдой должен быть сериализуем. Хочу, чтобы такое не компилировалось.

Mikhail
25.06.2018
13:45:50
асинхронность и все такое
jdbc все равно синхронный, большинство http-клиентов тоже

Роман
25.06.2018
13:46:19
есть асинхронный для postgres в мавене валялся

Google
Sergey
25.06.2018
13:46:34
jdbc все равно синхронный, большинство http-клиентов тоже
спринговый клиент асинхронный, всякие эластики, монги, редисы умеют тоже асинхронно работать. а jdbc можно и потерпеть в отдельном пуле)

Роман
25.06.2018
13:46:42
но это не точно, он называется postgres-async-jdbc

https://mvnrepository.com/artifact/com.github.mauricio/postgresql-async https://github.com/mauricio/postgresql-async

Mikhail
25.06.2018
13:48:06
а какой профит от всей этой асинхронности?

Роман
25.06.2018
13:48:19
геморой? Пардон сильная головная боль*

Mikhail
25.06.2018
13:48:46
ну серьезно, в каком месте получается лучше?

Kirill
25.06.2018
13:48:46
Тред не блокируем?

Mikhail
25.06.2018
13:49:27
все равно где-то какой-то тред ждет ответа

Sergey
25.06.2018
13:49:37
а какой профит от всей этой асинхронности?
экономия на потоках и всем связанным с ними

не в каждом проекте jdbc юзается

Роман
25.06.2018
13:50:05
а это точно всегда нужно? Скажем для игрового сервера норм будет?

Если он из 20 разных мест тыкается в бд

при том каждый раз в разную может

Kirill
25.06.2018
13:51:05
все равно где-то какой-то тред ждет ответа
Нет, если это была корутина, то никто не ждёт.

Kirill
25.06.2018
13:51:21
Тред занят другой рутиной.

Sergey
25.06.2018
13:51:40
Нет, если это была корутина, то никто не ждёт.
он про то что все равно есть отдельный пул jdbc, который блокируется

Kirill
25.06.2018
13:52:22
он про то что все равно есть отдельный пул jdbc, который блокируется
Ну нам везут не блокирующий jdbc, насколько я знаю. Пока да, тут не обойти.

Mikhail
25.06.2018
13:53:35
Ну нам везут не блокирующий jdbc, насколько я знаю. Пока да, тут не обойти.
если не сделаю возможность подпихнуть свою неблокирующюю реализацию io, то это будет все равно что блокирующий jdbc + пул потоков

Sergey
25.06.2018
13:53:49
у меня есть сервис завязанный на IO, где среднее время ответа 5 секунд, и из них 98% это время ожидания и чтобы поддерживать кучу клиентов, нужно держать много потоков в пуле сервера, иначе они быстро кончаются

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