Herman
Ифами можно
Zohidbek Mengliboyev
Hi guys! I have a question: Is it possible to give an empty to the request and return reponse as parts of rpc function?
Anonymous
create empty request message
Anonymous
and send empty string
Zohidbek Mengliboyev
and send empty string
Hi, bro! I meant: rpc HomePageUser(google.protobuf.Empty) returns (HomePageUserResponse) {} message HomePageUser { string id = 1; string full_name = 2; string user_name = 3; string profile_photo = 4; }
Zohidbek Mengliboyev
create empty request message
Is it possible to write function like above?
Anonymous
but u already have one
Anonymous
ur function should work fine
Zohidbek Mengliboyev
but u already have one
Yeah, I have. But I am not sure when I migrate and implement it.(
Anonymous
whats the problem?
Zohidbek Mengliboyev
whats the problem?
No problem yet.
Zohidbek Mengliboyev
Thanks
Олег
Добрый день. Подскажите, есть ли уже готовый инструмент который позволяет из содержимого сложно-вложенного POST (application/x-www-form-urlencoded) запроса получить map по структуре схожий с PHP массивом $_POST при условии что мы не знаем структуру входных данных или в один endpoint могут приходить данные разных форматов. На сколько я понимаю в Request.Form данные представлены в виде map[string][]string и по этой причине структура получается "плоской" и в итоге в этой мапе получается запись вида phone[update][0][custom_fields][33][id]: [1989572], а в php в $_POST я бы увидел [ 'phone' => [ "update" => [ "0" => [ "custom_field" => [ "33" => [ "id" => "1989572", ], ], ], ], ], ] Есть ли способ добиться подобного представления в GO стандартными способами/проверенными внешними либами?
Aleksey
А что там на входе? Как выглядит тело запроса?
Олег
К примеру вот: leads[status][0][id]=10939363&leads[status][0][name]=&leads[status][0][status_id]=21721936&leads[status][0][old_status_id]=21721930&leads[status][0][price]=&leads[status][0][responsible_user_id]=2778463&leads[status][0][last_modified]=1538396718&leads[status][0][modified_user_id]=2778463&leads[status][0][created_user_id]=2778463&leads[status][0][date_create]=1538385281&leads[status][0][pipeline_id]=1357129&leads[status][0][tags][0][id]=531499&leads[status][0][tags][0][name]=test_event&leads[status][0][account_id]=21721924&leads[status][0][custom_fields][0][id]=629659&leads[status][0][custom_fields][0][name]=roistat&leads[status][0][custom_fields][0][values][0][value]=4&account[subdomain]=intexcons
Олег
но реально данные могут приходить более сложно структурированы внутри
Aleksey
А, ну тут да, php массивы как они есть)
Олег
т.е. способа нет?
Олег
Видимо придется делать свой велосипед :(
Aleksey
т.е. способа нет?
Увы, готового не знаю. В го из пыхо мира знаю лишь про реализацию формата serialize. Но тут совсем не про это речь.
whois
Друзья, как в функции main при тестировании залогировать ошибку и выйти? Вот в testing.T есть куча методов, типа t.Fatal(err) Но в testing.M нет этого func TestMain(m *testing.M) { data, err := muInitFunc() m.Fatal(err) code := m.Run() os.Exit(code) }
Anonymous
если я правильно понял: тебе нужно запринтить в консоль ошибку?
Anonymous
если да, то в чем проблема использовать panic(err)
Anonymous
так а в чем проблема то?
whois
так а в чем проблема то?
искал красивое решение
Anonymous
красивое решения для обработки ошибок в го - это целая история
Aleksey
Да я тут давно. Просто обычно молчу :)
Maks
Я дважды был на конфах в спб и дважды так получилось что ты выступал на них))) Первая от ВКшечки была про бэкенд, вторая вот по го последняя в селектеле))))))))
Maks
Ну да я заметил)
Ig
Да я тут давно. Просто обычно молчу :)
Привет. А не ты делал доклад по геймдев на Го?
Aleksey
Было дело
Ig
Было дело
Вот я помню, вывод был , что это не работает. Сейчас мнение изменилось? Я смотрю на ebiten вполне успешно 10 игр автор фреймворка выпустил.
Maks
Хз, я в геймдеве на юнити поработал, понял что геймдев такая шляпа шляпная)))) Ну и лучше плюсов пока не придумали. Так как в играх важна максимальная производительность. Да и в РФ проектов можно сказать нет. Успешных довольно мало. Были конечно крутые инди проекты, но например тарков долго делался и столкнулся с проблемой производительности, а Punch Club не требует большого кол-ва вычислительных ресурсов))))
Maks
Крч понял что не моё)) Друг тоже проработав много лет сливается в бэкенд))) Потому что фронтовые задачи бесят))))))
Aleksey
Вот я помню, вывод был , что это не работает. Сейчас мнение изменилось? Я смотрю на ebiten вполне успешно 10 игр автор фреймворка выпустил.
Я, к сожалению, с тех пор к го геймдеву пока толком и не возвращался. Много было перемен в работе с тех пор. Но да, ebiten вон уже второй версии, и поддержка нинтендовского свича появилась. Выглядит прикольно.
Aleksey
Вот только у меня фокус был на web версии, а там прогресса не видел
Aleksey
Скорее уж кривая работа с gpu
Maks
Почти все движки пишут на плюсах. 99% ААА проектов это собственный движок.
Aleksey
Почти все движки пишут на плюсах. 99% ААА проектов это собственный движок.
Перефразирую. Если пишется не ААА игра, то сам движок можно хоть на ruby писать.
Alexander
В смысле?
Herman
я просто не знаю, как мусор собирается в играх
Herman
по идее он собираться должен не в рандомные моменты
Aleksey
Так же, как и в java серверах и прочем )
Aleksey
Да и в го, что уж там
whois
Кстати-кстати... Спасибо, об этом я не подумал
Ig
Почти все движки пишут на плюсах. 99% ААА проектов это собственный движок.
Если делать игры , то возникает вопрос. Что делать, движок или именно игру, вот если саму игру то С++ не так уж и нужны в текущем мире получается.
Maks
Движком будет по сути любая обертка над типичными ситуациями. Левел дизайн например когда делается - он делается же в движке.
Maks
У меня друг много где в спб работал, и плюется. Везде дохрена глупых людей занимают важные должности технические.
Ig
А это сейчас топ. вообще в геймдеве. Но, там к стати С++
Vitaly
Кто-нибудь на Go имел дело с получением html от страницы, которая рендерится javascript'ом? Нашел одну либу, но она сумасшедшая, требует подключать chrome для рендеринга
Alexander
через chromedp делал, но там как раз хромиум используется
Vitaly
знакомый говорит, что на node js без подтягивания целого браузера это легко делается. но не хотелось бы юзать связки с другими языками, а всё сделать на Go
Vitaly
делаю unofficial api к одному сайту
Null
Изучение Excelize с помощью Go https://uproger.com/izuchenie-excelize-s-pomoshhyu-go/ @Golang_google
Emil
Мне предложили тему диплома Lattice based crypto. Исследование трудных задач на алгебраических решетках и их применений при построении современных криптосистем Буду пытаться на го запрогать))0)
Anonymous
соболезную
Alexey
знакомый говорит, что на node js без подтягивания целого браузера это легко делается. но не хотелось бы юзать связки с другими языками, а всё сделать на Go
Потому что .... node.js это javascript движок. Во всех остальных ЯП нужен драйвер для обычного браузера или хотя бы какой-то мини headless браузер и библиотека для управления им. В мире тестирования web гуёв давно юзают такую штуку как selenium. Реализации есть для многих ЯП. В том числе для GO.
Alexander
Зачем если есть chromedp?
Alexander
Цель же не смотреть как на разных браузерах будет
Ahmed
Hello guys, I've just joined the chanel and don't know what language you're speaking?
Alexey
Зачем если есть chromedp?
Да. Можно и его, раз уж на go свой web-драйвер для хрома реализовали. Если кто уже юзал - поделитесь впечатлениями.
Alexander
тут сравнение скорее нужно. мне не сильно удобно показалось и документации-примеров на многие фичи нет, хотя умеет много всего. нужно по хорошему писать свои оболочки над этим, вроде того, что получение элемента может зависнуть, и нет из коробки получить элемент с таймаутом. но насколько просто или тяжело общаться с селениумом я не знаю
Alexander
вот эта подбиблиотека например вообще черти знает чего позволяет сделать: https://github.com/chromedp/cdproto - но документации нет, а можно только смотреть какие-то примеры, писать в issue и может тогда общая логика использования дойдет(
Alexander
код супергромоздкий пожалуй получается. по мне для типового использования каким-нибудь не особо ярким программистом этой штуке нужен враппер
Ilya
Коллеги, прошу совета. Организую кеш, нужно хранить текстовое поле (до 256 символов) и числовое значение (float) Сохранять данные после перезагрузки не нужно, использовать БД не хотелось бы, количество значений ключей, до 3кк Думал использовать Redis, но там ограничение ключа до 32 символов. Буду благодарен за идеи, спасибо
Alexander
а пользоваться им что будет?
Ilya
а пользоваться им что будет?
Сама же программа, в других потоках.
Ilya
Что-то надо будет в качестве ID записи
Если говорить про редис, я думал использовать текстовое поле - как ключ. Оно будет уникальным, точно
Vitaly
Может взять хеш от него