Anonymous
хотя не понятно почему нет каких то мутексов в коре для этого, ну то такое
Anonymous
хотя не понятно почему нет каких то мутексов в коре для этого, ну то такое
Типа не всем надо, а производительность с такими мутексами упадёт у всех.
Anonymous
Типа не всем надо, а производительность с такими мутексами упадёт у всех.
а можно меня в доку тыкнуть где написано про такое поведение, если кто то знает
Anonymous
вообще это логично
так погоди https://play.golang.org/p/YIleX-4DJ4g так ведь тоже не правильно
Nurzhan
Надо было в цикле который в начале
Nurzhan
Как заметил Кирилл, у тебя получается что-то очень похожее на замыкание
Anonymous
У меня тут проблемка
Nurzhan
всё правильно
Тьфу, не то прочитал (
Anonymous
всё правильно
не совсем, нужно еще передовать j в анонимную фукцию, иначе оно через раз работает
Anonymous
Не по теме но все же C++ массив байт такой 0x4D,0x5A,0x90,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xFF,0xFF,0x00, и тд C# массив байт такой 77,90,144,0,3,0,0,0,4,0,0,0,255,255,0,0,184,0,0,0,0,0,0,0,64,0,0
Anonymous
https://golang.org/doc/faq#closures_and_goroutines
это ваще збс, спасибо
Anonymous
Почему?
Anonymous
как мне массив из шарпа просто числа перевести в такой как на плюсах
Kirya
не совсем, нужно еще передовать j в анонимную фукцию, иначе оно через раз работает
вот это интересно, тут уже контекст один должно работать всегда. но вообще, да, нужно вырабатывать у себя привычку отправлять аргументы в горутины
Anonymous
вот это интересно, тут уже контекст один должно работать всегда. но вообще, да, нужно вырабатывать у себя привычку отправлять аргументы в горутины
ваще странно все, у меня без слипа worker: 5 -> job #4 worker: 5 -> job #5 worker: 5 -> job #6 worker: 5 -> job #7 worker: 5 -> job #8 worker: 5 -> job #9 worker: 1 -> job #0 worker: 2 -> job #1 worker: 3 -> job #2 worker: 4 -> job #3 это явно не правильно
Anonymous
почему? нет повторяющихся цифр
на 5й воркер вся нагрузка
Kirya
порядок в канал никто не гарантирует, это в спецификации))
Kirya
а, ну это тоже никто не гарантирует
Anonymous
ну а эту боль как обойти без слипа?
Kirya
почему это боль? просто берётся свободный воркер. попробуй нагрузить задачу
Denis
Товарищи, подскажите пжлста, репозиторий upspin как связан с Робом Пайком? Это его проект? Я ищу идеальные исходники на go.
Vladislav
Товарищи, подскажите пжлста, репозиторий upspin как связан с Робом Пайком? Это его проект? Я ищу идеальные исходники на go.
Ну Пайк, вроде, подписывает туда. Но сомневаюсь, что там прям идеальные исходники.
Alexandr
добрый день, подскажите, как можно в функции в качестве аргумента указать любую структуру func ParseBody(message *FrameMessage, response *[]ResponseVolume) (*Request, error) { var request Request err := json.Unmarshal(message.BodyData, &request) switch t := err.(type) { case *json.UnmarshalTypeError: logger.Debugf("Cannot unmarshal %s into Go struct field %s.%s of type %s", t.Value, t.Struct, t.Field, t.Value) *response = append(*response, ResponseExchangeVolume{}) return nil, err case *json.SyntaxError: logger.Debugf("Syntax error: unexpected end of json input") *response = append(*response, ResponseExchangeVolume{}) default: requestB, _ := json.MarshalIndent(request, "", "\t") logger.Debugf("Receive message.BodyData: \n %s", requestB) } return &request, nil } сейчас у меня указывается конкретная структура
Denis
message interface{}
Alexandr
message interface{}
а как мне получить доступ к полю в предполагаемой структуре?
Daniel
приведением типа
Denis
yourStruct, ok := message.(YourType) if !ok {return nil, YourError()}
Daniel
но лучше, конечно, не пустой интерфейс использовать, а некий разумный
Alexandr
но лучше, конечно, не пустой интерфейс использовать, а некий разумный
но если есть кейс, когда к тебе поступает множество структур и их все надо парсить и обрабатывать ошибки? Не на каждую же структуру свою функцию писать?
Daniel
есть кейс, да
Alexandr
всем спасибо
Denis
я бы написал маппер внешний, которые будет все твои структуры гнать в YourMessageType
Daniel
да тут подходов больше одного, ни одного хорошего
Je
Товарищи, а кто использует go chi? Я правильно понимаю, что Bind'ить query параметры get-запроса в структуру нельзя? Мне бы очень хотелось, чтобы было симметрично post-запросам и была простейшая валидация.
Je
Преобразовывать гет форму в json пайлоад в миддлвари?)
Илья
Там симметрия такого рода есть
Илья
Но не в гет-параметрах
Je
ну chi.Bind это же делает в общем-то, мне просто касаемо именно этого фрейворка хотелось услышать как люди выкручиваются)
Anonymous
есть аналог autovpn который предоставляет программный интерфейс (не через баш) для управления?
Je
Да, он на пайлоад post-запроса работает идеально
Vladislav
Да, он на пайлоад post-запроса работает идеально
Ну как-бы сам chi - это просто роутер. И нет ничего плохого в том, чтобы использовать другой парсер. Они не соприкасаются. Вы, конечно, можете сделать issue, но я сомневаюсь, что они сделают его.
Je
Не просто роутер, ну ладно)
Vladislav
Не просто роутер, ну ладно)
Я имел ввиду, что он не берет на себя обязанностей по парсингу входных данных и рендеру выходных. А либы которые в той же орге на гитхабе независимы от роутера как и роутер от них.
Anonymous
😕 странно что нет готовых решений, придется тогда обертку над шелом писать
🎉
Зачем над шелом? Написать полнофункциональный сервис на го, на фронт какой-нить реакт, выложить в опенсурс))
Kirya
да есть, поискать по гитхабу надо
🎉
Ну возможно, я последний раз когда искал, нашёл только шел для установки и настроек, правда так он и не заработал. Пришлось ручками.
Anonymous
программа может завершиться пока работает go func?, или она ждет завершения всех потоков?
Daniel
не ждет
Мерль
программа может завершиться пока работает go func?, или она ждет завершения всех потоков?
нет, не ждёт используйте либо синхронизацию через каналы, либо через sync.WaitGroup
Slava
или time.Sleep =)
Pawel
Господа, есть смельчаки, которые юзали github.com/cznic/ql в качестве замены sqlite ?
Anonymous
последнее предполагает что я знаю время выполнения задачи, вариант с wait group вполне подошел, с синхронизацией как я понял перед выходом из main просто бесконечный цикл крутить
heavycharged
даже просто <-done хватит
Andrei 🦉
Господа, есть смельчаки, которые юзали github.com/cznic/ql в качестве замены sqlite ?
в исходных кодах вижу пустые интерфейсы я, темной стороны силы соблазнен создатель сего
Pawel
ну так и тут пустые, при чём снаружи. что ж теперь и эту главлибу не юзать?) https://golang.org/pkg/database/sql/#DB.Exec https://golang.org/pkg/database/sql/#DB.Query
Andrei 🦉
там пустые интерфейсы в реализации бинарных деревьев и прочих основных структурах данных, то есть это поделие скорее всего гораздо медленнее
Andrei 🦉
но если скорость не главное, то можно и попробовать на свой страх и риск
Andrei 🦉
ну так и тут пустые, при чём снаружи. что ж теперь и эту главлибу не юзать?) https://golang.org/pkg/database/sql/#DB.Exec https://golang.org/pkg/database/sql/#DB.Query
а насчет говнокода в стандартной библиотеке го, то по моему до версии 1.6 json decoder в стандартной поставке был написан с применением передовой техники программирования - panic driven development PDD
Pawel
))
freezlite
как бороться с прокрастинацией?
Pawel
сходи в баню с девками
freezlite
думаешь поможет?
Pawel
инфа 100%
Pawel
там пустые интерфейсы в реализации бинарных деревьев и прочих основных структурах данных, то есть это поделие скорее всего гораздо медленнее
если b tree для постороения AST запросов, то ещё не факт что interface{} в них сильно повлияет на перформанс. Если делать по уму на pure go, то можно офигенно снизить лэйтенси за счёт лучшей утилизации ядер проца чем это есть в sqlite.
Slava
сходи в баню с девками
мы обычно с мужиками ходим