@kotlin_lang

Страница 239 из 982
Vlad
08.07.2017
14:46:51
Ну вот смотри у меня типичный класс



TokenAuthenticationService - это мой обычный интерфейс, у которого естьTokenAuthenticationServiceImpl, помеченный @Service

В любом джава-проекте у меня слева будет иконка на бин, который в этот конструктор завайрится.

Google
Vlad
08.07.2017
14:48:47
и так практически везде. Я нашел отображение ссылок только в Configuration-классе, вот например



Но и тут не обошлось без проблем: при нажатии на эту ссылку, мне показывается совсем неадекватный список бинов



Нажатие на любой из них приведет меня в один и тот же бин, так что почему он такой огромный - для меня загадка

Ну или вот типичное действие: хочу перейти в реализацию метода интерфейса (реализация в проекте одна)

жму Ctrl+Alt+щелчек на нужном методе



В любом джава-преокте я бы сразу перешел куда мне надо. Для котлин-проекта идея зачемто предлагает 2 варианта. Первый - тот что нужен, имплементация. Второй же поведёт в декларацию (зачемто, я ведь запрашивал реализацию). В итоге чтобы навигироваться по проекту надо делать в два раза больше щелчков чем в нормальном джава-проекте

Короче как то совсем сыро

Михаил
08.07.2017
14:57:09
у меня был тоже косяк связанные со спрингом. в конфигурации почему-то не видел апп класса. приходилось к классу руками Kt дописывать (при том что он выделялся красным, но при этом только в таком случае все работало)

Vlad
08.07.2017
15:00:20
Думаешь? Ну хз, у меня @SpringBootApplication точно определился, и спринг контекст подтянулся как пишет идея

Google
Михаил
08.07.2017
15:01:18
мб пофиксили

Vlad
08.07.2017
15:03:09


у меня даже kotlin-spring плагин применен

Михаил
08.07.2017
15:06:19
кстати. те кто знает корутины подскажите launch(UI) { run(CommonPool) } do() } doNext() }

в этом случае гарантируется что doNext() выполнится после do()?

и если я допустим заменю run(CommonPool) на launch(CommonPool), то тогда без джоина doNext() не дождется выполняния do()?

Igor
08.07.2017
16:54:43
Новая видое про корутины от Avito (вроде еще не было). Рассказывают про библиотеку Романа, разбирает виды лаунчеров, контекстов, диспетчеров. https://youtu.be/VnbUBHJm6zY

Какую жесть оказывается можно делать (складывать контексты (только я думал что понял корутины ?)) https://i.gyazo.com/e969e7a5d6bfddc31743d7918087dcae.png (это из видео выше)

Igor
08.07.2017
17:00:36
видел но не понял что это значит с практической стороны
В видео объясняется (сам первый раз увидел). Только надеюсь что это не типичный корутиновый код.

Михаил
08.07.2017
17:01:32
сообразил. я контекст немного неправильно воспринимал

Dmitry
08.07.2017
17:15:04
Можно создать джобу и передавая ее в контекст разных корутин, можно будет в дальнейшем закенселить их всех, просто закенселив созданную джобу

видел но не понял что это значит с практической стороны

Igor
08.07.2017
17:15:33
Новая видое про корутины от Avito (вроде еще не было). Рассказывают про библиотеку Романа, разбирает виды лаунчеров, контекстов, диспетчеров. https://youtu.be/VnbUBHJm6zY
И конечно нельзя было закончить без фразы “а вот в C# 2 ключевых слова, а у нас 1 и интерфейсики” (но они не считаются)

Михаил
08.07.2017
17:41:50
кейс: есть класс, все публичные методы которого должны выполнятся после завершения определенной операции. async/await это то что мне нужно или есть более подходящие вещи для этого в корутинах?

class TextHolder { private val defferedText: Deferred<String> = async(CommonPool) { createText() } private suspend fun createText(): String { delay(2000) return "text" } fun getText(): String = runBlocking { textGetting.await() } }

есть возможность это лучше сделать? ведь если там будет методов даже пусть 20, то каждый раз писать runBlocking { textGetting.await() } ?

Google
Михаил
08.07.2017
17:46:09
Ты делаешь какую-то дичь. Ну сделай ты (suspened) фабрику по старинке.
фабрика мне не поможет. если ближе к реальности есть у меня допустим репозиторий, все паблик методы которого я могу только после загрузки данных дергать.

вот интересно как это красивее решить на корутинах

Igor
08.07.2017
17:55:59
фабрика мне не поможет. если ближе к реальности есть у меня допустим репозиторий, все паблик методы которого я могу только после загрузки данных дергать.
Бред конечно, но что если изменить подход. Сделай актор (заодно выучишь хайповую технологию), которому ты вместо вызова разных методов, будешь посылать меседжи, внутри их паттернматчить и возвращать ответы и все это асинхронно. Из главного плюса что у тебя будет по факту только 1 метод, в котором ты и вызовешь textGetting.await() в начале (типичный актор) https://i.gyazo.com/70ac425e55b405d42f4573d0f4ddac2d.png

Igor
08.07.2017
18:08:46
А было бы прикольно сделать андроид приложение на этих легких акторах (когда-то _давно_ даже пытался akka внедрить в android). В чате про "архитектуру" все бы обзавидовались))

Михаил
08.07.2017
20:45:32
passportNumber?.filter { it.isDigit() }?.substring(5..passportNumber.length)

почему в этом случае смарткаст не работает?

passportNumber.length не дает

ведь по идее если зашло в substring значит не null

хотя тут функцию можно заменить на drop, но все равно непонятно почему

Denis
08.07.2017
20:54:30
В kotlin native можно использовать java библиотеки?

Umren
08.07.2017
21:10:42
нет

Андрей
08.07.2017
21:21:20
ведь по идее если зашло в substring значит не null
а passportNumber - это локальная переменная?

Михаил
08.07.2017
21:22:19
Это переменная ресивера екст функции

Допер. Она же var в ресивере

Антон
08.07.2017
21:22:49
почему в этом случае смарткаст не работает?
Потому что passportNumber это не локальная переменная и котлин думает что она может быть изменена

DarkMentat
08.07.2017
21:23:26
или что она может быть с кастомным геттером

Denis
08.07.2017
22:00:17
нет
нельзя?

Umren
08.07.2017
22:00:39
Denis
08.07.2017
22:01:16
а чем тогда пользоваться, какими библиотеками?

Google
Umren
08.07.2017
22:01:33
Сишными

Denis
08.07.2017
22:03:30
их удобно вызывать, удобнее чем через jni?

Boris
08.07.2017
22:38:55
Котлин Нейтив вызывает нативный код напрямую без всяких посредников

Admin
ERROR: S client not available

Михаил
08.07.2017
22:39:51
не предвидится конвертер снейк кейса в кэмел?)

а то блин половина методов будет так половина сяк

Boris
08.07.2017
22:41:19
Это кстати неплохая идея

DarkMentat
08.07.2017
22:50:23
кстати да! иногда на си или раст смотрю и отторжение чувствую из-за этого)

whalemare
09.07.2017
03:38:54
Заходим и репортим как спам

Umren
09.07.2017
03:56:18
лол, майнить надо было лет 5 назад, а эти ребята только проснулись

whalemare
09.07.2017
03:56:39
хайпово ж

Umren
09.07.2017
03:56:48
осталось продать курсы по майнингу

норм тема думаю, разойдется как пирожки

DarkMentat
09.07.2017
07:19:10
ну видимо они это и делают, продают)

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

Михаил
09.07.2017
13:19:00
по какому принципу плагин котлина решает стоит ли инлайнить функцию или нет?

он иногда выделят, что не стоит тут инлайн ставить, а иногда нет

Igor
09.07.2017
13:20:24
Когда есть reified дженерики или лямбда параметром. Зачем без этого инлайнить то (хотспот заинлайнит)? Kotlin Inline это же НЕ оптимизация, а фича языка ?

Artem
09.07.2017
13:49:26
Инлайнить стоит, когда есть лямбда. Нет — не надо

Где-то читал это, но не помню где (

Google
DarkMentat
09.07.2017
14:19:59
Правда то, что хотспот заинлайнит на далвике - не аргумент ?

kle
09.07.2017
15:29:21
Добрый день. Мне тут нужно на БД на сервере закинуть данные из мобильного приложения, подскажите, пожалуйста, как это лучше всего сделать? Какие есть удобные либы или чет-такое?

Igor
09.07.2017
15:35:19
kle
09.07.2017
15:38:57
спасибо, если кто-то еще знает что-то - буду рад прочитать, бэк на node

Artem
09.07.2017
16:34:03
Ребят, где-то тут кто-то кидал видос с докладом о корутинах (не Романа Елизарова). Быть может у кого-то есть линк? Забыл сохранить для просмотра

Sergey
09.07.2017
16:35:30
вообще он прям прилеплен к группе)

Artem
09.07.2017
16:35:35
ой ёй. Я каким-то странным образом пролистал. Оно тут совсем недалеко выше) Сорри за то, что потревожил)

читайте внимательно моё сообщение

Sergey
09.07.2017
16:36:02
а пардон

Новая видое про корутины от Avito (вроде еще не было). Рассказывают про библиотеку Романа, разбирает виды лаунчеров, контекстов, диспетчеров. https://youtu.be/VnbUBHJm6zY

это?

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