Maks
Пол года было прям чистейшего тдд
Как методологию оцениваешь эту? Мне кажется это офигенно с той точки зрения, что ты заранее можешь кейсы какие то не предусмотренные выявить
kostyaBro
Там было так
kostyaBro
Был опыт работы в проекте где все было идеально и работали так. Пишем интеграционный тест на новую фичу. Он падает. Идем туда где упало, пишем тест с моками. Он падает. Идём глубже, пишем тест. И так далее до юнит теста. Пото добавляем фичу и все проходит.
kostyaBro
Кто нить через TDD работал? Я так мечтаю в проект с тдд попасть но нигде пока не довелось)
kostyaBro
Там была инфроструктура хорошая, что дополнить интеграционные тесты, и темболее остальные, не сложно.
Andrey
Кто нить через TDD работал? Я так мечтаю в проект с тдд попасть но нигде пока не довелось)
тдд это же методология разработки, если у тебя есть фича и есть для нее тесты, то как понять ты сначала тесты написал а потом фичу или наоборот? и если наоборот то что тебя надо бить или штрафовать?
kostyaBro
И была монорепа. И действительно удобно что ты узнаешь где тебе что надо поменять просто обновляя тесты
kostyaBro
Но бизнес всегда ругался что ыичи медленно появляются
kostyaBro
Как методологию оцениваешь эту? Мне кажется это офигенно с той точки зрения, что ты заранее можешь кейсы какие то не предусмотренные выявить
Такто я может даже уже и исзодники показать могу... Хз прошло ли 5 лет. А то так на словах не описать
kostyaBro
То был стартап с лидом из гулла, и возможно в гугле все так
kostyaBro
тдд это же методология разработки, если у тебя есть фича и есть для нее тесты, то как понять ты сначала тесты написал а потом фичу или наоборот? и если наоборот то что тебя надо бить или штрафовать?
Представь что вся система лежит в монорепе, покрыта интеграционными тестами. Каждый модуль покрыт тестами с моками. Каждая функция юнит тестами. И ты не разбираясь в коде, добавляешь в тесты фичу, и тест говорит где упало. Ты спускаешься и обновляешь иест там. И так, пока не найдешь место, где надо дописать саму фичу. Звучит утопично, но я это видел, и хочу повторить
Andrey
хочешь повторить приходи ко мне тесты писать )
Andrey
у меня как раз не одного теста нет, целыми днями можно сидеть и писать тесты )
kostyaBro
И у меня наконец работа не только код писать
kostyaBro
Я такт заебался кнопки тыкать
kostyaBro
time.Sleep(9*time.Hour)
Maks
Кажется я придумал как для себя решить проблему того что жвт не своевременно теряет доступ, не отзывается, не дает возможность следить за сессиями и при этом не слать запросы в бд постоянно)
Maks
1. В редис храним инфу необходимую о юзере(как в жвт) и обновляем ее когда она обновляется в бд. 2. В редис храним токен и ключ пользователя в редис которому это ключ принадлежит. Минус: жрет оперативу. Плюс: быстрый отклик на изменения, отзыв, возможность смотреть и отзывать конкретные сессии
Maks
в жвт итак же изначально встроена логика экспаир тайма, разве нет?
Пока экспайр не вышел у тебя права не сменятся
Maks
И смена пароля не запретит доступ компроментированному токену пока его время не истечет
Maks
И нельзя посмотреть сколько сессий запущено
Maks
И закрыть определенные сессии
Maks
Я честно говоря не люблю жвт для клиентской части
Maks
Для общения между сервисами да, ок, хорошо
Maks
Скомпроментировали - поменял ключ шифрования. Сервисы переподключились с кредами.
Maks
Стоит ли либу такую делать вообще? Похоже ведь на инмемори сессии.
Maks
О, еще я бы добавил в хедеры или куки хеш/таймстемп времени изменения данных о юзере
Maks
Maks
О, еще я бы добавил в хедеры или куки хеш/таймстемп времени изменения данных о юзере
Что бы клиент мог обновлять данные своевременно. Как роли так и всякие имена, возраст и так далее
Maks
так-то они и есть ))
А, я думал ты про либу)
Maks
Ну это такой екстендед вариант
Maks
Обычно в инмемори сессиях вроде не лежат данные о юзерах. Не? Только айди
Maks
И потом юзер из бд тянется
Andrey
Ну это как сделаешь ты сам. Кто-то в редисе хранит кэш, но не долго, кто-то всегда вычисляет его постоянно
Maks
Собственно и придумал обычные сессии ага) просто чутка изменил некоторые механизмы)
Maks
Неловко)
Tolya
/voteban Edi Fauziah
Alexandr🇷🇺
Всем привет) Кто-нибудь пытался подружить golangci-lint и sonarqube, используя gitlab ci?
Илья
Ну это как сделаешь ты сам. Кто-то в редисе хранит кэш, но не долго, кто-то всегда вычисляет его постоянно
А почему нельзя сделать обычные сессии и так же их хранить в редисе без всяких приколов с жвт?
Илья
Получается, что мы усложняем бэк и фронт ради 15 минут (время жизни acess token) без одного запроса в бд, который можно кешировать
G
Получается, что мы усложняем бэк и фронт ради 15 минут (время жизни acess token) без одного запроса в бд, который можно кешировать
Когда у тебя больше одного сервиса, это очень актуально. Потому что иначе каждый сервис должен в себе содержать один и тот же слой данных и сервис проверки авторизации. Что-то там поменялось - иди пересобирай все сервисы и потом обновляй одновременно, и не дай Бог тебе что-то забыть пересобрать. А также каждый сервис должен иметь доступ к редиске. Если речь идёт о сервисах, которые крутятся на разных хостах, добавляется сетевая точка отказа. Если в разных датацентрах - то ещё и потребность в настройке репликации инстансов редиса. Крче, ты немного усложняешь код бэкенда, но сильно упрощаешь инфраструктурные требования бэкенда. На это можно посмотреть как на финансовый вопрос: немного увеличить капекс или ощутимо увеличить опекс.
Grigory
Кто нить через TDD работал? Я так мечтаю в проект с тдд попасть но нигде пока не довелось)
Ты тдд нигде не встретишь в продуктовой разработке Да и вообще мало где его встретишь, потому что оно жутко тормозит разработку
Grigory
Ты тдд нигде не встретишь в продуктовой разработке Да и вообще мало где его встретишь, потому что оно жутко тормозит разработку
Тдд более менее не мешает когда требования к системе четко понятны Если же они меняются по ходу разработки, то ты повесишься от тдд
G
Тдд более менее не мешает когда требования к системе четко понятны Если же они меняются по ходу разработки, то ты повесишься от тдд
Поэтому сначала делают mvp, а когда требования стабилизируются - покрывают тестами и дальше стараются работать с тестами)
G
воу воу, капекс опекс, первый раз в таких чатах встречаю эти термины.
Я просто кофе ещё не выпил. Выпью - стану нормальным человеком 😅
Evgeny
Кто нить через TDD работал? Я так мечтаю в проект с тдд попасть но нигде пока не довелось)
тдд в чистом виде не дает никакого прироста производительности относительно покрытия тестами уже написанного кода
Evgeny
прикручиваешь в ci/cd проверку на 100% покрытия для нового кода и работаешь спокойно
Artur
Я просто кофе ещё не выпил. Выпью - стану нормальным человеком 😅
ну и кстати, не надо повышать опекс и создавать сетевую связность редиса со всеми сервисами. достаточно реализовать сессии на gateway, ему сходить в редис и всю информацию о пользователе положить в заголовки в случае http и в meta в случае mq.
Artur
А чем это тогда для сервиса отличается от jwt? Чисто не надо декодировать и проверять подпись?))
не надо декодировать, не надо ходить в редис, ничего не надо :-) ну и кстати, не такому уж и большому числу сервисов нужна информация о пользователе. ведь обычно юзер нужен для разграничения прав, а это делается задолго до действующего сервиса
Artur
а если информация о юзере и нужна, то она передается в теле запроса или в query
Maks
А чем это тогда для сервиса отличается от jwt? Чисто не надо декодировать и проверять подпись?))
С жвт ты не можешь пользователю поменять роли оперативно, не можешь отозвать все токены для пользователя например в случае смены пароля, нельзя посмотреть сессии и закрыть выбранные.
G
С жвт ты не можешь пользователю поменять роли оперативно, не можешь отозвать все токены для пользователя например в случае смены пароля, нельзя посмотреть сессии и закрыть выбранные.
Поэтому access-токен даётся на ограниченное время. А refresh-токен привязывается к сессии, и если сессия закрыта, просто не рефрешит. Но да, оперативность обновления доступа и вот это всё страдает.
Maks
Ну да. Мне хочется что бы была возможность знать сколько сейчас устройств у юзера активно и при этом что бы в бд не обновлять данные частт)
Null
👣 Полезные библиотеки Go Ddosify - очень простой в использовании инструмент для нагрузочного тестирования веб ресурсов. Поддерживает HTTP, HTTPS, HTTP/2 протоколы. ➡️ GitHub/Инструкция #go #golang #hack #pentest @github_code
ILIA
Нестандартная библиотека для такой задачи.
Как зачем, "красиво", и звёздочки на GH
Alexandr🇷🇺
Как зачем, "красиво", и звёздочки на GH
Самое главное, что он поддерживает "русскую литературу"
Danil👽
Самое главное, что он поддерживает "русскую литературу"
Английский знать для слабаков просто
Evgeny
а я могу как-то в go html template выключить эскейпинг параметра? ну типа, если я хочу туда в качестве параметра воткнуть кусочек прегенеренного html?
Dmitry
Ты тдд нигде не встретишь в продуктовой разработке Да и вообще мало где его встретишь, потому что оно жутко тормозит разработку
а у меня было несколько задач, когда без тдд я просто не мог понять как изменить логику в бизнес слое, чтобы это соответствовало требованиям от бизнеса
Dmitry
а я могу как-то в go html template выключить эскейпинг параметра? ну типа, если я хочу туда в качестве параметра воткнуть кусочек прегенеренного html?
тебе нужно использовать методы структуры, в теплайте вызвать метод, а метод должен возвращат тип template.HTML по моему
Бафомет
Приветствую! Где можно бесплатно постажироваться в разработке на go?
Emin Zalaev
Ozon/avito/yandex/wb/sber/tinkoff
Кіт ✙
Ozon/avito/yandex/wb/sber/tinkoff
indigo/tree/master/internal/parser/http1
Не ну это
дома как варик
Emin Zalaev
дома как варик
У дяди толика в гараже
Sanity = nil
Ozon/avito/yandex/wb/sber/tinkoff
Жесть только в России на го пишут что-ли?
Matvei
Подскажите как работает timer.Stop(), не могу понять, после остановки таймера надо ли читать из канала, чтобы оставить его пустым
Matvei
https://go.dev/play/p/Ej_spqEABaV У меня просто есть задачка и не проходит тест, говорит что утечка, но что-то не особо понимаю как ее побороть Мне кажется что у меня не реализуется одно из условий или появляется зависшая рутинка