
Александр
20.07.2018
19:23:16
опиши блин задачу, что есть feature flag на русском

Vladimir
20.07.2018
19:23:21
чтобы эксперементальные code path маркировать и в рантайме (или нет) переключать

Александр
20.07.2018
19:23:32
хрено как то описал

Google

Vladimir
20.07.2018
19:23:55

Александр
20.07.2018
19:24:00
и в чем проблема оформить это в переменных?

Vladimir
20.07.2018
19:24:24
во вторых хочется что-то более стандартное с возможностью рантайм изменений, разделением на флаги которые переключаются в рантайме и не переключаются в рантайме
и хочется минимальный оверхед на это

Александр
20.07.2018
19:25:23
странный кейс, ты какую бизнес задачу решаешь?

Vladimir
20.07.2018
19:27:39
пока самое близкое к тому что я хочу - https://github.com/vsco/dcdr
собственно я всего два проекта нашел которые звучат адекватно - еще вот этот https://github.com/AntoineAugusti/feature-flags - но он какой-то уже на грани пионерии

Александр
20.07.2018
19:30:37
не видел и не слышал что бы в коммерческой разработке применялось такое
обычно нода конфигурируется и стартует и все на этом
на крайне случай можно зацепиться за название окружения

Vladimir
20.07.2018
19:31:33

Google

Vladimir
20.07.2018
19:31:43
потому что мне такое очень нравится
и как-то попользовался и прям оценил
и удивлен что все так не делают

Александр
20.07.2018
19:32:21
не удивительно что не пользуются

Vladimir
20.07.2018
19:32:25
проблема dcdr'а в том что он слишком жирный
мне хватит варианта полегче
но видимо придется самому писать

Александр
20.07.2018
19:32:43
накладные расходы + лишние перделки в кодой базе
проще ноду перезапустить
всеравно она через балансер

Vladimir
20.07.2018
19:33:25
проверка одного инта в map'е

Александр
20.07.2018
19:34:42
сервисы пишутся по строгому тз, не бывает что-то "вдруг надо" это утопия

Andrei
20.07.2018
19:34:57
вообще то такая штука делается с помощью зукипера
ноды получают из зукипера конфигурацию и сами пишут в зукипер свое состояние
но ничего готового, тем более для го, в опенсорсе не найдешь скорее всего, потому что это реально нужно топ 5 интернет компаниям в мире

Vladimir
20.07.2018
19:36:17

Andrei
20.07.2018
19:37:18
абтесты так реализуются, но там конфигурацию получается либо с запросом, либо от отдельно стоящей апишки и обновляется на каждый прилетающий запрос

Google

Александр
20.07.2018
19:41:35
я про это и говорю

Vladimir
20.07.2018
19:42:17
В такие моменты я понимаю почему в некоторых чатах слово девопс это оскорбление

Александр
20.07.2018
19:42:45
ну а что такого то?

Ivan
20.07.2018
19:42:48

MVP
20.07.2018
19:45:02
привет вопрос по gin framework - как сделать CORS, если я в момент запуска не знаю на каком адресе у меня будет крутиться фронтенд ?

Vladimir
20.07.2018
19:45:53
В смысле?
ну это очень девопс подход решать проблему тем, что для ее решения не шибко подходит, зато модно
даже если этим способом эту проблему в этом случаи решить нельзя

GoodMoodDealler
20.07.2018
19:47:26
Офтоп крч
Есть тут кто-то кто работал в тинькове?

Vladimir
20.07.2018
19:48:34
но при этом будут такие (точнее я знаю что есть) у которых 400 серверов на bare metal с установкой пакетами и апдейтами конфигов паппетом раз в полчаса
и нужно к сожалению удволетворять и тем у кого rpi и тем у кого bare metal и тем у кого кубер

Александр
20.07.2018
19:51:20
они же не будут их переключать в реальном времени

Vladimir
20.07.2018
19:51:38
как раз потому что чувакам у которых puppet это в реальном времени переключать надо, а не раз в полчаса

Александр
20.07.2018
19:52:21
ну фиг знает

Daniel
20.07.2018
20:33:13

Vladimir
20.07.2018
20:33:56


Alexey
20.07.2018
21:25:00
Привет всем! Помогите пожалуйста разобраться с причиной ошибки.
Имеем вот такой код
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
Подскажите в каком направлении копать

Google

Slava
20.07.2018
21:26:35
на какой строчке?

Oleh
20.07.2018
21:26:42
как вот такую регекспу с пхп
\b((?!|\!|\.).)+(.)
передеделать на го?
на ? ругается

Alexey
20.07.2018
21:27:38
на какой строчке?
exchangesDataMap[slug][pair][createdAt.Format(time.RFC3339)] = structures.BidAsk{
Bid: bid,
Ask: ask,
}

Aleksandr
20.07.2018
21:27:51
на ? ругается
это же backward lookup или как это называется, которого в go нет

Oleh
20.07.2018
21:28:00

Aleksandr
20.07.2018
21:28:25
что она ищет?

Oleh
20.07.2018
21:28:48

Admin
ERROR: S client not available

Oleh
20.07.2018
21:28:49
?)

Daniel
20.07.2018
21:28:56

Oleh
20.07.2018
21:28:57
а то плохо соображаю

Aleksandr
20.07.2018
21:30:30
надо проверять все три по очереди и инициализировать. а потом присваивать

Oleh
20.07.2018
21:32:21

Aleksandr
20.07.2018
21:34:30

Oleh
20.07.2018
21:35:04
хм, разумно
да, спасибо за идею

Google

Alexey
20.07.2018
21:36:46

Aleksandr
20.07.2018
21:38:06
смотри. вот у тебя мапа трех уровней вложенности, верно?
map[string]map[string]map[string]structures.BidAsk
теперь найди в своем коде три инициализации
а, я нашел

Alexey
20.07.2018
21:39:17
ну вот тут у тебя не все мапы инициализированы.
Там три мапы, первую я получается инициализирую при создании переменной
exchangesDataMap := make(exchangesDataMap)
А две другие вот так
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)
}

Oleh
20.07.2018
21:39:35
не было бы проще сделать структуру которая имеет 3 поля
и одну мапу?)
ввместо мапы с трема уровнями вложености

Daniel
20.07.2018
21:40:09
Я вот что думаю
Есть реализация pcre на чистом го
Как там с forward lookup?

Alexey
20.07.2018
21:40:56

Oleh
20.07.2018
21:41:49

Kirill
20.07.2018
21:42:11

Daniel
20.07.2018
21:42:31
Надо проверить, че

Kirill
20.07.2018
21:42:57
github.com/dlclark/regexp2
hf gl

Daniel
20.07.2018
21:43:48
Ага

Oleh
20.07.2018
21:44:37

Kirill
20.07.2018
21:45:00

Oleh
20.07.2018
21:45:17
та я посмотрел в таблице только))
что пишет что есть
ща попробую