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

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

Denzel
20.07.2017
13:35:49

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

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

Aleksandr
20.07.2017
14:16:44

Mush
20.07.2017
14:17:04

Denzel
20.07.2017
14:17:17

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 - но все равно обходить прихдится

Aleksandr
20.07.2017
14:21:46

Димка
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

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 ""
А о каком именно запросе и в каком месте программы неизвестно. Самому только логами засыпать все?

Aleksandr
20.07.2017
15:05:33


Илья
20.07.2017
15:13:49
Товарищи, подскажите, пожалуйста: есть ли возможность задать разные имена для 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, который бы хотелось держать в отдельной переменной, а не структуре))
правильно ругается, откуда он знает, что там у тебя в интерфейсе, если бы он гарантировал marshal/unmarshal и сами объекты принимали решение о своеём поведении, это бы работало


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
или 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

Илья
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

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

Илья
20.07.2017
16:13:24

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

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

Igor
20.07.2017
18:26:10

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

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