Slava
инициалы Д.П 🙂
И чего тебе во флуд канале не флудить?
Vladimir
а никто не знает какого-нибудь нормального фреймворка для управления включенными feature flag'ами?
Vladimir
В смысле чтобы иметь какую-нибудь ручку где можно посмотреть включенное, помаркировавть какие из них не требуют рестарта, и те которые не требуют переключать PATCH/POST запросами в ручку
Vladimir
чтобы эксперементальные code path маркировать и в рантайме (или нет) переключать
Vladimir
что такое feature flag?
там описание
Andrei 🦉
описание непонятно
Vladimir
описание непонятно
ок, задавай уточняющие вопросы
Andrei 🦉
ну это мне нужно получить совет/помощь или вам? учитесь грамотно формулировать ваши вопросы
🏁Александр
я вангую что это типо "сервер лицензий" надо
🏁Александр
но это не точно
Vladimir
я вангую что это типо "сервер лицензий" надо
и ты помочь не можешь, ибо тоже каким-то чудом не понял вопрос
Vladimir
ждем дальше
Andrei 🦉
ждем человека, умеющего читать мысли на расстоянии*
Vladimir
ждем человека, умеющего читать мысли на расстоянии*
просто я не знаю как объяснить еще проще. Видимо никогда тебе не нужно было, ок
🏁Александр
🙁
🏁Александр
опиши блин задачу, что есть feature flag на русском
Vladimir
чтобы эксперементальные code path маркировать и в рантайме (или нет) переключать
🏁Александр
хрено как то описал
Vladimir
хрено как то описал
раз ты не понял, значит ты не пользовался и дать ответ мне не можешь
🏁Александр
и в чем проблема оформить это в переменных?
Vladimir
и в чем проблема оформить это в переменных?
в том что это во первых нужно синхронизировать между группами серверов
Vladimir
во вторых хочется что-то более стандартное с возможностью рантайм изменений, разделением на флаги которые переключаются в рантайме и не переключаются в рантайме
Vladimir
и хочется минимальный оверхед на это
🏁Александр
странный кейс, ты какую бизнес задачу решаешь?
Vladimir
странный кейс, ты какую бизнес задачу решаешь?
никакую, я ищу аналог тому что мне нравится в некотором проприетарном софте но в опенсорсе, чтобы в свой хобби проект встроить
Vladimir
пока самое близкое к тому что я хочу - https://github.com/vsco/dcdr
Vladimir
собственно я всего два проекта нашел которые звучат адекватно - еще вот этот https://github.com/AntoineAugusti/feature-flags - но он какой-то уже на грани пионерии
🏁Александр
не видел и не слышал что бы в коммерческой разработке применялось такое
🏁Александр
обычно нода конфигурируется и стартует и все на этом
🏁Александр
на крайне случай можно зацепиться за название окружения
Vladimir
обычно нода конфигурируется и стартует и все на этом
ну вот у меня есть идея эксперементальные фичи вынести за feature flag'и, конфигом и переменными управлять их дефолтным значением, а через какую-нибудь ручку управлять ими в рантайме
Vladimir
потому что мне такое очень нравится
Vladimir
и как-то попользовался и прям оценил
Vladimir
и удивлен что все так не делают
🏁Александр
не удивительно что не пользуются
Vladimir
проблема dcdr'а в том что он слишком жирный
Vladimir
мне хватит варианта полегче
Vladimir
но видимо придется самому писать
🏁Александр
накладные расходы + лишние перделки в кодой базе
🏁Александр
проще ноду перезапустить
🏁Александр
всеравно она через балансер
Vladimir
накладные расходы + лишние перделки в кодой базе
при правильной организации накладных расходов там около нуля
Vladimir
проверка одного инта в map'е
🏁Александр
сервисы пишутся по строгому тз, не бывает что-то "вдруг надо" это утопия
Andrei 🦉
вообще то такая штука делается с помощью зукипера
Andrei 🦉
ноды получают из зукипера конфигурацию и сами пишут в зукипер свое состояние
Andrei 🦉
но ничего готового, тем более для го, в опенсорсе не найдешь скорее всего, потому что это реально нужно топ 5 интернет компаниям в мире
Vladimir
вообще то такая штука делается с помощью зукипера
она может использовать зукипер как бэкэнд, но это немного про другое, но близко, да
Andrei 🦉
абтесты так реализуются, но там конфигурацию получается либо с запросом, либо от отдельно стоящей апишки и обновляется на каждый прилетающий запрос
Andrei 🦉
пока самое близкое к тому что я хочу - https://github.com/vsco/dcdr
интересно, но проще это реализовать с помощью кубернетиса, рестартуя ноды с новыми параметрами, как по мне гемороя будет в разы меньше
🏁Александр
я про это и говорю
Vladimir
В такие моменты я понимаю почему в некоторых чатах слово девопс это оскорбление
🏁Александр
ну а что такого то?
Michail
привет вопрос по gin framework - как сделать CORS, если я в момент запуска не знаю на каком адресе у меня будет крутиться фронтенд ?
Vladimir
В смысле?
ну это очень девопс подход решать проблему тем, что для ее решения не шибко подходит, зато модно
Vladimir
даже если этим способом эту проблему в этом случаи решить нельзя
Stepan
Офтоп крч
Stepan
Есть тут кто-то кто работал в тинькове?
Vladimir
интересно, но проще это реализовать с помощью кубернетиса, рестартуя ноды с новыми параметрами, как по мне гемороя будет в разы меньше
не вариант, потому что это opensource проект и у его эксплуататоров может не быть ни кубера, ни докера, ни зукипера и ваще может быть один raspberry pi
Vladimir
но при этом будут такие (точнее я знаю что есть) у которых 400 серверов на bare metal с установкой пакетами и апдейтами конфигов паппетом раз в полчаса
Vladimir
и нужно к сожалению удволетворять и тем у кого rpi и тем у кого bare metal и тем у кого кубер
🏁Александр
они же не будут их переключать в реальном времени
Vladimir
как раз потому что чувакам у которых puppet это в реальном времени переключать надо, а не раз в полчаса
🏁Александр
ну фиг знает
Vladimir
Я вот понял, но помочь не могу
ну я не надеялся, но как обоснование причин зачем мне писать свое - сойдет
Alexey
Привет всем! Помогите пожалуйста разобраться с причиной ошибки. Имеем вот такой код type exchangesDataMap map[string]map[string]map[string]structures.BidAsk ... ... exchangesDataMap := make(exchangesDataMap) ... ... wg.Add(1) go func(rows *sql.Rows) { for rows.Next() { err = rows.Scan(&pair, &bid, &ask, &createdAt) if err != nil { continue } mutex.Lock() if _, ok := exchangesDataMap[slug]; !ok { exchangesDataMap[slug] = make(map[string]map[string]structures.BidAsk) } if _, ok := exchangesDataMap[slug][pair]; !ok { exchangesDataMap[slug][pair] = make(map[string]structures.BidAsk) } exchangesDataMap[slug][pair][createdAt.Format(time.RFC3339)] = structures.BidAsk{ Bid: bid, Ask: ask, } mutex.Unlock() } wg.Done() }(rows) В процессе выполнения выполнения данные пишутся в карту (как я могу судить по вывоу в консоль), но в один момент получаю ошибку panic: assignment to entry in nil map Подскажите в каком направлении копать
Slava
на какой строчке?
Oleh
как вот такую регекспу с пхп \b((?!|\!|\.).)+(.) передеделать на го?
Oleh
на ? ругается
Alexey
на какой строчке?
exchangesDataMap[slug][pair][createdAt.Format(time.RFC3339)] = structures.BidAsk{ Bid: bid, Ask: ask, }