
Kirill
07.12.2017
10:11:58
Убейте флудеров
Да вроде уже давно перманент бан напрашивается, не пойму почему они еще тут

Daniel
07.12.2017
10:13:35

nezorflame
07.12.2017
10:21:31
Да так, чат совсем во флудилку превратился усилиями некоторых

anton
07.12.2017
10:23:17
меня здесь давно не было, но кажется чат как чат. как было раньше, так и сейчас осталось.
разве что стало меньше вопросов типа "какой фреймворк взять?"

Google

Aleksey
07.12.2017
11:07:13
Можете подсказать, я получаю на вход json с необязательным полем email { “email”: “test@gmail.com” } (потенциально может быть больше полей, но все останутся необязательными)
В го я маплю json на структуру
type UpdateUserBody struct {
Email string
}
…
userDraft := UpdateUserBody{}
json.NewDecoder(r.Body).Decode(&userDraft)
…
И обнавляю запись в базе
…
user := User{}
query := `
UPDATE users
SET email=$1
WHERE id=$2
RETURNING id, email, created, updated`
err := um.DB.QueryRow(query, userDraft.Email, userDraft.Id).Scan(&user.Id, &user.Email, &user.Created, &user.Updated)
…
Как мне построить процесс так, чтобы обновлялись только указанные в json-е поля?

anton
07.12.2017
11:17:22
постгря?
coalesce не подойдет?

Aleksey
07.12.2017
11:21:11
постгря?
coalesce не подойдет?
Проблема в том, что когда я маплю json на эту структуру, если в json нету параметра email, то email становится равным пустой строке “” и тогда coalesce никак не реагирует и просто переписывает значение в базе на пустую строку.
Сейчас пробую переписать получение данных в мапу, но у меня на структуре навешена валидация:
type UpdateUserBody struct {
Email string valid:"email~Isn't a valid email"
}

anton
07.12.2017
11:22:47
type UpdateUserBody struct {
Email *string
}
Pointer values encode as the value pointed to. A nil pointer encodes as the null JSON object.
попробуй *string вместо string

Aleksey
07.12.2017
11:24:04

anton
07.12.2017
11:24:56
хм, а какой клиент? вообще, обрамляешь его одинарным или тройным бэктиком и все работает тыц

Aleksey
07.12.2017
11:25:28
Code sample
Mac десктоп - одинарный отправляет, а когда отправляю с тройным, то на мнгновение появляется серая рамка и сразу пропадает. Сообщение выше написал с тройным, кстати.

anton
07.12.2017
11:27:58

Vladimir
07.12.2017
11:28:24
Telegram Desktop - Qt5 и кроссплатформенный
тот что слева - он какой-то типа нативный (хотя больше смахивает на webapp) и странненький

Google

Vladimir
07.12.2017
11:29:29
да, на telegram desktop все отправляется корректно. Никаких серых рамок не появляется впрочем

Aleksey
07.12.2017
11:31:21
Да, в том, что справа, все корректно работает, хотя интерфейс левого мне кажется более приятным

Pauline
07.12.2017
11:37:24

Aleksey
07.12.2017
11:42:56
Можете, пожалуйста, оценить подход. Первый проект на go. В общем попробовал перенести подход к разработке на node.js на то, как принято в го. Реализовал CRUD к одной коллекции данных, создание новых коллекций потенциально расширяется в папке src/modules аналогично с users.
https://github.com/AM-NiceDay/my-costs-api

Александр
07.12.2017
12:21:09
народ а если я создаю кастомный тип на основе например string
я же не смогу туда скормить строку?
type MyType string
myTypeVar := MyType("ВВася")

Aleksandr
07.12.2017
12:25:06
подскажите как можно прогонять юниттесты go test если используется dep либа для вендоринга? запускаю go test и не ищет зависимости в vendor папке. могу конечно в gopath добавить, но это как-то извращение как по мне

Александр
07.12.2017
12:25:48

plq
07.12.2017
12:25:57

Aleksandr
07.12.2017
12:26:26

plq
07.12.2017
12:26:39

Vladimir
07.12.2017
12:26:53

plq
07.12.2017
12:27:11

Aleksandr
07.12.2017
12:27:13

Александр
07.12.2017
12:27:33

Aleksandr
07.12.2017
12:27:35
или надо костылять все-таки

Kirill
07.12.2017
12:28:24
go test с vendor нормально работает

Aleksandr
07.12.2017
12:28:42

Google

Kirill
07.12.2017
12:29:44
Go у вас какой версии ? Просто есть люди которые Go из репозиториев убунты ставят и там не совсем понятно что

Aleksandr
07.12.2017
12:34:28

nezorflame
07.12.2017
12:36:50

Kirill
07.12.2017
12:37:00

Олександр
07.12.2017
12:37:39
Хело братья и сестры. Кто нибудь ставил GO в докере ?

nezorflame
07.12.2017
12:37:48
я обычно гоняю вот так:
go test -v -cover $(go list ./... | grep -v /vendor/)

some_random_anonymous
07.12.2017
12:38:08
Работает и кушать не просит

nezorflame
07.12.2017
12:38:33
таки ничего плохого

some_random_anonymous
07.12.2017
12:38:47
Ну вот у комрада почему-то припекает от dep

plq
07.12.2017
12:38:53
Что не так с dep?
как по мне — слишком громоздкий и не очень хорошо работает с разными ветками (насколько я помню)

nezorflame
07.12.2017
12:39:27
громоздкость - следствие универсализации, а вот второе не могу подтвердить

nezorflame
07.12.2017
12:39:40
совершенно спокойно пашет и с бранчами, и с тэгами, и даже с коммитами
в общем-то я успешно на него пересел с glide и не сожалею

Aleksandr
07.12.2017
12:40:31

nezorflame
07.12.2017
12:40:32
хотя glide меня более, чем устраивал :)

Vladimir
07.12.2017
12:40:56
не очевидно управление тем какая ветка нужна
но это к UX

nezorflame
07.12.2017
12:41:42
э, а где это очевидно?

Google

Vladimir
07.12.2017
12:41:47
главный плюс депа в том что он вероятно станет официальным )

some_random_anonymous
07.12.2017
12:42:00
И всем так рекомендую делать

Aleksandr
07.12.2017
12:42:20

Admin
ERROR: S client not available

Vladimir
07.12.2017
12:42:26
э, а где это очевидно?
не знаю, но в dep'е мне не понравилось что либо тебе надо руками файл редактировать либо при добавлении указывать ветку/коммит/версию, а поменять потом нельзя будет (только редактированием файла)

nezorflame
07.12.2017
12:42:53
либо сразу добавлять с нужной веткой, да

plq
07.12.2017
12:43:11

nezorflame
07.12.2017
12:43:38
а, править ручками томл неочевидно? ну тогда наверное да :)

plq
07.12.2017
12:44:22

Vladimir
07.12.2017
12:44:42

nezorflame
07.12.2017
12:44:47
если честно, не видел ни одного dep manager'а гошного, который бы это командой делал
везде путем редактирования конфига

Vladimir
07.12.2017
12:45:03
просто сделать это командой - легко )

nezorflame
07.12.2017
12:45:15
glide. govendor - то же самое

Lee
07.12.2017
12:45:30
У кого go + sublime ?
Кто какими плагинами пользуется для упрощения жизни?

nezorflame
07.12.2017
12:45:58

Vladimir
07.12.2017
12:46:02
@nezorflame мне нравится у dep'а комьюнити. Нашел баг, описал, через 40 минут ответили с момента репорта)

nezorflame
07.12.2017
12:46:08
это да

Google

Vladimir
07.12.2017
12:46:13

nezorflame
07.12.2017
12:46:22
они весьма хорошо к реквестам относятся

Vladimir
07.12.2017
12:46:42
ни и к issues и к PR хорошо относятся

nezorflame
07.12.2017
12:46:43
но да, сперва можно issue на обсуждение

Aleksandr
07.12.2017
12:46:54
просто сделать это командой - легко )
я вам скажу мне в pip питоновский со всеми его автоматизациями freeze и прочим было увереннее записать ручками в requirements.txt зависимость чем делать фриз

Александр
07.12.2017
12:53:37
func fill(modelField *string) {
value := db.GetAttributeValue("blabla")
if value != "" {
modelField = &value
}
}
это же работать не будет?
поскольку value почиститься после выхода из функции
не знаю как сборщик мусора, но по логике должен убить

John
07.12.2017
13:36:08

Александр
07.12.2017
13:43:21
работать будет так - https://play.golang.org/p/Lekvya0NRs
с двойным сука указателем
при попытке сделать так - https://play.golang.org/p/yNTzGQ-jCZ
"invalid memory address or nil pointer dereference"

Alexey
07.12.2017
13:44:57
господи помилуй