@oop_ru

Страница 779 из 785
Sergey
14.10.2018
21:23:02
оно и в джаве норм делается. и в чем хочешь. Просто в скалах всяких можно много всяких других интересных вещей делать

Aleh
14.10.2018
21:51:36
или вот

так а в чем проблема, чето аля return Promise.all([ firstOp(request), secondOp(request), thirdOp(request, smthElse) ]).then(() => response.ok(), e => response.error(e))

Google
First
14.10.2018
21:51:57
У меня в рубях это зовется Result

и я до сих пор путаю (пишу Either) ?

Aleh
14.10.2018
21:54:09
ну не самая большая проблема)

First
14.10.2018
21:54:28
По сравнению с руби - да, не большая :)

Dmitry
14.10.2018
23:18:41
для джавы ведь есть vavr, там чего-то для описанной выше валидации не хватает разве?

Yury
15.10.2018
16:15:19
http://gorodinski.com/blog/2012/05/19/validation-in-domain-driven-design-ddd/ В этой статье есть такой вывод: It is easier to duplicate validation logic than to keep it consistent across application layers. Согласны ли вы, на практике у вас так и есть или все наоборот?

Adel
15.10.2018
16:16:27
не читая - согласен. дублировать реально проще.

Aleh
15.10.2018
16:27:43
И другие приключения в языках без статической типизации :|

IO всегда надо покрыть валидацией, а дальше уже нет "валидации", дальше уже бизнес-логика

First
15.10.2018
16:30:47
Ты еще either верни Валидировать данные он собрался, ля

Юзерам нужно доверять!

Google
Aleh
15.10.2018
16:32:11
Лучше вообще прям зашмвать в проекте шелл где-нибудь

Чтобы мало ли че, зашел - поправил

Артур Евгеньевич
15.10.2018
16:40:22
не читая - согласен. дублировать реально проще.
Не читая, могу сказать, что скорее всего он под дублированием понимает случайное совпадение, а не полноценное дублирование)

Более подробно выскажусь после прочтения)

Yury
15.10.2018
16:50:14
Если кратко: Он валидирует на UI (он может быть как в браузере, так и на бекенде, так и на desktop). А потом "валидация" происходит еще раз, при создании доменного объекта. Хотя скорее это инвариант а не валидация, но тут есть разногласия что это.

Konstantin
16.10.2018
06:38:49
Юзерам нужно доверять!
Как ты прав. Без доверия жить нельзя

Bohdan
16.10.2018
07:05:59
https://habr.com/company/avito/blog/426101/

Maksim
16.10.2018
07:25:22
отгадай по названию о чём будет идти речь)

я только так и не понял, почему они саги юзают именно в контексте транзакций уровня базы данных. Оно, конечно, может эмулировать одну из буковок, но это больше побочный эффект, как по мне

Aleh
16.10.2018
08:55:09
https://guides.hexlet.io/check-list-of-engineering-practices/

Andrew
17.10.2018
21:00:57
Насколько упоротая идея загнаться идемподентностью, в скажем рест сервисе. Убираем полностью POST запросы, создание и модификация ресурса через PUT. Генерируется id для нового ресурса (uuid например) на строне клиента. Далее, при запросе, если нет объекта создаем его, если есть - апдейтим.

Sergey
17.10.2018
21:02:03
например можно было сделать 1 запрос а приходится делать 4 хитрых но зато ретраи можно делать сколько хочешь

Andrew
17.10.2018
21:02:53
Вот хочу прОщупать эти кейсы. Со связями ресурса например.

Sergey
17.10.2018
21:02:56
но ничего плохого в таких вещах нет, наоборот, если есть возможность

Дмитрий
17.10.2018
21:03:16
> Далее, при запросе, если нет объекта создаем его, если есть - апдейтим это называется upsert

Aleh
17.10.2018
21:05:42
генеришь id ?

Ruslan
18.10.2018
00:21:15
https://yt3.ggpht.com/a-/AN66SAxOlIM2f48DSFSeQZ-SuhYa8e6eKoX0SoVwow=s900-mo-c-c0xffffffff-rj-k-no #распределенный_монолит

Google
Ruslan
18.10.2018
00:21:15
Насколько упоротая идея загнаться идемподентностью, в скажем рест сервисе. Убираем полностью POST запросы, создание и модификация ресурса через PUT. Генерируется id для нового ресурса (uuid например) на строне клиента. Далее, при запросе, если нет объекта создаем его, если есть - апдейтим.

Denis
18.10.2018
02:10:28
самый простой пример идемпотентности это q.state() // {postId: 123, likes: 0} const ev1 = { type: “like”, payload: {user: user, postId: 123} } const ev2 = { type: “like”, payload: {user: user, postId: 123} } q.processEvents(ev1).processEvents(ev2) // {postId: 123, likes: 1}

x * x = x короче

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

Дмитрий
18.10.2018
03:56:03
Точное определение описывает скорее иную форму f(x) === f(f(x))

И она уже не конфликтует с обновлением

Denis
18.10.2018
04:01:26
и структура данных определяет равенство как ей захочется?

Дмитрий
18.10.2018
04:24:40
и структура данных определяет равенство как ей захочется?
Здесь говорится лишь о том, что результат выполнения функции не зависит от количества вызовов, свойства объекта вообще не требуются)

Denis
18.10.2018
04:38:27
с чего бы это вот есть у тебя например операция multiplyOneByX(x), операция будет идемпотентой только в том случае если туда передавать единицу т.е сама операция обладает таким свойством только на одном значении из всех возможных Если у тебя есть массив, то операция конкатенации идемпотентна только на пустых массивах и это же операция полагается на свойство структуры данных(в данном случае наличия нейтрального элемента) Мне сейчас сложно представить где в энтерпрайз практике ты бы реально захотел просто делать f(x) === f(f(x)) везде где только можно, это же имеет смысл только в некоторых случаях для удобства

хотя щяс сообразил что первый пример не верный, но энивей

Страница 779 из 785