Size: a a a

2020 April 22

RS

Roman Sharkov in Go-go!
эм… здесь как-бы про ситуацию, когда UI отправителя отображает успех, которого ещё не произошло

а у вас сообщение уже разослалось некоторым из адресатов, это совершенно не про optimistic update, это про inconsistent update 😂
источник

NG

Nikita Gritsai in Go-go!
Roman Sharkov
ну тогда я не понимаю кому такой мессенджер будет нужен
у меня даже сразу появилась идея как его назвать: Saboteur
у вас каждое сообщение не попадает в бд?
источник

NG

Nikita Gritsai in Go-go!
Roman Sharkov
эм… здесь как-бы про ситуацию, когда UI отправителя отображает успех, которого ещё не произошло

а у вас сообщение уже разослалось некоторым из адресатов, это совершенно не про optimistic update, это про inconsistent update 😂
где там написано про отправителя слово?
источник

RS

Roman Sharkov in Go-go!
Aikidos
Опять ругается народ.
Можете посмотреть, кстати, как API телеграмма работает, в плане оповещения бота об изменениях. Это не тоже самое, что и мессенджер, в целом, но идеи там похожие, я думаю.

> если я открою чат с другого своего девайса - я не увижу сообщения
> если я открою чат после удаления cache’а браузера - я не увижу сообщения

Отправите тот же update_id ваш и получите все изменения, которые произошли после.
Можете отдельно сделать метод на получение всех сообщений.
как это всё поможет, если сообщение физически больше не существует поскольку оно пропало при неуспешной записи в бд? 🙃
источник

x

x-foby in Go-go!
Зачем вы кидаете в меня SO-скриншотом?
Я и без этого прекрасно знаю, что такое optimistic UI.

И optimistic UI не имеет отношения к другим клиентам, в отличие оттого, что вы говорите.
Optimistic UI — это когда я отправил сообщение, и оно сразу же отобразилось у меня на клиенте.
Потом если оно записалось в базу, то оно отправилось всем остальным клиентам и отобразилось у них, а если не записалось, то не отправилось всем остальным клиентам, а у меня отобразилось с ошибкой (или удалилось, если UX не важен)
источник

NG

Nikita Gritsai in Go-go!
x-foby
Зачем вы кидаете в меня SO-скриншотом?
Я и без этого прекрасно знаю, что такое optimistic UI.

И optimistic UI не имеет отношения к другим клиентам, в отличие оттого, что вы говорите.
Optimistic UI — это когда я отправил сообщение, и оно сразу же отобразилось у меня на клиенте.
Потом если оно записалось в базу, то оно отправилось всем остальным клиентам и отобразилось у них, а если не записалось, то не отправилось всем остальным клиентам, а у меня отобразилось с ошибкой (или удалилось, если UX не важен)
почему optimistic UI не имеет отношения к другим клиентам?) опять оно комуто “должно”)
источник

NG

Nikita Gritsai in Go-go!
источник

x

x-foby in Go-go!
Nikita Gritsai
почему optimistic UI не имеет отношения к другим клиентам?) опять оно комуто “должно”)
Ну потому что не имеет.
Потому что optimistic UI — это про UX, а UX — это про мою работу с моим клиентом, а не про то, как у кото-то там.

А то что вы как-то по-своему это толкуете, это, конечно, странно, но ок — толкуйте.
источник

RS

Roman Sharkov in Go-go!
Nikita Gritsai
где там написано про отправителя слово?
там про UI

если внимательно читать то суть ясна: наш UI предполагает, что side-эффект на сервере прошёл успешно.

в случае мессенджера optimistic update выглядит так:
1. я послал сообщение
2. оно сразу отобразилось в моём чате как отосланное (optimistic update)
3. сервер пыхтел пыхтел да ошибку отдал
4. UI пометило сообщение флагом “невозможно было отправить это сообщение, повторим?”

причём заметьте, кроме нас это сообщение никто ещё не видел! И это очень важно!

то что описываете вы, к optimistic update не имеет отношения, это называется inconsistent update
т.е. мы не только отобразили у нас в UI сообщение но и уже отослали его некоторым из получателей. Те кто были в сети - получили его, а те кто не был - пока ещё нет.
Следственно, если UI наша синхронизируется из бд то получится так, что некоторые адресаты сообщение увидят, а те кто не был онлайн и синхронят из бд - не увидят. Да и сами мы после очистки кэша больше не восстановим сообщение, ибо его нет в бд
источник

A

Aikidos in Go-go!
x-foby
Ну потому что не имеет.
Потому что optimistic UI — это про UX, а UX — это про мою работу с моим клиентом, а не про то, как у кото-то там.

А то что вы как-то по-своему это толкуете, это, конечно, странно, но ок — толкуйте.
^ this

Другие клиенты не должны получать какие-то сообщения, работать с сообщениями, которые не удалось записать/отправить. Это же логично)
источник

x

x-foby in Go-go!
Aikidos
^ this

Другие клиенты не должны получать какие-то сообщения, работать с сообщениями, которые не удалось записать/отправить. Это же логично)
Ну вот и мне не понятно, почему это нужно объяснять
источник

NG

Nikita Gritsai in Go-go!
Roman Sharkov
там про UI

если внимательно читать то суть ясна: наш UI предполагает, что side-эффект на сервере прошёл успешно.

в случае мессенджера optimistic update выглядит так:
1. я послал сообщение
2. оно сразу отобразилось в моём чате как отосланное (optimistic update)
3. сервер пыхтел пыхтел да ошибку отдал
4. UI пометило сообщение флагом “невозможно было отправить это сообщение, повторим?”

причём заметьте, кроме нас это сообщение никто ещё не видел! И это очень важно!

то что описываете вы, к optimistic update не имеет отношения, это называется inconsistent update
т.е. мы не только отобразили у нас в UI сообщение но и уже отослали его некоторым из получателей. Те кто были в сети - получили его, а те кто не был - пока ещё нет.
Следственно, если UI наша синхронизируется из бд то получится так, что некоторые адресаты сообщение увидят, а те кто не был онлайн и синхронят из бд - не увидят. Да и сами мы после очистки кэша больше не восстановим сообщение, ибо его нет в бд
я называю это eventualy consistent update))
источник

RS

Roman Sharkov in Go-go!
Nikita Gritsai
я называю это eventualy consistent update))
к eventual consistency это не имеет никакого отношения. Eventual consistency = согласованность будет, но позже

а тут согласованности не будет никогда, сообщение пропало бесследно
источник

x

x-foby in Go-go!
Nikita Gritsai
я называю это eventualy consistent update))
Не хотел бы я пользоваться вашим мессенджером или не дай боже платёжным шлюзом
источник

NG

Nikita Gritsai in Go-go!
Aikidos
^ this

Другие клиенты не должны получать какие-то сообщения, работать с сообщениями, которые не удалось записать/отправить. Это же логично)
я зделаю retry и оно пройдет в базу, все клиенты увидели сообщение все довольны не ждут пол часа, не пройдет - удалю с клиентов no preblem (раз на милион никто не заметит)
источник

A

Aikidos in Go-go!
Оплатил заказ, приехал курьер, протягивает пиццу и такой, "стоп. в БД не записалось. отдай пиццу обратно!"
источник

x

x-foby in Go-go!
Aikidos
Оплатил заказ, приехал курьер, протягивает пиццу и такой, "стоп. в БД не записалось. отдай пиццу обратно!"
Ну чё ты начинаешь?
раз на милион никто не заметит
источник

NG

Nikita Gritsai in Go-go!
Переслано от snip
Вы же не знаете как оно там используется и для чего, зачем додумывать и натягивать на свой придуманный кейс?
источник

A

Aikidos in Go-go!
Aikidos
Оплатил заказ, приехал курьер, протягивает пиццу и такой, "стоп. в БД не записалось. отдай пиццу обратно!"
- ну вы ретрай сделайте(
источник

NG

Nikita Gritsai in Go-go!
сначала это чат потом заказ, какие ваши кйсы мне еще защитить?)
источник