Alexander
Разве это Фреймворк? Помнится storage, но с Erlang очень давно работал
Илья
это кусок open telecom platform
MXLTN
друзья, как правильно организовать масштабируемый апликейшин внтури которого выполняются воркеры по планировщику? что бы они не выполнялись одновременно на более чем 1 ноде?
MXLTN
пример каждый 10 минут проверять что-то - надо что бы это выполнялось только один раз
MXLTN
а не одновременно на всех нодах который запущены
MXLTN
как правильно это с архитектурной точки зрения сделать/?
𝕲𝖎𝖗𝖆𝖋𝖋𝖊
Немного теоретический топик хочу поднять: как тестировать grpc сервисы?
1. Сервер
1.1. Unary
Тут все достаточно просто, даже моков не надо, просто func (s *Svc)Method(ctx context.Context, args...) (ret, error)
1.2. streaming
Тут все менее красиво: мокать * StreamServer. И получаются разные вещи: возможные конфликты по импортам с vendor, если пользовать gomock, свои велосипеды-моки на стрим, и потенциально другое.
И вот вопрос, как бы такой метод тестабильно написать и потестить:
func (s *Svc) Stream(args *proto.StreamReq, stream proto.Svc_GetStreamServer) error {
b, err := s.httpClient.Get(third-party-api)
if err != nil {
return err
}
data, err := unmarshal(b, s.SomeOpts)
if err != nil {
return err
}
for _, record := range data {
result,err := s.doSmth(record)
if err != nil {
return err
}
err := stream.Send(result)
if err != nil {
return err
}
}
return nil
}
𝕲𝖎𝖗𝖆𝖋𝖋𝖊
Можно написать или сгенерить мок на стрим, тогда тесты на этот метод получаются не очень красивые, ибо много лапши на сетап. А тестить надо по сути third party API
Maksim (Ellrion)
Nikita
MXLTN
Roman
Aleksandr
ркн почти 2млн ip-адресов закинул, чтобы нас отсюда выкурить
Alexei
🎉
Vladislav
Aleksandr
вполне вероятно что утром мы будем о 5 млн говорить)
Constantine️
надо идти спать
Constantine️
завтра новый день
Constantine️
)))
Aleksandr
все за ваши деньги, господа)
Constantine️
пол интернета работать не будет
Constantine️
чего переживать
🎉
В принципе я уже в i2p вылез, тут тоже мона сайтик сваять, форум.
🎉
Тут точно не достанут.
Aleksandr
кстати, апдейты дата-центров через пуш-уведомления у телеграма была еще в 2015. может раньше. Итого мы имеем приложение, которое невозможно заблокировать, кроме как заблокировать пуш-сервера гугла/эппла либо взять измором, перебанив пол-интернета
🎉
Рушного интернета, остальные не заметят.
Aleksandr
Aleksandr
@schors
Aleksandr
🎉
Не понял, россиян блочат жи... остальных-то как они осилят?
Aleksandr
слушай, я не знаю с какой стороны ты. но с моей блочат не россиян, а для россиян
🎉
Ну да.
Aleksandr
> взять измором, перебанив пол-интернета
для россиян.
Маjко
🎉
Дурову нуно было децентрализованный мессенджер писать... меньше гемора было-бы...
Pawel
Борьба с мифическим международным терроризмом - прикрытие банальной борьбы за пользователей Телеграма. Для холопов есть усмановский Там-Там, а нравится он вам или нет - да кого это волнует?
🎉
Исходники i2p есть, правда на Java... Щас даже айтупи для андроида и йоса есть... но это просто роутер, а вот как мессенджер было бы круть...
Pawel
Anonymous
🏳️ Phil
Anonymous
i2p тоже не полностью децентрализованный
Aleksandr
Павел Дуров пообещал, что с 22 апреля новая версия Телеграма начнет обходить блокировки по технологии domain-fronting. "Клиенты для всех платформ смогут соединяться с доменами clients4.google.com и graph.facebook.com и проксировать соединение дальше. Согласие Гугла и Фейсбука нами уже получено" - написал Дуров в своем твиттере.
Anonymous
🎉
Slava
будет как в китае
Slava
ничего недоступно, только внутренние, разрешённые ресурсы =)
Ivan
подскажите, как избавится от такой конструкции
User, _ := c.Get("User")
User_ := User.(model.User)
что бы User сразу был как .(model.User)
Alexander
Lev
может он в директ написал)
Aleksandr
Времена постправды
Aleksandr
Возможно фейк. Вероятно. Слишком сладко казалось
MXLTN
Алексей
Добрейший вечерок господа ,ребят где найти инфу по написанию функциональных тестов при помощи библиотек json, и go-resty!может кто то где то встречал ?кроме официальных ссылок на эти библиотеки! спасибо заранее
Илья
Да хоть майсиквель, хоть зукипер, любой distributed lock подойдёт
Nikita
Алексей
Добрейший вечерок господа , где найти инфу по написанию функциональных тестов при помощи библиотек json, и go-resty!может кто то где то встречал ?кроме официальных ссылок на эти библиотеки! спасибо заранее
Ivan
Антон
Ivan
там exist - т.е. существует ли переменная, я понял, ее надо проверить, а то что я это использую
User_ := User.(model.User)
это нормально?
heavycharged
господа, xml умеет паковать и распаковывать map[string]interface{}? есть структура, и к ней в догонку нужно паковать всякий мусор в эту мапу. все это потом сохраняется как xml файл. нужно, чтобы и эти данные сохранялись. я тут прикуралесил уже xml.Marshaler, и все ок. А вот с распаковкой траблы, там и слайсы, и мапы, и булевы значения. Вот собственно вопрос возникает, можно ли это все не ручками декодить? Если XML это как-то запаковал, то может он умеет сам распаковывать?
heavycharged
<Data>
<values>
<string>abc</string>
<slice>hello</slice>
<slice>world</slice>
<number>1</number>
<float>1.23</float>
<bool>true</bool>
<nestedMap>
<nestedKey>nestedValue</nestedKey>
</nestedMap>
</values>
</Data>
Yevhen
xml.Unmarshal. А в чем собсна проблема? Передал xml и структуру и все распакуется
heavycharged
Yevhen
А, нужно interface{} распаковать? Ну тогда ручками. Я подумал что есть struct, которий нужно паковать/распаковать. Недопонял. Можно поискать какую нибуть либу для етого.
heavycharged
я думал, может в json запаковать, а потом в base64.
Anonymous
Когда стоит использовать ГО вместо node js?
Ivan
Anonymous
Когда пишешь сервис
Я сервис и на ноде могу написать. Можно подробнее с примером, когда по вашему стоит использовать ГО а когда году?
Anonymous
Ноду
Заур
Знаешь го, не знаешь ноду, пишешь на го
Знаешь ноду, но не знаешь го, пишешь на ноде
Заур
Знаешь ноду и го, пишешь на чём по кайфу
Заур
Но советчик из меня хреновый 😁