
Roman
23.02.2018
19:46:09
нужно ли защищать доступ чтения map'а mutex'ом если речь идёт тупо о чтении размера?
len(sharedMap)

Daniel
23.02.2018
20:49:10
скорее всего - да.

Alexander
23.02.2018
21:42:50
С праздником... чтобы код был чище и разум яснее)))

meehalkoff✪
23.02.2018
21:59:13

Google

Alexander
23.02.2018
21:59:31

Roman
23.02.2018
22:31:16

Demuz
24.02.2018
04:23:32
@onokonem

Marlik
24.02.2018
05:25:10
@pragus @schors
Как в ворнингам относиться? Игнорить? Вот есть такое
resp, err := http.Get("http://api.fixer.io/latest?base=" + item)
if err != nil {
return nil, errors.Wrap(err, "Not response from api.fixer.io")
}
defer resp.Body.Close()
И ругань линтера
warning: error return value not checked (defer resp.Body.Close()) (errcheck)
Так-то да, понимаю что если будет обработана ошибка, то resp.Body.Close() не отработает, а как такое обойти?

Anatoly
24.02.2018
05:40:10
нет, если будет обработана ошибка, все отработает. Но предупреждение исчезнет
напиши небольшой враппер, если этот ворн тебя раздражает)

Marlik
24.02.2018
05:41:27

Anatoly
24.02.2018
05:42:22
func Close(o io.Closer) {
err: = i.Close()
}
и вызови это как defer Close(blabla)
на err конечно там отреагируй как следует

Marlik
24.02.2018
05:44:20
На err смысла то особо нет реагировать-то, или я ошибаюсь? Главное в лог положить где и что случилось.

Anatoly
24.02.2018
05:44:32
ну так и положи

Google

Anatoly
24.02.2018
05:44:52
if err != nil { log.Fatal(err) }
хорош
просто это будет враппер который вычитывает ошибку и логирует. Его можно скормить defer и все у тебя станет хорошо

Marlik
24.02.2018
05:45:35
Раз вы уж здесь, установил dep, и получаю такую бяку
error: could not import github.com/mattn/go-sqlite3 (type-checking package "rzn/vendor/github.com/mattn/go-sqlite3" failed (/home/marlik/go/src/rzn/vendor/github.com/mattn/go-sqlite3/error.go:14:17: invalid constant type invalid type)) (gotype)

Anatoly
24.02.2018
05:47:18
это разные ошибки, враппер чекнет ошибку закрытия
у тебя на это комплиятор ругается, что мол как так, Close() вертает ошибку, а ты на нее забил

Marlik
24.02.2018
05:47:37

Anatoly
24.02.2018
05:47:38
ай ай
он считает, что если rep.Body.Close() возвращает ошибку, ты просто обязан ее обработать
ну такое

Daniel
24.02.2018
09:08:43

Anatoly
24.02.2018
09:09:32
тогда линтеры надо укрощать, совсем обноглели

Mike
24.02.2018
09:25:59
Воруй @ Убивай @ Игнорируй ошибки

Savely
24.02.2018
10:22:02
Вопросик.
Сортирую небольшой (казалось бы) массив структур с достаточно сложной структурой, но элементов вроде немного (около 500):
sort.Slice(joins, func(i, j int) bool {
return joins[i].Right.Profile.Rating > joins[j].Right.Profile.Rating
})
По времени около 5 секунд минимум. Это причем на домашнем декстопе, а на бедном одноядерном сервачке буду вообще наверно секунд 30 сортировать. Это ок для стандартной либы? Она вроде быструю сортировку юзает. Как-то можно ускорить это дело (желательно раз в 10 :D)?
Пробовал через обычный sort.Sort с имплементацией интерфейса, но по скорости одно и тоже. Те же секунд пять.

Robert
24.02.2018
10:40:54
Реорганизация структуры хранения, что бы при сортировке не вытеснялся из кэш процессора часто?

Savely
24.02.2018
10:42:10

Robert
24.02.2018
10:42:29
Да
Как в базе данных. Отдельно данные, отдельно индексы.

Google

Savely
24.02.2018
10:43:47

Robert
24.02.2018
10:49:44
Имхо сделать надо массив простой из 500 элементарных элементов (ранк) и ссылка на объект, и глянуть сколько микросекунд сортировка занимает на локальном компе. Думаю дело в организации мега структуры. Там что то надо менять.
Но конечно удаленно резать аппендицит )) то ещё занятие

Savely
24.02.2018
10:52:02

Robert
24.02.2018
10:53:58
Ага

Daniel
24.02.2018
11:06:06
сообразно этой функции оно наносекунды должно сортироваться

Savely
24.02.2018
11:13:10
5 секунд - очень много.
Ну у меня там лютая структура на выходе. Я думаю из-за этого. Вот пример элемента:
https://gist.github.com/L11R/c49eb930f8f00e8cbadae1bb09118de6

Daniel
24.02.2018
11:13:30
так и что структура?
в слайсе она сама лежит, или указатель на нее?

Savely
24.02.2018
11:13:57

Daniel
24.02.2018
11:14:26
как слайс объявлен?

Savely
24.02.2018
11:14:29
var joins []Join
err = res.All(&joins)
Как-то так

Daniel
24.02.2018
11:15:21
а если вот так объявить? var joins []*Join

Nikita
24.02.2018
11:15:32

Savely
24.02.2018
11:16:14

Daniel
24.02.2018
11:16:36
тогда структура ни при чем, и ни при чем сортировка, соответственно

Google

Admin
ERROR: S client not available

Savely
24.02.2018
11:16:40
Я сейчас перепроверю всё конечно, может это база сама секунды 3 дергает.

Daniel
24.02.2018
11:16:45
где в другом месте время тратится

Savely
24.02.2018
11:17:37

Daniel
24.02.2018
11:18:44
тогда надо выясняти, что к чемути

Robert
24.02.2018
11:18:55
Структура ?

Daniel
24.02.2018
11:19:26
вот, например, таймштампы вокруг сорта что показывают?

Savely
24.02.2018
11:19:36

Oleg
24.02.2018
17:30:26

Aleksandr
24.02.2018
17:32:04
Кодом брось, не видно ни черта

Oleg
24.02.2018
17:32:44
case required:
value, err := hook(raw)
if err != nil {
return errors.Wrap(err, fmt.Sprintf("failed to figure out %s", fieldType.Name))
}
if value.IsNil() {
return errors.Wrap(errRequiredValue, tag)
}
fieldValue.Set(value)
panic: reflect: call of reflect.Value.IsNil on int Value [recovered]
суть в том, что я хочу чекнуть переменную типа reflect.Value на то есть ли в ней значения, у reflect.Value есть метод isNil() во время выполнения которого я ловлю такую панику
П.С. написать просто value != 0 тоже не катит и даже, если скастовать к инту, или сравнить value == reflect.Value{}

Marlik
24.02.2018
17:38:54
30 стр. -> func course() (c *Exch, err error) {
...
35 стр. -> resp, err := http.Get("http://api.fixer.io/latest?base=" + item)
Ошибка типа
../../go/src/rzn/currensy.go:35::warning: declaration of "err" shadows declaration at /home/marlik/go/src/rzn/currensy.go:30 (vetshadow)
Это ведь не ошибка, как-то можно обходить эти проблемы?

Nikolay
24.02.2018
17:41:06

Marlik
24.02.2018
17:43:57

Oleg
24.02.2018
17:47:01

Nikolay
24.02.2018
17:51:19

Google

Oleg
24.02.2018
17:54:33
Cпасибо большое ?

Nikolay
24.02.2018
17:58:26
Все такие CanAddr для чего-то другого

Oleg
24.02.2018
18:04:56

Nikolay
24.02.2018
18:05:47
как-то так
Ну суть в общем, думаю уловил - проверить сначала любым образом, может ли вообще значение принимать nil

Алекс
24.02.2018
18:09:58
привет, никто не хочет принять участие в написании биндингов к http://dlib.net ?

Oleg
24.02.2018
18:28:13