Илья
MOS2502
Всем огромное спасибо, вопрос решили :)
Anonymous
всем привет
как корректно распрсить json в структуру
приходит в виде
{
"list": {
"data": [
{
"dataid": 5,
"name": "nameOne"
},
{
"dataid": 7,
"name": "nameOne"
}
]
}
}
у меня есть структура
type Info struct {
ID bson.ObjectId `bson:"_id" json:"id"`
Dataid int `bson:"dataid" json:"dataid"`
Name string `bson:"name" json:"name"`
}
при этом
b, err = ioutil.ReadAll(res.Body)
var temp []Info
err = json.Unmarshal(b, &temp)
if err != nil {
log.Println(err)
return
}
отдает мне cannot unmarshal object into Go value of type
если разбирать не в слайс то создается один пустой объект структуры а не много
что не так я делаю?
Daniel
list забыли
Aleksandr
и data
Aleksandr
https://mholt.github.io/json-to-go/
Daniel
вооще - вам сюда: https://mholt.github.io/json-to-go/
Aleksandr
вот это тут пригодится
Anonymous
те мне нужно описать прям всю структуру в таком же виде?
Aleksandr
либо структура соответствует схеме. либо пишете свой анмаршаллер
Anonymous
бааалин(
Илья
Anonymous
Илья
плохо сделал значит
Anonymous
type AutoGenerated struct {
List struct {
Data []struct {
Dataid int `json:"dataid"`
Name string `json:"name"`
} `json:"data"`
} `json:"list"`
}
это тоже неверно?
Илья
см playground
Anonymous
спасибо, в теге опечатался)
Андрей
Друзья, подскажите, у меня есть функция auth это мидлвар, а как мне передать из неё данные в следующую за ней функцию secret , вот код, они в самом низу https://github.com/tsepen/lan-place/blob/master/handlers/users.go
Aleksandr
Alexander
тестирую свое приложение через wireshark и вижу ошибку tcp zero window
Alexander
быстрое гуглениче чет не помогло
Alexander
никто не в курсе что за зверь?
Daniel
Не помогло же...
Alexander
Да, конечно же я сам сначала погуглил и пришёл к выводу, что клиент не успевает обработать Сообщения
Alexander
Все верно понял?
Daniel
Правда, тут только гильотинирование
Alexander
Но чёт непонятно почему клиент внезапно не успевает
Roman
А кто нибудь через viper сохранял конфиг в $HOME?
как это сделать?
GlobalConfig = viper.New()
GlobalConfig.SetConfigFile("$HOME/" + configFileName)
// global open $HOME/.jessica.yml: no such file or directory
и
GlobalConfig = viper.New()
GlobalConfig.SetConfigFile("~/" + configFileName)
// global open ~/.jessica.yml: no such file or directory
Не сработало, надо достать значение из переменной окружения и составить полный путь? или я что-то не так делаю?
Roman
GlobalConfig.SetConfigFile(os.Getenv("HOME") + "/" + configFileName)
вот так сработало, но вообще интересно, можно ли сделать короче
Anonymous
Да можно, через AutomaticEnv он разбирает переменные с нужным префиксом, кроме SetConfigFile можно указать AddConfigPath тут неплохо описано https://blog.gopheracademy.com/advent-2014/configuration-with-fangs/
Andrey
Roman
Roman
Evgeny
Подскажите, пожалуйста, по ситуации. Глаз вообще замылился.
Использую MGO. Меняю документ, у значения обновляю параметр bool. Обновление с true на false, а затем обратно с false на true проходит штатно. Меняю через $set. Последующие изменения параметра вообще не приводят к результату.
В самой консоли mongo параметр вручную изменяется без проблем сколько угодно раз, то же самое через Compass.
Пытался вывести какие-либо ошибки у MGO всё пусто, запрос как бы уходит.
Где следует поискать ошибку ?
Андрей
Всем добра, подскажите планируются ли а ближайшее время какие то конференции или мероприятия по golang в России? Может дадите ссылку где можно следить за предстоящими событиями ?
Anonymous
Ребят, можете помочь с кодревью буквально пару функций.
Anonymous
Набыдлокодил прямо сказать, а вот как правильно это реализовать, чтобы еще больше не набыдлокодить…
Michael
Anonymous
https://pastebin.com/fwEtG2Z6
Вот код… помогите пжст
Zhenja
log.Fatalf после return?
Anonymous
Anonymous
не исправил… до этого не было ретюрна просто фатал, не поправил
Zhenja
для картинки _thumb_300x300 размер 300*400?
Anonymous
Косяк
Anonymous
должен быть 300x300
Zhenja
я б вынес все это в отдельную функцию, на вход которой подается размеры и она делает одну картинку нужного размера
Anonymous
Zhenja
func (img *Image) ResizeOneImg(w, h int) (string, error) {
fname := filepath.Join(img.Path, img.Id, fmt.Sprintf("_thumb_%dx%d", w, h)+img.Name+img.Type)
src := openImage(fname)
dst := image.NewRGBA(image.Rect(0, 0, w, h))
draw.ApproxBiLinear.Scale(dst, dst.Bounds(), src, src.Bounds(), draw.Over, nil)
dstFile, err := os.Create(fname)
if err != nil {
return "", err
}
defer dstFile.Close()
if err = jpeg.Encode(dstFile, dst, nil); err != nil {
return "", err
}
return fname, nil
}
Zhenja
ps. не проверял, но надеюсь идея понятна
Anonymous
Anonymous
func (img *Image) ResizeOneImg(w, h int) (string, error) {
fname := filepath.Join(img.Path, img.Id, fmt.Sprintf("_thumb_%dx%d", w, h)+img.Name+img.Type)
src := openImage(fname)
dst := image.NewRGBA(image.Rect(0, 0, w, h))
draw.ApproxBiLinear.Scale(dst, dst.Bounds(), src, src.Bounds(), draw.Over, nil)
dstFile, err := os.Create(fname)
if err != nil {
return "", err
}
defer dstFile.Close()
if err = jpeg.Encode(dstFile, dst, nil); err != nil {
return "", err
}
return fname, nil
}
К примеру прохожусь в цикле три раза по этой функции (так как нужно 3 файла)… а как бы вы потом собрали все filename и filepath в JSON?
Zhenja
for ... {
f[fmt.Sprintf("filePath_%dx%d", h, w)], err = img.ResizeOneImg(w, h)
if err != nil {
return
}
}
Zhenja
https://play.golang.org/p/bKT7ECaAhjy
Коллеги, подскажите как тут получить адрес строки-результата? Еще одну переменную вводить?
Anonymous
Zhenja
потому что результат функции еще нигде не сохранился и адреса у него еще нет?
Мерль
Zhenja
спасибо
Vadim
Когда уже сделают нормальную библиотеку графиков для го?(
Andrei 🦉
Aleksandr
Andrei 🦉
Vadim
Aleksandr
потому что ученые не программисты
Andrei 🦉
Почему?
потому что он медленный, а коменсировать это сишными либами не получится, так как cgo еще медленнее
Andrei 🦉
на го отстутствует обощенное програмирование, то есть на то, что в питоне ты потратишь 5 строк, в го может вылится в сотни
Aleksandr
Программирование - прикладной инструмент.
без разницы. для "не-программиста" важно наличие доступных для их понимания библиотек. на го их нет. писать никто не будет. на R и питоне уже есть.
Andrei 🦉
то есть с одной стороны он слишком медленный, чтобы заменить модули на си и фортране, с другой он слишком деревянный, чтобы заменить питон
Olzhas
На пхп писать надо
Oleg
толсто
Olzhas
Это не шутка!
Oleg