
dimiii
15.07.2018
11:59:00
Всем привет, хочу спросить совет. пишу GUI (javaFX) програмку для себя, и для работы с БД решил попробывать Exposed (давненько хотел), и там есть 2-а подхода, DSL и DAO, главное отличие что во втором варианте есть модели, я уже к ним привык, но проблема в том что мне нужно делать модели и для FX, в итоге 2-е модельки. Вот думаю какой подход выбрать, ведь модельки из DAO обновляють бд ?
Так, тему замяли, но бампну-ка я этот вопрос. Тоже интересно, кто что практикует.

1337
15.07.2018
12:00:17

Bogdan
15.07.2018
12:01:07

Alexander
15.07.2018
12:01:51

Google

Alexander
15.07.2018
12:03:13

Bogdan
15.07.2018
12:09:23

Alexander
15.07.2018
12:11:54
У меня нет личного опыта, но если моделей много, можно напороться. Все изменения надо будет делать в двух местах. Лучше сделать DSL генератор, который будет сам генерить и View и DB-модель и обойтись без орма.

Bogdan
15.07.2018
12:22:13
просто тулза для автоматизации

Alexander
15.07.2018
12:24:46
По-моему, это не будет работать. Но я не уверен

Bogdan
15.07.2018
12:26:42

Alexander
15.07.2018
12:35:39
Явовские рефлекты поля котлиновского интерфейса видеть не будут
Да и вообще какая-то химера получается
Можно использовать всеми не любимые класс делегаты

Igor
15.07.2018
13:29:47
А в anko-sqlite ктo-нибудь делал composite primary key?

Eugeny
16.07.2018
08:08:36

Google

Konstantine
16.07.2018
08:09:12

Andrew
16.07.2018
08:10:49

Eugeny
16.07.2018
08:12:32
Спасибо
Прочитал. Ну, нормально. Для простых флюксов подойдёт. Один момент - корутины в каналах же нормальные hot корутины? То есть начинают работать с момента send?

Ivan
16.07.2018
08:43:00

Badya
16.07.2018
08:47:15

Konstantine
16.07.2018
08:48:38

Anton
16.07.2018
08:49:03
да ты меньше слушай эти вбросы и не обращай внимания)

Quantum Harmonizer
16.07.2018
08:49:31
Rx, может, и крутая штука, но для решения очень узкого круга задач. И он вовсе не про ту асинхронность, которая нам нужна в андроиде.


Yehor
16.07.2018
08:50:54
class Dependency {
var someString: String? = null
}
class Foo(val dependency: Dependency) {
val bar = dependency.someString
}
val dependency = Dependency()
dependency.someString = "string 1"
println(dependency.someString)
val foo = Foo(dependency)
println(foo.bar)
dependency.someString = "string 2"
println(dependency.someString)
println(foo.bar) // expected "string 2
кто может подсказать почему переменная получает значение по геттеру только во время инициализации класса, а не при каждом запросе к переменной?
даже есть установить var а не val

1337
16.07.2018
08:50:55
хз реактор ахуенный

Badya
16.07.2018
08:51:06

Andrew
16.07.2018
08:51:34

Igor
16.07.2018
08:52:15

Quantum Harmonizer
16.07.2018
08:52:28

Eugeny
16.07.2018
08:52:29

Konstantine
16.07.2018
08:53:02

Google

Andrew
16.07.2018
08:53:04

Quantum Harmonizer
16.07.2018
08:53:39

Konstantine
16.07.2018
08:53:57

Eugeny
16.07.2018
08:54:39

Konstantin
16.07.2018
08:55:04

Igor
16.07.2018
08:55:24

Andrew
16.07.2018
08:55:32

Eugeny
16.07.2018
08:56:22
А, понял
Для асинхронщины просто корутины, которые стартуют сразу. Если параллельная обработка, то send нужное количество раз и подписаться на receive и при первом receive стартанут все 10 корутин в канале, так?

Andrew
16.07.2018
08:59:33

Igor
16.07.2018
08:59:33
Отлично ложиться на многие места:)
Технология сложная и никак не форсит от размазывание ее везде по коду (и даже в бизнес логику ее засовывают).
А на самом деле очень мало кейсов, где она реально полезна.

Andrew
16.07.2018
09:00:21

Eugeny
16.07.2018
09:00:27
Reactor с .parallel() наше всё


Andrew
16.07.2018
09:03:02
А, то есть вообще никакого параллелизма из коробки. Ну как rxjava с флетмапом обсерваблов костылем
Корутины изначально об асинхронности, за параллелизм отвечает контекст, на котором стартуют корутины. Контекст (точнее, диспетчер) можно создать, например, из экзекьютора с нужными параметрами по потокам, а можно обеспечить контекст, привязанный к конкретному UI-потоку для Android, JavaFX, etc. Можно сделать себе несколько разных диспетчеров -- отдельный под I/O, отдельный под вычисления тяжёлые, и будет тебе аналог шедулеров из рх.


Igor
16.07.2018
09:06:44
Корутины изначально об асинхронности, за параллелизм отвечает контекст, на котором стартуют корутины. Контекст (точнее, диспетчер) можно создать, например, из экзекьютора с нужными параметрами по потокам, а можно обеспечить контекст, привязанный к конкретному UI-потоку для Android, JavaFX, etc. Можно сделать себе несколько разных диспетчеров -- отдельный под I/O, отдельный под вычисления тяжёлые, и будет тебе аналог шедулеров из рх.
Вот кстати IO диспатчер явный признак хреновости платформы (Андроид), тк нормальное io должно быть из коробки асинхронным (nio в джаве)

Andrew
16.07.2018
09:09:40
Хотя NIO ж вроде есть в ведре, если я не ошибаюсь, пусть и без NIO2.

Yehor
16.07.2018
09:12:11

Google

Alexander
16.07.2018
09:49:47

Eugeny
16.07.2018
09:51:41
Ну, если прямо надо, то просто луп корутин и foreach await().

Alexander
16.07.2018
09:52:48

Quantum Harmonizer
16.07.2018
09:54:13

Alexander
16.07.2018
09:55:29
Много там всего слишком. Собственно та же проблема, что и в яве. Надо заново все переписать, отказаться от R и еще много чего, но во-первых дорого, во-вторых, сколько времени пройдет, пока кто-то начнет на этом писать?

Admin
ERROR: S client not available

Alexander
16.07.2018
09:56:04
Хотя есть довольно положительный опыт перехода Эплов на свифт. Там тоже боялись, что не пойдет.

Igor
16.07.2018
09:59:49

Andrew
16.07.2018
10:00:50

Igor
16.07.2018
10:01:18
А мне нравится, был же robovm со своей JVM в комплекте на ios

Alexander
16.07.2018
10:04:40

dimiii
16.07.2018
10:10:09

Quantum Harmonizer
16.07.2018
10:11:26

Bogdan
16.07.2018
10:11:57

Andrew
16.07.2018
10:13:07

dimiii
16.07.2018
10:13:42

Quantum Harmonizer
16.07.2018
10:14:29

Google

Konstantin
16.07.2018
10:18:56

OlegKrikun
16.07.2018
10:32:03

Andrew
16.07.2018
10:33:11
WorkManager ??????
Вязаться на плейсервисы для планирования задач — ну не знаю, никогда этого не понимал.

OlegKrikun
16.07.2018
10:34:22

Quantum Harmonizer
16.07.2018
10:37:39

Andrew
16.07.2018
10:38:18

OlegKrikun
16.07.2018
10:41:05

Mikhail
16.07.2018
10:42:01
ну Evernote android-job
Он же под капотом все равно вяжется на play services если хочешь его использовать на 4ках, разве нет?

Quantum Harmonizer
16.07.2018
10:42:29

OlegKrikun
16.07.2018
10:44:02
есть ещё вот такая шняжка https://github.com/Doist/JobSchedulerCompat

Anton
16.07.2018
10:45:02
на 4ках вроде наоборот там алармменеджер

OlegKrikun
16.07.2018
10:45:30
на 4ках вариантов тока два аларм и через плейсервисы

Quantum Harmonizer
16.07.2018
10:46:32
интересно, а... ой, блин, мы ж не в андроидном чате

OlegKrikun
16.07.2018
10:48:19
А так, я вот в тока начавшемся проекте заюзал workmanager (с надеждой что оно не будет сломанно в будущем =))) и доволен как слон пока что

Anton
16.07.2018
10:50:35
через год что нибудь новое придумают и обьявят его deprecated ?

Igor
16.07.2018
10:51:39
Тoваpищи, стoлкнулся с интеpеснoй дилеммoй: есть priority-job-queue, в кoтopoй нужнo в jobах испoльзoвать тoлькo Serializable паpаметpы пo oчевидным пpичинам.
И вoт есть у меня oдин такoй job, в кoтopый идет Either<UpdateModel, CreateModel> гpубo гoвopя. Мoжете пoделиться свoим мнением, наскoлькo плoхая затея делать
Either: Serializable
?

OlegKrikun
16.07.2018
10:51:52