@kotlin_lang

Страница 598 из 982
Vladislav
21.03.2018
09:47:16
В java такой проблемы не стояло, потому что компилятор принудительно заставлял проаннотировать методы, а в котлине это как бы не обязательно и теперь приходится методом проб и ошибок глазами находить все места где вставить аннотацию (

Руслан
21.03.2018
09:48:33
Ну а на что это влияет? Почему в AOP ты не можешь сделать e.cause и жить счастливо?

Quantum Harmonizer
21.03.2018
09:49:09
так делают даже прокси из java.lang.reflect

Google
Руслан
21.03.2018
09:50:36
так делают даже прокси из java.lang.reflect
Ну они в спринге и юзаются

Vladislav
21.03.2018
09:50:45
Ну а на что это влияет? Почему в AOP ты не можешь сделать e.cause и жить счастливо?
да, кстати, можно в ErrorController обработать и выдернуть исходное исключение - хорошая идея

попутал, в @ExceptionHandler

Руслан
21.03.2018
09:52:35
Ну идея понятна, добавишь рекурсивную обработку. Типо ловишь UndeclaredThrowableException, берешь cause и обратно вызываешь метод уже с cause

Vladislav
21.03.2018
09:52:52
?

Руслан
21.03.2018
09:53:40
Коммент только добавь нафига так делать)

Ivan
21.03.2018
11:07:55
Товарищи, подскажите такую вещь, в котлин нейтив предполагается что будет модель памяти которая запрещает шарить данные между потоками, и обмен только через посыл сообщений. И теперь классика жанра, аккаунт с даблом, который обозначает количество денег. Пишем программу по перекидыванию денег. Самое интересное что есть требование, не должно быть возможности считать значения из 2х аккаунтов по середине трансфера, т.е. у одного списали, а другому ещё не доставили. Как выполнить такое условие на акторах?

Я с Романом на московском митапе общался, он говорит как-то можно, но я чёт не могу допереть как

Ну понятно, данные держим в памяти, никакой бд нет

Задача чисто академическая, просто чтобы понять подход

Руслан
21.03.2018
11:09:58
Не понимаю в чем проблема. У тебя есть воркеры которые говорят что хотят сделать: переместить деньги с одного аккаунта в другой. И отдельный воркер который получает эти команды и меняет атомарно внутреннее состояние (в пределах воркера).

Quantum Harmonizer
21.03.2018
11:11:47
Я, кстати, пытался решить эту задачу с помощью атомиков на JVM. Пока не получается ?

Dmitry
21.03.2018
11:12:03
http://microservices.io/patterns/data/saga.html

Google
Ivan
21.03.2018
11:12:26
Я, кстати, пытался решить эту задачу с помощью атомиков на JVM. Пока не получается ?
С помощью атомиков невозможно решить эту задачу с указанным требованием

Quantum Harmonizer
21.03.2018
11:12:41
Руслан
21.03.2018
11:12:46
Ну а целом есть же suspend mutex, думаю можно будет и через shared state такие вещи делать, разве нет?

Руслан
21.03.2018
11:13:17
Quantum Harmonizer
21.03.2018
11:13:32
сложна)

Ivan
21.03.2018
11:13:46
Всмысле, а можно без лока?)
Ну по классике это решается через 2 лока на каждом аккаунте

Локи берутся упорядоченно по id чтобы избежать дедлока

Руслан
21.03.2018
11:15:12
Ну по классике это решается через 2 лока на каждом аккаунте
Окей, есть mutex, аккаунты кладем в shared state и обмазываемся mutex'ами при доступе к ним

Ну говорят хотят исключить шаред стейт
Его не исключить. Я так понимаю что просто дефолтовый подход будет посылать сообщения между worker'ами, но тебе же никто не сможет запретить взять и сделать мутабл стейт и стерельнуть в ногу

Ivan
21.03.2018
11:22:31
Его не исключить. Я так понимаю что просто дефолтовый подход будет посылать сообщения между worker'ами, но тебе же никто не сможет запретить взять и сделать мутабл стейт и стерельнуть в ногу
Ну да, но идея в том что мутабл стейт - это что-то вроде рефлекшена, типа только в каких-то экстремальных случаях, а тут атомарное изменение 2х переменных, достаточно популярный кейс, как мне видится

@relizarov Роман, а наверняка думали про STW для модели памяти для котлин нейтив, какие аргументы против были? Сложнее в реализации?

А если платформа поддерживает, то можно и HTW применять для того же кода

Anton
21.03.2018
11:40:20
Как передать несколько функций в качестве параметров?

fun proc( error: Throwable, messageListener: (String) -> Unit = {}, recall: () -> Unit = {} )

не работает

recall почему то вызывается

Anton
21.03.2018
11:41:21
ну код покажи целиком

Google
Anton
21.03.2018
11:42:40
proc( error, { viewState.showEmptyError(show, error.message) }, { refresh() } )

ловлю в итоге Too many follow-up requests: 21

Quantum Harmonizer
21.03.2018
11:43:58
ловлю в итоге Too many follow-up requests: 21
знать бы, где ты это ловишь, от кого, когда...

Anton
21.03.2018
11:49:40
Спасибо, разобрался

Sergey
21.03.2018
11:57:35
Можете задать свой вопрос Бреславу, на конфе во время онлайн сессии его зададут https://docs.google.com/forms/d/e/1FAIpQLSdA7TmzrvuLf_63R5Rsj7iIY5Wf8NW2bl4iJh4P9RHJAO6dUA/viewform

Тимур
21.03.2018
12:05:48
Требуется помощь специалистов по дружбе. Как подружить между собой kapt и idea, чтобы родная сборка из idea запускала annotation processor сделанный через kapt? Через gradle все работает. Про то что галочку которая заменяет в идее родную сборку на gradle в курсе, но мне так не нравится, слишком неудобный output ошибок. В галочку "Enable annotation processing" тоже в курсе, перепробовал менять настройки и так и сяк, никак не хочет работать. Может кто-то поделится работающим примером настроек?

Oleg
21.03.2018
12:41:55
А что такое "родная сборка из idea"?

Тимур
21.03.2018
12:42:50
это когда из меню жмешь кнопочу "Build" еще она запускается по умолчанию перед стартом чего-нибудь

Vladimir
21.03.2018
12:49:51
А что такое "родная сборка из idea"?
Это когда у тебя нет системы сборки, а вместо билд-скрипта окно Project Structure.

Oleg
21.03.2018
12:50:32
Это когда у тебя нет системы сборки, а вместо билд-скрипта окно Project Structure.
Но оно же без системы сборки не запустит проект...

Leonid
21.03.2018
12:50:52
в идее есть своя система сборки)

Bogdan
21.03.2018
12:51:12
ant называется

Leonid
21.03.2018
12:51:19
JPS

Bogdan
21.03.2018
12:51:30
хотя может другая

Vladimir
21.03.2018
12:52:15
ant называется
Не, там не ant, там что-то внутреннее

Oleg
21.03.2018
12:53:17


вроде как ant выделяется отдельно

Vitalii
21.03.2018
12:54:30
https://github.com/JetBrains/JPS

Mikhail
21.03.2018
13:36:04
в последнее время довольно много использую локальные функции, но меня раздражает то, что это портит обьявления через выражение. Есть ли какой-нибудь синтаксический хак, чтобы и рыбку съесть и рыбку съесть?

Google
Mikhail
21.03.2018
13:44:44
fun f(x: T?): R = x?.mapNotNull { <длинная лямбда на пару строк> } ?: emptyList по-хорошему делаю так fun f(x: T?): R { fun lambda ... return x?.mapNotNull(::lambda) ?: emptyList } но хочется и expression чтобы был и локальная функция где-то рядом. топ-левел не предлагать

как нибудь типа where в Haskell

Alexey
21.03.2018
14:00:52
Руслан
21.03.2018
18:39:23
Тизер





Quantum Harmonizer
21.03.2018
18:40:01
Как в сравнении с Netty, есть профит?

Руслан
21.03.2018
18:40:44
Там пока говнокодец, типо: "таак, нужно вот сюда канал, это 10 методов реализовать, да ну в жопу, сделаю стрингу и прокину как есть"

Так что сравнивать с Netty никакого смысла в текущем состоянии

Ivan
21.03.2018
19:59:45
А я чёт не догоняю, в чём тут понт? Вроде так и было в кторе... В смыле я чего-то не вижу?

Руслан
21.03.2018
20:00:06
Пишу Undertow engine для ktor

Ivan
21.03.2018
20:00:18
Ааа

Albert
21.03.2018
20:00:45
Кто нибудь писал на kotlin/native под ios

Ivan
21.03.2018
20:02:25
Круто, да, я забыл что его не было

Kevin
21.03.2018
20:19:26
i have a data class model am trying to create a constructor which takes only 2 items .. Am gettting an error there's a cycle in the delegation calls chain

Here is my Class data class ClassName(var name:String,var yala:String, var symbole:String, var money:String){ constructor(name: String,yala:String) : this(name, yala) { } }

what am i doing wrong ?

Kevin
21.03.2018
20:22:34
Глеб
21.03.2018
20:23:28
How can i go about it ?
Try to pass 4 arguments in this(...) call

Google
Глеб
21.03.2018
20:24:00
Looks like you have 2 constructors and second one calls himself.

Kevin
21.03.2018
20:24:43
Looks like you have 2 constructors and second one calls himself.
so far i have One .. and the default Constructor ...

If i pass it 4 argument then it bring 4 and i only need 2 ..

Глеб
21.03.2018
20:26:11
So... you done something wrong somewhere before this error :)

Try to look at sealed classes, they can help you

Kevin
21.03.2018
20:26:51
Okay

Andrew
21.03.2018
20:26:57
https://kotlinlang.org/docs/reference/classes.html#constructors You should go through documentation sections on constructors and secondary constructors, as you have one primary (4 args) and one secondary (2 args, calling itself) in your class.

Quantum Harmonizer
21.03.2018
20:27:04
If i pass it 4 argument then it bring 4 and i only need 2 ..
You cannot leave two other properties without values.

Maxim
21.03.2018
20:27:17
Here is my Class data class ClassName(var name:String,var yala:String, var symbole:String, var money:String){ constructor(name: String,yala:String) : this(name, yala) { } }
in your additional constructor you trying to call your additional constructor thats why cycling reference error happening

Глеб
21.03.2018
20:28:22
Хм... а чатика по котлину на английском нету?

Maxim
21.03.2018
20:28:28
@kevinjanvier in your case you can use default values for some aruments, like data class ClassName(var name:String,var yala:String, var symbole:String = "", var money:String = "" )

Kevin
21.03.2018
20:28:41
Great

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