Oleg
и это печально, други мои
именно поэтому мой диплом был написан на python:Р
Oleg
Хотя первая и вторая версия на Go...
Oleg
Чтобы можно было сгенерировать реализацию скажем функции foo для типа X
Не понял, как это? :) Объявление функции чтобы само написало?
Мерль
Не понял, как это? :) Объявление функции чтобы само написало?
Да. Чтобы давало выбрать нужный тип для нужных аргументов и генерировало определение
Slava
кажется я видел такое для vim-go
Slava
как минимум таким я пользовался для генерации табличек для тестов
Slava
https://docs.dgraph.io/query-language/
Pawel
в виде typescript 2 почти совсем норм
+1 один хрен ничего лучше нет. Но всё равно после гошечки впечатления от ts - полнейшая анархия.
Anonymous
Что нужно делать, если использование собственного типа выдает invalid operation: ... (type ... does not support indexing) ?
Anonymous
Обращаюсь вот так - data_decoded["Result"] Сам тип type tgRSP struct { Ok bool `json:"ok"` Result []struct { UpdateID int `json:"update_id"` Message struct { MessageID int `json:"message_id"` From struct { ID int `json:"id"` FirstName string `json:"first_name"` Username string `json:"username"` } `json:"from"` Chat struct { ID int `json:"id"` FirstName string `json:"first_name"` Username string `json:"username"` Type string `json:"type"` } `json:"chat"` Date int `json:"date"` Text string `json:"text"` Entities []struct { Type string `json:"type"` Offset int `json:"offset"` Length int `json:"length"` } `json:"entities"` } `json:"message"` } `json:"result"` }
Aleksandr
@se4rch3r data_decoded["Result"] так обращаются к элементу мапы. у тебя структура
Anonymous
@se4rch3r data_decoded["Result"] так обращаются к элементу мапы. у тебя структура
var data_decoded tgRSP; err = json.Unmarshal([]byte(string(bodyBytes)), &data_decoded) Вот ещё на всякий скину. А как правильно обращаться?
Anonymous
Интерфейс ставил, такая же фигня
Anonymous
google => golang json, golang struct, golang first steps
Да, со структурами лоханулся. Вопрос изменился. Как нормально декодировать JSON с неизвестными данными?
Anonymous
Проблема блин прям какая-то. В питоне просто json.loads, а здесь столько йбли
Антон
так прикольно смотреть претензии людей, пришедших в статически типизированный язык с динамически типизированных. Я сам, в основном, на питоне программирую, так что ничего против этого не имею. Но надо же понимать различие языков, подходов, ограничений и гарантий, когда начинаешь использовать _принципиально_ другой яп
engelbart
Эту боль я понимаю
engelbart
Сторонний сервис генерит мне сотни непредсказуемых json
Anonymous
здесь так же просто, Unmarshal в нужный тип
Интерфейсы эти.. Костылей напихал ввиде `.(map[string]interface{})["message"]`и забил нафиг. Ща пищу на питоне. Теперь там с потоками долблюсь))
Anonymous
Особо кардинальное мне не нужно
Антон
asyncio не кардинальное. Запросы можно принимать асинхронно в одном потоке, а долгую обработку выносить в threadpoolexecutor/processpoolexecutor, интеграция искоробки. Причём даже адекватная
Anonymous
Мне и multiprocessing.dummy хватает)
Anonymous
Запахало блин. Удивительно
Anonymous
Куда применяете гошку?
Антон
Anonymous
Ну, вам тоже) Тут чего только нет
Антон
у меня в проекте исторически сложилось так, что там, где нужна более менее производительность используется nodejs. Я рассматриваю го как замену для неё. Но сначала профилирование и выработка требований, возможно там только си/раст подойдёт. Ну и да, т.к. у нас json rpc, интерфейсы между бакендами строго определены уже сейчас, соотв можно написать структуры, которые будут строго соответствовать входящим запросам, поэтому таких проблем нету
Michael
nodejs и производительность - забавное сочитание
Антон
да, я понимаю. Видимо было выбрано изза jit компиляции и "удобства"
Антон
Питон
Антон
Обычно asyncio
hex
Axm
кто-нибудь работал с logrus? судя по описанию на гитхабе, он умеет делать вывод сразу в несколько мест. но я никак не найду способ это сделать, кроме как писать обертку с двумя логгерами. и сразу еще по нему же вопрос. в чем разница между var log = logrus.New() return log и return log.FieldLogger
𝕲𝖎𝖗𝖆𝖋𝖋𝖊
Сторонний сервис генерит мне сотни непредсказуемых json
А если анмаршалить в map[string]json.RawMessage и проверять поля и еррорить в случае неожиданности, иначе анмаршалить второй раз в нужный тип
engelbart
Смотрите, у меня есть задача, простенькая. Берем базу sqlite там 10ток таблоиц, общий объем 400метров. Мы её перетряхаем, ну т.е. считываем в память отдельные объекты дозагружаем там из таблиц вложенные типа данные, формируем json и сохраняем в boltd. Я думал оно за минуту отработает. написал по тупому в один поток. Но что то оно там трудится уже через чур долго. Как бы вы стали искать узкое место, подскажите
𝕲𝖎𝖗𝖆𝖋𝖋𝖊
prof https://blog.golang.org/profiling-go-programs
𝕲𝖎𝖗𝖆𝖋𝖋𝖊
CPU Prof
𝕲𝖎𝖗𝖆𝖋𝖋𝖊
Или вообще perf в linux
𝕲𝖎𝖗𝖆𝖋𝖋𝖊
http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html
𝕲𝖎𝖗𝖆𝖋𝖋𝖊
И по графу смотреть
𝕲𝖎𝖗𝖆𝖋𝖋𝖊
а дальше, если проблема в cpu - prof cpu profile
engelbart
Спасибо
Quiet
подскажите хороший веб фреймворк на go
Kirill
подскажите хороший веб фреймворк на go
<Минутка саморекламы> gramework </Минутка саморекламы>
Quiet
Фреймворк нужен для работы а не для фана)
Constantine️
😂
Constantine️
а есть разница?
Constantine️
фан или работа
Constantine️
работа разве не фан?
Kirill
Фреймворк нужен для работы а не для фана)
Я на нём и работаю, и по фану пишу
Kirill
Просто быстрее и эффективнее него только чистый fasthttp
Kirill
Удобство — субъективная штука, но людям или нравится, или они пишут мне и я делаю, чтобы нравилось
Petr
Кто как организует структуру кода в go?)
Quiet
а про gin что вы скажите?
Kirill
а про gin что вы скажите?
Медленный, жрёт много, мне не зашёл прям совсем
Quiet
а beeGo?
Constantine️
не надо
Quiet
почему?
engelbart
Дак а sqlite то в один поток всегда получается, хоть чо тут делай?
Quiet
Kirill
Надо будет туда добавить gramework
Quiet
Надо будет туда добавить gramework
интересно посмотреть)
Kirill
А закинь ссылку, я её забыл
Quiet
какую?
Kirill
На этот реп
Quiet
https://github.com/gin-gonic/gin
Kirill
https://github.com/gin-gonic/go-http-routing-benchmark точнее эта)
Quiet
видел на гитхабе в каком-то бенчмарке фреймворков были исходники бенчмарка