Мерль
Зачем?
потому что именно на ранних этапах всё регулярно ломают и хочется уметь обновлять часть зависимостей, точно зная что ничего при этом не сломается
Мерль
по крайней мере когда есть развесистая логика и/или много моделей
Daniel
Мерль
опять же, я думаю что когда логики немного или нет связности, то заморочки с версиями нет никакой конечно
Daniel
Почему gopkg.lock не работает?
Мерль
Почему gopkg.lock не работает?
да он работает просто когда делаешь мажорное обновление зависимости, то это по-хорошему надо делать выставляя новую версию в gopkg/toml "~v1.0.0" -> "~v2.0.0"
Daniel
А! Ну да, если есть требования по версии - их придется указывать :) Только откуда взяться требованиям по версии на этапе бурной разработки?
Daniel
Может, просто не надо слишком рано начинать фиксировать версии? :)
Мерль
То есть это не про соблюдение внешнего контракта по API, во всяком случае не внешнего по отношению ко всему проекту в целом
Мерль
Может, просто не надо слишком рано начинать фиксировать версии? :)
А почему? Как раз когда в начале творится ад и ломка всего подряд, пользы от версионирования больше всего
Мерль
Имхо
Daniel
Разве?
Daniel
От тегов еще туда-сюда, но от версий?
Daniel
Нет же плана поддерживать несколько ранних версий, так?
Daniel
Значит - в рельности есть только последняя, и к ней надо все тянуть
Мерль
Нет же плана поддерживать несколько ранних версий, так?
Одна версия для прода, другая девелоперская как минимум
Мерль
От тегов еще туда-сюда, но от версий?
Это по сути и есть теги, просто чуть более умные
Антон
А, она не на го
Daniel
Нет никакой первой версии, она не поддерживается. Новый прод надо или с тем же коммитом собирать, или до последней тянуть
Dmitry
нужна простенькая либа чтобы переменные окружения и флаги и дефолтовые значения попроще цеплять (т.е нужен приоритет дефаулт->окружение->флаги прозрачно и просто)
Daniel
Viper?
Антон
Viper?
> Простенькая
Daniel
Или как там его...
Мерль
И то и то живёт слишком бурной жизнью
Dmitry
Viper?
да. наверно подойдет, если не придется кучу документации перелопачивать чтобы встроить
Daniel
Ну, мне нечего сказать кроме того, что это мягко говоря не так
то есть - вы реально тянете несколько параллельных версий на этапе бурной разработки? а зачем?!
Мерль
то есть - вы реально тянете несколько параллельных версий на этапе бурной разработки? а зачем?!
Потому что уже есть клиенты на первой версии, и требования "заказчика" меняются со временем, переодически приводя к нарушению обратной совместимости
Daniel
sflags Очень рекомендую
все время забываю про него :(
Мерль
все время забываю про него :(
Я сейчас потихоньку мигрируют на него И, блин, это прекрасно
Daniel
Я сейчас потихоньку мигрируют на него И, блин, это прекрасно
а у меня у самого везде flag, а не у меня везде viper
Dmitry
sflags Очень рекомендую
для меня это пока ненужная абстракция в данном конкретном проекте
Мерль
это, все же, не типичная ситуация.
Я повторюсь, ни в коем случае не говорю что наш подход — это единственно верный и идеальный путь для каждого
Мерль
для меня это пока ненужная абстракция в данном конкретном проекте
Плюс как раз в том, что это не вносит абстракций, а просто уменьшает бойлерплейт
Мерль
а у меня у самого везде flag, а не у меня везде viper
Честно говоря от viper воротит Какая-то громоздкая и неуклюжая штука, по ощущениям
Dmitry
Плюс как раз в том, что это не вносит абстракций, а просто уменьшает бойлерплейт
ну мы уже вроде спорили по этому поводу. я пришел к выводу если делать с нуля то sflags не нужен, если добавлять функциональность в уже готовый проект - то да - хорошо.
Daniel
Честно говоря от viper воротит Какая-то громоздкая и неуклюжая штука, по ощущениям
ну там, действительно, есть ощущение, что уровень абстракции неудачно выбран.
Dmitry
в данный момент я не вижу примеров как sflags поддерживает переменные окружения.
Dmitry
это печально
Daniel
ох. https://t.me/gogolang/111674
интерсные у вас представления о споре. задать вопрос, получить ответ, не согласиться с ответом
Dmitry
а не. нашел `SSL bool `env:"HTTP_SSL_VALUE"`` . хм а флаг можно определить для этой же переменной
Daniel
you got it all wrong
Daniel
коллеги, кто gometalinter пользуется, вы успели заценить https://github.com/golangci/golangci-lint?
Daniel
я вот рекомендую весьма
Мерль
go-critic/go-critic: The most opinionated Go source code linter https://github.com/go-critic/go-critic
Michael
а кто пользуется vscode, встроенных тулзовин не хватает?
Michael
Там gometalinter
нашёл в коммите месячной давности Lint-on-save (using golint or gometalinter or megacheck or golangci-lint or revive)
🏁Александр
а что есть для нормализации html?
🏁Александр
у меня что-то крутиться, где то была опция автоисправления синтаксиса
Koz@k
Народ не в курсе случаем есть каналы по java в телеге ?
Dmitry
https://t.me/javarush
Koz@k
Спасибо
Daniel
go-critic/go-critic: The most opinionated Go source code linter https://github.com/go-critic/go-critic
очень неудобно конфигурится, но отлавливает интересное: rangeValCopy: each iteration copies 104 bytes (consider pointers or indexing)
Dmitry
помогите с viper. не цепляет переменные окружения почему то
Dmitry
https://github.com/RedSkotina/xrich/blob/b0dc456f17cdd8befb83a7dbbf92f7f6852141d9/cmd/xrich_telebot/main.go#L37
Dmitry
почему то пустая строка в viper.GetString("token")
Dmitry
хотя на os.GetEnv все нормально получает
Anonymous
хотя на os.GetEnv все нормально получает
AutomaticEnv в нужном месте вызывается?
Dmitry
AutomaticEnv в нужном месте вызывается?
даже и не знаю что это такое
Dmitry
AutomaticEnv в нужном месте вызывается?
нашел. и какое нужное место для него? все очень расплывчато написано
Anonymous
cfg := viper.New() cfg.SetEnvPrefix(envPrefix) cfg.AutomaticEnv() cfg.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
Anonymous
у меня так все работает
Anonymous
replacer это при необходимости
Dmitry
блин а обязательно норвый обект cfg делать?
Dmitry
я просто через глобальные все вызываю
Dmitry
как в примерах
Dmitry
я попробовал методом научного тыка viper.AutomaticEnv() куда попало вставлять.ю ни один вариант не работает
Dmitry
сраный документация сраного опенсорса
Billyfbrain
подскажите чем можно побенчмаркать сервисы на бинарном протоколе?