@gogolang

Страница 1243 из 1630
Александр
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
обычно нода конфигурируется и стартует и все на этом
ну вот у меня есть идея эксперементальные фичи вынести за feature flag'и, конфигом и переменными управлять их дефолтным значением, а через какую-нибудь ручку управлять ими в рантайме

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
абтесты так реализуются, но там конфигурацию получается либо с запросом, либо от отдельно стоящей апишки и обновляется на каждый прилетающий запрос

пока самое близкое к тому что я хочу - https://github.com/vsco/dcdr
интересно, но проще это реализовать с помощью кубернетиса, рестартуя ноды с новыми параметрами, как по мне гемороя будет в разы меньше

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

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

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

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
интересно, но проще это реализовать с помощью кубернетиса, рестартуя ноды с новыми параметрами, как по мне гемороя будет в разы меньше
не вариант, потому что это opensource проект и у его эксплуататоров может не быть ни кубера, ни докера, ни зукипера и ваще может быть один raspberry pi

но при этом будут такие (точнее я знаю что есть) у которых 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
ну фиг знает

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 нет

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

Oleh
20.07.2018
21:28:48
это же backward lookup или как это называется, которого в go нет
может подскажите регекспу которая ищет предложения в тексте

Admin
ERROR: S client not available

Oleh
20.07.2018
21:28:49
?)

Daniel
20.07.2018
21:28:56
как вот такую регекспу с пхп \b((?!|\!|\.).)+(.) передеделать на го?
?! - это же заглядывание вперед, так? Его в гошных регекспах нет

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

Aleksandr
20.07.2018
21:30:30
может подскажите регекспу которая ищет предложения в тексте
ну это прям перебором можно сделать. на точке останавливаться и делать отсечку, если впереди пробел или конец строки. ну так, на вскидку

exchangesDataMap[slug][pair][createdAt.Format(time.RFC3339)] = structures.BidAsk{ Bid: bid, Ask: ask, }
ну вот тут у тебя не все мапы инициализированы.

надо проверять все три по очереди и инициализировать. а потом присваивать

Oleh
20.07.2018
21:32:21
ну это прям перебором можно сделать. на точке останавливаться и делать отсечку, если впереди пробел или конец строки. ну так, на вскидку
да по сути да, но регекспу можна продебажить на сайте где ввел кучу текста и увидеть ошибку а если сам пишешь то увидеть ошибку сложнее https://regex101.com/

Aleksandr
20.07.2018
21:34:30
да по сути да, но регекспу можна продебажить на сайте где ввел кучу текста и увидеть ошибку а если сам пишешь то увидеть ошибку сложнее https://regex101.com/
как мне кажется точка и пробел за ней - это всегда граница предложения. точка без пробела за ней - это либо конец строки либо разделитель частей слова или числа

Oleh
20.07.2018
21:35:04
хм, разумно

да, спасибо за идею

Google
Alexey
20.07.2018
21:36:46
ну вот тут у тебя не все мапы инициализированы.
Я сделал перед проблемной строкой fmt.Println(exchangesDataMap[slug][pair]) в консоль вывело что это map[] Я поэтому и в тупике, что вроде всё инициализировал, а ошибка валится

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
не было бы проще сделать структуру которая имеет 3 поля и одну мапу?)
Мне нужно хранить данные так, чтобы они были разбиты по биржам, внитри по парам валют, а внутри по времени, тут мне три отдельных поля не помогут

Oleh
20.07.2018
21:41:49
Как там с forward lookup?
не знаю, ща гляну

Kirill
20.07.2018
21:42:11
Как там с forward lookup?
в доке не было уточнено

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
та я посмотрел в таблице только))

что пишет что есть

ща попробую

взлетело?
да, взлетело

Страница 1243 из 1630