Daniel
коллеги, о чем вы тут?
Andrei 🦉
коллеги, о чем вы тут?
если вкратце, одна сторона кричит об очередной серебрянной пуле в виде http/2, а другая пытается отбрехатся, что http/2 по факту мало кому действительно нужен
Andrei 🦉
ну а как бы что вы пытались доказать все это время? что бинарный протокол быстрее текстового? да он быстрее
Andrei 🦉
но не настолько быстрее, чтобы все резко бросились его использовать, плюс как я писал выше, http/2 дико деградирует при плохом соединении, а это 90% бизнес кейсов
Roman
Roman
а в https типа не так, да? )
Roman
откуда тезис про 10 хендшейков?
Roman
4.002s - HTTP2 is 14% faster than HTTP
4.164s - HTTP2 is 17% faster than HTTPS
Anton
всем 👋 подскажите, пожалуйста, в каком направлении думать. нужно запилить поддержку мультиязычности в rest api, т.е. например некоторые строковые поля у структур превратить в набор переводов на разные языки. соответственно админам показывать все переводы, а клиентам только нужный. пока додумался до чего-то такого:
type TranslatedString struct {
Ru string `json:"ru,omitempty"`
En string `json:"en,omitempty"`
De string `json:"de,omitempty"`
Fr string `json:"fr,omitempty"`
}
type Thing struct {
ID *uuid.UUID `json:"id,omitempty"`
Name TranslatedString `json:"name,omitempty"`
Description TranslatedString `json:"description,omitempty"`
}
type ThingView struct {
Thing
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
}
но тут ещё не очень понятно, как, во-первых, это потом в SQL хранить, разве что поля с префиксом, вроде name_ru, name_en, и во-вторых, нужно будет каждой структуре ...View ручками добавлять методы типа Translate(lang string) и наполять эти переопределённые поля нужными строками, например:
// допустим у TranslatedString есть метод Translate(lang string) string
func (v *ThingView) Translate(lang string) {
v.Name = v.Thing.Name.Translate(lang)
v.Description = v.Thing.Description.Translate(lang)
// ...
}
может кто сталкивался, какой самый безболезненный способ с этим работать?
Aleksandr
ты же 2 недели назад спрашивал про это
Anton
ну задача та же, там про что-то другое был вопрос 🙂
Aleksandr
поля с префиксом точно нет. храни в отдельной таблице
Dmitry
Вот вот
Anton
а, там было про то, почему когда есть тэг json:"...,omitempty" и используется кастомный метод MarshalJSON, то omitempty игнорируется
Anton
окей, спасибо. а реально вообще будет сделать некую функцию, основанную на рефлекшене, что-то типа func Translate(v interface{}) {}, которая сама будет проходиться по полям переданного в него объекта, понимать, что они определённого типа, например, TranslatedString и переводить их через поинтер? ну, чтобы ручками не писать методы к каждой ...View структуре.
Aleksandr
зачем это все нужно?
Aleksandr
у тебя есть два кейса - перевод интерфейса для юзера и перевод самого текста в админке для админов. верно?
Anton
да
Aleksandr
ну и это два разных кейса, которые по разному решаются
Anton
вооот, я поэтотму и спрашиваю, в какую сторону смотреть, потому что уже нагородил кода, но чё-т мне не нравится, как это всё выглядит
🍗
Подскажите, отправляю ajax'ом json запрос с ID, но на Go не могу его получить.
c.Header("Content-Type", "application/json")
fmt.Println(c.DefaultPostForm("id", "0"))
Киньте ссылочку плз. Ибо много пробовал, и всегда пустота приходит.
Anton
🍗
верно в json, как можно посмотреть что приходит постом?! Что-то вроде var_dump'а ?
Anton
var d interface{}
if err := json.NewDecoder(r.Body).Decode(&d); err != nil {
panic(err)
}
fmt.Printf("%#v\n", d)
🍗
🍗
Получаю варнинг "Headers were already written. Wanted to override status code 400 with 200"
Aleksandr
что такое Thing?
Anton
сущность, у которой есть переводимые поля, например, отель, номер, апартамент
arkady
Ребзя, а как удалить из слайса элемент не по индексу, а по значению? есть чтото типо питоновского list.remove(elem)?
Daniel
никак
arkady
перебором?
Daniel
да
arkady
тогда получается, что если мне нужно хранить список id юзеров, допустим, лучше в мапу класть, чтоб по id просто брать и удалять так же?
Daniel
собственно, list.remove(elem) тоже делает перебор
Daniel
видимо, да
arkady
arkady
спасибо
Daniel
встроенная что?
arkady
функция
Dmitriy
встроенная что?
готовая функция, которая делает перебор и удаление)
arkady
Алексей
и неготовую просто так не напишешь
Алексей
дженериков то нету
Алексей
ой, набросил случайно
Dmitriy
и неготовую просто так не напишешь
а не пояснишь зачем тут дженерики? там же просто объход в цикле и сравнение входящего значения функции со значением ключа и если найдено, то удаление
Daniel
Je
Daniel
побаню
Daniel
потому как смысла в этом всем нет
Джамиль
Реклама какая
Daniel
коллеги, которые тут вечно за rust топят. где у нас в телеграме правильное rust-cообщество?
Aleksandr
https://t.me/rustlang_ru
Daniel
спасибо
🏁Александр
универсальный конвектор есть на гоу?
🏁Александр
из любого формата в jpg например
Aleksandr
конвекция
Cat
пока ты не залетел, никого не оскорбляли
Zver
Не видел там такого, обычный диалог.
Daniel
я тоже не видел, кстати
Vadim
Они такие злые, потому что у них gc нет.
Vadim
Надо им подарить
Daniel
у них работы нет, а не gc
Sebor▂▅▇█▓▒░
Ток зашел - сразу накинулись 😢
Cat
это джерк
Sebor▂▅▇█▓▒░
Cat
Sebor▂▅▇█▓▒░
что там было?
Cat
подскажи, кого ты имеешь в виду?
Cat
никак не могу распарсить
Cat
уже 5 минут пытаюсь понять
Маjко
Маjко
Праздный интерес
Zver
Вы о чем?
Cat
ну не томи