Alexander
хз - я в своём приложении просто сделал один коннект
один раз открывается, а дальше все его запрашивают + проверка на разрыв и всё отлично
Alexander
в своё время даже с defer имел проблемы с слишком большим количеством соединений
Radaram
Приветствую!
var msg, d, n int = 308, 611, 899
res := math.Mod(math.Pow(float64(msg), float64(d)), float64(n))
Почему NaN возвращается и как правильно вычислить модуль?
Dmitriy
Dmitriy
Илья
Damian
Всем привет, народ кто занимался архитектурой сервиса на го? Надо продумать ендпоинты также предусмотреть работу по токенам , слать get или post.... Также работу с postgresql, может кто какой инфы подкинет и бест практик?
maxnemoy
Damian
Ага спс
🎉
Почему?
Потому что попробуйте почитать из базы када в ней пусто.
🎉
И проблема в том что ноль из базы не трансфрмируется в nil гошный, нужно костылять...
🎉
так-то правильно, ибо го не знает что за nil, varchar или int...
heavycharged
heavycharged
А, хотя если вы имеете ввиду один коннект, это sql.Open(), то он под собой создает не лимитированное количество коннектов, что, собственно, решает вашу задачу, но безконтрольное создание коннектов != хорошо.
Aleksey
heavycharged
ещё SetConnMaxLifetime поставил.
Aleksey
Почему тогда db.SetMaxOpenConns(100), если в базе ограничено 50ю? База будет ругаца на лишние коннекты
heavycharged
это я образно описал, на самом деле там чуть по другому, колличество коннектов лежит в файлике с конфигом. на боевом читается конфиг и устанавливается 50.
Aleksey
Вот было ещё недавно
Aleksey
Если вы используете пакет sql.DB, то вам определенно пригодится эта статья. Расказывают о том. как подкрутить перфоманс 👇.
http://techblog.en.klab-blogs.com
Aleksey
Aleksey
А если памяти хватает, то и 1000 коннектов для базы нормально
heavycharged
heavycharged
там раньше была vps на 1 гиг, потом место кончилось, и я проапгрейдил план выше, а конфиг старый остался.
Aleksey
100 в дефолтном мускуле, это такое... чтоб везде работало.
Aleksey
Даже для гига оперативы это мало, там метров 200 нужно для 100 коннектов, если остальное не трогать
heavycharged
там зависит от буфферов, на каждый коннект выделяется свой буффер. т.е., образно если у тебя 100 коннектов и буфер 2М, то 200М. но это очень утрированно.
Aleksey
Да
heavycharged
у меня там буфера выше чем дефолтные помоему.
heavycharged
я не помню точно, но вроде у MariaDB конфиг дефолтный чуть отличается от MySQL
Aleksey
Коннекты у марии в дебиане по дефолту 100
heavycharged
кто-то мне говорил, что с 5.6 или 5.7 версии MySQL, MariaDB смерджили все наработки в InnoDB, и теперь разницы между MySQL и MariaDB особой нет. Но не уверен, честно говоря. Там кстати MySQL 8.0 зарелизили. https://www.opennet.ru/opennews/art.shtml?num=48466
Aleksey
В мускуле обычно чего-то нехватает, от марии, со строками работы, что-то в прошлом году нехватало. На марии написали, а на мускуле не заработало
Artem
Можете подсказать статьи про стриминг (http) в go? Сервер должен отдавать видео файлы длительностью по 5-6 часов, поэтому требуется возможность перемотки, но я без понятия как ее реализовать
Maxim
Ребята, всем привет!
Решил собрать в одном канале книги про Go, чтобы каждый раз их не искать по всему телеграму и интернету :)
https://t.me/golanglibrary
Кому интересно подписывайте, если хотите закинуть в канал книги, которых там еще нет - пишите мне @mxssl
🎉
heavycharged
Great
heavycharged
выглядит как офигенно крутая мысль
да, ещё если будет структурировано толково, чтобы на нужную тебе тему можно было быстро найти нужный материал, очень классно было бы.
heavycharged
сами книги не обязательно выкладывать, можно выкладывать название книги. найти не составит труда. в awesome-go вроде нету ссылочек на статьи и видео-доклады.
Yura
Можете подсказать статьи про стриминг (http) в go? Сервер должен отдавать видео файлы длительностью по 5-6 часов, поэтому требуется возможность перемотки, но я без понятия как ее реализовать
Вариант а) отдавай файл, а браузер сможет перемотать. Главное правильно отдавать Range: bytes запросы. Но стандартная библиотека это умеет (ServeContent).
Браузеры и правда умеют. Хром умеет хорошо. Firefox, к сожалению, хуже: он жадно пытается выкачать как можно больше.
Вариант б) пользователи используют флэш. Ищещь одну из двух-трех библиотек, перепаковывающих mp4 для флэша, доводишь их до ума, подсовываешь под ServeContent.
Минусы: флэш пракиютически умер.
Вариант 3) mpeg-dash. Для клиента запилить mpeg-dash player, скопировав большую часть у одной из трех известных джавскрипт библиотек.
С подготовкой файла замороччки правда:
подвариант а) нарезать заранее одной из двух консольных утилит (написанных не на Go).
подвариант б) изучить таки внутреннее устройиство mp4 и mpeg-dash и сделать всё самой в том виде, в каком хочется. Подглядывая в nginx и известные библиотеки для нарезки под флэш.
🎉
Флеш не просто умер, он опасен, нашли в нём кое что... поэтому лучше его вырубить нах.
Artem
Aleksandr
Artem
😂
🎉
https://www.securitylab.ru/news/491225.php
Yura
Max
Yura
Max
АБИДНА
Max
🎉
Aleksandr
heavycharged
Не помню как этот закон называется, лет 7 назад сидел на античате, уже и забыл. Думаю, можно его назвать "Закон неуловимого Джо". Суть в том, что чем популярней продукт, тем более вкусен он для взломщиков.
Petr
Ох, античат
.
И эти дыры активно эксплуатируются злоумышленниками
Petr
Хочу заметить, что раньше активно юзали EXIF в картиночках для хакинга
Oleg
кто пользует https://github.com/improbable-eng/grpc-web в проде?
🎉
Чото не пойму, Бубунта ускорилась что-ли? У неё есть в репе go 1.10.1 сук обновился, терь две.
Petr
Она от дебиана же зависит, если там завезли, то и тут завезли
🎉
Плят, переустанавливать всё заново что-ли, я ручками ставил свежую, терь она не свежая...
Petr
Можешь завести свой репозиторий локальный и сделать ему приоритет выше и собирать deb пакеты локально )
Petr
Делов минут на 20
🎉
Дык если бубунта будет норм обновлять, то смысл ковыряться, из коробки удобнее жи...
Petr
Ты же линуксоид, что за лёгкие пути )
🎉
Не смешно)))))
Andrew
func GetResources(w http.ResponseWriter, r *http.Request) {
var resources []Product
db.Find(&resources)
json.NewEncoder(w).Encode(&resources)
}
есть такая функция в коде, но нужно еще сделать следуеще:" You should handle the error if any.
And return 500 status error if the error has happened." Кто может дописать код, чтоб я понял как ето делать и прописивать в go и нужно ли подключать библиотеку для ошибок?
Daniel
а?!
Daniel
коллега, это базовые вещи же
Andrew
ну как ошибки прописать я шарю
Andrew
а как исправить ошибку если такая есть
Andrew
первий пункт