Nik
nil
Daniel
так не бывает
Nik
попробовал https://github.com/gnewton/chidley - он генерирует старшный код с кучей глобьальныхъ переменных
Daniel
ошибка в чем-то другом
Aleksandr
nil
На play.golang демку
Alex
почитай про "сериализацию/десериализацию"
Nik
окс
Заур
а как тестируют работу с БД?
Daniel
зависит от
Заур
грузят туда тестовые данные, тестируют, потом чистят?
Daniel
у меня есть спецом вагрант, который поднимает тестовый инстанс
Заур
мда... ясно)
Andrei 🦉
грузят туда тестовые данные, тестируют, потом чистят?
можно поднимать базу только со схемой, а тестовые данные загружать и делать запросы в транзакции, которую потом откатывать
Daniel
а зачем?
Andrei 🦉
экономия времени
Daniel
все одно мы поднимаем базу под тест, так почему не набить ее?
Andrei 🦉
потому что я хочу, чтобы тесты гарантированно никак не влияли друг на друга
Andrei 🦉
если все тестовые данные я заливаю в одной транзакции, а потом откатываю ее, то база перед следующим тестом будет гарантированно пуста
Dmitriy / დიმიტრი
У меня поднимается докер-контейнер, куда я заливаю данные, а все операции в тесте делаю в транзакции.
Daniel
вы же не руками их делаете, тесты эти
Dmitriy / დიმიტრი
Не понял
Daniel
можно на каждый тест новый инстанс поднять и набить
Dmitriy / დიმიტრი
Но зачем? Чем это лучше того варианта о котором я сказал?
Daniel
тем, что можно без модификации код гонять, commit делать
Daniel
ну и не все базы поддерживаю транзакции - два
Dmitriy / დიმიტრი
А, ну у меня PostgreSQL. Так, если говорить про тестирование с БД без транзакций, то твой вариант лучше
Daniel
оно подтормаживает
Daniel
но это и не юнит-тест, это тестирование не на каждый PR гоняется
Konstantin
это херово, что интеграционные тесты не на каждый пр
Konstantin
есть понятие фикстур - тестовых данных. и их лучше правда заливать перед каждым запуском тестов, чтобы быть максимально уверенным в полной изоляции тестов
Alex
Кто нибудь запускал как службу в Windows? пытаюсь сделать через https://github.com/kardianos/service Запускается но прога корнем считает windows/system32 И там создает нужные папки ну и крашется из-за того что конфига нет)
Alex
Добрый вечер! Есть backend сервак http/socket . Через пару дней скорость получения ответов проседает. Как лучше профилировать такие моменты, которые возникают на долгом периоде?
Ruslans
Добрый вечер! Есть backend сервак http/socket . Через пару дней скорость получения ответов проседает. Как лучше профилировать такие моменты, которые возникают на долгом периоде?
Работал в компании, где нормальным решением считалась перезагрузка раз в сутки при подобном, из-за утечек памяти, etc
Ruslans
зато недорого с точки зрения разработки)
Александр
Добрый день подскажи как правильно пробрасывать зависимости в хандлеры gonic/gin. Рассматривал вариант проброса через контекст, но как то не красиво выходит
Andrei 🦉
замыкания
Andrei 🦉
как вариант
Alexander
А по классике структуру сделать, в нее заинжектить зависимости и на ней реализовать методы типа HandlerFunc?
Александр
А по классике структуру сделать, в нее заинжектить зависимости и на ней реализовать методы типа HandlerFunc?
В таком случа не будет проблем с конкурентностью? Ведь зависимости в струкуре будут без mutex вызываться
Александр
как пример: func FuncName(fn func(...) error) gin.HandlerFunc { return func(c *gin.Context) { ...fn(...) }}
Да такой вариант тоже смотрел, но все хочется красивое решение
Andrei 🦉
В таком случа не будет проблем с конкурентностью? Ведь зависимости в струкуре будут без mutex вызываться
гонка может возникнуть, только если разные горутины изменяют одни и те же данные без мьютекса
Daniel
или если одна меняет, а другая читает
🎉
Ахренеть! 😄 https://habrahabr.ru/company/badoo/blog/345784/ Вопрос, как мне поработать с числами типа float64? Привести их к int64, произвести вычисления и опять трансформировать во float64?
🎉
Округление точное не нужно, но хз....
Tommy
ребят что этот код делает там где присваивается json type Todo struct { Name string json:"name"}
Andrey
ничего не делает, это комментарий
Alexei
он с ошибкой отработает
Alexei
type Todo struct { Name string `json:"name"`}
Tommy
type Todo struct { Name string `json:"name"`}
скопировал, в телеге не поставились кавычки
Alexei
это теги, они ничего не делают, если попытаться переменную с типом Todo замаршалить в json, то значение Name замаршалится, как name
Alexei
type Todo struct { Name string `json:"small_name"`}
Alexei
или как small_name в последнем варианте
Alexei
фактически это лишь инструкция, какие названия полей будут в json при marshal'е, ну и там есть еще немного управляющих значений тега json
Alexei
подробности тут https://golang.org/pkg/encoding/json/
Tommy
спасибо пока ниче не понял. буду читать
Wingman
не подскажете, как можно увеличить макс.число горутин, допустимое при -race?
Slava
не подскажете, как можно увеличить макс.число горутин, допустимое при -race?
А в чем задача и кто ограничивает количество горутин?
Wingman
А в чем задача и кто ограничивает количество горутин?
Ну по дефолту, при использовании build/run -race, оно паникует на "достигнут макстмум в 8к горутин" Вот мне и интересно, как на этот максимум повлиять)
Mikhail
На сколько этот алгоритм колхоз? https://play.golang.org/p/JkoaVpgAZd9
Nik
народ, а кто пользует vgo?
Nik
На сколько этот алгоритм колхоз? https://play.golang.org/p/JkoaVpgAZd9
на 15 строке сразу ретур можно делать. а потом можно работать отрезками.
Nik
ща прикину покажу
Nik
таки, живые люди, которые пользую vgo?
Dmitriy / დიმიტრი
погибли в войнах за единственно верный менеджер зависимостей
Mikhail
https://play.golang.org/p/GGapl90EWxB
этот вариант более понятен, чем мой
Nik
погибли в войнах за единственно верный менеджер зависимостей
обидно. я пытаюсь понять, по какому принципу часть пакетов не проходит фейсконтроль
Nik
этот вариант более понятен, чем мой
там и аллокаций лишних меньше. в идиале еще заранее просчитать длину слайса и сделатть копирование а не аппенд
Andrey
так https://play.golang.org/p/HquipSNBg9c ?
Nurzhan
Заур
ребят, а как в mgo получить guid созданной записи?
Заур
чёт не нашёл
Заур
в mgo есть только func (c *Collection) Insert(docs ...interface{}) error