Артем
И то, браузер там чет сам под капотом решает, для чего h3 а для чего нет, одному ему известно
Илья
Илья
Придумывают себе, но заставляют других поддерживать
Артем
О, теперь надо понять реально как в один запрос и tls+tcp(ну типа) в quic делается
kostyaBro
Юрий
Даже никаких блокеров на 2-3 недели? Что-то вы не так делаете
Юрий
Не бывает такого
Ya ne s nimi
всем доброго времяни суток. тут снова я со своими вопросами, можете подсказать или скинуть доки как крассиво реализовать error в go gin
Alexey
Ya ne s nimi
Что значит красиво?)
ну тоесть не каждый раз все прописывать, а обернуть в функцию или что-то такое
Alexey
Прописывать что?
Alexey
Енкодинг в жсон подразумевается?
Ya ne s nimi
да
Alexey
Так оберните json.NewEncoder.Encode и запись статуса в функцию и все
Alexey
Там никакой магии не подразумевается, лично я так делаю :
func WriteErr(w http.ResponseWriter, status int, err error) error { … }
Ya ne s nimi
Так оберните json.NewEncoder.Encode и запись статуса в функцию и все
смотри у меня есть вот такой код
pong, err := client.Ping().Result()
fmt.Println(pong, err)
err = client.Set("ping", "pong", 0).Err()
if err != nil {
panic(err)
}
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
err = client.Set("ping", "pong", 0).Err()
if err != nil {
panic(err)
}
val, err := client.Get("ping").Result()
if err != nil {
panic(err)
}
c.JSON(200, gin.H{
"message": val,
})
})
Ya ne s nimi
как мне сделать это все краиво
Andrey
Для начала выкинуть все паники😂
Alexey
А паниковать то зачем
Alexey
Оберните c.JSON в функцию и пихайте туда что захотите, если у вас ошибки стандартизированы
kostyaBro
kostyaBro
Null
👣 Wiretap
Wiretap — это прозрачный прокси-сервер, похожий на VPN, который туннелирует трафик через WireGuard и не требует специальных привилегий для запуска.
🖥 Github
@Golang_google
Serkov
Ребята всем привет! Написал статью на хабре про автоматизацию отладки в delve https://habr.com/ru/company/ozontech/blog/701198/ если кому понравится поставьте плюсик.
kostyaBro
смотри у меня есть вот такой код
pong, err := client.Ping().Result()
fmt.Println(pong, err)
err = client.Set("ping", "pong", 0).Err()
if err != nil {
panic(err)
}
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
err = client.Set("ping", "pong", 0).Err()
if err != nil {
panic(err)
}
val, err := client.Get("ping").Result()
if err != nil {
panic(err)
}
c.JSON(200, gin.H{
"message": val,
})
})
https://github.com/golang/go/wiki/CodeReviewComments#dont-panic
kostyaBro
Илья
kostyaBro
Экстримкод?
ага
Да чет заметил это начали писать вообще на других каналах которые не про код.
Чеб дальше не пофорсить.
Потом будет в словаре как топ 1 похвала ин зе ворд
Илья
kostyaBro
kostyaBro
))
Sanity = nil
Sanity = nil
Toxic detected
kostyaBro
anhckie
кто-то делал что-то подобное?
ищу вариант для отдачи статы по репе.
может, есть готовая либа или шото подобное?
anhckie
то есть нужны (или/или):
1. готовый айфрейм
2. инфа-стата, которую надо передать на фронт
Aleks
Илья
Ребят, кто может подсказать. Изучаю сейчас Go, пытаюсь написать калькулятор с арабскими и римскими числами. Вот с арабскими написал и ограничения и функции все. А вот римские не получается присоединить, как можно это сделать?
Илья
Илья
Гугли Roman to integer, найдешь готовый код
Melbourne Channel
Does anyone know how to do a mutex lock on shared memory across different processes as fast as possible without eating lots of cpu and blocking? Without timer preferably and not using message queue or pipe or fifo. Shared mem only. Anyone knows? Or anything as fast or faster? Pls dont suggest rpc kind of thing. Need ipc through shared mem fastest thing.
Aleksandr
Shaplin
Данным кодом хочу вывести json в файл. e.sumUp() - это массив структурок.
Проблема в том, что он выводит только первый элемент массива (уверен на 100%). Можете пожалуйста подсказать в чем проблема?
file, err := os.Create("trace.json")
if err != nil {
fmt.Println(err)
}
encoder := json.NewEncoder(file)
encoder.SetIndent("", "\t")
err = encoder.Encode(e.SumUp())
if err != nil {
fmt.Println(err)
}
Код ниже выводит все корректно в консоль:
bytes, err := json.MarshalIndent(e.SumUp(), "", "\t")
if err != nil {
fmt.Println(err)
}
fmt.Println(string(bytes))
Иван
а если тут указать os.Stdout ?
encoder := json.NewEncoder(os.Stdout)
Shaplin
Sergey
Иван
А ну да в этом и вопрос 😂
Maks
Может просто размер буфера мелкий
Иван
Как насчёт открыть файл вот так
Иван
f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600)
if err != nil {
panic(err)
}
Maks
Мож его надо где то законфижишь в енкодере каком то или еще что
Иван
Ну он по идее сбрасывает буфер на диск и потом только дальше пишет
Иван
Размер буфера вроде не должен влиять
Shaplin
Shaplin
И оказалось все еще тупее, у меня прогонялся этот код по каждому элементу массива, поэтому он просто перезаписывался
Иван
Походу там каждый элемент содержимое перезаписывл
Shaplin
В любом случае большое спасибо)
Артем
Господа, день добрый. Вопрос по поводу пагинации. Как грамотно реализовать? У меня в голове два эндпоинта: первый для получения количества элементов (для общего числа страниц) и второй для постраничного получения. Может какие то более правильные варианты есть?
Юра (Юрий Александрович)
Артем
Илья
Артем
Артем
Понял, спасибо. За бд не шарю, думал вдруг для нее это тяжело
kostyaBro
Понял, спасибо. За бд не шарю, думал вдруг для нее это тяжело
А нужно заботиться о том чтобы дубликатов не было? И наоборот исчезнувших элементов?
Это возникнет когда пользователь ходит по страницам а количество элементов меняется.
Если нужно решить этот вопрос, лучше брать N элементов от какого-то, по ID.
kostyaBro
А count возможно и лишнее.
По крайней мере если нет цели показывает его пользователю
Артем
Артем
Артем
Артем
Еще раз спасибо всем
Юра (Юрий Александрович)
kostyaBro
Юра (Юрий Александрович)
На мой взгляд задача пагинации сама по себе очень размыта, пока нет уточнений об уровне тщательности и точности.
kostyaBro
С пагинацией одни проблемы
Юра (Юрий Александрович)
kostyaBro
Может не делать?)