
DMITRY
15.02.2018
08:33:51
это получается не отрабатывает

Kirill
15.02.2018
08:34:48
Господа гоферы, странный вопрос.
Что почитать чтобы легче понимать сорсы (а не просто использование) стандартной библиотеки го? Понимаю что вопрос жуть какой обширный, но все же... И да rus/eng - что угодно.

Vergil
15.02.2018
08:41:13

Kirill
15.02.2018
08:41:56

Google

Nil
15.02.2018
08:42:07
как в изучении любого языка - читать и переводить)

Yaroslav
15.02.2018
08:44:19
Привет. Какая либа сейчас актуальный аналог flags? ( чтобы c required флагами можно было работать)

Vergil
15.02.2018
08:45:11

Kirill
15.02.2018
08:45:44
Ясненько, спасибо

Roman
15.02.2018
08:54:40
https://mholt.github.io/curl-to-go/

DMITRY
15.02.2018
09:12:36
Вообщем после этого err := websocket.Message.Receive(ws, &message)
все встает почему-то
грубо говоря:
for {
var message string
if err := websocket.Message.Receive(ws, &message); err != nil {
log.Fatal(err)
}
log.Printf("message: %s", message)
}
вообще не выполняеться

Daniel
15.02.2018
09:15:46
что значит - не выполняется

DMITRY
15.02.2018
09:16:48
for {
var message string
//err := websocket.JSON.Receive(ws, &message)
err := websocket.Message.Receive(ws, &message)
if err != nil {
fmt.Printf("Error::: %s\n", err.Error())
ws = reconnect()
}
if len(message) > 0 {
fmt.Println("message: %s", message)
}
fmt.Println("test")
}
test в консоли не бежит
$ go run ws3.go
Starting Connect
И все

xPushkin
15.02.2018
09:18:48
@captain_perreiro могу посоветовать использовать gorilla/websocket

DMITRY
15.02.2018
09:19:19
Посмотрел там примеры они какие-то странные
да вроде это все заработало,но не принимает

Google

DMITRY
15.02.2018
09:47:08
golang.org/x/net/websocket - походу прием сообщений там сломан
попробовал другие библиотеки где он используеться и результат один
хмм...интересно натравил его на echo и работает
походу на node.js сервер куда подключаюсь специфичная реализация

Человек
15.02.2018
11:05:06
Помогите с добавлением значения в реестр пожалуйста. Создаю сообственный раздел, добавляю значение чтоб в будущем брать оттуда информацию. но как только доходит до функции добавлением в реетр Касперский и 360 Total Security начинаю жаловаться

Daniel
15.02.2018
11:05:48
конечно
это их дело за такими программами следить
грош бы была им цена, если бы это можно обойти было
так что - смиритесь

Olzhas
15.02.2018
11:07:11
или в настройках антивируса в доверенные добавить

Michael
15.02.2018
11:08:03

Человек
15.02.2018
11:08:27
Я антивирями не пользуюсь, я для теста их поставил.

John
15.02.2018
11:08:30

Michael
15.02.2018
11:08:58
и то и то, если настроить, то не нуждаются в касперских и иже с ними

Olzhas
15.02.2018
11:11:14
это как с венерологическими болезнями

Человек
15.02.2018
11:11:57
хм, можно попробовать через reg add добавлять
Или не прокатит...

Michael
15.02.2018
11:13:00
а должно?

Google

Michael
15.02.2018
11:13:39
вот поругается антвирус голосом страждущего поросёнка, скажешь ой молодец и заплатишь ещё за лицензию
есть вариант подписывать бинарь сертификатом, но паранойя антивируса может быть беспощадной

Человек
15.02.2018
11:15:43
Сейчас я все методы попробую которые у меня накопились в голове

Aleksandr
15.02.2018
11:20:48
пардон, перепутал с поисковой строкой )

Roman
15.02.2018
14:07:20
https://play.golang.org/p/TXRQnEkn6H7
чёт не могу понять, почему массив пуст после декодирования?

John
15.02.2018
14:08:56
а надо Records
(c большой буквы)

Oleh
15.02.2018
14:09:26
Всем привет. Вопрос по REST. Как вы валидируете входящие данные в го?

Александр
15.02.2018
14:09:48
gopkg.in/go-playground/validator.v9
я энтим ?

Roman
15.02.2018
14:09:55

Oleh
15.02.2018
14:10:42
gopkg.in/go-playground/validator.v9
спасибо за вариант, а есть еще другие примеры? Если я не ошибаюсь то я чуть не сдох но так и не понял как ему указать что не нужно валидировать вложенные структуры
или я пропустил?

Александр
15.02.2018
14:12:59
а вы у вложенных тоже описали валидацию?

Roman
15.02.2018
14:13:09

Oleh
15.02.2018
14:14:05

Admin
ERROR: S client not available

Roman
15.02.2018
14:21:18

Google

Oleh
15.02.2018
14:22:21
конечно. Моему клиенту не нужно запрашивать конкретные поля, API не большой. Не нужна такая гибкость как в graphql. Это будет дополнительный оверхед который никто не будет использовать

Roman
15.02.2018
14:25:50

Oleh
15.02.2018
14:26:35
у меня был опыт работы с GQL, это прикольная штука. Но сейчас не хочется с этим заморачиваться. А ты используешь какие-то го либы?

Roman
15.02.2018
14:27:10
и когда я слышу "валидация данных" уже могу предположить что тут нужен не REST, ибо REST не для этого

Oleh
15.02.2018
14:28:21
не, ну ты же должен проверить прилетело ли тебе поле

Roman
15.02.2018
14:28:50

Oleh
15.02.2018
14:28:56
спасибо

Yaroslav
15.02.2018
14:29:19

Roman
15.02.2018
14:29:57
кастомные скалярные типы так вообще сказка, можно даже Email, ZipCode и подобное валидировать


Maxim
15.02.2018
14:30:32
Привет всем! Наступил на интересную проблему. Берем простейший сервер на го: https://github.com/xCASx/mutual_tls/blob/master/server.go
В примере http2 выключен, но нам надо его включить. Поднимаем сервер. Берм curl с поддержкой http2.
Зовем сервер:
curl -kv https://localhost:8443 --key keys/client.key --cert keys/client.pem --cacert keys/rootCA.pem --pass password --http2
Все работает. Добавляем кастомный cipher suite (поддерживается с обеих сторон):
curl -kv https://localhost:8443 --key keys/client.key --cert keys/client.pem --cacert keys/rootCA.pem --pass password --http2 --ciphers ECDHE-RSA-AES128-SHA
Клиент падает (при чем несколько последовательных вызовов дают разные ошибки: либо в SSL_write, либо error in HTTP2 framing layer), и падает уже после того, как договорился с сервером о протоколе и cipher suite, непосредственно при передаче данных.
Форсим протокол http1.1, все снова рабоатет:
curl -kv https://localhost:8443 --key keys/client.key --cert keys/client.pem --cacert keys/rootCA.pem --pass password --http1.1 --ciphers ECDHE-RSA-AES128-SHA
Т.е. проблема возникает только при использовании http2, tls1.2 и некоторых cipher suites.
Гугление дает черный список cipher suites, которые МОГУТ приводить к ошибке соединения для http2 и tls1.2: https://http2.github.io/http2-spec/#BadCipherSuites
Вот только согласно этому документу ошибка должна быть INADEQUATE_SECURITY, а не просто падение при попытке обмена данными. curl, согласно документации, должен был бы делать fall back до http1.1, но negotiation состоялся, поэтому никакого fall back нет.
В https://http2.github.io/http2-spec/#TLSUsage написано довольно расплывчато: Due to deployment limitations, it might not be possible to fail TLS negotiation when these restrictions are not met. An endpoint MAY immediately terminate an HTTP/2 connection that does not meet these TLS requirements with a connection error of type INADEQUATE_SECURITY.
Непонятно почему "it might not be possible to fail TLS negotiation", наблюдаю ли я с курлом этот самый кейс и как дальше жить?..


Roman
15.02.2018
14:30:51

Oleh
15.02.2018
14:31:36
а как в https://godoc.org/gopkg.in/go-playground/validator.v9 получить user friendly ошибку?
Key: 'DemandPartnerPostRequestBody.Name' Error:Field validation for 'Name' failed on the 'required' tag
это же какой-то пиздец

Yaroslav
15.02.2018
14:34:44
поясни пож.
https://nordicapis.com/security-points-to-consider-before-implementing-graphql/
Очень просто оставить видимыми наружу данные, которые должны быть приватными

Roman
15.02.2018
14:36:04

Oleh
15.02.2018
14:37:32
а вы у вложенных тоже описали валидацию?
да, но я не хочу вообще никак валидировать вложенный тип. Потому-что я хочу валидировать только текущую стуктуру без подструктур.
Еще вопрос, как вы выводите ошибки, просто то что отдает валидатор?

Человек
15.02.2018
16:42:10
Что делать когда ответ возвращает nil, Golang завершает работу паникой и программа завершает свою работу. Как можно продолжить работу, попытаться восстановить соединение с сервером или просто продолжить работу не обращая внимания на панику?

Aleksandr
15.02.2018
16:47:58
ответ чего?

Google

Александр
15.02.2018
16:48:22
https://habrahabr.ru/post/118898/

Человек
15.02.2018
16:48:42
Ответ от http запроса

Aleksandr
15.02.2018
16:49:12

Человек
15.02.2018
16:50:34
если мне нужно получить значение res.Body, а res.Body будет ровняться nil то будет опять паника. Вообще я сейас использую Recover, но он как-то непонятно действует

Aleksandr
15.02.2018
16:51:09