Артем
И то, браузер там чет сам под капотом решает, для чего h3 а для чего нет, одному ему известно
Илья
Придумывают себе, но заставляют других поддерживать
Артем
О, теперь надо понять реально как в один запрос и tls+tcp(ну типа) в quic делается
kostyaBro
например? а то у меня тоже пока: добавлял фичи, имплементил сервисы проблем не было, проблемы решаются вместе с командой часто
То есть всегда дали задачу, решил? Никаких архитектурных вопросов, оптимизаций, утечек, конфликтов в команде?
Юрий
Даже никаких блокеров на 2-3 недели? Что-то вы не так делаете
Юрий
Не бывает такого
Ya ne s nimi
всем доброго времяни суток. тут снова я со своими вопросами, можете подсказать или скинуть доки как крассиво реализовать error в go gin
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
Null
👣 Wiretap Wiretap — это прозрачный прокси-сервер, похожий на VPN, который туннелирует трафик через WireGuard и не требует специальных привилегий для запуска. 🖥 Github @Golang_google
Serkov
Ребята всем привет! Написал статью на хабре про автоматизацию отладки в delve https://habr.com/ru/company/ozontech/blog/701198/ если кому понравится поставьте плюсик.
kostyaBro
Ребята всем привет! Написал статью на хабре про автоматизацию отладки в delve https://habr.com/ru/company/ozontech/blog/701198/ если кому понравится поставьте плюсик.
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
kostyaBro
Экстримкод?
ага Да чет заметил это начали писать вообще на других каналах которые не про код. Чеб дальше не пофорсить. Потом будет в словаре как топ 1 похвала ин зе ворд
Илья
Братан, хорош, давай, давай, вперёд! Контент в кайф, можно ещё? Вообще красавчик! Можно вот этого вот почаще?
Братан, ты плох, сдавай назад! Контент такое себе, можешь не выкладывать больше? Вообще бездарь!
kostyaBro
))
Sanity = nil
Toxic detected
kostyaBro
anhckie
кто-то делал что-то подобное? ищу вариант для отдачи статы по репе. может, есть готовая либа или шото подобное?
anhckie
то есть нужны (или/или): 1. готовый айфрейм 2. инфа-стата, которую надо передать на фронт
Илья
Ребят, кто может подсказать. Изучаю сейчас 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
а если тут указать os.Stdout ? encoder := json.NewEncoder(os.Stdout)
В таком случае вывел корректно
Иван
В таком случае вывел корректно
Чото с выводом в файл может быть
Иван
А ну да в этом и вопрос 😂
Maks
Может просто размер буфера мелкий
Иван
Как насчёт открыть файл вот так
Иван
f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0600) if err != nil { panic(err) }
Maks
Мож его надо где то законфижишь в енкодере каком то или еще что
Иван
Ну он по идее сбрасывает буфер на диск и потом только дальше пишет
Иван
Размер буфера вроде не должен влиять
Shaplin
И оказалось все еще тупее, у меня прогонялся этот код по каждому элементу массива, поэтому он просто перезаписывался
Иван
Походу там каждый элемент содержимое перезаписывл
Shaplin
В любом случае большое спасибо)
Артем
Господа, день добрый. Вопрос по поводу пагинации. Как грамотно реализовать? У меня в голове два эндпоинта: первый для получения количества элементов (для общего числа страниц) и второй для постраничного получения. Может какие то более правильные варианты есть?
Юра (Юрий Александрович)
А не затратно каждый раз запрашивать количество?
Если оно редко меняется, можно кешировать. Если оно быстро меняется, то все равно придется или часто запрашивать, или выдавать неадекватный результат.
Илья
в плане COUNT() ? Не особо
Всегда можно добавить materialized view, чтобы бд сама кешировала
Артем
Понял, спасибо. За бд не шарю, думал вдруг для нее это тяжело
kostyaBro
Понял, спасибо. За бд не шарю, думал вдруг для нее это тяжело
А нужно заботиться о том чтобы дубликатов не было? И наоборот исчезнувших элементов? Это возникнет когда пользователь ходит по страницам а количество элементов меняется. Если нужно решить этот вопрос, лучше брать N элементов от какого-то, по ID.
kostyaBro
А count возможно и лишнее. По крайней мере если нет цели показывает его пользователю
kostyaBro
А как тогда вывести общее кол-во страниц
"если нет цели показывает его пользователю"
Артем
Еще раз спасибо всем
Юра (Юрий Александрович)
На мой взгляд задача пагинации сама по себе очень размыта, пока нет уточнений об уровне тщательности и точности.
kostyaBro
С пагинацией одни проблемы
Юра (Юрий Александрович)
Panic)
Это норма :)
kostyaBro
Может не делать?)
kostyaBro
А если этот элемент с ID исчезнет?
Ну кстати, смотря какой ID. Если мы можем взять следущий по порядку то все ок. Например если у нас snowflake