
Daniel
09.03.2018
09:47:17
устойчивость - это когда малые изменения на входе не приводят к большим изменениям на выходею очень важное для софта свойство

Andrey
09.03.2018
09:51:08

Ilnur
09.03.2018
10:30:40
допустим id 55 было не заюзано

Google

m
09.03.2018
10:31:04
тогда будет не монотонно

Ilnur
09.03.2018
10:31:30
следующий запрашивающий id получит 56

m
09.03.2018
10:32:29
монотонность имхо нельзя вынести в отдельный сервис. Она только внутри какой-то базы возможна. Т.е. всегда в привязке к тем данным, для которых она нужна.
а если комета прилетит, то тогда на работу ходить не надо будет.

Ilnur
09.03.2018
10:33:45
хз, ну вот postgres, вставляешь запись в транзакции - тебе дали id 55, транзакция откатилась по какой-то причине - следующий запрашивающий id в любому случае получит id 56

m
09.03.2018
10:34:07
к вопросу в БД: Марко одобряет монолитные приложения и пишет почему именно: https://youtu.be/IVKpmk1QTWM?t=6m34s
Ильнур, тут вопрос в том, как ставится задача. Если дырки допустимы - это одно. Если нет, то другое. Самое простое - это генерить уникальные id-шки.

Daniel
09.03.2018
10:36:45
например - timeuuid

Ilnur
09.03.2018
10:37:22
ага, а монтонность это обязательно без пропусков?

m
09.03.2018
10:37:34
не. это просто чтобы росло
непрырвность - это без дырок.

Ilnur
09.03.2018
10:38:31
м, тогда можно смело делать как в postgres)

Google

m
09.03.2018
10:38:50
или использовать его

FRD Official - Dmitriy
09.03.2018
10:44:19
это кому?
Это я за инет заплатил? тлрмознул малость... бывает
Эк вас тут торкнуло. Тут есть единственно верный способ - один канал для записи в мап (да куда угодно) условно реестр, второй канал с очередью - условно бродкастер (куда там ему нужно отправлять). Реестр ппринимает пуши для регистрации пользователя и с сует их и в мапу и в бродкастер. Реестр принимает запросы на удаление пользователей или маркировку их как обработанных от бродкастера. В случае краха бродкастера - подкачивать данные из мапа/БД и все с начала. А вообще реализация с мапом очень.... странная.

m
09.03.2018
11:11:13

FRD Official - Dmitriy
09.03.2018
11:14:08
а читать свойства юзера как?
Ок. добавляем к реестру гет-функцию, но в любом случае юзать мап - это как яйца (куриные) в мешке для картошки таскать

m
09.03.2018
11:14:40
и как же будет работать этот геттер?

Daniel
09.03.2018
11:20:15
еще один канал, по нему отправляешь ключ и канал для возврата значения. и слушаешь этот самый канал
если уж на каналах решили все делать

m
09.03.2018
11:23:06
и выходит, что map не очень уж и плохая идея.

FRD Official - Dmitriy
09.03.2018
11:23:17
если на каналах... но для ляма не грех и message bus

Roman
09.03.2018
11:23:21
Всем добрый день, хотел сообщить что вчера оффициально вышла первая бета версия нашей библиотеки вебсокетов: https://github.com/qbeon/webwire-go
было бы круто получить feedback от тех, кому тема интересна, буду рад вопросам / комментариям, в любом случае спасибо за внимение ?

FRD Official - Dmitriy
09.03.2018
11:24:54

m
09.03.2018
11:25:01
мне интересна. Использую гориллу сейчас. Но она делает лишнии аллокации при сжатии. Ваша умеет сжатие?

FRD Official - Dmitriy
09.03.2018
11:25:36
А то надо будет изменить что-либо, а у тебя в мапе живые данные висят

m
09.03.2018
11:26:15
А, так вы гориилу и используете...

FRD Official - Dmitriy
09.03.2018
11:26:55

m
09.03.2018
11:27:09

Mykyta
09.03.2018
11:27:11

Roman
09.03.2018
11:27:56

m
09.03.2018
11:28:41

Google

Mykyta
09.03.2018
11:29:41

FRD Official - Dmitriy
09.03.2018
11:30:01

Roman
09.03.2018
11:30:18

m
09.03.2018
11:32:36
Т.е. данные в общем не теряются. даже при авариях они имеют шансы выжить. Но их потеря не очень критичная.

Mykyta
09.03.2018
11:34:17

FRD Official - Dmitriy
09.03.2018
11:34:25

Roman
09.03.2018
11:36:12
А есть что-то типа rooms из socket.io?
есть пример chatroom: https://github.com/qbeon/webwire-go/tree/master/examples
похож на пример socket.io, можно запустить Go сервер, подключить Go клиенты и JavaScript приложение: https://github.com/qbeon/webwire-js/tree/master/examples/chatroom-client-vue

Mykyta
09.03.2018
11:38:51

Roman
09.03.2018
11:40:02

Mykyta
09.03.2018
11:40:27
да, здесь возможно нужно
Плохо, что либа не продоставляет своего инструмента для хранения сессий и надо свой велосипед городить

m
09.03.2018
11:41:26
я так понимаю, что нужна ещё и клиентская либа https://github.com/qbeon/webwire-js

Roman
09.03.2018
11:42:04

Mykyta
09.03.2018
11:43:22

Roman
09.03.2018
11:43:36

m
09.03.2018
11:44:21
беСшовно. от слова чёрт

Roman
09.03.2018
11:44:25
есть желание реализовать ещё клиент на C++ Qt, но это уже как время останется
я просто немец, прошу строго меня в плане грамматики не судить)

Google

Mykyta
09.03.2018
11:51:35
@Romshark кстати, вот у хуков сигнатура коллбека: (ctx context.Context) (wwr.Payload, *wwr.Error)
Может лучше сделать wwr.Payload указателем, чтобы не гонять пустую структуру в случае ошибки, например?
А еще собственный тип для ошибок како-то тоже не очень
То бишь собственный тип для ошибки - ок, но возвращать лучше универсальный error, а дальше в обработчике попробовать скастовать к wwr.Error, если нет, то создать на основе обычного error

Roman
09.03.2018
11:54:29

Mykyta
09.03.2018
11:55:15

Roman
09.03.2018
11:55:24

Mykyta
09.03.2018
11:56:10

Admin
ERROR: S client not available

xPushkin
09.03.2018
11:56:16

Roman
09.03.2018
11:56:27
если копируемые структуры небольшие

Mykyta
09.03.2018
11:57:11
@Romshark кстати, дискуссионный вопрос, но мне кажется в го лучше названия файлов именовать в snake_case. Есть у нас типа SomeType, но класть в some_type.go. В исходниках докера так, например

Roman
09.03.2018
12:00:07

Mykyta
09.03.2018
12:01:29

Roman
09.03.2018
12:11:07

Daniel
09.03.2018
12:13:00
зачем?

Roman
09.03.2018
12:14:18

Daniel
09.03.2018
12:14:30
зачем файлы переименовывать?

Roman
09.03.2018
12:15:00

Google

Daniel
09.03.2018
12:15:16
так себе аргумент
но это так, отголоски моих собственных раздумий
я вот решил, что, если в файле у меня тип - файл будет называть так же, как тип

Roman
09.03.2018
12:16:01

Daniel
09.03.2018
12:16:22
а если там солянка сборная - то по смыслу солянки снейкейсом

Roman
09.03.2018
12:16:34

FRD Official - Dmitriy
09.03.2018
12:25:43

Roman
09.03.2018
12:33:02

Daniel
09.03.2018
12:36:56
большинство гоферов, к сожалению, не привыкли читать код за пределами собственного проекта

Ilnur
09.03.2018
12:38:07

Daniel
09.03.2018
12:39:56
а?!
(осторожно) вы про экспортируемое-неэкспортируемое слышали?

Ilnur
09.03.2018
12:40:48
ага

Daniel
09.03.2018
12:41:11
тогда должны понимать, что эти два варианта - не вопрос вкусовщины
или это юмор для меня оказался тонковат?..

Ilnur
09.03.2018
12:41:51
не, это я к тому, что гоферы привыкли к кемел кейсу

Roman
09.03.2018
12:55:44

FRD Official - Dmitriy
09.03.2018
13:34:57