
Alexey
02.11.2017
11:43:23
Нормальная обработка ошибок в нём решает
http://golangshow.com/episode/2015/11-26-031/ – старый выпуск с обсуждением темы

Давид
02.11.2017
12:13:01

Google

Давид
02.11.2017
12:13:41

Илья
02.11.2017
12:13:46
gramework

nn
02.11.2017
12:36:17

Давид
02.11.2017
12:39:46

Galim
02.11.2017
13:39:19
добрый день, я только начинаю писать на го, не совсем понимаю как работают слайсы
хотел написать бота для тайного санты и наткнулся на проблему:
есть слайс, каждому эллементу слайса нужно впарить другой уникальный элемент слайса
https://play.golang.org/p/jy4IGvVDEB
вот упрощённый вариант того что я накидал
слайс это указатель на массив, а как сделать так чтоб при append у меня не менялся первоначальный слайс, точнее что применять если не append
я не жду подробного объяснения, ткните пожалуйста в доку где это конкретно читать

nezorflame
02.11.2017
13:41:54
https://github.com/golang/go/wiki/SliceTricks

Илья
02.11.2017
13:42:09
стркоа 35, убери s1 =
хотя я не понимаю, ни задачу, ни то, что ты написал :)
так что, удачи

Google

Aleksandr
02.11.2017
13:43:39

Alexey
02.11.2017
13:45:50
Нет, маппинг на структуру и обратно в Go везде делается через теги, потому и в reform так

John
02.11.2017
14:31:45
Вопрос: а как лучше всего отслеживать множество таймеров в Go ? Они могут динамически добавляться и удаляться. Создавать на каждый таймер свою горутину ? или отслеживать все сразу в mail loop (через reflect.select) ? Может, кто-то уже решал подобную задачу :)

Атас
02.11.2017
15:04:59
ну например вот так
https://play.golang.org/p/-8BGdMvvgX

Vladimir
02.11.2017
15:35:47
если они будут пулять в канал что-нибудь

John
02.11.2017
15:36:25

Vladimir
02.11.2017
15:37:40
иначе можно таймеры в слайсы запихать и по слайсу ходить спрашивая "есть чо?"
горутины наверное покрасивее будут по коду

John
02.11.2017
15:38:27

Илья
02.11.2017
15:43:17
/report

Lucky
02.11.2017
15:43:42
/report

nezorflame
02.11.2017
15:43:48
/report

Roman
02.11.2017
16:09:03
Привет Gopher'ы
кто нибудь уже дата-лодыря (dataloader) для GraphQL имплементировал?

Aleksandr
02.11.2017
16:09:41

Roman
02.11.2017
16:10:35

Vladimir
02.11.2017
19:45:14
а это, давно gogland переименовался?

BlastPy
02.11.2017
19:46:48
так только голосовали за новое название

Google

Alexey
02.11.2017
19:46:56
Он переименовался уже?

Vladimir
02.11.2017
19:47:08
г исчезла и L заглавной стала

BlastPy
02.11.2017
19:47:20
да

Aleksandr
02.11.2017
19:47:42

Vladimir
02.11.2017
19:48:04
сегодня новый eap
вот я на него ебилд начал править и оп, а он не качается. Оп - а g исчезла

Aleksandr
02.11.2017
19:48:21
https://d3nmt5vlzunoa1.cloudfront.net/go/files/2017/11/gogland_1.8mb.gif

AxiS
02.11.2017
19:48:38

Vladimir
02.11.2017
19:49:04
отстойники
раньше было лучше

AxiS
02.11.2017
19:49:45
Название?

Vladimir
02.11.2017
19:49:51
да

AxiS
02.11.2017
19:50:10
ну только из-за того что географическое?

Vladimir
02.11.2017
19:50:24
раньше были гланды, а теперь что? ланды?

Aleksandr
02.11.2017
19:50:52

AxiS
02.11.2017
19:59:15
GoDeeper тоже норм)

Aleksandr
02.11.2017
20:07:27
Если не заметили, в декабре GoLand зарелизится и станет платным соответственно.

AxiS
02.11.2017
20:08:14
но можно продолжить пользоваться EAP

Aleksandr
02.11.2017
20:09:13
Если будет чем пользоваться. Они же на определенный срок

Google

AxiS
02.11.2017
20:10:13

Aleksandr
02.11.2017
20:11:17

Alexey
02.11.2017
21:07:30
Они вроде иногда не всегда ЕАР регулярно выпускают. А вообще это к вопросу о нормальной работе и удаленке, на нормальной обычно покупают идешки без проблем:)

Admin
ERROR: S client not available

Андрюха (Ren)
02.11.2017
21:20:13

Nick
02.11.2017
21:26:41
А нельзя взять идею комьюнити и поставить плагин ?

Андрюха (Ren)
02.11.2017
21:29:32
и финиш не прожимается

Александр
02.11.2017
21:46:46

Nick
02.11.2017
21:49:07

AxiS
02.11.2017
23:09:30

corpix
02.11.2017
23:39:50
Да переезжайте уже в emacs/vim, задолбали :D

drjackild
02.11.2017
23:47:31
Ребзи, а прокомментируйте код, пожалуйста. Я тут после достаточно долгой работы на питоне пытаюсь Го потыкать, и не пойму, норм я пишу, или нет. Заранее респект и уважуха всем.
func (a *App) GetProjects(w http.ResponseWriter, r *http.Request) {
var payload []byte
var projects []Project
a.DB.Find(&projects)
data := make([]interface{}, len(projects))
for i, project := range projects {
data[i] = project
}
context := Context{Status: "OK", Data: data}
payload = a.Jsonify(context)
if payload == nil {
context = Context{Status: "ERROR", Error: "Error when get projects"}
payload = a.Jsonify(context)
w.Write(payload)
} else {
w.Write(payload)
}
}
в Jsonify там такая фигня:
func (a *App) Jsonify(context Context) []byte {
encodedContext, err := json.MarshalIndent(context, "", " ")
if err != nil {
return nil
}
return encodedContext
}


Roman
03.11.2017
06:47:37
а Context это {
Status string,
Data: []Interface{}
} ????????????
payload := blabla
if payload {
w.Write(payload)
} else {
w.Write(payload)
}
это тебе даже линтер прокоментирует
а ошибку имело смысл кидать сразу после получения проектов и проверки результатов
тут как бы все равно на каком языке, не думаю, что в пайтоне это было бы нормой

Dmitri
03.11.2017
07:03:16

Google

terry
03.11.2017
07:54:30
https://www.youtube.com/watch?v=k-_c6wKIA8w

Konstantin
03.11.2017
07:58:33
а он разве игнорирует?
сделай для примера хедер в файле с названиями всех полей

Arch
03.11.2017
08:05:23

drjackild
03.11.2017
08:54:46

Roman
03.11.2017
09:06:45
вот это тогда лишнее
и Data не []interface{} а interface{} пусть будет
и просто projects присваивай

drjackild
03.11.2017
09:09:53
Спасибо, гораздо лучше, это меня больше всего бесило)

Roman
03.11.2017
09:15:00
if payload == nil {
context = Context{Status: "ERROR", Error: "Error when get projects"}
payload = a.Jsonify(context)
w.Write(payload)
} else {
w.Write(payload)
}
вот это тоже лучше переделать
if len(projects) == 0 {
context = Context{Status: "ERROR", Error: "Error when get projects"}
payload = a.Jsonify(context)
w.Write(payload)
return
}
а еще лучше возьми какой-нить gin посмотри примеры и перепеши на нем


drjackild
03.11.2017
09:20:57
я сделал чуток иначе (я юзаю mux, а не gin), вроде теперь тож ок. на len проверять не буду, потому что отсутствие проектов не ошибка, норм поведение.
теперь как то так:
func (a *App) GetProjects(w http.ResponseWriter, r *http.Request) {
var payload []byte
var projects []Project
a.DB.Find(&projects)
context := Context{Status: "OK", Data: projects}
payload, err := a.Jsonify(context)
if err != nil {
context = Context{Status: "ERROR", Error: "Error when get projects"}
payload, _ = a.Jsonify(context)
errMsg := string(payload[:])
http.Error(w, errMsg, http.StatusInternalServerError)
return
}
w.Write(payload)
}

Roman
03.11.2017
09:24:21
а если во втором Jesonifyошибка? :)