@proGO

Страница 371 из 1674
Славик
28.12.2016
17:40:54
хотя ладно, ща попробую

Maxim
28.12.2016
18:47:56
тогда вспомни фильм Идиотократия, там большинство людей не понимают интерфейсы
Я один из них. Я воспринимаю сейчас интерфейс как "нечто в разных формах", лол

Блин, пытаюсь подключиться к чату. Шлю websocket.WriteJSON() с маршленной структурой с данными, в ответ мгновенно получаю 7:::1+0 и соединение обрывается.

Google
Maxim
28.12.2016
20:35:20
Как показала проверка, даже если я ничего не шлю, то реакция аналогичная.

Denis
28.12.2016
20:36:19
А текст шлется?

Maxim
28.12.2016
20:36:35
Без понятия.

Denis
28.12.2016
20:37:02
WriteMessage

Maxim
28.12.2016
20:37:11
Выхлоп выполнения websocket.Write... только error

Так что я никак Response иным образом проверить не могу

Denis
28.12.2016
20:38:10
Ну а стектрейс?

Quet
28.12.2016
20:38:17
а что за чатик?

Maxim
28.12.2016
20:38:43
а что за чатик?
Всё тот же hitbox

Ну а стектрейс?
7:::1+0 [READ] websocket: close 1006 (abnormal closure): unexpected EOF

Denis
28.12.2016
20:40:25
Соединение выдает ошибку ?

Слушаешь закрытие соединения ?

Maxim
28.12.2016
20:41:10
И это если я коннекчусь через ws. Если брать wss, то коннект вроде бы нормальный, НО в чате никаких изменений. Ни появление/уход моего бота, ни сообщений.

Google
Maxim
28.12.2016
20:41:57
2016/12/29 01:31:35 Connecting to wss://ec2-23-20-88-5.ch.hitbox.tv/socket.io/1/websocket/p2oZxYYrps-YsS-pM0FX 2016/12/29 01:31:35 {"name":"message","args":[{"method":"joinChannel","params":{"channel":"toby3d","name":"Left4Bot","token":"SuperSecret","hideBuffered":false}}]} 2016/12/29 01:31:35 1:: ...

Denis
28.12.2016
20:42:34
Конкурентно пишешь в сокет ?

Maxim
28.12.2016
20:43:06
Denis
28.12.2016
20:43:27
Выкинь код на плейг

1006 ошибка чисто локальная

Maxim
28.12.2016
20:51:16
Ахтунг - страшный говнокод: https://play.golang.org/p/rxMK_N7cCg

Denis
28.12.2016
20:54:20
это запустится с локалки?

Maxim
28.12.2016
20:54:49
Denis
28.12.2016
20:56:19
в какой строке лажа?

56?

Maxim
28.12.2016
20:56:55
Я не знаю.

Выглядит так, будто всё работает. Только в самом чате не происходит ничего. И только при условии что я использую wss

Если я юзаю ws, то всё мгновенно ломается. Что странно, потому что в доках указан именно он, да и полгода назад я тестил примерно похожий код и всё работало, пусть и я отправлял string с подстановками

Denis
28.12.2016
20:59:32
токен менять можно?

Maxim
28.12.2016
20:59:52
Чутка костыльно, но можно

Denis
28.12.2016
21:02:28
скинь архивом в личку код, на гитхабе он не полный и токен

Maxim
28.12.2016
21:03:33
скинь архивом в личку код, на гитхабе он не полный и токен
Сейчас пушну изменения в библе и скину всё

Спасибо @pifagorych за помощь. Всё оказалось довольно просто, но крайне неочевидно.

Google
Maxim
29.12.2016
00:41:11
Я или устал, или 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}}"]}

Anton
29.12.2016
00:41:47
Нет

Так и есть

в args строка с json

Maxim
29.12.2016
00:42:01
Бляяяять

Anton
29.12.2016
00:42:11
да еще и с эскейпами

Maxim
29.12.2016
00:42:28
Понятно почему у меня не анмаршлится

Anton
29.12.2016
00:42:34
кееек

Maxim
29.12.2016
00:43:07
И что мне с этой хуйнёй делать?

Anton
29.12.2016
00:44:55
парсить)

а вообще изза чего такая хуйня вообще?

Maxim
29.12.2016
00:45:42
Это ответ сервера на события в чате на вебсокетах

corpix
29.12.2016
00:47:26
А, ну значит data - результат unmarshal и именно он поэскейпил json

Maxim
29.12.2016
00:47:53
corpix
29.12.2016
00:48:27
Это очевидно - взять данные до unmarshal

Тьфу s/unmarshal/marshal/

Google
Maxim
29.12.2016
00:49:58
Это очевидно - взять данные до unmarshal
В клиенте вебсокета я юзал следующее: _, data, err := c.ReadMessage()

Но есть ещё: _, data, err := c.NextReader()

Там data уже будет с типом io.Reader

corpix
29.12.2016
00:52:27
Т.е. data это []byte? Странная библиотека. Ну в этом случае придётся сделать unmarshal сообщения. Вероятно в этой библиотеке есть какая-то структура для этого или даже функция, которая возвращает структуру с данными о сообщении вместо байт-слайса

corpix
29.12.2016
00:54:50
> Странная библиотека Это вебсокеты гориллы
Тк там же есть https://godoc.org/github.com/gorilla/websocket#Conn.ReadJSON

Maxim
29.12.2016
00:55:45
Возможно не прокатит, потому что есть префикс который всё портит: 5:::{"name":"message","args":["{\"method\":\"loginMsg\",\"params\":{\"channel\":\"toby3d\",\"name\":\"Left4Bot\",\"role\":\"user\"}}"]}

Admin
ERROR: S client not available

corpix
29.12.2016
00:58:49
Полагаю что структуру, соотвествующую пересылаемому JSON Посмотри код, станет понятно

corpix
29.12.2016
01:00:54
Похоже на ошибку, не связанную с этой функцией

Maxim
29.12.2016
01:02:55
Похоже на ошибку, не связанную с этой функцией
Попробовал следующее: var msg chat.Message err := c.ReadJSON(&msg) if err != nil { log.Println("[READ]", err) return } Но, очевидно, префикс 5::: всё портит: [READ] json: cannot unmarshal number into Go value of type chat.Message

corpix
29.12.2016
01:08:01
А, вот оно что, я думал что этот префикс ставит горилла(что было бы странно). В таком случае я бы вычитал этот не валидный префикс при получении сообщения(надеюсь он имеет фиксированный размер https://godoc.org/github.com/gorilla/websocket#Conn.NextReader), а весь хвост скормил бы json unmarshal Но это тоже может не сработать, у меня нет полного понимания всей картины структур данных на различных уровнях передачи

corpix
29.12.2016
01:10:28
Когда и из чего? NextReader возвращает reader для сообщения, из него префикс можно и вычитать, а остальное в unmarshal

corpix
29.12.2016
01:11:42
Наличие этого префикса это ведь часть протокола сервиса, для которого ты делаешь модуль? Кажется что конкретно к протоколу websocket'ов он не имеет отношения

Maxim
29.12.2016
01:12:08
Да, именно

Google
corpix
29.12.2016
01:12:46
В таком случае то о чем я говорю может сработать

Maxim
29.12.2016
01:21:43
FFFFFFFFF в io.Reader нельзя как-нибудь получить строку или байты, чтобы вырезать ненужное говно?

А, лол, соседние пакеты.

Бляха-муха, даже io.Reader косячит аналогично

И ioutil.ReadAll()

Ох, пристрелите меня.

corpix
29.12.2016
02:06:55
Как косячит то? В каком месте FF? Мало инфы

Maxim
29.12.2016
02:08:46
При попытке перевести данные типом io.Reader через buffer или ioutill.Read результат всё равно с кавычками там, где их быть не должно: 5:::{"name":"message","args":["{\"method\":\"loginMsg\",\"params\":{\"channel\":\"toby3d\",\"name\":\"Left4Bot\",\"role\":\"user\"}}"]}

Потому что я без понятия как что-либо резать без трансформации io.Reader во что-нибудь.

Блин, если вот так на историю сообщений в последнее время смотреть, то либо я такой тупой, либо разрабы API наговнокодили.

blkmrkt
29.12.2016
04:21:46
А вот я на golang хочу сделать SELECT из одной sql базы и INSERT эти данные в другую. Я не знаю структуры таблицы заранее, но знаю что у source и dest структуры одинаковы. Как это сделать?

А вот я на golang хочу сделать SELECT из одной sql базы и INSERT эти данные в другую. Я не знаю структуры таблицы заранее, но знаю что у source и dest структуры одинаковы. Как это сделать?
взял http://jmoiron.github.io/sqlx/, делаю по гайду rows, err := db.Queryx("SELECT * FROM place") for rows.Next() { // cols is an []interface{} of all of the column results cols, err := rows.SliceScan() } а как теперь из этого интерфейса сгенерировать стейтмент INSERT INTO tblname VALUES (...), либо положить это в материализованный слайс из стринговых репрезентаций данных?

Subbotin
29.12.2016
06:01:06
напиши на питоне. ну или парсинг show create table тебе в помощь

blkmrkt
29.12.2016
06:19:40
да уж, наверное лучше на питоне сделаю

вообще мне данные парсить не нужно, просто переложить с одной бд в другую

Sergey
29.12.2016
06:23:34
а какая бд? постгрес?

blkmrkt
29.12.2016
06:23:42
Sergey
29.12.2016
06:23:52
тогда можно с copy from / copy to

blkmrkt
29.12.2016
06:24:42
тогда можно с copy from / copy to
не, инструмент должен просто перекладывать данные в таблицу с идентичной структурой, copy from/to нельзя

не, инструмент должен просто перекладывать данные в таблицу с идентичной структурой, copy from/to нельзя
точнее селектить данные кусками с offset, и вставлять в другую бд, тк весь кластер подфаршмачен местами

Subbotin
29.12.2016
07:01:10
Можно ещё воспользоваться встроенными возможностями постгреса. Емнип pgdump умел фильтры

Страница 371 из 1674