
Aleh
24.09.2018
09:31:17
зачем присылать id внутренних структур неясно
или вообще зачем присылать с фронта то, что не может изменится

Dmitry
24.09.2018
09:37:11
э…
а как идентифицировать сущности для обновления, если не знать их id?
есть папка с пронумерованными листами. я отправил папку юзеру, он на некоторых написал, а некоторые выбросил и отал мне папку обратно.
как без id листа обновить состояние оного?

Google

Aleh
24.09.2018
09:38:30
зачем вам обновлять? Выкиньте старую папку, из того, что вам прислал пользователь создайте новую
не понимаю задачи, не могу советовать решение. Если вы уже знаете агрегат, то дальше все достаточно просто. Если у вас там какие-то мутабельные списки в агрегате, то вероятно стоит разделить агрегат

Dmitry
24.09.2018
09:52:23
мм…
выкинуть — вариант, наверное.
но мне ещё нужно сохранить состояние в базе. и чтобы выкинуть нужно будет вначале вычистить всё из базы по связям, а потом сохранить новую папку, получив побочкой ещё и новый автоинкремент ключей.
а юзер всего лишь поменял тайтл в одном листе
а у папок несколько уровней вложенности
возможно, вместо DTO с конечным состоянием папки более красиво сделать Event Sourcing на фронте и кормить агрегат изменениями, но это немного времязатратно в данный момент
поэтому отдаю наружу id, чтобы обновить существующее и добавить отсутствующее

Aleh
24.09.2018
10:04:21
если пользователь работает с конкретным элементом и что-то в нем меняет, то может это и есть корень агрегата?

Dmitry
24.09.2018
10:20:32
насколько я понимаю, агрегат — штука для обеспечения согласованности данных
в моём случае, при добавлении листа в папку нужно проставить связи между листами. т.е. нельзя просто так взять и положить лист в папку.
поэтому корень агрегата — всё-таки папка.
и при этом пользователь может изменить заголовок листа…
но ведь всё равно это изменение проходит через корень агрегата

knopkod4v
24.09.2018
10:23:38

Sergey
24.09.2018
10:23:59
папка корень агрегата но файлы не входят в этот агрегат. и списки тоже. Тебе нужна только айдишка списка
иначе с твоими тремлениями ты закончишь на том что у тебя естть один корень агрегата на вообще все операции (поскольку это единственный способ убедиться в консистентности всех связей). А это не практично

Aleh
24.09.2018
10:25:06
да, ФС хорошая аналогия, папка - корень агрегата и файл тоже корень агрегата, они могут быть связаны айдишками

Bohdan
24.09.2018
10:44:00
то есть, корень агрегата - это папка, список файлов в ней - внутри агрегата
но файлы - не внутри
так?

Sergey
24.09.2018
10:45:28
типа того, только идентификаторы

Google

Sergey
24.09.2018
10:45:29
табличка
ассампшен папки - что идентификатор файла валиден

Bohdan
24.09.2018
10:47:01
вместо списка?

Aleh
24.09.2018
10:47:24
список айдишек)

Bohdan
24.09.2018
10:47:33
ну это и имел ввиду
теперь у меня вопрос - доменные ивенты
представим, что у нас есть та же самая папочка с файликами и файлики в ней
я могу делать энное количество действий над файликами и над папочкой
но когда я удаляю файл из папки - кто должен выбросить ивент?
папка? потому, что файл - это ее часть
или файл? потому, что удаляют его, и сообщает об этом он (прощается, бгг)

illiatshurotshka❄️
24.09.2018
11:24:46

Bohdan
24.09.2018
11:24:57
окей, другая аналогия - коробка и вещи в коробке
коробка не владеет вещами, а просто их хранит

illiatshurotshka❄️
24.09.2018
11:26:34

Yury
24.09.2018
11:26:47
Думаю - папка. Она удаляет файл из списка и бросает ивент

Bohdan
24.09.2018
11:27:22
давай не будем уточнять детали)
вот еще подобная аналогия - телефонная книга и контакт в ней

illiatshurotshka❄️
24.09.2018
11:28:01
ну собственное существование вообще не должно быть вопросом объекта
т.е. по-моему он не должен заботится о создании себя, удалении себя

Bohdan
24.09.2018
11:29:06
да, согласен, хороший поинт

Yury
24.09.2018
11:29:26
А у вещи внутри есть ссылка на "хозяина"?
Наверное зависит от контекста.

Bohdan
24.09.2018
11:29:56
в моем кейсе есть, хоть я до сих пор не уверен в том, что это реальная бизнес-необходимость, а не сделано на поводу у UI

Google

Yury
24.09.2018
11:33:01
Какой запрос с UI, где требуется эта ссылка?

Bohdan
24.09.2018
11:34:03
Для чего?
ну типа для того, чтобы вещь знала, где она лежит
но это, в принципе, уже другая дискуссия - с ивентом я согласен

Yury
24.09.2018
11:35:12
У меня вопрос.
Есть у кого-нибудь примеры, связи ограниченных контекстов напрямую внутри одного инстанса? Все примеры, которые я вижу используют еще и микросервисы и обычно это http или mq связь.
Я понимаю преимущества микросервиса. Просто если пока 1 сервак в проекте, не хотелось бы с точки зрения перформанса поднимать по инстансу на контекст. Хотелось бы сохранить четкие границы, чтобы потом лекго было перейти на микросервисы.
Возможно вопрос тупой, тогда поправьте плиз меня.

Sergey
24.09.2018
11:42:50
докеры, процессы отдельные... все спокойно может лежать на каком-нгибудь ts.micro

Yury
24.09.2018
11:47:58
В принципе сейчас все работает на одном инстансе приложения. И огр. контексты разбиты по модулям. Работают через более менее понятные интерфейсе. Мне стало интересно как описать эту границу более четко, чтобы в коде было конкретно видно где она. Именно на практике.

Sergey
24.09.2018
14:17:50
профит микросервисов не в декомпозиции а в независимом деплое (что бы делать независимое рассписание деливери разных команд). Это больше про управление и скейлинг людей. И да, этот подход пиздец чувствителен к кривой декомпозиции
просто в монолитах можно делать все то же самое но проще. И пока у тебя нет необходимости делать абсолютно независимую деливери продукта по разным людям - нет нужны в микросервисах.
а если у тебя с декомпозицией все хорошо - переход на микросервисы дело не хитрое


Nikita?️?
24.09.2018
14:53:57
Задача: отсортируйте список чисел.
Американский программист:
q []=[]; q (x:xs) = q [y | y <- xs, y < x] ++ [x] ++ q [y | y <- xs, y >= x]
Русский программист:
#включить <conio.h>
общедоступная функция Главная(пусто): пусто;
переменная
результат: список[0..9000] типа число;
начало
...

Bohdan
24.09.2018
14:54:43
а что, если я скажу тебе, что здесь не только "русские" сидят?

Sergey
24.09.2018
14:55:24

Bohdan
24.09.2018
14:55:43
чет прям второй заход пошел
аж хочу посмотреть, что еще выдаст

Aleh
24.09.2018
14:56:16
еще невалидного хаскеля в тред

Bohdan
24.09.2018
14:56:33
я вон мало в своей жизни невалидного хаскеля видел

Google

illiatshurotshka❄️
24.09.2018
15:14:24

Sergey
24.09.2018
15:14:45
нелегкие - дарт?
не, я с ангуляром уже года полтора не работал. сча реакты