Anton
Но это же немного говнокодом пахнет. В идеальном мире так не надо
Про что именно. Перенос параметров, или 4+ результата?
Alexander
4+ результата
Anton
С этим я согласен
Anton
с этим потихоньку тоже боремся
Alexander
Ну тут в целом либо мучаться с длиной, либо рефакторить и думать как по красоте
Игорь
Игорь
покажи код еще раз и опиши задачу
делаю так: https://github.com/angelbarrera92/basic-auth-reverse-proxy задача такая: Есть приложение, у которого есть web интерфейс, его хочу закрыть авторизациеq с проксированием, на выходе получается следующие% все отлично работает, но создаются много файлов, а так как веб приложение отрисовывает графики, оно постоянно обновляет и забивает limit в виде 10000 примерно за 5 минут и отваливается с ошибкой too many open files. Проверяю количество файлов lsof -p process, если вы попробуете по обновлять страничку, куда вас от проксировало, то увидите, что открываются новые файлы и ничего не закрывается
Игорь
Что пробовал: выставлял timeout на proxy - ничего не изменилось, пробовал прописывать body.close такая же история...
Alexander
а не можешь сценарий использования описать?
Игорь
а не можешь сценарий использования описать?
есть веб оболочка сервиса, где много графических иллюстраций, но по умолчанию в этом веб-сервисе нет аунтефикации/авторизации, я решил сделать эту авторизацию на самописном приложении, с использованием прокси, то есть. Сейчас, чтобы попасть на веб страничку этого сервиса необходимо, зайти на мою проксю, проавторизироваться там и тогда можно пользоваться веб ресурсом. Проблема: после авторизации, если сидеть на сайте и например обновлять или javascript, что то обновляет на страничке, создаются новые файлики соединений, не удаляя предведущие, после этого достигается лимит на сервере открытых файлов.
Тимофей
а в го, за императивную парадигму сильно хейтят?
Тимофей
я просто думал некоторые сессионые переменные в структуре хранить но "[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x628eb8]", и я хз как это фиксить, думаю теперь просто переменные хранить
Alexander
тебе надо таймауты и время закрытия idle connection'ов выставить, тут подсказка нужна или знакомо?
Alexander
и скорее всего все будет работать. плюс если на транспорт указатель сохранишь, то там есть метод CloseIdleConnections()
Игорь
спасибо за подсказку
Игорь
и скорее всего все будет работать. плюс если на транспорт указатель сохранишь, то там есть метод CloseIdleConnections()
Работает, благодарю, самое интересное, что я это делал, до фикса другой проблемы, как раз указатель на траспорт терялся, но не помогало, видимо делал не осознано( как можно отблагодарить?
Karisha
🔥 𝗚𝗼𝗹𝗮𝗻𝗴 𝗱𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿 🔥 ⠀ #вакансия #go #golang #React ⠀ 📝Компания существует на рынке более 4х лет и сейчас уверенно развивается. ⠀ ✅Головной офис компании находится в Таллине, Эстония. Проект связан с торговлей криптовалютами на различных биржах, автоматизация, боты, торговые интерфейсы. Компания официально работает с крупнейшими представителями индустрии. Проект не хайп, не МЛМ, не сетевой маркетинг, не проводили ICO. Цель проекта - приносить ценность целевой аудитории, поэтому людей ищут для работы "в долгую". ⠀ Сейчас ребята в поиске удаленного Go-разработчика. Вашей первой задачей станет отладка и запуск нового торгового бота в стеке Golang/Websockets/gRPC/Tarantool. ⠀ 🔥Обязательные требования:🔥 ⠀ - Опыт разработки на Golang более 3 лет - Опыт разработки микросервисов - Опыт работы с Docker/Kubernetes - Опыт работы с gRPC/Websocket - Понимание основных концепций языка - Базовые знания Linux - Опыт написания Unit тестов - Умение доводить задачи до конца, ответственность и самостоятельность при принятии решений - Умение профилировать код, выявлять и исключать рейсы с дедлоками. ⠀ Будет плюсом: ⠀ - Опыт трейдинга, или хотя бы представление. Термины, применяемые методики, алгоритмы, индикаторы, сигналы - Опыт работы с NoSQL БД Tarantool Портфолио с кодом на Golang ⠀ Мы предлагаем: ⠀ Достойную зарплатную вилку Оплачиваемый отпуск и больничный Карьерный рост Работу в процветающей и перспективной компании
Maks
лол только щас допер что в голанг можно конструктор скрыть вообще
Maks
у структуры
Alexander
Мм?
Maks
и оставить для создания новой структуры только метод New() с параметрами например.
Alexander
В смысле ты хочешь приватной саму структуру сделать?
Maks
да
Maks
я так и сделал
Maks
Я не думаю что это антипаттерн
Alexander
Тоже были такие мысли, но потом как в клиентском коде функции куда это передаешь писать?
Alexander
Только если интерфейс к этому делу прикрутить
Maks
а я понял
Maks
верно
Alexander
Антипаттерн
Alexander
Не советуют в целом
Maks
соглы
whois
Друзья, такой вопрос. Допустим у меня есть труктура: T1 { T2{ X int } } Как мне ее инициализировать литералом. obj := T1{ T2{ X: 1, }, } не работает
Alexander
T2:{
Alexander
Скорее всего
Alexander
Вообще не понимаю зачем пихать структуры не объявленные выше
Maks
Maks
Не понял что не так
Maks
ааа, в том что он их не объявляет
Maks
я понял
Alexander
Так компактнее
зачем вообще выделять во что-то отдельное?
whois
Круто, типо того
e2
Почему сервак на может стопаться при отконнекте от рдп?
e2
точнее от ссш
Alexander
В смысле?
Dmitry
Всем привет. Скажите, никто не сталкивался с проблемой генерации подпись для imgproxy? Их код из сэмплов для go невадидный, при этом в том же JS подпись генерируясь без проблем…
Dmitry
Я что-то уже упоролся в поисках
🅞leksiy
А у них в чате написать, не? https://gitter.im/imgproxy/imgproxy
Александр
есть быстрый HTTP Server фреймворк FASTAPI https://pkg.go.dev/github.com/lxzan/fastapi@v1.0.0 вроде как асинхронный, но вот в чем прикол, каккая от него польза, если у нас драйвера к DB не асинхронные?
Maks
Блин хз, использовать жвт или нет
Maks
Из недостатков - смена пароля не обнуляет действие старого жвт токена в классическом подходе жвт
Emil
А что альтернатива? Я вот сейчас пытаюсь пристроить опенайди с оаутхом, но и там токены...
Uładzislaŭ
Всем привет. Как вытащить данные из такой конструкции? Принтом выводятся значения: fmt.Println("Value:", param) ... Value: [2740 1762]
Maks
наверное по индексу или перебором по значению
Uładzislaŭ
наверное по индексу или перебором по значению
если по индексу: expression "param" (interface {}) does not support indexing перебор по range: Cannot range over 'param' (type interface{})
Maks
А что альтернатива? Я вот сейчас пытаюсь пристроить опенайди с оаутхом, но и там токены...
есть еще одна проблема. Когда у нас есть роли пользователя которые могут меняться.
Uładzislaŭ
for выводит?
ide подсказывает: Cannot range over 'param' (type interface{})
Maxim
for _, val := range test { fmt.Println(val) }
Maks
видимо это связано с тем, что у тебя там разного типа данные могут придти якобы
Maxim
Но все равно к типу приводить val
Emil
Очень ли плохо хранить тесты ко всем ошибкам в файле логера? Лучше хранить ошибки в своем пакете?
Emil
Ты хотел написать тексты?
Да... (А тесты все в соответствующих пакетах)
Emil
Мне просто показалось красиво, что все для логера в его пакете, но тогда от него зависит вообще все...
Maks
У тебя логгер просто пишет лог, ты ему говоришь куда, какой уровень, какой текст
Emil
тексты я сделал шаблонами, вот и думаю, где хранить шаблоны лучше, где их будут вызывать или в одном месте
Maks
Ну я представляю это примерно так. У тебя есть компонент который может вбросить определенную ошибку. Например курл компонент говорит что сервер не отвечает или ответ не 200. Значит в нем ты хранишь эти шаблоны. То есть без этого компонента эти шаблоны не нужны.
Emil
Резонно Спасибо)
Maks
По поводу jwt и сессий вот че нашел