
Mike
22.02.2017
15:54:49
острие бритвы читал? огонь вообще
может, у тебя перевод был так себе?

Najmu
22.02.2017
15:55:09
Острие бритвы не читал

Mike
22.02.2017
15:55:54
бремя стратей у него унылое, луна и грош слогом тащит, его на английском 100% надо читать, а вот всякие вуали и бритвы — одни из лучших книг вообще

Google

Najmu
22.02.2017
15:57:02
Спасибо, почитаю на досуге.

Мерлин
22.02.2017
16:36:58

Anton
22.02.2017
16:40:29
подскажите вот что. У меня есть массив на 1000 элементов, можно без мьютекса заполнить массив через горутины? Если чтение массива будет не скоро

Mike
22.02.2017
16:43:07
Заполняй канал и в обычной рутине вытаскивай
Не?

Eduard
22.02.2017
16:43:26
Ребят пока только погружаюсь в Golang и тут у меня есть вопрос, как мне парсить если приходит разный json
Строка 47

Daniel
22.02.2017
16:45:05
пробовать сначала одно, потом другое

Eduard
22.02.2017
16:47:33

N
22.02.2017
16:49:00
так топорно?
да никто так не делает - всегда приходит что-то одно. если не ложится в концепцию делается а-ля контейнер типа Packet и туда кладется Player и Message и что-то из этого будет nil

Mike
22.02.2017
16:49:04

Михаил
22.02.2017
16:49:05
Еще есть raw message

Eduard
22.02.2017
16:51:06

Google

Mike
22.02.2017
16:51:54
Ну вообще не отправлять разные схемы по одному коннекту например
Или отправлять и помечать что за схема

Eduard
22.02.2017
16:52:15
вот это интересно

Mike
22.02.2017
16:52:50
Типа шлешь первым символом число и потом из raw message его читаешь, отбрасываешь и потом конвертишь
Но лучше по одному коннекту одну схему гоняй
Можно схему тип, объект, а в структуру долбишь тип и кучу объектов

Eduard
22.02.2017
16:53:54
и т.п.

Mike
22.02.2017
16:54:19
type Message struct {
Type string,
Person,
Car
}

N
22.02.2017
16:54:39

Mike
22.02.2017
16:55:16
Ну по эндпоинтам я и предлагаю как лучшее решение
Но он одним сокетом хочет

N
22.02.2017
16:56:45
ааа там веб-сокет. ну тогда в одну структуру все варианты сгоняет а-ля Packet и потом проверяет все варианты на nil - тот что не nil тот и пришел
или доп поле прям указание типа как Майк привел

Mike
22.02.2017
16:57:08
Я б тип слал
Чтоб не проверять, а свич

N
22.02.2017
16:57:39
да я тоже тип всегда слал в таких случаях, последний раз в protobuf

Mike
22.02.2017
16:57:44
Мало ли, просто хочется без тела что-то кинуть, все Нил будут
Но да, про заголовки забыл

Google

Mike
22.02.2017
16:58:12
Тоже идея хорошая
Но не для сокета)
(могу ошибаться правда, но в них же нет заголовков)

N
22.02.2017
17:01:59
для вебсокета не хорошая идея, это если без него - тогда применимо, делал один раз так, но не для разных сущностей, а для разных форматов сериализации - тип сереализации передавал и принимал в заголовке http

Eduard
22.02.2017
17:03:25

N
22.02.2017
17:04:48
ну пробелы мож там еще -)

Daniel
22.02.2017
17:05:16
если у тебя сериализованные данные, и разные структуры - всегда парсить придется в два приема
1. распарсили тип сообщения
2. распарсили payload
никаких вариантов
и это не топорно, это так, как есть

N
22.02.2017
17:07:35
выше описан вариант, где в два прохода ничего не нужно парсить

Daniel
22.02.2017
17:07:45
это который?

Mike
22.02.2017
17:08:01
А не пытаешься ли ты сэкономить все теоретические оверхэды в ущерб здравому смыслу или даже реальности?
а не будет ли это оверхедом?

N
22.02.2017
17:09:42
в структуру Packet вложить структуры Person, Message и добавить числовое поле Type

Eduard
22.02.2017
17:09:43

N
22.02.2017
17:11:43

Google

Mike
22.02.2017
17:12:28

Daniel
22.02.2017
17:12:29

Eduard
22.02.2017
17:12:41
я хочу нереального

Mike
22.02.2017
17:12:54
Не
Ты отправляешь тип

Daniel
22.02.2017
17:13:00
слать надо всегда специфическую структуру

Mike
22.02.2017
17:13:02
И мессадж
А персон будет нил

Daniel
22.02.2017
17:13:27
нил - это я, если кто не в курсе :)

Eduard
22.02.2017
17:13:33

Mike
22.02.2017
17:13:49

Daniel
22.02.2017
17:14:17
короче
протоколы вроде json rpc 2.0 парсят в два прохода.
самосборный протокол можно собрать и на общей структуре (пока разные по типу поля не пересекутся по именам)
но, умоляю, не надо передавать общую структуру в обработчики
делайте специфическую копированием, и передавайте ее
мы тут сделали ошибку нечаяно, передавали общую
выпиливали с матами - некоторые компайл-тайм проверки перестали работать, и это нас огорчило

Google

Daniel
22.02.2017
17:17:23
про оверхед

N
22.02.2017
17:17:27
это как спор про динамическую и строгую типизацию

Daniel
22.02.2017
17:17:38
вы помните, что там у вас ssl на входе?
он ест достаточно проца, чтобы ваш оверхед не был особо заметен

Mike
22.02.2017
17:18:11
Я поддерживаю не слать невнятности

Eduard
22.02.2017
17:18:15
джсон для разовых

Mike
22.02.2017
17:18:26
Огребешь потом по полной

N
22.02.2017
17:18:53
вот и я топлю за статику и за явность везде, с неявностью пару раз наелся выше крыши

Daniel
22.02.2017
17:19:01

Mike
22.02.2017
17:19:05
Хочешь слать странный джсон, принимай нодой, ей типизируй и пробрасывай в го, лол

N
22.02.2017
17:20:14

Eduard
22.02.2017
17:20:28

Daniel
22.02.2017
17:20:29
любой один - хорош

Eduard
22.02.2017
17:20:44
там на UWS

Daniel
22.02.2017
17:20:55
больше одного по одному соединению - горите в аду

N
22.02.2017
17:21:54

Mike
22.02.2017
17:21:54
+100500

Ivan
22.02.2017
17:22:09
Ну у вас то не бесит этот json unmarshall ?

Mike
22.02.2017
17:22:12
Но да, у нас формат один, схемы разные

N
22.02.2017
17:22:39
msgpack очень хороший формат, очень подходит для стримов - быстрый и никаких лишних аллокаций если на стримах юзать