
Valentin
28.04.2018
13:37:59
реляционные БД, думаю, все блокирующие

Viach
28.04.2018
13:38:03
О_о ты что-то много накрутить хочешь за раз. @ManyToMany скорее про достаточно сложные реляционные отношения, уверен что в монге такое наварачивать стоит?

Ivan
28.04.2018
13:38:20
могу предпололжить, что для монги написан костыль, который уже и не костыль ибо работает нормльно

Google

Valentin
28.04.2018
13:39:23
Впринципе, в монго возможны связи. Если уже очень хочется реактивщины, то можно пожертвовать. Насколько это оправдано - вопрос

Ivan
28.04.2018
13:39:48

Valentin
28.04.2018
13:40:04
я бы тоже побоялся )

Ivan
28.04.2018
13:40:33

Viach
28.04.2018
13:41:17

Valentin
28.04.2018
13:41:50
Oracle is proposing
=)

Viach
28.04.2018
13:42:01
но это скорее будущее, возможно не ближайшее

Valentin
28.04.2018
13:42:32
да и вообще, как может быть acid без блокировок
ин зе фёст плейс, как говорят на руси
….оу..оптимистик локинг же
но на уровне БД должна быть поддержка

Vladimir
28.04.2018
13:44:47

Google

Valentin
28.04.2018
13:45:20
при том что без блокирующего кода нельзя в acid …. (на самом деле можно, как я выше указал, например)

Vladimir
28.04.2018
13:46:00
Это не так

Ivan
28.04.2018
13:46:24
Крутой пропозал, верю что мир в котором блокировки и шардинг решены строго возможен)

Жабра
28.04.2018
13:46:26
JetBrains представила новую возможность языка программирования Kotlin — теперь код можно запускать и тестировать прямо внутри веб-страницы. Разработчики рекомендуют использовать технологию для создания обучающих курсов и примеров в блогах: https://tproger.ru/news/embedded-kotlin/

Valentin
28.04.2018
13:46:55
Это не так
не так, да. Но на уровне СУБД должна быть поддержка, одним драйвером не отделаешься, подозреваю

Viach
28.04.2018
13:47:41
скорее от драйвера там особо уже не зависит, зависит от самой реализации на уровне БД

Vladimir
28.04.2018
13:48:21
Проблема только в драйверах JDBC.
Блокировать текущий поток, ожидая ответа от СУБД, нет никакой необходимости.

Valentin
28.04.2018
13:49:34
но БД должна уметь отдавать асинхронные ответы
наверное.

Viach
28.04.2018
13:50:13

Vladimir
28.04.2018
13:51:02
Со стороны СУБД нет никаких синхронных/асинхронных ответов, она просто пишет данные в сокет. Как клиент будет работать с этими данными или ожидать их наличия - это его дело.

Valentin
28.04.2018
13:51:45
ожидать = блок

Viach
28.04.2018
13:53:11
ты ! вроде пропустил, так проще гораздо реализовать - ждешь и держишь поток

Vladimir
28.04.2018
13:53:25
ожидать = блок
Нет, в этом-то и дело
Одно дело вызвать InputStream.read() и висеть, занимая поток, а другое - использовать асинхронный ввод-вывод

Valentin
28.04.2018
13:54:04
но с другого конца провода кто-то должен сказать “товарищ, для тебя готовы данные, забирай”

Ivan
28.04.2018
13:54:16
Да, это как нода в один поток фигачит, но всё работает на колбеках/промисах/стримах

Viach
28.04.2018
13:54:41

Valentin
28.04.2018
13:55:38
хм…подозрительно реалистичный сценарий

Vladimir
28.04.2018
13:56:04

Valentin
28.04.2018
13:57:54
прост забыл, что в 21 веке есть сокет нио

Google

Ivan
28.04.2018
13:58:20

Viach
28.04.2018
14:04:24

Ivan
28.04.2018
14:09:44
Спасибо парни, буду ещё писать! Пока смотрю спринг по этой книжке, но парни с ютуба так колдуют - такие вещи делают за пол экрана кода - хочется тож так научится)

Лёша
28.04.2018
14:15:09

Ivan
28.04.2018
14:15:20

Лёша
28.04.2018
14:15:55
Тогда возможно подойдёт конструктор с дефолтными параметрами

Valentin
28.04.2018
14:29:03


picty
28.04.2018
14:31:28
e: [kapt] An exception occurred: java.lang.NoClassDefFoundError: org/jetbrains/kotlin/serialization/jvm/JvmProtoBufUtil
[kapt] An exception occurred: java.lang.NoClassDefFoundError: org/jetbrains/kotlin/serialization/jvm/JvmProtoBufUtil
at me.eugeniomarletti.kotlin.metadata.KotlinClassMetadata$data$2.invoke(KotlinMetadata.kt:51)
at me.eugeniomarletti.kotlin.metadata.KotlinClassMetadata$data$2.invoke(KotlinMetadata.kt:50)
at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131)
at me.eugeniomarletti.kotlin.metadata.KotlinClassMetadata.getData(KotlinMetadata.kt)
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:kaptDevelopDebugKotlin'.
__
ext.kotlin_version = '1.2.41'
classpath 'com.android.tools.build:gradle:3.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
Что не так?
с 1.2.31 - всё ок
с 1.2.40 и 1.2.41 - ошибка при сборке на устройство.
Кто сталкивался?
Здесь пишут, что в 1.4.0 пофиксили:
https://github.com/Takhion/kotlin-metadata/issues/8
но что-то в 1.2.41 - этого не видно...


Sasha
28.04.2018
15:02:25


picty
28.04.2018
15:02:53

Sasha
28.04.2018
15:03:43

picty
28.04.2018
15:06:27

Sasha
28.04.2018
15:07:47

picty
28.04.2018
15:11:28

Sasha
28.04.2018
15:14:49

Ivan
28.04.2018
16:05:24
Всем привет еще раз! Вопрос по реактору из спринга
Смотрите, вот это работает. Раз в 5 секунд шлётся ивент. Можно ли сделать так, чтобы collectionChanged был бы не событием раз в 5 секунд, а чтоб при изменении коллекции событие уходило?
Чтоб как Publish Subject из rxJava

Google

Ivan
28.04.2018
16:12:57
Нашёл вот такой ответ https://github.com/reactor/reactor-core/issues/79 и ничего не понял. До этого использовал тока rxjs и использовал спокойно как eventBus
const eventBus = new Subject();
eventBus.subscribe(() => console.log('Событие произошло'))
window.addEventListener('onResize', () => eventBus.next())
Что-то типо того можно? Или плохо так?

You
28.04.2018
17:34:19
у меня есть функция fun <T> getPref(key: String, context: Context): T
можно ли(и если можно, то как) сделать что-то типа
when(T) {
is String -> {}
is Int -> {}
}
?

Quantum Harmonizer
28.04.2018
17:35:21
но вообще, ситуация странная, я б рефакторил

You
28.04.2018
17:35:50
спасибо, погуглю такое

Admin
ERROR: S client not available

You
28.04.2018
17:36:08

Quantum Harmonizer
28.04.2018
17:37:07
ну как бы тайпкастинг/тайпчекинг в целом ататат

Лёша
28.04.2018
17:39:54
Для работы с shared preferences (если они имеются в виду) есть отличная либа Kotpref

You
28.04.2018
17:40:46
а как лучше сделать?
я просто юзаю hawk и одновременно с ним экран с префами, и получается 2 хранилища. Я для удобства в PrefUtil добавил такой метод для получения префа любого типа
inline fun <reified T: Any> getPref(key: String, context: Context): Any {
return when(T::class.java) {
String::class.java -> getStringPreference(key, context)
Int::class.java -> getIntPreference(key, context)
else -> { "todo"}
}
}
как-то так

Quantum Harmonizer
28.04.2018
17:42:32
Я таки Kotpref брал

You
28.04.2018
17:42:34
если вы ели, то извините

Quantum Harmonizer
28.04.2018
17:42:48
?

You
28.04.2018
17:43:05
?
не самое приятное зрелище я скинул)

Quantum Harmonizer
28.04.2018
17:43:42
не ок, можно же любой класс передать, выстрелит

You
28.04.2018
17:43:55

Artem
28.04.2018
17:54:54

Quantum Harmonizer
28.04.2018
17:55:12

Google

Artem
28.04.2018
17:57:43
А зачем либа, если там не так и сложно написать самому

Bogdan
28.04.2018
17:59:06

Artem
28.04.2018
17:59:47

Albert
28.04.2018
18:00:22
Потенциальная

Artem
28.04.2018
18:00:53

Bogdan
28.04.2018
18:02:39
и почему бы с ней не поделится

Igor
28.04.2018
18:03:09
А я вот делегаты юзаю...
А зачем это все?..
Оно же в итоге мутабельное, без "транзакционной семантики", да ещё в рантайме может упасть, если типы не сойдутся.

Quantum Harmonizer
28.04.2018
18:03:11

Artem
28.04.2018
18:04:05

Quantum Harmonizer
28.04.2018
18:06:35
Есть ещё binaryPrefs — огонь в том, что они реализуют интерфейс SharedPreferences. И там тоже куча нюансов (хотя это, конечно, целиком свой формат.)

Mikhail
28.04.2018
18:21:45

Тимур
28.04.2018
18:55:13
а где можно почитать/посмотреть про модель памяти в kotlin native?
гугл что-то упорно выдает ссылки годичной давности, где написано "мы пока еще сами не знаем, как оно будет"

Quantum Harmonizer
28.04.2018
18:59:51

Andrew
28.04.2018
19:19:46