Dmitry
и делать это при чтении их в массив
ill-ya
обрабатываю и все
ill-ya
for i := 0; i < len(*b); i++ { - как то по тестам быстрее чем
ill-ya
for i := 0; i < count; i++ {
ill-ya
может такое быть?
Илья
*b - слайс?
Dmitriy
Всем доброго времени суток, есть проблема хочу сделать что то в таком духе insNTitle = make(map[string]map[string]int) и потом добавляю for _, v := range gen.NODES{ insNTitle[m] = map[string]int{v.Title:{v.ID}} }
Илья
len() отрабатывает за O(1) насколько я знаю, тк просто читает поле из структуры
Lev
у меня есть 200млн чисел - числа имеют биты. Мне нужны числа у которых установлены 1, 8, 3 бит а в другой раз 2,4,7
если не знаешь, какие биты нужны заранее - то раскидать по кучкам вдоль ( то есть размазывать 8 uint64 чисел по 64-м байтам или 64 числа по uint64), а сами байты раскидать по блокам. и проверка на то, есть ли в блоке из чисел достойное рассмотрения число будет заключаться в проверке на ненулевой байт того или иного блока. но это если записать надо однажды, а проверять много раз.
Alexey
а что перебор так долго идет?
ill-ya
тут конечно надо думать - оптимизация зависит сильно от конкретной задача
ill-ya
ну как 80ms
ill-ya
это уже много
ill-ya
я хочу быстрее
Alexey
норм
Alexey
хотя...
Илья
сделай 4 горутины, разбей по 50 миллионов, собирай только индексы :)
Lev
можно вообще сделать битовую маску на [0..(N+7)/8] байт и при добавлении числа выставлять соответствующий бит. потом при проверке просто смотреть, есть ли соответствующие взведённые биты. перебор сократится многократно.
Lev
(то есть если у тебя есть маска #B#00100100# то тебе надо проверить все индексы, кратные 4 или 32)
Mannaro
Товарищи, подскажите, пожалуйста: есть ли возможность задать разные имена для 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, который бы хотелось держать в отдельной переменной, а не структуре))
Mannaro
Или как можно анмаршалу сказать, что вот сюда не анмаршали?
Mannaro
причем в будущем будет нужна возможность обратно замаршалить, так что json:",-" не подойдет
Konstantin
Можно ли как то сделать выдачу от ошибок поподробнее? А то это смех какой-то. 2017/07/20 05:52:45 Get : unsupported protocol scheme "" А о каком именно запросе и в каком месте программы неизвестно. Самому только логами засыпать все?
Mannaro
как решить такую задачу-то?) А то текущий вид решения мне очень не нравится, а как сделать красиво пока не понимаю)
Илья
встрй в своё интерфейс marshaler/unmarshaler реализуй на объектах marshal/unmarshal и будет норм
Mannaro
встрй в своё интерфейс marshaler/unmarshaler реализуй на объектах marshal/unmarshal и будет норм
хм, в интерфейс встроил, а как он поймет метод какой структуры вызывать?
Mannaro
или UnmarshalJSON надо создавать у структуры Test?
Илья
хм, кстати да, нафиг ничег оне встраивать а написать кастомный marshaler/unmarshaler для Test
Илья
:)
Илья
что реафкторить то?
Ashot
Ты уверен, что это тот код, о котором ты спраишваешь?
Илья
фигня какая-то, ну лишний тэг есть, что тут рефакторить?
Mannaro
хм, кстати да, нафиг ничег оне встраивать а написать кастомный 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 хранит в себе как раз этот интерфейс (объект, реализующий этот интерфейс), но вот приходится как попка-дурак писать почти одинаковые кейсы. Мб есть способ циклом?
Mannaro
или только кодогенерация?
Илья
json:"Color" лишний, насколько я помню, по дефолту так и переварит, вложить можно всё вообще в 1 структуру, если эти вспомогательные типы не нужны
Mannaro
@di3young таки есть идеи?)))
Илья
@di3young таки есть идеи?)))
сходу не могу придумать более элегантного решения
Mannaro
я пытался var cur interface{} вынести за switch, а в кейсах просто делать cur = opened{}, cur = closed{}, также весь остальной код вынес за пределы свитча вниз, но не зашло(
Илья
можно сделать cur = json.UnMarshaler какой нить
Илья
Unmarshaler точнее, и тогда должно заработать
Илья
хотя нет, фигня, а чем не сработал подход с interface{}?
Mike
Как получить имя юзера?
Anonymous
Как получить имя юзера?
Роскомнадзор в гугле забанил?
Mike
I have just found it on the internet
Anonymous
В телеграме же ввели платежи? Можно запилить взнос за задавание простых вопросов, чтобы не ленились гуглить. 😄
Stepan
Причём так что бы оплату его требовала какая нибудь влиятельная структура. Типа налоговой)
engelbart
Такс, нужна подсказка коллективного разума. Юнит тесты юнит тестами, но вот захотелось мне и интеграционный тест тоже, с постгресом в докере все дела. Я по колхозному то ручками умею. А как оно по серьезному, у взрослых дядек? Только CI ? Или есть чего попроще что б на моей машине во время разработки удобно запускать
Slava
интеграционный тест должен хоть где запускаться
Slava
CI это просто сервер с добавленной логикой
engelbart
А как их пишут, научите. Мне надо что б поднялся некие посгрес, развернул там базу , как то залил данные из дамп, что б потом тесты приложения в него постучали запросами, сверили данные и всё что б погибло до следущего запуска
Stepan
А как их пишут, научите. Мне надо что б поднялся некие посгрес, развернул там базу , как то залил данные из дамп, что б потом тесты приложения в него постучали запросами, сверили данные и всё что б погибло до следущего запуска
так не делают. тесты не должны коннектится к базе. в тестах надо "мокать" такие объекты, т.е. давать фейковый объект который по определенному запросу вернет определенный ответ. возможно в го как то иначе, но в obj так)
engelbart
Игорь. это всё уже есть, юнит тестами я обложен по самое не могу. Этот этап я прошел. Но мне теперь надо прогнатьь обязательно на реальной базе, и прогонять много и удобно.
engelbart
Могу вам привести пример если хоттите, у меня был один случай когда из за поля типа jsonb[] мок нормально работал а на реальной базе в продакшене всё упало. Нужно до продакшена, и даже до стейджина уметь погонять в интеграционные
engelbart
аха, я предстваляю как это сделатьв каком нить travis но мне хочется как то сильно проще
Aleksey
Тоже интересно как это делается
Aleksey
В Джанго это из коробки работает
Мерль
[last news] 'go dep' now production ready
Мерль
* Звук вувузел *
Oleg
Ура! Надо будет попробовать
Oleg
Oleg
только тогда была самая первая версия
Oleg
Я не помню такого :) Было всякое, но dep не пробовали :)
Oleg
Godep был только :)
Oleg
Но эт другое
Dmitrii
как в го сделать подобие модуля синглтона? сорян за код, примерно так можно делать в js, есть к примеру модуль config, там я инициализирую объект, заполняю его данными из env, флагов, дефолтных значений и импортирую его потом по всех остальных файлах: modules.exports = {db: 'pg'} типо такого получается как подобное делается на го?
Vsevolod
package config var cfg *Config type Config struct {} func Get() *Config{ if cfg == nil { cfg = &Config{} } return cfg }
Dmitrii
спасибо
Dmitrii
а вообще если я пишу например rest апи, стоит ли разделять его внутри на packages? main/controllers/models/handlers/config, либо все в пакете main делают?
Vsevolod
в Go по стандарту переменная объявленная в пакете является статической, поэтому возможен синглтон.
Daniel
и уж как он разделит - так и будет
Vsevolod
Зависит от сложности проекта. Если один хендлер - нет смысла особо :)