🏁Александр
это не просто звезды
🏁Александр
int - число
🏁Александр
*int - ссылка на число типа int
🏁Александр
это как папка и ярлык в винде
🏁Александр
не будет
🏁Александр
более того это единственный способ корректно дать ссылку на другого пользователя
🏁Александр
если допустить что возможно было бы передать просто user то ты бы передал копию и при изменении например имени у оригинала, у остальных оно бы оставалось старым
🏁Александр
раскажите ему за плюсы
🏁Александр
переходи на goland
🏁Александр
он конечно платный
🏁Александр
но там есть месячная подписка за 3 копейки
.
Вскод ужасно
.
Всё
.
Я не понимаю как им в принципе пользоваться можно
Je
Так delve же, чем он не устраивает?
Je
У меня есть лицензия на голанд, но работаю я в vscode, не понимаю, что в нем может быть не так, дебаггер одинаково ущербен для го, значения по указателю он показывает, а вот вызывать функции нет
🏁Александр
там есть забавная хрень
🏁Александр
если смотреть не иницилизированную переменную аля
🏁Александр
var MyStr string остановка > if MyStr != ""
🏁Александр
она будет забита мусором (ну в принципе так и есть)
Artem
или дебаггер не знает куда смотреть и смотрит в рандомное место?
🏁Александр
хотя немного не так
🏁Александр
щаз
🏁Александр
или поправили уже, хз. Помню был прикол
🏁Александр
кто помнит про этот баг напишите
🏁Александр
когда в дебагере был мусор
🎉
Как бы извернуться, например: http.Handle("/", indexHandler(m)) ... func indexHandler(m *model.Model) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello World") }) } Тут m это модель которую я передаю в хэндлер. А хочется то же самое но проделать с fasthttp. Но у fasthttp нету HandlerFunc, как то можно обойти?
Aleksandr
Это просто декоратор. Декорируй своей функцией, которая вернёт что нужно
Aleksandr
Ну ты же им декорируешь?) Декорируешь чтобы вернуть в нужном тебе формате
🎉
Я к тому что есть ли похожий метод в fasthttp как HandlerFunc?
Aleksandr
В код fasthttp посмотрел? Примеры посмотрел? Ты спрашиваешь сейчас про 3-хстрочный декоратор
Aleksandr
Посмотри код Handlefunc и скопипасти, поменяв сигнатуру
🎉
Вот доку пытаюсь смотреть, думал быстрее спросить получится.
🎉
Как-то так получилось: r := fasthttprouter.New() r.GET("/", middleware(indexHandler(m))) log.Fatal(fasthttp.ListenAndServe(":4000", r.Handler)) ... func indexHandler(m *db.Handler) fasthttp.RequestHandler { return func(ctx *fasthttp.RequestCtx) { fmt.Fprintf(ctx, "Hi there!") } } func middleware(h fasthttp.RequestHandler) fasthttp.RequestHandler { return func(ctx *fasthttp.RequestCtx) { h(ctx) } }
heavycharged
Марлик вернулся
heavycharged
))
🎉
Марлик вернулся
Ага, тишину нарушать буду теперь.
🎉
Как с этой бедой бороться? Отключать? gometalinter --fast --no-vendored-linters --vendor ./... WARNING: deadline exceeded by linter vetshadow (try increasing --deadline) WARNING: deadline exceeded by linter vet (try increasing --deadline) WARNING: deadline exceeded by linter gosec (try increasing --deadline)
Maksim
так же, как и с орм :)
Bohdan
посмотреть его реализацию в орм и сделать так же?)
Alexander
Ну вроде самое простое - это когда ключ = сам запрос, а значение результаты? И в редисе хранить
Alexander
Реализуется элементарно
Alexander
Много записей - это же конкретный запрос :) и на него есть конкретные результаты.
Nikolay Markov
товарищи, а может кто-нибудь помочь найти баг с зависанием?
Nikolay Markov
смотрите, у меня есть веб-приложуха, которую я реализовал по вот этой статье https://medium.com/smsjunk/handling-1-million-requests-per-minute-with-golang-f70ac505fcaa
Nikolay Markov
в каждом воркере идут запросы на отдельные урлы с таймаутами по http, по сути, это кроулер
Nikolay Markov
и вот, периодически находится несколько урлов, которые висят долго и недообрабатываются
Nikolay Markov
при этом дамп pprof пустой, то есть приложение висит не в юзерспейсе (ну либо что-то крайне быстро отрабатывает)
Nikolay Markov
strace показывает, что futex'ы бесятся, то есть не зависание на сисколле, а какая-то битва где-то за что-то
Nikolay Markov
как найти проблему?
Artem
Долго это сколько?
Artem
Приделай таймаутов, какой-нибудь оборвется, там и будет проблема
Nikolay Markov
так в том-то и дело, что таймаут на http клиенте стоит
Nikolay Markov
10 секунд
Nikolay Markov
но запуск всей фигни на одних и тех же урлах может занять 10 секунд, а может 1500 секунд
Nikolay Markov
вроде количество дескрипторов повысил - не помогло
Subbotin
Использовать средства кэширования самой базы.
Subbotin
Использовать средства кэширования самой базы.
Иначе убьешься кэш инвалидировать
Nikolay Markov
Танцы футексов, обычно, это шедуллер, значит все повисло
вообще сейчас уже нет, я только что проверил - висит на фьютексе
Nikolay Markov
и у процесса стейт Sl
Nikolay Markov
что он там может такое ждать и почему таймаут не срабатывает?
Илья
Днс? Хендшейк?
Subbotin
Кэш в бд быстрый. По сути ключ-значение тоже самое.
Илья
Подсунь dialer с дебагом
Nikolay Markov
Днс? Хендшейк?
я dns-запрос руками делаю с таймаутом перед http
Nikolay Markov
и если он не отрабатывает - даже не пытаюсь http
Илья
я dns-запрос руками делаю с таймаутом перед http
А по графу непонятно, какая ветка в футекс ушла? Pprof я имею ввиду
Nikolay Markov
А по графу непонятно, какая ветка в футекс ушла? Pprof я имею ввиду
я вот сейчас прошел руками по всем тредам - судя по всему, висит вызов epoll_pwait()
Nikolay Markov
но я понятия не имею, что это может значить и, опять же, почему таймаут не отрабатывает
Nikolay Markov
не, я знаю, что такое epoll
Илья
Медленное чтение?
Nikolay Markov
я не понимаю, почему на нем висит
Nikolay Markov
Медленное чтение?
да вот фиг знает, таймаут-то на все сразу должен быть, разве нет?
Илья
Попробуй readtimeout прокрутить
Nikolay Markov
Попробуй readtimeout прокрутить
такой настройки нет для клиента, как я понимаю https://blog.cloudflare.com/the-complete-guide-to-golang-net-http-timeouts/
Roman
http://qr.ae/TUGK8h