@proGO

Страница 1252 из 1674
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
Roman
23.02.2018
22:31:16
скорее всего - да.
хмм, а почему, этож тллько чтение integer'а?

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
Как в базе данных. Отдельно данные, отдельно индексы.
У меня вообще очень много где расчитывается percentile rank, там нужна сортировка как раз. Если у меня только на одно поле будет 5 секунд сортировка, то все ранки я вообще буду считать полчаса (их около 1000).

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

Но конечно удаленно резать аппендицит )) то ещё занятие

Robert
24.02.2018
10:53:58
Ага

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

Savely
24.02.2018
11:16:14
а если вот так объявить? var joins []*Join
Бенча нет пока, но на глаз также долго. Около 3-4 секунд.

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
вот, например, таймштампы вокруг сорта что показывают?

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) Это ведь не ошибка, как-то можно обходить эти проблемы?

Oleg
24.02.2018
17:47:01
если мне память не изменяет - нужно чекать еще и - https://golang.org/pkg/reflect/#Value.CanAddr
т.е. не проверять на isNil(), а проверять на canAddr() опираясь на то, что у переменной нету адресса только в том случае, если под неё не выделена память и она не заинициализирована?

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

Nikolay
24.02.2018
17:58:26
Cпасибо большое ?
не, лучше так не делать, лучше value.Kind() свичом проверять

Все такие CanAddr для чего-то другого

Oleg
24.02.2018
18:04:56
не, лучше так не делать, лучше value.Kind() свичом проверять
Тоже не круто юзать сначала получается нужно распарсить тип из ReflectValue, а потом чекать каждый тип на его default value и к тому же есть .Type() https://golang.org/pkg/reflect/#Kind

Nikolay
24.02.2018
18:05:47
Тоже не круто юзать сначала получается нужно распарсить тип из ReflectValue, а потом чекать каждый тип на его default value и к тому же есть .Type() https://golang.org/pkg/reflect/#Kind
просто я там инт на структуру поменял (указатель тож попробовал) - засыпалась та же ошибка, только про другой тип данных

как-то так

Ну суть в общем, думаю уловил - проверить сначала любым образом, может ли вообще значение принимать nil

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

Страница 1252 из 1674