Илья
вы точно на C++ программировали? и насколько раньше?
Илья
и как там в C++ с бинарными файлами?
Kirill
прямо вчера.
Первый раз?
Je
когда в блокноте откроете бинарный файл, там нечитабельный текст. Текстовый файл можно читать. Я так различаю их.
здорово, а как ЯП должен отличать бинарный файл от небинарного? тоже открывает блокнот и читает? Все файлы бинарные, по-другому они не могут быть сериализованы на диск, но дополнительно в некоторых ЯП объявлены методы для удобной работы с текстовыми - считать построчно и тд
Shahzod
Первый раз?
да первый раз. Сразу начинал с файлoB! 😠
Илья
ну так в C++ как вы с "бинарнами файлами" работали?
Je
Что ты хочешь сделать? просто прочитать файл - бери читай, если в структуры, то юзай encoding/binary, здесь пример http://varunpant.com/posts/reading-and-writing-binary-files-in-go-lang
Damian
народ может кто работал с парсингом map[string]interface{} в структуру, есть ли понятны примеры или разьяснит?
Kirill
Разница между "текстовым" и "бинарным" файлами только в формате энкодера, кмон
Илья
народ может кто работал с парсингом map[string]interface{} в структуру, есть ли понятны примеры или разьяснит?
идея сама по себе плоха, но google golang map to struct выдает https://godoc.org/github.com/mitchellh/mapstructure
Kirill
Но плюсую насчёт качества идеи. Лучше бы так не делать
Damian
это я делаю для JWT
Damian
типа чтоб в playload любую структурку подкидывать
Damian
других идей нету, поэтому пока эту реализовать нужно
Илья
хм, а почему тогда туда json.RawMessage не положить? и разбирать в зависимости от условий далее уже в структуры
Damian
тк возвращаемый тип type MapClaims map[string]interface{}
Damian
я пока хз как json.Unmarshal делать)
Serge
всем привет, голлеги может кто поможет? вчера весь мозг сломал snp@foo% GOPATH=/home/snp/my/_projects/acme-dns/.go go test -run GetValidUsername -v === RUN TestGetValidUsername --- PASS: TestGetValidUsername (0.00s) PASS exit status 1 FAIL _/home/snp/my/_projects/acme-dns/acme-dns_build2/src/github.com/serge-name/acme-dns 0.011sпочему тест PASS, но в итоге FAIL? появляется после одного фикса (покажу, если надо) этот запускаемый тест — для совсем другого куска кода
Илья
без кода ничего не скажешь
Serge
код тут: https://github.com/serge-name/acme-dns/commit/31519935326103efeee2573049d3034249434b1a
Serge
вот этот фикс меняет картину кардинально
Kirill
попробуй все таки err != nil и вот это всё
Kirill
а то похоже, что он фаталит с nil
Serge
м… попробовать можно, но тут ещё и интерес спортивный потому что по идее, log.Fatal(server.ListenAndServe()) это канонический запуск, везде так сам код компилится ОК и работает как надо
Илья
а какая сигнатура у server.ListenAndServe()?
Serge
как посмотреть? (я пока в Go начинающий ггг)
Kirill
а какая сигнатура у server.ListenAndServe()?
да ну, обычно err там будет валяться
Kirill
да ну, обычно err там будет валяться
но вот там может быть и nil
Илья
эмм, а для запуска горутины разьве не нужно чтобы функция была без возврата?
Илья
😮
Илья
да понял, почему то думал, что должна быть защита от дурака
Kirill
не-а, тут уже рассчет на инстинкт самосохранения)
Илья
соответственно попытка повесить listen фейлится, и усе
Serge
м… тогда бы валились тесты соответствующие, где тот код тестируется там все тесты PASS, вообще все
Kirill
я подозреваю, что гошка перед выходом тушит листенер, а потом log.Fatal() делает своё чёрное дело
Илья
хм, кстати, тоже вариант
Kirill
мне вообще нравится, как гошка умирает
Serge
сделал так: listenAndServe := func(server *dns.Server) { // log.Fatal(server.ListenAndServe()) server.ListenAndServe() return }теперь тест проходит «но почему?» © я пока не понимаю, тест GetValidUsername этот кусок не тестирует же…
Kirill
вы читали startpanic_m?
Kirill
не надо игнорировать ошибки
Kirill
вы читали startpanic_m?
кто не читал - почитайте, штука довольно смешная) https://github.com/golang/go/blob/master/src/runtime/panic.go#L708-L748
Serge
пасиб, if err … действительно помогло хотя я пока не понимаю, в каком случае ListenAndServe может вернуть не nil. видимо как раз в go test это; а в реальном приложении такого вроде как и не бывает? ну конечно в шоке я, почему код работает, а тест падает и без каких-то дополнительных пояснений, ну хоть бы чего написал поподробнее
Илья
там log.Fatal
Илья
а это os.Exit(1) under the hood
Илья
я за это вообще не люблю log.Fatal
Kirill
Но иногда лучше, чем паника, я считаю
Andrei 🦉
Roman
Привет! Ребятки, а помогите пожалуйста понять эту запись. type S3UserIdentity struct { PrincipalID string `json:"principalId"` } интересно понять про json, как это работает и куда смотреть. Спасибо!
Kirill
https://godoc.org/reflect#StructTag
Roman
Кажется теперь понял. Спасибо большое!
Shahzod
Структура имеет одно строковое поле с тегом в формате json. Это означает, что строку в формате JSON можно парсить прямо на эту структуру: jstr = `{"principalId": "any string;"}` var s3u S3UserIdentity json.Unmarshal([]byte(jstr), &s3u)
Den
Гоферы, и все кому интересно, скоро, 2 июня в Харькове будет проходить Go митап Приходите, будем рады вас видеть ! 😊 событие на facebook : https://www.facebook.com/events/1809296232498435/ регистрация и билеты : https://app.softserveinc.com/apply/register/en/khgomeetup?utm_source=ID283_idr1192
Aliaksandr
для тех, кто задолбался создавать структуры под парсинг каждого типа json'а - https://github.com/valyala/fastjson
Cat
эх лучше бы бампнуть fasthttp
Aliaksandr
на fasthttp пока забил - другими делами занимаюсь (
Aliaksandr
но он нормально работает в проде
Cat
но он нормально работает в проде
только релиза давно не было
Cat
=> go dep берёт версию от 2016 года
Andrey
парни, а скажите пожалуйста, я правильно понимаю, что есть я обновил свой пакет, который через dep используется в других местах, мне надо в каждом другом месте делать dep ensure -update чтобы обновления затянуть?
Kirill
но он нормально работает в проде
Чот я тебя в ТГ не видел, только в скупе
Aliaksandr
я прятался )
Aliaksandr
=> go dep берёт версию от 2016 года
ок, постараюсь бампнуть новый релиз. С 2016 года там в основном только багфиксы, которые у нас вылазили в проде
Cat
спасибо