🏁Александр
это не просто звезды
🏁Александр
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
и у процесса стейт Sl
Nikolay Markov
что он там может такое ждать и почему таймаут не срабатывает?
Илья
Днс? Хендшейк?
Subbotin
Кэш в бд быстрый. По сути ключ-значение тоже самое.
Илья
Подсунь dialer с дебагом
Nikolay Markov
Днс? Хендшейк?
я dns-запрос руками делаю с таймаутом перед http
Nikolay Markov
и если он не отрабатывает - даже не пытаюсь http
Subbotin
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