
Vladimir
30.12.2016
08:20:58

Denis
30.12.2016
09:26:27
Судя по количество ишью
Я бы не пользовался
Мастер ветка пол года

Google

Denis
30.12.2016
09:27:03
Да и натягивать джс либу
На го тоже сомнительно

Maxim
30.12.2016
09:40:36
Я чутка потыкался - совсем не то.
Короче - я всё ещё ищу как мне решить проблемы с чатом на вебсокетах.
По крайней мере хотя бы для чтения получать не отредактированное тело очень хотелось бы, чтобы самостоятельно удалить префикс и нормально анмаршлить
Потому что костылить конвертацией св строку, а потом обратно - ну это дикость.

Denis
30.12.2016
09:44:31
Так там по-любому строка, они искэпят джсон с юзер инпутом
После чего это уже не джсон
Анмаршал ломается на том что половина джсон экранирована, а другая нет
Если бы все было экранировано
То стандартный анмаршал обработал бы

Maxim
30.12.2016
10:08:23
Это понятно.
Но я не уверен что сервер шлёт именно такой вит мессаги

Google

Maxim
30.12.2016
10:09:06
А н-нет. Всё таки такой вид.
Блять, руки бы поотрывать таким разрабам, конечно.
@kirilldanshin есть идеи как не есть кактус?

Max
30.12.2016
10:20:48

Maxim
30.12.2016
10:21:34
И им я как раз и пользовался пока не выяснилось, что ответы от сервака структурно ломаются на середине

Max
30.12.2016
10:22:41
У меня не сервер, а клиент
https://github.com/golang-samples/websocket/blob/master/websocket-chat/src/chat/client.go
Вот пример простого клиента, может это поможет

Maxim
30.12.2016
10:22:53

Constantine
30.12.2016
10:28:34
а в чем тогда проблемы?

Maxim
30.12.2016
10:31:06
Я или устал, или Args реально содержит СТРОКУ со структурой?
5:::{"name":"message","args":["{\"method\":\"chatMsg\",\"params\":{\"channel\":\"toby3d\",\"name\":\"toby3d\",\"nameColor\":\"7756CB\",\"text\":\"лол\",\"time\":1482971600,\"id\":\"3X9R\",\"role\":\"admin\",\"isFollower\":true,\"isSubscriber\":false,\"isOwner\":true,\"isStaff\":false,\"isCommunity\":false,\"media\":false,\"image\":\"/static/img/channel/toby3d_53e2ef88b0098_small.jpg\",\"buffer\":true,\"buffersent\":true}}"]}
Так и есть
в args строка с json

Constantine
30.12.2016
10:31:36
вот это треш
)))

Maxim
30.12.2016
10:31:46
Вот я о чём и говорю
Сначала сетовал на гориллу. В принципе, она тоже косячит и отказывается декодировать ответ, потому что префикс начинается с цифры и всё ломается
Но даже если не декодировать, то ответ всё равно оказывается примерно таким
И суть в том, что у меня есть заготовленные структуры, по которым я собираю сообщения для отправки. А что мне делать с получаемыми сообщениями? Как их декодировать если такие косяки?
Ладно, хрен с ним с префиксом - его вырезать можно как из байтов, так и из строки. Но с "args" что делать-то?

ros
30.12.2016
10:40:16
брать строкой анэскейпить и анмаршалить)

Google

ros
30.12.2016
10:40:53
{
"method":"chatMsg",
"params":{
"channel":"toby3d",
"name":"toby3d",
"nameColor":"7756CB",
"text":"лол",
"time":1482971600,
"id":"3X9R",
"role":"admin",
"isFollower":true,
"isSubscriber":false,
"isOwner":true,
"isStaff":false,
"isCommunity":false,
"media":false,
"image":"/static/img/channel/toby3d_53e2ef88b0098_small.jpg",
"buffer":true,
"buffersent":true
}
}
но насрать в руки точно нужно

Maxim
30.12.2016
10:41:23

ros
30.12.2016
10:41:56
недолжно поломать
кавычки тоже должны заэскейпены быть

Maxim
30.12.2016
11:35:25
Слава дискорду за прямую связь с некоторыми разработчиками в хитбоксе
Я им всё своё негодование вылил. Сразу обнаружились некоторые проблемы на их стороне, которые было обещано исправить.
Что касается чата - скорее всего это не может быть пофиксено, потмоу что это работает через socket.io

Denis
30.12.2016
12:42:25
все решается в несколько шагов
1) выдернуть строку args через, например, gjson
2) без unescape (стандартная либа сама его сделает) эту строку кинуть на анмаршл в соответствующую структуру
3) если ошибка (params не массив, а строка), кинуть на анмаршл в структуру, где params - строка
4) создать структуру со всеми данными
можно и не выдергивать отдельно
просто создать оригинальную структуру с доп полями
type MyResponse struct {
...
Args
ParsedArgs
ParsedArgsWithFixedParams
...
}
доп поля заполнить после парсинга args

Maxim
30.12.2016
13:14:40
Не, ну это жесть, конечно. Нужно учитывать что так будет ежесекундно происходить.
Ладно Я один самого себя грузить буду - переживу, но Я планирую в далеком будущем держать это общедоступной админкой для бота.

Denis
30.12.2016
13:16:20
все ок с производительностью, все ограничится максимальным количеством сообщений в секунду у hitbox

Daniel
30.12.2016
13:17:49

Denis
30.12.2016
13:21:46
входящие сообщения можно обрабатывать в очереди (нужно)

Maxim
30.12.2016
13:21:47

Daniel
30.12.2016
13:31:01
лучше обойтись
особенно в го, где возможностей оптимизации почти нет

Peter
30.12.2016
13:39:33
pprof может показать нагрузку на винт?

Maxim
30.12.2016
13:46:29
Народ, а расскажите какая структура у проекта должна быть правильной. Файлы, директории. Хочу небольшой рест сервис с базой написать. Ну т.е. не в одном файле же все писать?

Google

Subbotin
30.12.2016
13:48:48
пиши в одном. потом поймешь как разнести
а то будет как у джава программистов srs/java/com/super/puper/abstract/factory/BestResultMaker.java в котором 50 строк комментария с лицензией а потом функция на 5 строк

Daniel
30.12.2016
13:53:13
это ничего
это нормально
в яве другое плохо, а не это

Denis
30.12.2016
13:53:51

Daniel
30.12.2016
13:54:15

Maxim
30.12.2016
13:56:03
Ага, понял. Спасибо )

Daniel
30.12.2016
13:58:53
есть несколько, в которых их внутренние пекеджи в конце концов выехали в отдельную репу, и стали либой для микросервисов

Admin
ERROR: S client not available

Maxim
30.12.2016
14:00:51

Evgenij
30.12.2016
14:01:03

Daniel
30.12.2016
14:28:49

Kirill
30.12.2016
14:33:48

Evgenij
30.12.2016
14:35:47
typeName_method.go что под этом скрывается?

Kirill
30.12.2016
14:36:28

Evgenij
30.12.2016
14:37:28
Ок - но это гдето в глубине всего этого или как апи для снаружи?

Kirill
30.12.2016
14:38:10

Daniel
30.12.2016
14:38:54
Раскажи - интересно(не ради холивара)
если коротко - ява сложная.
по моему мнению, она была сделана для того, чтобы один Белый Человек (тм) мог выстроить "отказоустойчивый отряд из полевых мышей, способный достичь цели" (с)
в результате, когда на яве пишешь ты сам - ты сначала играешь за человека, а потом за отряд мышей
и у тебя зазвивается расстройство личности
отсюда фабрики фабрик и вся прочая вот эта типично явная хуета

Evgenij
30.12.2016
14:39:34

Google

Denis
30.12.2016
14:41:16
что насчет всяких котлинов и скал, был опыт?

Maxim
30.12.2016
14:41:17

Evgenij
30.12.2016
14:41:36
Просто если график бабла в конкретныйязык (выражения мыслей) пострить - в джава дофига вложили - но они и легко откажутся - прибыль решает всё!

corpix
30.12.2016
14:42:56

Dzmitry
30.12.2016
14:43:09
Скажите, а есть ли люди, которые перешли с java на golang и теперь этим зарабатывают на жизнь?

Denis
30.12.2016
14:43:23

Daniel
30.12.2016
14:44:02
golang - это скорее для усталых путников интерпретируемых языков

Evgenij
30.12.2016
14:44:50
Джава фореве - но фореве умрёт без подпитки
Очень и очень много легаси - ужасного итп - на это даже студенты не пойдут - выход = автомат по миграции))))

Dzmitry
30.12.2016
14:46:13
гы)

Daniel
30.12.2016
14:48:06
ну и я пока не понял, насколько хорошо ява ложится на микросервисную архитектуру
раньше мне похур было, я эксплуатацией занимался
а теперь - разработкой
и оказалось, что все эти монолитные монстры реально отравляют мне жизнь
вот кстати
у меня есть работа
удаленка, фултайм
перловый монолитный монстр

Evgenij
30.12.2016
14:50:07
Ты ты сказал про ПЕРЛ?
ООООэ

Daniel
30.12.2016
14:50:31
надо его как-то развивать, а делать это уже не получается - он окуклился, как тот кадавр