Пікірлер
@bbrother92
@bbrother92 4 күн бұрын
Разве
@sergey_labuzov
@sergey_labuzov 4 күн бұрын
вопрос не дописали?
@bbrother92
@bbrother92 4 күн бұрын
@@sergey_labuzov разве бывают вакансии фулстек джава +js?
@bbrother92
@bbrother92 4 күн бұрын
вроде бы это как оч маленькие контрактные работы. Я вообще не видео не одного фулстек джава в более менее крупных компаниях
@sergey_labuzov
@sergey_labuzov Күн бұрын
Естественно 🙂
@sergey_labuzov
@sergey_labuzov Күн бұрын
Ох-ох-ох. Давайте порассуждаем немного. У нас все такие компании продуктовые или больше ориентированы на работы на внешних заказах? Если Вы ответили «оутсорс», значит условия будет выставлять именно заказчик. И вот здесь уже как богатый дядя скажет, так и будет. И совсем будет неважно, большая IT компания или маленькая. Зачастую, при ограниченном бюджете в приоритете будет именно фулл-стек позиция. Ну а если бюджет нужно распилить, нет лимитов, тогда велика вероятность разделения позиций на бэк и фронт. П.С. Многие ребята со знанием только серверной части сталкиваются с трудностями при желании реализовать какие-либо свои идеи, где нужно понимать не только бек и фронт, но и немного девопс части.
@flint2159
@flint2159 8 күн бұрын
музыку не стоит накладывать на обучающие видео!
@sergey_labuzov
@sergey_labuzov 7 күн бұрын
Это были эксперименты 😁
@andreyko_o9014
@andreyko_o9014 Ай бұрын
followed_id это ссылка в subscription на followed или на follower я так и не понял, вроде бы предпочтительный указывать mappedBy или почему вы выбрали именно joincolumn
@sergey_labuzov
@sergey_labuzov Ай бұрын
Все довольно просто. Объект subscription состоит из ссылки на автора (followed_id) и ссылки на читателя (follower_id). Если нужно будет выбрать всех подписчиков автора, связку формируем как id_автора = followed_id. Соответственно получим коллекцию follower-ов. Про mappedby и joincolumn не помню, почему выбрал именно joincolumn. Возможно чтобы пояснить по связке между автором и подписчиком.
@ram0973
@ram0973 Ай бұрын
Если надо сделать navbar меню для логина, то Button Надо оборачивать в Link, а не наооборот, иначе возникает такой глюк - иногда нажимаешь на кнопку и ничего не происходит.
@sergey_labuzov
@sergey_labuzov Ай бұрын
А зачем так делать? Можно же линку просто стилизовать под кнопку. Если говорить про CrakraUI, то можно юзать что-то такое <Link as={Button} …
@ram0973
@ram0973 Ай бұрын
@@sergey_labuzov я забыл сказать что Link тут от react-router-dom
@sergey_labuzov
@sergey_labuzov Ай бұрын
import { Link as ReactRouterLink } from 'react-router-dom' import { Link as ChakraLink, LinkProps } from '@chakra-ui/react' ;<ChakraLink as={ReactRouterLink} to='/home'> Home </ChakraLink>
@andreyko_o9014
@andreyko_o9014 Ай бұрын
Привет,а мы могли написать при создании таблицы nickname not null unique,если вообще какая то разница указывать в констрейнте или при создании
@sergey_labuzov
@sergey_labuzov Ай бұрын
Привет. Абсолитно нет никакой разницы какой вариант использовать. Разделил лишь для того, чтобы DDL не показался слишком громоздким
@Sst886
@Sst886 Ай бұрын
Спасибо за видео! По тестконтейнерам. Все сделал по гайду, со своими поправками на на расположение changeLog файла, но при прогоне тестов таблицы все равно создаются в БД, такое ощущение, что не в контейнере проходит прогон, но контейнер поднимается. Не понимаю почему так. Основная моя БД тоже крутится на отдельном постгрес контейнере.
@sergey_labuzov
@sergey_labuzov Ай бұрын
Добрый вечер! Можете открыть issue приложить лог выполнения теста? github.com/SLabuzov/baseproject/issues + пошарить доступ к коду, если есть такая возможность
@Sst886
@Sst886 Ай бұрын
@@sergey_labuzov спасибо за ответ. Проблему определил, это был плагин liqubase. Как выяснилось, его настройки подключения к серверу перекрывают подключение к тест контейнеру, в результате тесты запускаются в обход тест контейнера. Пришлось отключить плагин.
@sergey_labuzov
@sergey_labuzov Ай бұрын
Очень странное поведение плагина, не сталкивался с таким кейсом
@Sst886
@Sst886 Ай бұрын
@@sergey_labuzov а как думаете в чем может быть причина? в идеале, хотелось бы сохранить функции плагина, конечно
@sergey_labuzov
@sergey_labuzov Ай бұрын
Проще будет разобраться, если будет Ваш код у меня перед глазами 🙂
@ram0973
@ram0973 Ай бұрын
Здравствуйте, можно вас попросить забежать вперед и записать короткое видео, как упаковать приложение реакт в jar со спрингом? Не терпится свой проект блога на vps выложить...
@sergey_labuzov
@sergey_labuzov Ай бұрын
Здравствуйте. В планах реализовать очень маленький проект с полным циклом разработки серверной и клиентской частей. Но сейчас времени катастрофически не хватает на новые видео. Наслаждаюсь отцовством :) На самом деле все эту задачу можно реализовать достаточно просто (если говорить про ручные манипуляции). Последовательность действий: 1. Билд фронта ( npm run build ) 2. Все файлы из директории dist переносим в директорию resources/static 3. Билдим в JAR. + 1. Нужно будет добавить фильтр для отображения клиента Пример реализации фильтра: github.com/jhipster/jhipster-sample-app/blob/1ef3d9e0170abd923f2f7dd8c928d9cdc858a0b3/src/main/java/io/github/jhipster/sample/web/filter/SpaWebFilter.java#L10 2. Подшаманить конфиг (52 строка) github.com/jhipster/jhipster-sample-app/blob/1ef3d9e0170abd923f2f7dd8c928d9cdc858a0b3/src/main/java/io/github/jhipster/sample/config/SecurityConfiguration.java#L7
@ram0973
@ram0973 Ай бұрын
@@sergey_labuzov Спасибо большое!
@ram0973
@ram0973 Ай бұрын
Попробовал tanstack router вместо react-router, файловый вариант. Очень медленный, по 2 раза рендерит компоненты (на гитхабе есть issue). В общем кажется пока сырой) Из плюсов - дерево роутов наглядно лежит по папкам и файлам. И есть примеры для Router Query
@sergey_labuzov
@sergey_labuzov Ай бұрын
Это хороший опыт для вас, уже можете сравнивать две реализации и выбирать наиболее подходящий вариант. Tanstack router очень похож на роутинг Next.js
@ram0973
@ram0973 Ай бұрын
Попробовал сделать Crud для сущности User. Вывожу таблицу пользователей и 3 иконки (исправить, удалить, просмотреть) и действия на них. При удалении вылезает Модальное окно с подтверждением. Также сделал переключатель enabled и при нажатии - срабатывает обработчик, который выводит Chakra Alert - успешно или неуспешно отработал бэкенд. Но получился такой винегрет из тегов Чакры и обработчиков событий, как интересно всё это красиво разложить...
@sergey_labuzov
@sergey_labuzov Ай бұрын
Добрый день. Есть ссылка на репозиторий с кодом?
@ram0973
@ram0973 Ай бұрын
@@sergey_labuzov приложил ссылку, но ютуб её удалил 😂👍Я просто видимо забежал вперед.
@sergey_labuzov
@sergey_labuzov Ай бұрын
Тогда переходите в гит ( github.com/SLabuzov/twitter-client-app/issues ) и создавайте новый тикет, в котором указывайте все что пожелаете 😁
@user-yf2er5vr8q
@user-yf2er5vr8q Ай бұрын
спасибо большое - не планируете ли что-то новое с кафкой или ребитом например
@sergey_labuzov
@sergey_labuzov Ай бұрын
Планов много, но времени катастрофически не хватает.
@ivankobyuk8385
@ivankobyuk8385 Ай бұрын
Доброго дня ! 2:36 питання по необхідності робити файл для докер компоуз для БД. У мене на ноуті ОС - Linux/Ubuntu, БД (postgres) вже працює локально, а в терміналі вже створив відповідну БД з кредами. Я так розумію мені операції з докер компоузом не має сенсу робити. Вірно ?
@sergey_labuzov
@sergey_labuzov Ай бұрын
Добрый день! Да, все верно, нужно лишь подключение к БД. Каким способом Вы это реализуете абсолютно не важно
@ivankobyuk8385
@ivankobyuk8385 Ай бұрын
@@sergey_labuzov дякую!
@ram0973
@ram0973 2 ай бұрын
Котейка скучает 😂👍
@sergey_labuzov
@sergey_labuzov Ай бұрын
Подсказывает)
@ram0973
@ram0973 2 ай бұрын
При рефакторинге в Идее можно делать Refactor-Move... F6
@sergey_labuzov
@sergey_labuzov Ай бұрын
Можно, Idea вообще мощный инструмент
@ram0973
@ram0973 2 ай бұрын
А что вы думаете о headless cms, типа Strapi? Там можно набирать как бы таблицы из полей, насколько эта гибкая идея, интересно?
@sergey_labuzov
@sergey_labuzov Ай бұрын
Не использовал инструменты с таким функционалом. В любом случае, если какой-то инструмент упрощает/ускоряет/приносит радость/и т.д. в работе, то почему бы и не пользоваться им. Гибкость зависит от конкретных задач 🙂 Один инструмент может быть гибким для разработчика, которому нужны простые контролы без сложных зависимостей, валидаций, уровней вложенности. А вот для другого разработчика нужны именно эти сложные сценарии, вот уже для него инструмент не будет гибким.
@ram0973
@ram0973 2 ай бұрын
В Чакре наверное маловато компонентов, по сравнению с Ant, Material, Mantine... Ещё есть Refine, там есть готовые экраны логинов. В любом случае большое спасибо, делаю простейший блог по вашим видео. Только на сессиях, не люблю JWT в голом виде. Идёт тяжело, фронтенд как-то сложнее бэкенда, да ещё и параллельно надо TypeScript учить. Такое ощущение, что всё учишься, и никогда не начнёшь уже что-то делать. И забывается то что учил в начале 🤣 На явараше отучился год, закончил курс, потом учился на JavaBegin, там делал пример с Keycloak/Angular. И ещё на htmlacademy, и видеокурсы нескончаемые
@sergey_labuzov
@sergey_labuzov Ай бұрын
Учиться приходиться постоянно 🙂. Так же весьма достойный внимания ресурс www.jhipster.tech Если раньше не сталкивались, очень рекомендую.
@sergey_labuzov
@sergey_labuzov Ай бұрын
Очень правильное решение, придумать сложную, объемную задачу и реализовать ее. В любом случае, при написании кода столкнетесь с ситуацией, когда решение заставит перелопатить множество источников. После этого знания останутся в памяти на долгие годы 🙂 Курсы хорошо, но практика показывает, что простое перенабирание кода за преподавателем очень редко становится «знаниями на долгие годы»
@ram0973
@ram0973 Ай бұрын
@@sergey_labuzov я его видел, результат показался переусложненным...
@sergey_labuzov
@sergey_labuzov Ай бұрын
Мне в свое время понравился данный ресурс: internetingishard.netlify.app
@ram0973
@ram0973 Ай бұрын
@@sergey_labuzov спасибо
@eduardklygunov1412
@eduardklygunov1412 2 ай бұрын
спасибо большое за видео!
@mishaprokopovich5253
@mishaprokopovich5253 2 ай бұрын
замечательные видео, потихонечку смотрю, узнаю новые приемы и возможности
@qqU2vertigo
@qqU2vertigo 2 ай бұрын
Вопрос по бэку: Если у меня запрос возвращает список элементов, в которых одно поле может иметь значение, а может отсутствовать. И когда оно отсутствует, то я в него проставляю значение null. Это подстановка происходит вот так: return this.service.findNumberById(id).orElse(null); Правильно ли я это делаю, используя orElse(null) или лучше это делать иначе?
@sergey_labuzov
@sergey_labuzov 2 ай бұрын
Добрый вечер. Можете в репозитории создать тикет и прикрепить фрагмент Вашего кода? (github.com/SLabuzov/twitter/issues )
@qqU2vertigo
@qqU2vertigo 2 ай бұрын
@@sergey_labuzov к сожалению не смогу, так как на основе вашего курса начал делать свой проект для работы, а удаленка закрыта для переноса всего, даже кода)
@sergey_labuzov
@sergey_labuzov 2 ай бұрын
Можно сделать снимок экрана )) 1. Да, так можно обрабатывать null значения. 2. "запрос возвращает список элементов, в которых одно поле может иметь значение, а может отсутствовать" - правильно ли я понимаю, что есть список id, которые Вы перебираете запросами this.service.findNumberById(id) ?
@qqU2vertigo
@qqU2vertigo 2 ай бұрын
@@sergey_labuzov что то я про скриншоты совсем не подумал, в след раз так и сделаю) 2. Да, есть таблица со статусами номеров телефонов, номера в ней не храню, они лежат в другой таблице, с которой связаны через ключи. На выходе получаю вот такой список: [{ "id": 6, "phoneNumber": "79999999990", "numberStatus": { "id": 1, "phoneNumber": { "id": 6, "number": "79999999990" }, "phoneModels": { "id": 5, "model": "Test model" }, "lastChangeTimestamp": "2024-04-27T16:22:38.421315" } }, { "id": 7, "phoneNumber": "79999999992", "numberStatus": null }]
@sergey_labuzov
@sergey_labuzov 2 ай бұрын
1.Мне кажется более эффективным способом будет запрашивать данные через список id-шников. 2. Выглядит так, что phoneNumber вложен в numberStatus (циклическая зависимость)
@mishaprokopovich5253
@mishaprokopovich5253 2 ай бұрын
Отличный прием с как мы [ищем UserAccount по username из Authentication]-->[...Api]-->[создаем UserProfile по id из ...Api], беру на заметку
@user-iu6yz6ck6h
@user-iu6yz6ck6h 2 ай бұрын
Спасибо за видео. Очень полезно
@scalar3513
@scalar3513 2 ай бұрын
@sergey_labuzov на 26:52 во время тестового прогона у меня status 401, не получается создать пользователя в чем может быть проблема, код вроде идентичный..
@sergey_labuzov
@sergey_labuzov 2 ай бұрын
Добрый день. Чтобы мне было проще понять в чем причина, предлагаю Вам создать новый issue (github.com/SLabuzov/twitter/issues) и приложить свои конфиги с скрины.
@vladimirsolovyov9400
@vladimirsolovyov9400 2 ай бұрын
была такая же проблема. в SecurityConfig добавил для нового маппинга следующую строчку .requestMatchers("/api/v1/user-profiles").permitAll() автор @sergey_labuzov , подскажите, на сколько это верное решение? а то spring security не дает без пермишена на этот маппинг запросы слать :)
@sergey_labuzov
@sergey_labuzov 2 ай бұрын
Добрый день. Это приватный эндпоинт, скорее всего просто не добавили креды (вкладка Authorization в Postman) по аналогии предыдущего видео.
@mishaprokopovich5253
@mishaprokopovich5253 2 ай бұрын
отлично по шагам рассказал как настроить приложение, что для чего необходимо без лишних замудренных настроек, спасибо
@scalar3513
@scalar3513 2 ай бұрын
считается ли best practise использовать @RequiredArgsConstructor вместо конструктора?
@sergey_labuzov
@sergey_labuzov 2 ай бұрын
Скорее это будет лишь в рамках проектной команды разработчиков. Да и не как "best practice", а как "code convention"
@user-iu6yz6ck6h
@user-iu6yz6ck6h 3 ай бұрын
Большое спасибо за видео!
@AndreyAndrey-nx6uj
@AndreyAndrey-nx6uj 3 ай бұрын
Благодарю
@webbnba
@webbnba 3 ай бұрын
Спасибо, но фронт пока сложновато заходит!
@sergey_labuzov
@sergey_labuzov 3 ай бұрын
Добрый день! Какую часть функционала по фронту нужно пояснить?
@insafsagirov758
@insafsagirov758 3 ай бұрын
Здравствуйте! что лучше использовать для поля дата_создания: @PrePersist private void init() { createTimestamp = Instant.now(); } ИЛИ @EntityListeners(AuditingEntityListener.class) (показано на видео 25:15)?
@sergey_labuzov
@sergey_labuzov 3 ай бұрын
Добрый вечер! "Под капотом" вариант @EntityListeners(AuditingEntityListener.class) использует @PrePersist. Плюс добавлены некоторые проверки на валидность. Поэтому я считаю более безопасным будет использование именно @EntityListeners(AuditingEntityListener.class).
@ram0973
@ram0973 4 ай бұрын
Всё классно, но имхо JWT в чистом виде связан с кучей уязвимостей. CSRF отключен, это плохо (в OAuth не зря его аналог есть). И невозможно отозвать токен. Имхо лучше уж сессии с secured http-only cookie или OAuth (лучше с BFF). Но для примера норм. Поправьте плиз, если я не прав.
@sergey_labuzov
@sergey_labuzov 4 ай бұрын
Все верно. Вообще с безопасностью может быть все очень сложно, настройкой только этого функционала могут и должны заниматься специалисты с соответствующими знаниями, сертификациями. В рамках этого проекта используется JWT в чистом виде. Чуть позже докрутим некоторые доп механизмы защиты. Плюс нужно понимать, что любую защиту можно сломать 😉. Нужно постепенно повышать защищенность проекта по мере развития этого проекта. Я придерживаюсь такого подхода 🙂
@hurricane-rus
@hurricane-rus 4 ай бұрын
Смотрите видео внимательно! Как оказалось, в файле с миграцией --changeset и --rollback - это не просто комментарии, а управляющие команды Liquibase. Если их не добавить, Liquibase не увидит файл как миграцию.
@sergey_labuzov
@sergey_labuzov 4 ай бұрын
Добрый вечер. Для кого предназначен Ваш комментарий?)
@hurricane-rus
@hurricane-rus 4 ай бұрын
Для тех, кто пишет код вручную и обычно игнорирует то, что похоже на лишние комментарии - а потом удивляется, почему миграция не работает без этого "комментария")
@m3hdim3hdi
@m3hdim3hdi 4 ай бұрын
Thank you so much but how can i use liquibase migrations in test container
@sergey_labuzov
@sergey_labuzov 4 ай бұрын
in case you added testcontainers, liquibase will use this datasource when running tests.
@eduardklygunov1412
@eduardklygunov1412 4 ай бұрын
Спасибо большое за видео! Надеюсь не забросите это дело, у вас талант да и на ютубе очень мало настолько полезной прикладной информации (я в целом про весь плейлист с проектом)
@qqU2vertigo
@qqU2vertigo 4 ай бұрын
Это очень круто, спасибо за видео. Но подскажи, пожалуйста, где можно посмотреть примеры элементов, которые верстаем? Есть ли у Vite подобная документация с примерами реализаций компонентов, как у Fluent UI?
@sergey_labuzov
@sergey_labuzov 4 ай бұрын
Добрый день. Да, у Chakra UI есть документация с примерами: chakra-ui.com/docs/components
@qqU2vertigo
@qqU2vertigo 4 ай бұрын
@@sergey_labuzov вау! то, что надо, спасибо!
@qqU2vertigo
@qqU2vertigo 4 ай бұрын
@@sergey_labuzov вау! то, что надо. Спасибо!
@arrnel94
@arrnel94 4 ай бұрын
Столкнулся с ошибкой: Прикрутил несколько методов и указал свободный доступ по эндпоинту в SecurityConfig: Получения пользователя; Получение всех пользователей; Редактирование пользователя; Удаление пользователя; После добавления @Transactional в UserDetailsServiceImpl, корректно работали методы из DemoController. А из UserController, все кроме создания пользователя падали с ошибкой: "failed to lazily initialize a collection of role: jobHunter.security.model.User.authorities: could not initialize proxy - no Session". Пальцем в небо, решил проблему добавлением @Transactional в UserUseCaseFacade. Не знаю корректен ли данный "fix", но с @EntityGraph и FetchType.EAGER такой проблемы не было.
@sergey_labuzov
@sergey_labuzov 4 ай бұрын
Все очень просто. Если необходимо замапить составную энтити, в которой связи объявлены как Lazy, тогда вешаем аннотацию @Transactional над соответствующим сервисом. Остальные способы (@EntityGraph и FetchType.EAGER) используются только в крайнем необходимости, особенно FetchType.EAGER. Данные способы формируют запрос, который сразу вытягивает все связные объекты из БД.
@user-yf2er5vr8q
@user-yf2er5vr8q 4 ай бұрын
а будет еще что-то новое по спрингу?
@sergey_labuzov
@sergey_labuzov 4 ай бұрын
Да, конечно. Немного подтянем фронт и дальше будем в параллельном режиме реализовывать функционал на бэке и фронте
@alexandr6055
@alexandr6055 5 ай бұрын
Спасибо, отличный урок
@webbnba
@webbnba 5 ай бұрын
Спасибо, очень полезно и учит работе с документацией.
@iuseronline
@iuseronline 5 ай бұрын
Интересненько)
@webbnba
@webbnba 5 ай бұрын
Подскажите, как правильно откатить changeset? Создать новый с командами drop, alter и т.д.
@sergey_labuzov
@sergey_labuzov 5 ай бұрын
Для таких задач логичнее всего будет подключить gradle liquibase plugin. И воспользоваться командой rollbackCount.
@sergey_labuzov
@sergey_labuzov 5 ай бұрын
Если данный вопрос для Вас представляет интерес, могу в следующем видео об этом немножко рассказать
@user-yf2er5vr8q
@user-yf2er5vr8q 5 ай бұрын
cупер пупер видео- лучшие
@user-yf2er5vr8q
@user-yf2er5vr8q 5 ай бұрын
cпасибо очень понравилось очень мало в ютубе подобного, ждем какой-то следующий больший проект
@knotty1067
@knotty1067 5 ай бұрын
Круто, жду некст видос, фронт будем писать?
@sergey_labuzov
@sergey_labuzov 5 ай бұрын
И фронт обязательно напишем 🙂
@user-sn9rj1dn1b
@user-sn9rj1dn1b 5 ай бұрын
Спасибо за лекцию🔥
@knotty1067
@knotty1067 5 ай бұрын
очень интересно и информативно, продолжай в том же духе!
@user-pt6vo2kp7c
@user-pt6vo2kp7c 6 ай бұрын
Ты при супер! Может есть ссылочка на похожий проект с мавеном?
@sergey_labuzov
@sergey_labuzov 6 ай бұрын
добрый вечер! похожего проекта с мавеном нет, но его не должно быть сложно адаптировать
@sergey_labuzov
@sergey_labuzov 5 ай бұрын
@user-pt6vo2kp7c получилось адаптировать под мавен?
@qqU2vertigo
@qqU2vertigo 6 ай бұрын
Привет, с толкнулся с проблемой: ValidationFailedException: Validation Failed: 1 changesets check sum сразу после внесения комманд с созданием нового столбца. В моем понимании проблема в том, что внес изменения в файл .sql, который уже исполнялся. Гугл подсказывает 4 вида решения проблем: 1. clearCheckSums 2. runOnChange attribute 3. runAlways attribute 4. The <validCheckSum> attribute Чтобы ты посоветовал из этого использовать?)
@sergey_labuzov
@sergey_labuzov 6 ай бұрын
Привет. Каждое новое изменение должно быть оформлено новым changesets. Собственно это и будет самым правильным решением)
@qqU2vertigo
@qqU2vertigo 6 ай бұрын
@@sergey_labuzov понимаю, но по неизвестной мне причине ошибка продолжала возникать, пробовал копипастом перенести команды из твоего гита, думал может что то пропустил(точку с запятой или еще что). Решить проблему не удалось, поэтому пересоздал базу) Надеюсь больше такого не случится, да и буду впредь более внимательным
@sergey_labuzov
@sergey_labuzov 6 ай бұрын
В любом случае, если возникают вопросы по проекту, смело создавайте тикет в гите и уже там предметно получится все вопросы порешать
@respecktpro2954
@respecktpro2954 6 ай бұрын
Спасибо за ваш труд!
@user-qt8eu7bi5d
@user-qt8eu7bi5d 6 ай бұрын
Огромное спасбо за видео. Оказывается, Swagger может быть не только болью. Я когда сам с ним разбирался - потратил кучу времени и сил. P.S. вопрос не по теме - почему вы не используете автоимпорт в IDE? Когда вариантов для импорта класса один - происходит автоимпорт. Если больше - тогда надо руками выбирать.
@sergey_labuzov
@sergey_labuzov 6 ай бұрын
"P.S. вопрос не по теме - почему вы не используете автоимпорт в IDE?" -- Это все моя лень. Спасибо за замечание, подкрутил настройки в IDE.
@user-qt8eu7bi5d
@user-qt8eu7bi5d 6 ай бұрын
Спасибо за видео. А я говорил, что jacoco на 8.5 градл не налазил со старым способом конфигурации )
@inspiredsamat
@inspiredsamat 7 ай бұрын
А при регистраций юзеров от очередей (как я понял это кафка), как наш код является расширяемым? Нам же нужно будет менять метод register().
@sergey_labuzov
@sergey_labuzov 7 ай бұрын
При использовании очередей нужно будет добавить лишь соответствующего слушателя Consumer, который будет получать RegisterRequest, аналогично UserAccountController. И все, "менять" ничего в register() не нужно.
@inspiredsamat
@inspiredsamat 7 ай бұрын
🔥🔥🔥