@gogolang

Страница 399 из 1630
Denzel
20.07.2017
13:33:44
Ну да ладно, всё равно это лучше чем та кривая реализация

Илья
20.07.2017
13:34:19
я не понимаю, чем она кривая :S если упарываться, то там делается лишний lstat, но вообще обычная реализация

Denzel
20.07.2017
13:35:49
я не понимаю, чем она кривая :S если упарываться, то там делается лишний lstat, но вообще обычная реализация
тут короче собирается слайс с путями к файлам, дальше путь разбивается на ещё один слайс, а дальше наименование вытаскивается таким образом pathsSlice[len(pathsSlice)-1]

Google
Denzel
20.07.2017
14:14:48
Хах, забавная ситуация. На Windows 7 Golang находит папку Documents and Settings, которую выпилили ещё в Windows Vista, но открыть её не может )

Ilya
20.07.2017
14:15:30
Есть какая-нить возможность ускорить for обход массива на 300млн элементов?

Хак или что-то сложное ради производительности?

Roman
20.07.2017
14:16:19
Есть какая-нить возможность ускорить for обход массива на 300млн элементов?
ускорить обход - нет, так или иначе же нужно "обойти" все, может ты имел ввиду поиск, сортировку или ещё какие либо манипуляции массива?

Alexey
20.07.2017
14:16:43
оптимизируй логику - чтоб не было 300 млн

Aleksandr
20.07.2017
14:16:44
Хах, забавная ситуация. На Windows 7 Golang находит папку Documents and Settings, которую выпилили ещё в Windows Vista, но открыть её не может )
если включишь скрытые файлы, то обнаружишь, что ее не выпиливали, а оставили для совместимости

Mush
20.07.2017
14:17:04
Есть какая-нить возможность ускорить for обход массива на 300млн элементов?
паралельно в горутинах обойти разные части - ускорит в столько раз, сколько горутин, если у них не будет взаимных блокировок. если будут блокировки - ускорение будем меньше или может быть даже дольше

Aleksandr
20.07.2017
14:17:41
симлинка

Ilya
20.07.2017
14:17:52
у меня есть 200млн чисел - числа имеют биты. Мне нужны числа у которых установлены 1, 8, 3 бит а в другой раз 2,4,7

1 Обход влоб и битовая проверка

Denzel
20.07.2017
14:18:35
симлинка
А как заглушку поставить? Так нормально? file, err := os.Open(path) if err != nil { fmt.Println("ERR OPEN: ", path) return false }

Google
Ilya
20.07.2017
14:18:36
2 хемшепы по проверяемым битам и массивы с ключами и interselect

2 - выходит еще больше обходов тк 200тыс * 200 тыс = выходит еще больше чем один раз все обойти

вот и думаю как сделать это еще быстрее

1 вариант

был бы быстрый indexOf или contains - но все равно обходить прихдится

Димка
20.07.2017
14:25:14
Ilya
20.07.2017
14:25:29
не спорю конечно

может есть какой-то не попсовый метод

Димка
20.07.2017
14:26:59
тогда тебе надо как то группировать данные

и делать это при чтении их в массив

Илья
20.07.2017
14:29:09
Ilya
20.07.2017
14:30:30
обрабатываю и все

for i := 0; i < len(*b); i++ { - как то по тестам быстрее чем

for i := 0; i < count; i++ {

может такое быть?

Илья
20.07.2017
14:31:23
*b - слайс?

Dmitryi
20.07.2017
14:31:46
Всем доброго времени суток, есть проблема хочу сделать что то в таком духе insNTitle = make(map[string]map[string]int) и потом добавляю for _, v := range gen.NODES{ insNTitle[m] = map[string]int{v.Title:{v.ID}} }

Илья
20.07.2017
14:31:57
len() отрабатывает за O(1) насколько я знаю, тк просто читает поле из структуры

Lev
20.07.2017
14:32:34
у меня есть 200млн чисел - числа имеют биты. Мне нужны числа у которых установлены 1, 8, 3 бит а в другой раз 2,4,7
если не знаешь, какие биты нужны заранее - то раскидать по кучкам вдоль ( то есть размазывать 8 uint64 чисел по 64-м байтам или 64 числа по uint64), а сами байты раскидать по блокам. и проверка на то, есть ли в блоке из чисел достойное рассмотрения число будет заключаться в проверке на ненулевой байт того или иного блока. но это если записать надо однажды, а проверять много раз.

Google
Alexey
20.07.2017
14:33:29
а что перебор так долго идет?

Ilya
20.07.2017
14:33:33
тут конечно надо думать - оптимизация зависит сильно от конкретной задача

ну как 80ms

это уже много

я хочу быстрее

Alexey
20.07.2017
14:34:03
норм

хотя...

Илья
20.07.2017
14:34:31
сделай 4 горутины, разбей по 50 миллионов, собирай только индексы :)

Lev
20.07.2017
14:40:01
можно вообще сделать битовую маску на [0..(N+7)/8] байт и при добавлении числа выставлять соответствующий бит. потом при проверке просто смотреть, есть ли соответствующие взведённые биты. перебор сократится многократно.

(то есть если у тебя есть маска #B#00100100# то тебе надо проверить все индексы, кратные 4 или 32)

Alex
20.07.2017
15:00:36
Товарищи, подскажите, пожалуйста: есть ли возможность задать разные имена для marshal и unmarshal? У меня есть структура типа type Test struct { Type string json:"type" Payload []NameGetter json:"payload" } type NameGetter interface { GetName() string } и вот NameGetter реализует куча разных структур, которые определяются по типу в "Type". Если я просто запущу Unmarshal, то он выдаст ошибку о том, что невозможно анмаршлить в интерфейс. Поэтому пришлось сделать PayloadRaw []json.RawMessage + Payload []NameGetter, что очень неудобно, так как приходится в этой структуре все равно таскать этот PayloadRaw, который бы хотелось держать в отдельной переменной, а не структуре))

Или как можно анмаршалу сказать, что вот сюда не анмаршали?

Alex
20.07.2017
15:01:27
причем в будущем будет нужна возможность обратно замаршалить, так что json:",-" не подойдет

Konstantine
20.07.2017
15:04:44
Можно ли как то сделать выдачу от ошибок поподробнее? А то это смех какой-то. 2017/07/20 05:52:45 Get : unsupported protocol scheme "" А о каком именно запросе и в каком месте программы неизвестно. Самому только логами засыпать все?

Alex
20.07.2017
15:15:19
как решить такую задачу-то?) А то текущий вид решения мне очень не нравится, а как сделать красиво пока не понимаю)

Илья
20.07.2017
15:16:12
встрй в своё интерфейс marshaler/unmarshaler реализуй на объектах marshal/unmarshal и будет норм

Alex
20.07.2017
15:18:11
Google
Alex
20.07.2017
15:25:52
встрй в своё интерфейс marshaler/unmarshaler реализуй на объектах marshal/unmarshal и будет норм
хм, в интерфейс встроил, а как он поймет метод какой структуры вызывать?

или UnmarshalJSON надо создавать у структуры Test?

Илья
20.07.2017
15:35:43
хм, кстати да, нафиг ничег оне встраивать а написать кастомный marshaler/unmarshaler для Test

:)

F
20.07.2017
15:52:05
как можно отрефакторить это https://pastebin.com/NHHry6Ga

Илья
20.07.2017
15:54:21
F
20.07.2017
15:54:42
как можно улучшить этот код?

Admin
ERROR: S client not available

F
20.07.2017
15:54:52
можно сделать короче?

Ashot
20.07.2017
15:58:58
как можно отрефакторить это https://pastebin.com/NHHry6Ga
Ты уверен, что это тот код, о котором ты спраишваешь?

Илья
20.07.2017
15:59:29
фигня какая-то, ну лишний тэг есть, что тут рефакторить?

Alex
20.07.2017
16:01:49
хм, кстати да, нафиг ничег оне встраивать а написать кастомный marshaler/unmarshaler для Test
Все получилось, спасибо ;) Но вот еще один кусок, который мне ну вообще не нравится, мб будут идеи? switch item.Type { case "opened": var cur opened // проверить error json.Unmarshal(item.Data, &cur) a.Data = cur case "closed": var cur closed // проверить error json.Unmarshal(item.Data, &cur) a.Data = cur } closed & opened реализуют определенный интерфейс, а a.Data хранит в себе как раз этот интерфейс (объект, реализующий этот интерфейс), но вот приходится как попка-дурак писать почти одинаковые кейсы. Мб есть способ циклом?

или только кодогенерация?

F
20.07.2017
16:02:53
фигня какая-то, ну лишний тэг есть, что тут рефакторить?
какой лишний тег? как можно вложить их в друг друга?

Илья
20.07.2017
16:05:39
какой лишний тег? как можно вложить их в друг друга?
json:"Color" лишний, насколько я помню, по дефолту так и переварит, вложить можно всё вообще в 1 структуру, если эти вспомогательные типы не нужны

Alex
20.07.2017
16:12:48
@di3young таки есть идеи?)))

Илья
20.07.2017
16:13:24
@di3young таки есть идеи?)))
сходу не могу придумать более элегантного решения

Alex
20.07.2017
16:14:17
я пытался var cur interface{} вынести за switch, а в кейсах просто делать cur = opened{}, cur = closed{}, также весь остальной код вынес за пределы свитча вниз, но не зашло(

Илья
20.07.2017
16:19:33
можно сделать cur = json.UnMarshaler какой нить

Unmarshaler точнее, и тогда должно заработать

Google
Илья
20.07.2017
16:29:17
хотя нет, фигня, а чем не сработал подход с interface{}?

Mike
20.07.2017
17:24:17
Как получить имя юзера?

Aleksandr
20.07.2017
17:25:39
Andrew
20.07.2017
17:26:04
Как получить имя юзера?
Роскомнадзор в гугле забанил?

Mike
20.07.2017
17:27:25
I have just found it on the internet

Andrew
20.07.2017
17:30:40
В телеграме же ввели платежи? Можно запилить взнос за задавание простых вопросов, чтобы не ленились гуглить. ?

Igor
20.07.2017
17:55:08
Причём так что бы оплату его требовала какая нибудь влиятельная структура. Типа налоговой)

Ivan
20.07.2017
18:03:56
Такс, нужна подсказка коллективного разума. Юнит тесты юнит тестами, но вот захотелось мне и интеграционный тест тоже, с постгресом в докере все дела. Я по колхозному то ручками умею. А как оно по серьезному, у взрослых дядек? Только CI ? Или есть чего попроще что б на моей машине во время разработки удобно запускать

Slava
20.07.2017
18:04:58
интеграционный тест должен хоть где запускаться

CI это просто сервер с добавленной логикой

Ivan
20.07.2017
18:06:57
А как их пишут, научите. Мне надо что б поднялся некие посгрес, развернул там базу , как то залил данные из дамп, что б потом тесты приложения в него постучали запросами, сверили данные и всё что б погибло до следущего запуска

Igor
20.07.2017
18:21:46
А как их пишут, научите. Мне надо что б поднялся некие посгрес, развернул там базу , как то залил данные из дамп, что б потом тесты приложения в него постучали запросами, сверили данные и всё что б погибло до следущего запуска
так не делают. тесты не должны коннектится к базе. в тестах надо "мокать" такие объекты, т.е. давать фейковый объект который по определенному запросу вернет определенный ответ. возможно в го как то иначе, но в obj так)

Ivan
20.07.2017
18:22:46
Игорь. это всё уже есть, юнит тестами я обложен по самое не могу. Этот этап я прошел. Но мне теперь надо прогнатьь обязательно на реальной базе, и прогонять много и удобно.

Могу вам привести пример если хоттите, у меня был один случай когда из за поля типа jsonb[] мок нормально работал а на реальной базе в продакшене всё упало. Нужно до продакшена, и даже до стейджина уметь погонять в интеграционные

Ivan
20.07.2017
18:26:40
аха, я предстваляю как это сделатьв каком нить travis но мне хочется как то сильно проще

Aleksey
20.07.2017
19:31:01
Тоже интересно как это делается

В Джанго это из коробки работает

Страница 399 из 1630